From ac652a2e36fe920b75a3d8108503c9ea17e8a75e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 4 Sep 2024 10:58:06 +0100 Subject: [PATCH 001/730] MWGalleryItemWidget: Remove unnecessary event argument Listeners will already know which object emitted the event. Currently this event is used once as a aggregate event, (as 'editItem' in the ve.ui.MWGalleryGroupWidget constructor) in which case the emitting object is already prepended as the first argument (as documented in OO.EmitterList.prototype.aggregate). Change-Id: I490f368af8e9cae60eacac918bf83702999f705b --- modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js index d73cf1c370..18f6a352df 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js @@ -84,7 +84,7 @@ OO.mixinClass( ve.ui.MWGalleryItemWidget, OO.ui.mixin.TabIndexedElement ); * @fires ve.ui.MWGalleryItemWidget#edit */ ve.ui.MWGalleryItemWidget.prototype.onItemClick = function () { - this.emit( 'edit', this ); + this.emit( 'edit' ); }; /** From 64a408efb02794a901c6cd702c17419788490883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Tue, 1 Oct 2024 15:27:26 +0200 Subject: [PATCH 002/730] Separate tag help links from their labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes translation easier and improves how the tags are displayed in the recent changes / watchlist filtering interface. Renamed messages: * editcheck-falsepositives-link → tag-editcheck-references-activated-helppage Depends-On: I67295d82f6eb866aa380eba1966c1c9dd75653e1 Bug: T372175 Change-Id: I6118416771b8e4cb3c27a25a158aab7dc9af5e4b --- i18n/ve-wmf/en.json | 13 ++++++++----- i18n/ve-wmf/qqq.json | 5 ++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/i18n/ve-wmf/en.json b/i18n/ve-wmf/en.json index 0479455427..68a111eac3 100644 --- a/i18n/ve-wmf/en.json +++ b/i18n/ve-wmf/en.json @@ -16,23 +16,26 @@ "Amir E. Aharoni" ] }, - "editcheck-falsepositives-link": "mediawikiwiki:Special:MyLanguage/Edit check/False positives", "tag-editcheck-newcontent": "-", "tag-editcheck-newcontent-description": "EditCheck thinks new content was added to the page", "tag-editcheck-newreference": "-", "tag-editcheck-newreference-description": "A reference was added to the page", "tag-editcheck-references": "-", "tag-editcheck-references-description": "EditCheck thinks a reference might have been needed", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check (references) activated]]", + "tag-editcheck-references-activated": "Edit Check (references) activated", "tag-editcheck-references-activated-description": "EditCheck thinks a reference might have been needed, and the UI was shown", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit]]", + "tag-editcheck-references-activated-helppage": "mediawikiwiki:Special:MyLanguage/Edit check/False positives", + "tag-visualeditor": "Visual edit", "tag-visualeditor-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Check]]", + "tag-visualeditor-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", + "tag-visualeditor-needcheck": "Visual edit: Check", "tag-visualeditor-needcheck-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] where the system detected the wikitext possibly having unintended changes.", + "tag-visualeditor-needcheck-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", "tag-visualeditor-wikitext": "2017 source edit", "tag-visualeditor-wikitext-description": "Edit made using the 2017 wikitext editor", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Switched]]", + "tag-visualeditor-switched": "Visual edit: Switched", "tag-visualeditor-switched-description": "User started to edit using the visual editor, then changed to the wikitext editor.", + "tag-visualeditor-switched-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-source-link": "{{int:visualeditor-feedback-link}}", "visualeditor-feedback-tool": "Leave feedback about this software", diff --git a/i18n/ve-wmf/qqq.json b/i18n/ve-wmf/qqq.json index 55cc01920e..784da72155 100644 --- a/i18n/ve-wmf/qqq.json +++ b/i18n/ve-wmf/qqq.json @@ -25,7 +25,6 @@ "Verdy p" ] }, - "editcheck-falsepositives-link": "{{notranslate}}\nLink to the false positives reporting page of EditCheck.\n\nUsed in:\n* {{msg-mw|tag-editcheck-references-activated}}", "tag-editcheck-newcontent": "{{ignored}}Short description of the editcheck-newcontent tag.\n\nHidden tag added when EditCheck thinks new content was added to the page.\n\nSee also:\n* {{msg-mw|Tag-editcheck-newcontent-description}}\n{{Related|tag-newcontent-references-description}}", "tag-editcheck-newcontent-description": "Long description of the editcheck-newcontent tag.\n\nHidden tag added when EditCheck thinks new content was added to the page.\n\nSee also:\n* {{msg-mw|Tag-editcheck-newcontent}}\n{{Related|tag-newcontent-references}}", "tag-editcheck-newreference": "{{ignored}}Short description of the editcheck-newreference tag.\n\nHidden tag added when a reference is added to the page.\n\nSee also:\n* {{msg-mw|Tag-editcheck-newreference-description}}\n{{Related|tag-newreference-references-description}}", @@ -34,14 +33,18 @@ "tag-editcheck-references-description": "Long description of the editcheck-references tag.\n\nHidden tag added when EditCheck thinks added content might need a reference.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references}}\n{{Related|tag-editcheck-references}}", "tag-editcheck-references-activated": "Short description of the editcheck-references-activated tag.\n\nHidden tag added when EditCheck thinks that added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-activated-description}}\n{{Related|tag-editcheck-references-activated-description}}", "tag-editcheck-references-activated-description": "Long description of the editcheck-references-activated tag.\n\nHidden tag added when EditCheck thinks added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-activated}}\n{{Related|tag-editcheck-references-activated}}", + "tag-editcheck-references-activated-helppage": "{{notranslate}}\nLink to the false positives reporting page of EditCheck.\n\nUsed in:\n* {{msg-mw|tag-editcheck-references-activated}}", "tag-visualeditor": "Short description of the visualeditor tag. Do not translate the link target, but do translate the words \"Visual edit\".\n\nShown on lists of changes (history, recentchanges, etc.) for each edit made using VisualEditor.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck}}\n{{Related|Tag-visualeditor}}\n{{Identical|VisualEditor}}", "tag-visualeditor-description": "Long description of the visualeditor tag ({{msg-mw|Tag-visualeditor}}).\n\nShown on [[Special:Tags]].\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck-description}}\n{{Related|Tag-visualeditor}}", + "tag-visualeditor-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", "tag-visualeditor-needcheck": "\"Check\" indicates \"Check needed\".\n\nSee {{msg-mw|Tag-visualeditor-needcheck-description}}.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor|similar message}}\n{{Related|Tag-visualeditor}}", "tag-visualeditor-needcheck-description": "Long description of the visualeditor-needcheck tag ({{msg-mw|Tag-visualeditor-needcheck}}).\n\nShown on [[Special:Tags]].\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-description}}\n{{Related|Tag-visualeditor}}", + "tag-visualeditor-needcheck-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor-needcheck}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", "tag-visualeditor-wikitext": "Short description of the visualeditor-wikitext tag.\n\nShown on lists of changes (history, recentchanges, etc.) for each edit made using VisualEditor in wikitext editor mode.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-wikitext-description}}\n{{Identical|Edit source}}", "tag-visualeditor-wikitext-description": "Long description of the visualeditor-wikitext tag ({{msg-mw|Tag-visualeditor-wikitext}}).\n\nShown on [[Special:Tags]].\n\nSee also:\n* {{msg-mw|Tag-visualeditor-wikitext}}\n* {{Related|tag-visualeditor-description}}", "tag-visualeditor-switched": "Short description of the visualeditor-switched tag.\n\nShown on lists of changes (history, recentchanges, etc.) for each edit which was started using VisualEditor and then was moved to the wikitext editor.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n{{Related|Tag-visualeditor}}", "tag-visualeditor-switched-description": "Long description of the visualeditor-switched tag ({{msg-mw|Tag-visualeditor-switched}}).\n\nShown on [[Special:Tags]].\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-description}}\n{{Related|Tag-visualeditor}}", + "tag-visualeditor-switched-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor-switched}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", "visualeditor-feedback-link": "Link to a page where users can leave feedback that is automatically posted using this tool. This should be a subpage of {{msg-mw|visualeditor-descriptionpagelink}}", "visualeditor-feedback-source-link": "{{notranslate}}\nLink to a page where users can leave feedback about the source mode that is automatically posted using this tool. This can be the same as or different from {{msg-mw|visualeditor-feedback-link}}.", "visualeditor-feedback-tool": "Text of tool in the toolbar that lets users provide feedback.", From 332188807a1390c9225f7ef26db803642171b065 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 21 Oct 2024 14:03:15 +0100 Subject: [PATCH 003/730] MWGalleryNode: Check node still exists when updating Bug: T377717 Change-Id: I13f9c1ced3e59d4d88aaca02b884d06cc57b11a6 --- modules/ve-mw/ce/nodes/ve.ce.MWGalleryNode.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWGalleryNode.js b/modules/ve-mw/ce/nodes/ve.ce.MWGalleryNode.js index af25f9e9c8..22d3f92794 100644 --- a/modules/ve-mw/ce/nodes/ve.ce.MWGalleryNode.js +++ b/modules/ve-mw/ce/nodes/ve.ce.MWGalleryNode.js @@ -67,6 +67,10 @@ ve.ce.MWGalleryNode.static.primaryCommandName = 'gallery'; * Handle model update events. */ ve.ce.MWGalleryNode.prototype.onUpdate = function () { + if ( !this.model ) { + // onUpdate is debounced, so check the node still exists + return; + } const mwAttrs = this.model.getAttribute( 'mw' ).attrs; const defaults = mw.config.get( 'wgVisualEditorConfig' ).galleryOptions; const mode = mwAttrs.mode || defaults.mode; From 3dfef738e241e6def2492100a203381c80ceaf6e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 4 Sep 2024 11:01:59 +0100 Subject: [PATCH 004/730] MWGalleryDialog: Highlight item at closest index when removing an image Bug: T373981 Change-Id: Ib0edc97279c6ec4e0529197d9beb1d7c9c51ee28 --- .../ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js index d1bf971b04..0d229eb9f6 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js @@ -748,19 +748,21 @@ ve.ui.MWGalleryDialog.prototype.onSearchResultsChoose = function ( item ) { * Handle click event for the remove button */ ve.ui.MWGalleryDialog.prototype.onRemoveItem = function () { + const removedItemIndex = this.galleryGroup.items.indexOf( this.highlightedItem ); // Remove the highlighted item this.galleryGroup.removeItems( [ this.highlightedItem ] ); // Highlight another item, or show the search panel if the gallery is now empty - this.onHighlightItem(); + this.onHighlightItem( undefined, removedItemIndex !== -1 ? removedItemIndex : undefined ); }; /** * Handle clicking on an image in the menu * * @param {ve.ui.MWGalleryItemWidget} [item] The item that was clicked on + * @param {number} [removedItemIndex] Index of just-removed item */ -ve.ui.MWGalleryDialog.prototype.onHighlightItem = function ( item ) { +ve.ui.MWGalleryDialog.prototype.onHighlightItem = function ( item, removedItemIndex ) { // Unhighlight previous item if ( this.highlightedItem ) { this.highlightedItem.toggleHighlighted( false ); @@ -771,8 +773,15 @@ ve.ui.MWGalleryDialog.prototype.onHighlightItem = function ( item ) { this.toggleSearchPanel( false ); // Highlight new item. - // If no item was given, highlight the first item in the gallery. - item = item || this.galleryGroup.items[ 0 ]; + if ( removedItemIndex !== undefined ) { + // The removed item might have been the last item in the list, in which + // case highlight the new last item. + const index = Math.min( removedItemIndex, this.galleryGroup.items.length - 1 ); + item = this.galleryGroup.items[ index ]; + } else if ( !item ) { + // If no item was given, highlight the first item in the gallery. + item = this.galleryGroup.items[ 0 ]; + } if ( !item ) { // Show the search panel if the gallery is empty From d08df5302b7b53351335ccf62edbd907480c7b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Mon, 21 Oct 2024 19:31:16 +0200 Subject: [PATCH 005/730] Replace uses of deprecated MediaWiki\Message\Converter The converter is no longer needed now that Message and MessageValue use the same internal format for the message parameters. Depends-On: I625a48a6ecd3fad5c2ed76b23343a0fef91e1b83 Change-Id: I9f27d7e31be144e09ed3d0e0e858433477327b00 --- includes/ApiParsoidTrait.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/includes/ApiParsoidTrait.php b/includes/ApiParsoidTrait.php index 3c6678506b..f570defbe7 100644 --- a/includes/ApiParsoidTrait.php +++ b/includes/ApiParsoidTrait.php @@ -14,7 +14,6 @@ use MediaWiki\Api\ApiUsageException; use MediaWiki\Language\Language; use MediaWiki\MediaWikiServices; -use MediaWiki\Message\Message; use MediaWiki\Request\WebRequest; use MediaWiki\Rest\HttpException; use MediaWiki\Rest\LocalizedHttpException; @@ -23,6 +22,7 @@ use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use Throwable; +use Wikimedia\Message\MessageSpecifier; use Wikimedia\Stats\NullStatsdDataFactory; use Wikimedia\Stats\PrefixingStatsdDataFactoryProxy; @@ -69,9 +69,7 @@ private function statsRecordTiming( string $key, float $startTime ): void { */ private function dieWithRestHttpException( HttpException $ex ): void { if ( $ex instanceof LocalizedHttpException ) { - $converter = new \MediaWiki\Message\Converter(); - $msg = $converter->convertMessageValue( $ex->getMessageValue() ); - $this->dieWithError( $msg, null, $ex->getErrorData() ); + $this->dieWithError( $ex->getMessageValue(), null, $ex->getErrorData() ); } else { $this->dieWithException( $ex, [ 'data' => $ex->getErrorData() ] ); } @@ -186,19 +184,20 @@ abstract protected function getParsoidClient(): ParsoidClient; /** * @see ApiBase - * @param string|array|Message $msg See ApiErrorFormatter::addError() + * @param string|array|MessageSpecifier $msg See ApiErrorFormatter::addError() * @param string|null $code See ApiErrorFormatter::addError() * @param array|null $data See ApiErrorFormatter::addError() - * @param int|null $httpCode HTTP error code to use + * @param int $httpCode HTTP error code to use + * @throws ApiUsageException always * @return never - * @throws ApiUsageException */ - abstract public function dieWithError( $msg, $code = null, $data = null, $httpCode = null ); + abstract public function dieWithError( $msg, $code = null, $data = null, $httpCode = 0 ); /** * @see ApiBase * @param Throwable $exception See ApiErrorFormatter::getMessageFromException() * @param array $options See ApiErrorFormatter::getMessageFromException() + * @throws ApiUsageException always * @return never */ abstract public function dieWithException( Throwable $exception, array $options = [] ); From 4bc814f1a0555507318ad71e49ef4fee74f91054 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 21 Oct 2024 13:51:51 +0100 Subject: [PATCH 006/730] Update VE core submodule to master (bae9101b7) New changes: 7906a6b9e build: Updating npm dependencies 92e6a5338 TextStyleAnnotation: Don't register abstract base class 456ca9b2e Localisation updates from https://translatewiki.net. a68ba80d2 Get all annotations by ranges dc49d9592 Demos: Default to WMUI theme 222ac7d23 Add unit tests for ve.dm.BranchNode#getAnnotationRanges ba73b9e91 Return annotation ranges in lexicographic order 6e40aa524 Localisation updates from https://translatewiki.net. 1a4640a4a ve.ce.Surface: Remove unused $deactivatedSelection and $findResults 9455e0f0a ve.ce.Surface: Replace text/xcustom clipboard storage with a custom key ddd14aa9b [BREAKING CHANGE] Move paste handling code to ve.ce.ClipboardHandler 19f0e500b CollabProcessDialog: Replace mw.user.getName with platform method ecd607353 Implement pasteSourceDetectors bae9101b7 Localisation updates from https://translatewiki.net. Added files: - src/ce/ve.ce.ClipboardHandler.js - tests/ce/ve.ce.ClipboardHandler.test.js Local changes: * Implement new paste handler architecture * Use new clipboard key Bug: T360624 Bug: T376306 Bug: T78696 Change-Id: Iea10d32b6132ae364d486cc6b96895bb937ac944 --- extension.json | 3 + lib/ve | 2 +- .../ce/ve.ce.MWWikitextClipboardHandler.js | 136 ++++++++++++++++++ modules/ve-mw/ce/ve.ce.MWWikitextSurface.js | 117 +-------------- modules/ve-mw/tests/ce/ve.ce.Surface.test.js | 2 +- 5 files changed, 144 insertions(+), 116 deletions(-) create mode 100644 modules/ve-mw/ce/ve.ce.MWWikitextClipboardHandler.js diff --git a/extension.json b/extension.json index 584d2b65a8..a9f08e802f 100644 --- a/extension.json +++ b/extension.json @@ -978,6 +978,7 @@ "lib/ve/src/ce/ve.ce.ResizableNode.js", "lib/ve/src/ce/ve.ce.TableCellableNode.js", "lib/ve/src/ce/ve.ce.Selection.js", + "lib/ve/src/ce/ve.ce.ClipboardHandler.js", "lib/ve/src/ce/ve.ce.Surface.js", "lib/ve/src/ce/ve.ce.SurfaceObserver.js", "lib/ve/src/ce/ve.ce.KeyDownHandlerFactory.js", @@ -2401,6 +2402,7 @@ "scripts": [ "modules/ve-mw/dm/ve.dm.MWWikitextSurface.js", "modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js", + "modules/ve-mw/ce/ve.ce.MWWikitextClipboardHandler.js", "modules/ve-mw/ce/ve.ce.MWWikitextSurface.js", "modules/ve-mw/ui/ve.ui.MWWikitextCommandRegistry.js", "modules/ve-mw/ui/ve.ui.MWWikitextSequenceRegistry.js", @@ -2611,6 +2613,7 @@ "lib/ve/tests/ce/ve.ce.test.js", "lib/ve/tests/ce/ve.ce.Document.test.js", "modules/ve-mw/tests/ce/ve.ce.Document.test.js", + "lib/ve/tests/ce/ve.ce.ClipboardHandler.test.js", "lib/ve/tests/ce/ve.ce.Surface.test.js", "modules/ve-mw/tests/ce/ve.ce.Surface.test.js", "lib/ve/tests/ce/ve.ce.RangeState.test.js", diff --git a/lib/ve b/lib/ve index c98f3a542b..bae9101b75 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit c98f3a542b016c447471d7cb73bee7b2c395b103 +Subproject commit bae9101b758a2d78a4b5e12fbb592f58dabb5967 diff --git a/modules/ve-mw/ce/ve.ce.MWWikitextClipboardHandler.js b/modules/ve-mw/ce/ve.ce.MWWikitextClipboardHandler.js new file mode 100644 index 0000000000..215ac4592b --- /dev/null +++ b/modules/ve-mw/ce/ve.ce.MWWikitextClipboardHandler.js @@ -0,0 +1,136 @@ +/*! + * VisualEditor ContentEditable MWWikitextClipboardHandler class. + * + * @copyright See AUTHORS.txt + */ + +/** + * @param {ve.ce.Surface} surface + */ +ve.ce.MWWikitextClipboardHandler = function VeCeMwWikitextClipboardHandler() { + // Parent constructor + ve.ce.MWWikitextClipboardHandler.super.apply( this, arguments ); + + this.plainInput = new OO.ui.MultilineTextInputWidget(); +}; + +/* Inheritance */ + +OO.inheritClass( ve.ce.MWWikitextClipboardHandler, ve.ce.ClipboardHandler ); + +/* Methods */ + +/** + * @inheritdoc + */ +ve.ce.MWWikitextClipboardHandler.prototype.onCopy = function ( e ) { + const clipboardData = e.originalEvent.clipboardData, + surface = this.getSurface(), + text = surface.getModel().getFragment().getText( true ).replace( /\n\n/g, '\n' ); + + if ( !text ) { + return; + } + + if ( clipboardData ) { + // Disable the default event so we can override the data + e.preventDefault(); + clipboardData.setData( 'text/plain', text ); + // We're not going to set HTML, but for browsers that support custom data, set a clipboard key + if ( ve.isClipboardDataFormatsSupported( e, true ) ) { + const slice = surface.getModel().getDocument().shallowCloneFromSelection( surface.getModel().getSelection() ); + this.clipboardIndex++; + const clipboardKey = this.clipboardId + '-' + this.clipboardIndex; + this.clipboard = { slice: slice, hash: null }; + // Clone the elements in the slice + slice.data.cloneElements( true ); + clipboardData.setData( this.constructor.static.clipboardKeyMimeType, clipboardKey ); + + // Explicitly store wikitext as text/x-wiki, so that wikitext-aware paste + // contexts can accept it without having to do any content- + // sniffing. + clipboardData.setData( 'text/x-wiki', text ); + } + } else { + const originalSelection = new ve.SelectionState( surface.nativeSelection ); + + // Save scroll position before changing focus to "offscreen" clipboard target + const scrollTop = surface.getSurface().$scrollContainer.scrollTop(); + + // Prevent surface observation due to native range changing + surface.surfaceObserver.disable(); + this.$element.empty().append( this.plainInput.$element ); + this.plainInput.setValue( text ).select(); + + // Restore scroll position after changing focus + surface.getSurface().$scrollContainer.scrollTop( scrollTop ); + + // setTimeout: postpone until after the default copy action + setTimeout( () => { + // Change focus back + surface.$attachedRootNode[ 0 ].focus(); + surface.showSelectionState( originalSelection ); + // Restore scroll position + surface.getSurface().$scrollContainer.scrollTop( scrollTop ); + surface.surfaceObserver.clear(); + surface.surfaceObserver.enable(); + // Detach input + this.plainInput.$element.detach(); + } ); + } +}; + +/** + * @inheritdoc + */ +ve.ce.MWWikitextClipboardHandler.prototype.afterPasteInsertExternalData = function ( targetFragment, pastedDocumentModel, contextRange ) { + const wasSpecial = this.isPasteSpecial(), + // TODO: This check returns true if the paste contains meaningful structure (tables, lists etc.) + // but no annotations (bold, links etc.). + wasPlain = wasSpecial || pastedDocumentModel.data.isPlainText( contextRange, true, undefined, true ); + + const plainPastedDocumentModel = pastedDocumentModel.shallowCloneFromRange( contextRange ); + plainPastedDocumentModel.data.sanitize( { plainText: true, keepEmptyContentBranches: true } ); + // We just turned this into plaintext, which probably + // affected the content-length. Luckily, because of + // the earlier clone, we know we just want the whole + // document, and because of the major change to + // plaintext, the difference between originalRange and + // balancedRange don't really apply. As such, clear + // out newDocRange. (Can't just make it undefined; + // need to exclude the internal list, and since we're + // from a paste we also have to exclude the + // opening/closing paragraph.) + const plainContextRange = new ve.Range( plainPastedDocumentModel.getDocumentRange().from + 1, plainPastedDocumentModel.getDocumentRange().to - 1 ); + this.prepareForPasteSpecial(); + + // isPlainText is true but we still need sanitize (e.g. remove lists) + const promise = ve.ce.MWWikitextClipboardHandler.super.prototype.afterPasteInsertExternalData.call( this, targetFragment, plainPastedDocumentModel, plainContextRange ); + if ( !wasPlain ) { + promise.then( () => { + // We need to wait for the selection change after paste as that triggers + // a contextChange event. Really we should wait for the afterPaste promise to resolve. + setTimeout( () => { + const surface = this.getSurface(), + context = surface.getSurface().getContext(); + // Ensure surface is deactivated on mobile so context can be shown (T336073) + if ( context.isMobile() ) { + surface.deactivate(); + } + context.addPersistentSource( { + embeddable: false, + name: 'wikitextPaste', + data: { + doc: pastedDocumentModel, + contextRange: contextRange, + fragment: targetFragment + } + } ); + surface.getModel().once( 'select', () => { + context.removePersistentSource( 'wikitextPaste' ); + } ); + } ); + } ); + } + return promise; +}; diff --git a/modules/ve-mw/ce/ve.ce.MWWikitextSurface.js b/modules/ve-mw/ce/ve.ce.MWWikitextSurface.js index f0cbfea6e1..fe58d7823f 100644 --- a/modules/ve-mw/ce/ve.ce.MWWikitextSurface.js +++ b/modules/ve-mw/ce/ve.ce.MWWikitextSurface.js @@ -1,12 +1,10 @@ /*! - * VisualEditor DataModel Surface class. + * VisualEditor ContentEditable MWWikitextSurface class. * * @copyright See AUTHORS.txt */ /** - * DataModel surface. - * * @class * @extends ve.ce.Surface * @@ -18,8 +16,6 @@ ve.ce.MWWikitextSurface = function VeCeMwWikitextSurface() { // Parent constructors ve.ce.MWWikitextSurface.super.apply( this, arguments ); - - this.pasteTargetInput = new OO.ui.MultilineTextInputWidget(); }; /* Inheritance */ @@ -29,113 +25,6 @@ OO.inheritClass( ve.ce.MWWikitextSurface, ve.ce.Surface ); /** * @inheritdoc */ -ve.ce.MWWikitextSurface.prototype.onCopy = function ( e ) { - const clipboardData = e.originalEvent.clipboardData, - text = this.getModel().getFragment().getText( true ).replace( /\n\n/g, '\n' ); - - if ( !text ) { - return; - } - - if ( clipboardData ) { - // Disable the default event so we can override the data - e.preventDefault(); - clipboardData.setData( 'text/plain', text ); - // We're not going to set HTML, but for browsers that support custom data, set a clipboard key - if ( ve.isClipboardDataFormatsSupported( e, true ) ) { - const slice = this.model.documentModel.shallowCloneFromSelection( this.getModel().getSelection() ); - this.clipboardIndex++; - const clipboardKey = this.clipboardId + '-' + this.clipboardIndex; - this.clipboard = { slice: slice, hash: null }; - // Clone the elements in the slice - slice.data.cloneElements( true ); - clipboardData.setData( 'text/xcustom', clipboardKey ); - - // Explicitly store wikitext as text/x-wiki, so that wikitext-aware paste - // contexts can accept it without having to do any content- - // sniffing. - clipboardData.setData( 'text/x-wiki', text ); - } - } else { - const originalSelection = new ve.SelectionState( this.nativeSelection ); - - // Save scroll position before changing focus to "offscreen" paste target - const scrollTop = this.surface.$scrollContainer.scrollTop(); - - // Prevent surface observation due to native range changing - this.surfaceObserver.disable(); - this.$pasteTarget.empty().append( this.pasteTargetInput.$element ); - this.pasteTargetInput.setValue( text ).select(); - - // Restore scroll position after changing focus - this.surface.$scrollContainer.scrollTop( scrollTop ); - - // setTimeout: postpone until after the default copy action - setTimeout( () => { - // Change focus back - this.$attachedRootNode[ 0 ].focus(); - this.showSelectionState( originalSelection ); - // Restore scroll position - this.surface.$scrollContainer.scrollTop( scrollTop ); - this.surfaceObserver.clear(); - this.surfaceObserver.enable(); - // Detach input - this.pasteTargetInput.$element.detach(); - } ); - } -}; - -/** - * @inheritdoc - */ -ve.ce.MWWikitextSurface.prototype.afterPasteInsertExternalData = function ( targetFragment, pastedDocumentModel, contextRange ) { - const wasSpecial = this.pasteSpecial, - // TODO: This check returns true if the paste contains meaningful structure (tables, lists etc.) - // but no annotations (bold, links etc.). - wasPlain = wasSpecial || pastedDocumentModel.data.isPlainText( contextRange, true, undefined, true ); - - const plainPastedDocumentModel = pastedDocumentModel.shallowCloneFromRange( contextRange ); - plainPastedDocumentModel.data.sanitize( { plainText: true, keepEmptyContentBranches: true } ); - // We just turned this into plaintext, which probably - // affected the content-length. Luckily, because of - // the earlier clone, we know we just want the whole - // document, and because of the major change to - // plaintext, the difference between originalRange and - // balancedRange don't really apply. As such, clear - // out newDocRange. (Can't just make it undefined; - // need to exclude the internal list, and since we're - // from a paste we also have to exclude the - // opening/closing paragraph.) - const plainContextRange = new ve.Range( plainPastedDocumentModel.getDocumentRange().from + 1, plainPastedDocumentModel.getDocumentRange().to - 1 ); - this.pasteSpecial = true; - - // isPlainText is true but we still need sanitize (e.g. remove lists) - const promise = ve.ce.MWWikitextSurface.super.prototype.afterPasteInsertExternalData.call( this, targetFragment, plainPastedDocumentModel, plainContextRange ); - if ( !wasPlain ) { - promise.then( () => { - // We need to wait for the selection change after paste as that triggers - // a contextChange event. Really we should wait for the afterPaste promise to resolve. - setTimeout( () => { - const surface = this.getSurface(), - context = surface.getContext(); - // Ensure surface is deactivated on mobile so context can be shown (T336073) - if ( context.isMobile() ) { - surface.getView().deactivate(); - } - context.addPersistentSource( { - embeddable: false, - name: 'wikitextPaste', - data: { - doc: pastedDocumentModel, - contextRange: contextRange, - fragment: targetFragment - } - } ); - surface.getModel().once( 'select', () => { - context.removePersistentSource( 'wikitextPaste' ); - } ); - } ); - } ); - } - return promise; +ve.ce.MWWikitextSurface.prototype.createClipboardHandler = function () { + return new ve.ce.MWWikitextClipboardHandler( this ); }; diff --git a/modules/ve-mw/tests/ce/ve.ce.Surface.test.js b/modules/ve-mw/tests/ce/ve.ce.Surface.test.js index 4c55d1431c..486f1633dc 100644 --- a/modules/ve-mw/tests/ce/ve.ce.Surface.test.js +++ b/modules/ve-mw/tests/ce/ve.ce.Surface.test.js @@ -24,7 +24,7 @@ QUnit.test( 'beforePaste/afterPaste', ( assert ) => { documentHtml: '

', rangeOrSelection: new ve.Range( 1 ), pasteHtml: '--', - pasteTargetHtml: '--', + clipboardHandlerHtml: '--', fromVe: true, expectedRangeOrSelection: new ve.Range( 5 ), expectedHtml: '

--

', From f29daa890dfb4b00dcd546c6ee06d5985bc7cba0 Mon Sep 17 00:00:00 2001 From: Jon Robson Date: Wed, 23 Oct 2024 08:38:16 -0700 Subject: [PATCH 007/730] SkinFactory::getSkinNames is deprecated, use getInstalledSkins Bug: T377521 Change-Id: I4f66ce9929e0240e1c89f59ef781d0a378263322 --- includes/VisualEditorDesktopArticleTargetInitModule.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/VisualEditorDesktopArticleTargetInitModule.php b/includes/VisualEditorDesktopArticleTargetInitModule.php index fc22fdd056..83796d84e3 100644 --- a/includes/VisualEditorDesktopArticleTargetInitModule.php +++ b/includes/VisualEditorDesktopArticleTargetInitModule.php @@ -37,7 +37,7 @@ public function getMessages() { foreach ( [ 'edit', 'create', 'edit-local', 'create-local' ] as $msgKey ) { // MediaWiki defaults $messages[] = "skin-view-$msgKey"; - foreach ( $services->getSkinFactory()->getSkinNames() as $skname => $unused ) { + foreach ( $services->getSkinFactory()->getInstalledSkins() as $skname => $unused ) { // Per-skin overrides // Messages: vector-view-edit, vector-view-create // Disable database lookups for site-level message overrides as they From d088ccdab035aea09b0004b24be647c21cbde1bb Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 25 Oct 2024 09:53:31 +0200 Subject: [PATCH 008/730] Localisation updates from https://translatewiki.net. Change-Id: Icec5cb468e374bf1c1add3cc6c76e226e49f6bc6 --- i18n/ve-mw/ab.json | 1 - i18n/ve-mw/abs.json | 1 - i18n/ve-mw/ady-cyrl.json | 1 - i18n/ve-mw/ami.json | 1 - i18n/ve-mw/api/ar.json | 1 - i18n/ve-mw/api/ba.json | 1 - i18n/ve-mw/api/diq.json | 1 - i18n/ve-mw/api/eo.json | 1 - i18n/ve-mw/api/eu.json | 1 - i18n/ve-mw/api/fa.json | 1 - i18n/ve-mw/api/ilo.json | 1 - i18n/ve-mw/api/lki.json | 1 - i18n/ve-mw/api/sd.json | 1 - i18n/ve-mw/api/tw.json | 1 - i18n/ve-mw/ba.json | 1 - i18n/ve-mw/be.json | 1 - i18n/ve-mw/blc.json | 1 - i18n/ve-mw/btm.json | 1 - i18n/ve-mw/bto.json | 1 - i18n/ve-mw/bug-bugi.json | 4 +- i18n/ve-mw/cak.json | 1 - i18n/ve-mw/cdo.json | 1 - i18n/ve-mw/ce.json | 1 - i18n/ve-mw/cop.json | 2 +- i18n/ve-mw/dag.json | 1 - i18n/ve-mw/dga.json | 1 - i18n/ve-mw/din.json | 1 - i18n/ve-mw/dua.json | 1 - i18n/ve-mw/et.json | 1 - i18n/ve-mw/fon.json | 1 - i18n/ve-mw/fr.json | 1 - i18n/ve-mw/frp.json | 1 - i18n/ve-mw/gaa.json | 1 - i18n/ve-mw/gld.json | 1 - i18n/ve-mw/gur.json | 1 - i18n/ve-mw/ha.json | 1 - i18n/ve-mw/hak.json | 1 - i18n/ve-mw/id.json | 1 - i18n/ve-mw/ig.json | 1 - i18n/ve-mw/igl.json | 3 +- i18n/ve-mw/kcg.json | 1 - i18n/ve-mw/kjh.json | 1 - i18n/ve-mw/knc.json | 1 - i18n/ve-mw/ksw.json | 1 - i18n/ve-mw/lez.json | 1 - i18n/ve-mw/lmo.json | 1 - i18n/ve-mw/mdh.json | 10 ++++ i18n/ve-mw/mnc.json | 1 - i18n/ve-mw/mos.json | 1 - i18n/ve-mw/mui.json | 6 ++- i18n/ve-mw/mwlanguagevariant/af.json | 1 - i18n/ve-mw/mwlanguagevariant/ar.json | 1 - i18n/ve-mw/mwlanguagevariant/as.json | 1 - i18n/ve-mw/mwlanguagevariant/ast.json | 1 - i18n/ve-mw/mwlanguagevariant/az.json | 1 - i18n/ve-mw/mwlanguagevariant/ban.json | 1 - i18n/ve-mw/mwlanguagevariant/be-tarask.json | 1 - i18n/ve-mw/mwlanguagevariant/be.json | 1 - i18n/ve-mw/mwlanguagevariant/bg.json | 1 - i18n/ve-mw/mwlanguagevariant/blk.json | 1 - i18n/ve-mw/mwlanguagevariant/bn.json | 1 - i18n/ve-mw/mwlanguagevariant/br.json | 1 - i18n/ve-mw/mwlanguagevariant/ce.json | 1 - i18n/ve-mw/mwlanguagevariant/cs.json | 1 - i18n/ve-mw/mwlanguagevariant/de.json | 1 - i18n/ve-mw/mwlanguagevariant/eo.json | 1 - i18n/ve-mw/mwlanguagevariant/es.json | 1 - i18n/ve-mw/mwlanguagevariant/eu.json | 1 - i18n/ve-mw/mwlanguagevariant/fi.json | 1 - i18n/ve-mw/mwlanguagevariant/fr.json | 1 - i18n/ve-mw/mwlanguagevariant/fy.json | 1 - i18n/ve-mw/mwlanguagevariant/gl.json | 1 - i18n/ve-mw/mwlanguagevariant/hi.json | 1 - i18n/ve-mw/mwlanguagevariant/hr.json | 1 - i18n/ve-mw/mwlanguagevariant/hu.json | 1 - i18n/ve-mw/mwlanguagevariant/hy.json | 1 - i18n/ve-mw/mwlanguagevariant/ia.json | 1 - i18n/ve-mw/mwlanguagevariant/id.json | 1 - i18n/ve-mw/mwlanguagevariant/it.json | 1 - i18n/ve-mw/mwlanguagevariant/ja.json | 1 - i18n/ve-mw/mwlanguagevariant/kcg.json | 1 - i18n/ve-mw/mwlanguagevariant/kn.json | 1 - i18n/ve-mw/mwlanguagevariant/ko.json | 1 - i18n/ve-mw/mwlanguagevariant/lb.json | 1 - i18n/ve-mw/mwlanguagevariant/lij.json | 1 - i18n/ve-mw/mwlanguagevariant/lmo.json | 1 - i18n/ve-mw/mwlanguagevariant/lv.json | 1 - i18n/ve-mw/mwlanguagevariant/min.json | 1 - i18n/ve-mw/mwlanguagevariant/mk.json | 1 - i18n/ve-mw/mwlanguagevariant/ml.json | 1 - i18n/ve-mw/mwlanguagevariant/mr.json | 1 - i18n/ve-mw/mwlanguagevariant/ms.json | 1 - i18n/ve-mw/mwlanguagevariant/my.json | 1 - i18n/ve-mw/mwlanguagevariant/nb.json | 1 - i18n/ve-mw/mwlanguagevariant/nds-nl.json | 1 - i18n/ve-mw/mwlanguagevariant/ne.json | 1 - i18n/ve-mw/mwlanguagevariant/nl.json | 1 - i18n/ve-mw/mwlanguagevariant/nn.json | 1 - i18n/ve-mw/mwlanguagevariant/nqo.json | 1 - i18n/ve-mw/mwlanguagevariant/pl.json | 1 - i18n/ve-mw/mwlanguagevariant/pt-br.json | 1 - i18n/ve-mw/mwlanguagevariant/pt.json | 1 - i18n/ve-mw/mwlanguagevariant/roa-tara.json | 1 - i18n/ve-mw/mwlanguagevariant/rsk.json | 1 - i18n/ve-mw/mwlanguagevariant/sah.json | 1 - i18n/ve-mw/mwlanguagevariant/scn.json | 3 +- i18n/ve-mw/mwlanguagevariant/sh-latn.json | 1 - i18n/ve-mw/mwlanguagevariant/sk.json | 1 - i18n/ve-mw/mwlanguagevariant/sl.json | 1 - i18n/ve-mw/mwlanguagevariant/sq.json | 1 - i18n/ve-mw/mwlanguagevariant/sr-el.json | 4 +- i18n/ve-mw/mwlanguagevariant/sv.json | 1 - i18n/ve-mw/mwlanguagevariant/tr.json | 1 - i18n/ve-mw/mwlanguagevariant/tt-cyrl.json | 1 - i18n/ve-mw/mwlanguagevariant/ug-arab.json | 1 - i18n/ve-mw/mwlanguagevariant/uk.json | 1 - i18n/ve-mw/mwlanguagevariant/vec.json | 1 - i18n/ve-mw/mwlanguagevariant/vi.json | 1 - i18n/ve-mw/mwlanguagevariant/zh-hant.json | 1 - i18n/ve-mw/nmz.json | 1 - i18n/ve-mw/nqo.json | 1 - i18n/ve-mw/nup.json | 1 - i18n/ve-mw/nyn.json | 1 - i18n/ve-mw/nys.json | 1 - i18n/ve-mw/nzi.json | 1 - i18n/ve-mw/pt.json | 1 - i18n/ve-mw/rn.json | 1 - i18n/ve-mw/ro.json | 1 - i18n/ve-mw/rsk.json | 1 - i18n/ve-mw/rw.json | 1 - i18n/ve-mw/sco.json | 1 - i18n/ve-mw/se.json | 1 + i18n/ve-mw/sq.json | 1 - i18n/ve-mw/sr-ec.json | 1 - i18n/ve-mw/tig.json | 51 ++++++++++++++++++++- i18n/ve-mw/tl.json | 1 - i18n/ve-mw/tum.json | 1 - i18n/ve-mw/tw.json | 1 - i18n/ve-mw/vmw.json | 1 - i18n/ve-mw/wls.json | 1 - i18n/ve-mw/xsy.json | 1 - i18n/ve-mw/zh-hans.json | 2 +- i18n/ve-wmf/ady-cyrl.json | 1 - i18n/ve-wmf/ar.json | 1 - i18n/ve-wmf/az.json | 1 - i18n/ve-wmf/ba.json | 1 - i18n/ve-wmf/be-tarask.json | 1 - i18n/ve-wmf/bn.json | 1 - i18n/ve-wmf/ce.json | 1 - i18n/ve-wmf/ceb.json | 1 - i18n/ve-wmf/cs.json | 1 - i18n/ve-wmf/da.json | 1 - i18n/ve-wmf/el.json | 1 - i18n/ve-wmf/es.json | 1 - i18n/ve-wmf/fa.json | 1 - i18n/ve-wmf/fi.json | 1 - i18n/ve-wmf/fo.json | 1 - i18n/ve-wmf/fr.json | 1 - i18n/ve-wmf/fy.json | 1 - i18n/ve-wmf/gl.json | 1 - i18n/ve-wmf/ha.json | 1 - i18n/ve-wmf/id.json | 1 - i18n/ve-wmf/it.json | 1 - i18n/ve-wmf/ja.json | 1 - i18n/ve-wmf/ka.json | 1 - i18n/ve-wmf/kcg.json | 1 - i18n/ve-wmf/ko.json | 1 - i18n/ve-wmf/lv.json | 1 - i18n/ve-wmf/mk.json | 1 - i18n/ve-wmf/mnc.json | 1 - i18n/ve-wmf/mr.json | 1 - i18n/ve-wmf/ms.json | 1 - i18n/ve-wmf/nb.json | 1 - i18n/ve-wmf/nl.json | 1 - i18n/ve-wmf/om.json | 1 - i18n/ve-wmf/pl.json | 1 - i18n/ve-wmf/pt-br.json | 1 - i18n/ve-wmf/pt.json | 1 - i18n/ve-wmf/ro.json | 1 - i18n/ve-wmf/rw.json | 1 - i18n/ve-wmf/sco.json | 1 - i18n/ve-wmf/sq.json | 1 - i18n/ve-wmf/sv.json | 1 - i18n/ve-wmf/tig.json | 8 ++++ i18n/ve-wmf/tw.json | 1 - i18n/ve-wmf/uk.json | 1 - i18n/ve-wmf/vi.json | 1 - i18n/ve-wmf/yi.json | 1 - i18n/ve-wmf/zh-hans.json | 5 +- i18n/ve-wmf/zh-hant.json | 1 - 190 files changed, 81 insertions(+), 196 deletions(-) create mode 100644 i18n/ve-mw/mdh.json create mode 100644 i18n/ve-wmf/tig.json diff --git a/i18n/ve-mw/ab.json b/i18n/ve-mw/ab.json index cf491cec7b..078731c3f3 100644 --- a/i18n/ve-mw/ab.json +++ b/i18n/ve-mw/ab.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Fraxinus.cs" ] }, diff --git a/i18n/ve-mw/abs.json b/i18n/ve-mw/abs.json index de96354e92..a551c2c49e 100644 --- a/i18n/ve-mw/abs.json +++ b/i18n/ve-mw/abs.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Anok kutai jang" ] }, diff --git a/i18n/ve-mw/ady-cyrl.json b/i18n/ve-mw/ady-cyrl.json index 76b915fa97..614bf5a746 100644 --- a/i18n/ve-mw/ady-cyrl.json +++ b/i18n/ve-mw/ady-cyrl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bedynokue.nart", "Highlander45temp", "Inyzh", diff --git a/i18n/ve-mw/ami.json b/i18n/ve-mw/ami.json index 83c3ee7c07..c943e1eb57 100644 --- a/i18n/ve-mw/ami.json +++ b/i18n/ve-mw/ami.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Vickylin77s" ] }, diff --git a/i18n/ve-mw/api/ar.json b/i18n/ve-mw/api/ar.json index 73c644101f..0dc39a2262 100644 --- a/i18n/ve-mw/api/ar.json +++ b/i18n/ve-mw/api/ar.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Matma Rex", "Meno25", "ديفيد", diff --git a/i18n/ve-mw/api/ba.json b/i18n/ve-mw/api/ba.json index 6dbe789116..5e10c4c740 100644 --- a/i18n/ve-mw/api/ba.json +++ b/i18n/ve-mw/api/ba.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Lizalizaufa", "Азат Хәлилов", "Айсар", diff --git a/i18n/ve-mw/api/diq.json b/i18n/ve-mw/api/diq.json index e5348e521a..39e80e27e7 100644 --- a/i18n/ve-mw/api/diq.json +++ b/i18n/ve-mw/api/diq.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "1917 Ekim Devrimi", - "Amire80", "Gırd", "Kumkumuk", "Mirzali", diff --git a/i18n/ve-mw/api/eo.json b/i18n/ve-mw/api/eo.json index 203c233c9f..9287b5a592 100644 --- a/i18n/ve-mw/api/eo.json +++ b/i18n/ve-mw/api/eo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "KuboF", "Kvardek du", "Matma Rex", diff --git a/i18n/ve-mw/api/eu.json b/i18n/ve-mw/api/eu.json index 6d5d0c0e28..a11c99c87c 100644 --- a/i18n/ve-mw/api/eu.json +++ b/i18n/ve-mw/api/eu.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Iñaki LL", "Sator" ] diff --git a/i18n/ve-mw/api/fa.json b/i18n/ve-mw/api/fa.json index d046dc9333..8fc2088dec 100644 --- a/i18n/ve-mw/api/fa.json +++ b/i18n/ve-mw/api/fa.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Alireza Ivaz", - "Amire80", "Beginneruser", "Darafsh", "Ebrahim", diff --git a/i18n/ve-mw/api/ilo.json b/i18n/ve-mw/api/ilo.json index 02365b51b7..6d3d2c6361 100644 --- a/i18n/ve-mw/api/ilo.json +++ b/i18n/ve-mw/api/ilo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Lam-ang" ] }, diff --git a/i18n/ve-mw/api/lki.json b/i18n/ve-mw/api/lki.json index 4a918093fb..160cc4861b 100644 --- a/i18n/ve-mw/api/lki.json +++ b/i18n/ve-mw/api/lki.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Hosseinblue" ] }, diff --git a/i18n/ve-mw/api/sd.json b/i18n/ve-mw/api/sd.json index 705411047b..0038a6974c 100644 --- a/i18n/ve-mw/api/sd.json +++ b/i18n/ve-mw/api/sd.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Mehtab ahmed" ] }, diff --git a/i18n/ve-mw/api/tw.json b/i18n/ve-mw/api/tw.json index 74e4af5578..f11ccb2560 100644 --- a/i18n/ve-mw/api/tw.json +++ b/i18n/ve-mw/api/tw.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Celestinesucess", "Robertjamal12" ] diff --git a/i18n/ve-mw/ba.json b/i18n/ve-mw/ba.json index e4a0c300cd..0188801f5f 100644 --- a/i18n/ve-mw/ba.json +++ b/i18n/ve-mw/ba.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "AiseluRB", - "Amire80", "Assele", "Bashkorttan", "Haqmar", diff --git a/i18n/ve-mw/be.json b/i18n/ve-mw/be.json index 10259a9a2b..ec3abf5ed5 100644 --- a/i18n/ve-mw/be.json +++ b/i18n/ve-mw/be.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Artificial123", "Artsiom91", "Chadyka", diff --git a/i18n/ve-mw/blc.json b/i18n/ve-mw/blc.json index 4ba09ca5ac..d0962ed0aa 100644 --- a/i18n/ve-mw/blc.json +++ b/i18n/ve-mw/blc.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Muskwatch" ] }, diff --git a/i18n/ve-mw/btm.json b/i18n/ve-mw/btm.json index 06f0e4bc6c..ad37bdf352 100644 --- a/i18n/ve-mw/btm.json +++ b/i18n/ve-mw/btm.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Simartampua" ] }, diff --git a/i18n/ve-mw/bto.json b/i18n/ve-mw/bto.json index cbeb6c5c3e..05ea2ce9c6 100644 --- a/i18n/ve-mw/bto.json +++ b/i18n/ve-mw/bto.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Filipinayzd" ] }, diff --git a/i18n/ve-mw/bug-bugi.json b/i18n/ve-mw/bug-bugi.json index bf6836b39d..ad89bca003 100644 --- a/i18n/ve-mw/bug-bugi.json +++ b/i18n/ve-mw/bug-bugi.json @@ -1,8 +1,6 @@ { "@metadata": { - "authors": [ - "Amire80" - ] + "authors": [] }, "tooltip-ca-ve-edit": "ᨄᨉᨙᨌᨙᨂᨗ ᨕᨗᨐᨕᨙ ᨒᨛᨄᨂᨙ" } diff --git a/i18n/ve-mw/cak.json b/i18n/ve-mw/cak.json index fbbbae4d17..71f0dfa7c9 100644 --- a/i18n/ve-mw/cak.json +++ b/i18n/ve-mw/cak.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Chocoj" ] }, diff --git a/i18n/ve-mw/cdo.json b/i18n/ve-mw/cdo.json index cb1e246907..91bac19ccb 100644 --- a/i18n/ve-mw/cdo.json +++ b/i18n/ve-mw/cdo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Davidzdh", "GnuDoyng", "Yejianfei", diff --git a/i18n/ve-mw/ce.json b/i18n/ve-mw/ce.json index 641dbbc374..d989c5bce2 100644 --- a/i18n/ve-mw/ce.json +++ b/i18n/ve-mw/ce.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "TMg", "Исмаил Садуев", "Умар" diff --git a/i18n/ve-mw/cop.json b/i18n/ve-mw/cop.json index e625fa317a..1b8d868ee7 100644 --- a/i18n/ve-mw/cop.json +++ b/i18n/ve-mw/cop.json @@ -7,7 +7,7 @@ ] }, "tooltip-ca-ve-edit": "ⲫⲱⲛϩ ⲛ̀ⲧⲁⲓⲥⲉⲗⲓⲥ", - "visualeditor-ca-createsource": "ⲥⲱⲛⲧ ⲛ̀ϯⲁⲣⲭⲏ", + "visualeditor-ca-createsource": "Ⲑⲁⲙⲓⲟ̀ ⲛ̀ⲟⲩⲁⲣⲭⲏ", "visualeditor-ca-editsource": "ⲫⲱⲛϩ ⲛ̀ϯⲡⲏⲅⲏ", "visualeditor-ca-editsource-section": "ⲫⲱⲛϩ ⲛ̀ϯⲡⲏⲅⲏ", "visualeditor-descriptionpagelink": "Project:ⲣⲉϥϣⲓⲃϯ ⲛ̀ⲛⲁⲩ" diff --git a/i18n/ve-mw/dag.json b/i18n/ve-mw/dag.json index 0b9468aa53..3470cdaea6 100644 --- a/i18n/ve-mw/dag.json +++ b/i18n/ve-mw/dag.json @@ -3,7 +3,6 @@ "authors": [ "Adam Tuferu", "Alhaj Darajaati", - "Amire80", "Bashiru Nurideen Pona", "Chirifo", "Din-nani1", diff --git a/i18n/ve-mw/dga.json b/i18n/ve-mw/dga.json index ffd401eb62..183925e731 100644 --- a/i18n/ve-mw/dga.json +++ b/i18n/ve-mw/dga.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Alhassan Mohammed Awal", - "Amire80", "Joachim Yirkang", "Linus Konkor", "Zakaria Tunsung" diff --git a/i18n/ve-mw/din.json b/i18n/ve-mw/din.json index e1ba6787e6..c33276370a 100644 --- a/i18n/ve-mw/din.json +++ b/i18n/ve-mw/din.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Dinkawiki" ] }, diff --git a/i18n/ve-mw/dua.json b/i18n/ve-mw/dua.json index b3d74dbd88..7ef49e0558 100644 --- a/i18n/ve-mw/dua.json +++ b/i18n/ve-mw/dua.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "EbelleMarcel", "Olivier Moukodi" ] diff --git a/i18n/ve-mw/et.json b/i18n/ve-mw/et.json index d9aa813d8f..cb7745bb2b 100644 --- a/i18n/ve-mw/et.json +++ b/i18n/ve-mw/et.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Adeliine", - "Amire80", "Avjoska", "Boxmein", "Cumbril", diff --git a/i18n/ve-mw/fon.json b/i18n/ve-mw/fon.json index 811166a1b7..0613f72cb5 100644 --- a/i18n/ve-mw/fon.json +++ b/i18n/ve-mw/fon.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Mahuton" ] }, diff --git a/i18n/ve-mw/fr.json b/i18n/ve-mw/fr.json index 488a15f991..8736e9cc9b 100644 --- a/i18n/ve-mw/fr.json +++ b/i18n/ve-mw/fr.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Automatik", "Benoit Rochon", "Boniface", diff --git a/i18n/ve-mw/frp.json b/i18n/ve-mw/frp.json index cd9a664783..0910699596 100644 --- a/i18n/ve-mw/frp.json +++ b/i18n/ve-mw/frp.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "ChrisPtDe" ] }, diff --git a/i18n/ve-mw/gaa.json b/i18n/ve-mw/gaa.json index 7573a39f24..0225d26e8f 100644 --- a/i18n/ve-mw/gaa.json +++ b/i18n/ve-mw/gaa.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Flixtey", "Mybluberet", "NanaYawBotar" diff --git a/i18n/ve-mw/gld.json b/i18n/ve-mw/gld.json index 6080a43886..81f6209041 100644 --- a/i18n/ve-mw/gld.json +++ b/i18n/ve-mw/gld.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "RFScott" ] }, diff --git a/i18n/ve-mw/gur.json b/i18n/ve-mw/gur.json index 2ed230eae2..d570d30228 100644 --- a/i18n/ve-mw/gur.json +++ b/i18n/ve-mw/gur.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Akakiiri", - "Amire80", "Atalata Gumah", "Ayire Adongo" ] diff --git a/i18n/ve-mw/ha.json b/i18n/ve-mw/ha.json index 53676ccf46..756f5717a9 100644 --- a/i18n/ve-mw/ha.json +++ b/i18n/ve-mw/ha.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bashir Gwanki", "Bello Na'im", "DonCamillo", diff --git a/i18n/ve-mw/hak.json b/i18n/ve-mw/hak.json index 298d507a97..862efc851e 100644 --- a/i18n/ve-mw/hak.json +++ b/i18n/ve-mw/hak.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Hakka", "唐吉訶德的侍從" ] diff --git a/i18n/ve-mw/id.json b/i18n/ve-mw/id.json index db5bf69455..259b40257b 100644 --- a/i18n/ve-mw/id.json +++ b/i18n/ve-mw/id.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Ahdan", - "Amire80", "Beeyan", "Bennylin", "Chinamoonroll", diff --git a/i18n/ve-mw/ig.json b/i18n/ve-mw/ig.json index 7b1a5823cb..5122e72f32 100644 --- a/i18n/ve-mw/ig.json +++ b/i18n/ve-mw/ig.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Edith Nwobu", "Izuchi Onyeike", "Olugold", diff --git a/i18n/ve-mw/igl.json b/i18n/ve-mw/igl.json index b815682fbe..424478f39a 100644 --- a/i18n/ve-mw/igl.json +++ b/i18n/ve-mw/igl.json @@ -1,8 +1,7 @@ { "@metadata": { "authors": [ - "AgnesAbah", - "Amire80" + "AgnesAbah" ] }, "visualeditor-ca-createlocaldescriptionsource": "Dí ujuwé érané manwu", diff --git a/i18n/ve-mw/kcg.json b/i18n/ve-mw/kcg.json index 9b4a46c750..5343bac9cf 100644 --- a/i18n/ve-mw/kcg.json +++ b/i18n/ve-mw/kcg.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Kambai Akau" ] }, diff --git a/i18n/ve-mw/kjh.json b/i18n/ve-mw/kjh.json index ea0a91bcc1..27085b56f4 100644 --- a/i18n/ve-mw/kjh.json +++ b/i18n/ve-mw/kjh.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "AlexandrL714", - "Amire80", "Oxianboal", "Андрей Саг." ] diff --git a/i18n/ve-mw/knc.json b/i18n/ve-mw/knc.json index 7265f049e8..f605f7d320 100644 --- a/i18n/ve-mw/knc.json +++ b/i18n/ve-mw/knc.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Mohammedbama123" ] }, diff --git a/i18n/ve-mw/ksw.json b/i18n/ve-mw/ksw.json index 65057e7f36..18de027db2 100644 --- a/i18n/ve-mw/ksw.json +++ b/i18n/ve-mw/ksw.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Jaeminlovetaejoon", "SawJaemin" ] diff --git a/i18n/ve-mw/lez.json b/i18n/ve-mw/lez.json index 11b8aabc73..7608e9d309 100644 --- a/i18n/ve-mw/lez.json +++ b/i18n/ve-mw/lez.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Migraghvi", "Soul Train" ] diff --git a/i18n/ve-mw/lmo.json b/i18n/ve-mw/lmo.json index 82c8381cd2..3720b709da 100644 --- a/i18n/ve-mw/lmo.json +++ b/i18n/ve-mw/lmo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Gloria sah", "Mondschein", "Ninonino", diff --git a/i18n/ve-mw/mdh.json b/i18n/ve-mw/mdh.json new file mode 100644 index 0000000000..b6a4780aca --- /dev/null +++ b/i18n/ve-mw/mdh.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Bangsa Manusia" + ] + }, + "visualeditor-ca-createsource": "Mumbal sa ebpunan", + "visualeditor-ca-editsource": "Umbayan i ebpunan", + "visualeditor-ca-editsource-section": "Umbayan i ebpunan" +} diff --git a/i18n/ve-mw/mnc.json b/i18n/ve-mw/mnc.json index 1f07dc1289..4c9759be66 100644 --- a/i18n/ve-mw/mnc.json +++ b/i18n/ve-mw/mnc.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Chulsu463", "MiiCii" ] diff --git a/i18n/ve-mw/mos.json b/i18n/ve-mw/mos.json index 30c515d9af..63cd968581 100644 --- a/i18n/ve-mw/mos.json +++ b/i18n/ve-mw/mos.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Abdul Fatawu 352", - "Amire80", "Hasslaebetch", "Raizkgh" ] diff --git a/i18n/ve-mw/mui.json b/i18n/ve-mw/mui.json index ec3d8b38b3..f8e3531f54 100644 --- a/i18n/ve-mw/mui.json +++ b/i18n/ve-mw/mui.json @@ -6,7 +6,9 @@ ] }, "tooltip-ca-ve-edit": "Robah laman ni", - "visualeditor-ca-editsource": "Robah sumber", - "visualeditor-ca-editsource-section": "robah sumber", + "visualeditor-ca-createlocaldescriptionsource": "Tamba sumber keterangan sinila", + "visualeditor-ca-createsource": "Gawé' sumber", + "visualeditor-ca-editsource": "Dandani sumber", + "visualeditor-ca-editsource-section": "dandani sumber", "visualeditor-descriptionpagelink": "Project:VisualEditor" } diff --git a/i18n/ve-mw/mwlanguagevariant/af.json b/i18n/ve-mw/mwlanguagevariant/af.json index db4258a8de..f0cff889a9 100644 --- a/i18n/ve-mw/mwlanguagevariant/af.json +++ b/i18n/ve-mw/mwlanguagevariant/af.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Biggs ZA", "Fwolff", "Rooiratel" diff --git a/i18n/ve-mw/mwlanguagevariant/ar.json b/i18n/ve-mw/mwlanguagevariant/ar.json index 5298979122..858c0f7ec4 100644 --- a/i18n/ve-mw/mwlanguagevariant/ar.json +++ b/i18n/ve-mw/mwlanguagevariant/ar.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Meno25", "محمد أحمد عبد الفتاح" ] diff --git a/i18n/ve-mw/mwlanguagevariant/as.json b/i18n/ve-mw/mwlanguagevariant/as.json index 1f7ad8d06a..073a1b816e 100644 --- a/i18n/ve-mw/mwlanguagevariant/as.json +++ b/i18n/ve-mw/mwlanguagevariant/as.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Simbu123" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/ast.json b/i18n/ve-mw/mwlanguagevariant/ast.json index 2cbe67608d..84cb2335dc 100644 --- a/i18n/ve-mw/mwlanguagevariant/ast.json +++ b/i18n/ve-mw/mwlanguagevariant/ast.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Xuacu" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/az.json b/i18n/ve-mw/mwlanguagevariant/az.json index a8a7bd7325..b9219dc26c 100644 --- a/i18n/ve-mw/mwlanguagevariant/az.json +++ b/i18n/ve-mw/mwlanguagevariant/az.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "NMW03", "Nemoralis" ] diff --git a/i18n/ve-mw/mwlanguagevariant/ban.json b/i18n/ve-mw/mwlanguagevariant/ban.json index 7072e4835b..cb37cf6291 100644 --- a/i18n/ve-mw/mwlanguagevariant/ban.json +++ b/i18n/ve-mw/mwlanguagevariant/ban.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Chinamoonroll" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/be-tarask.json b/i18n/ve-mw/mwlanguagevariant/be-tarask.json index a2560c97c1..2b9ccf4116 100644 --- a/i18n/ve-mw/mwlanguagevariant/be-tarask.json +++ b/i18n/ve-mw/mwlanguagevariant/be-tarask.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Renessaince" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/be.json b/i18n/ve-mw/mwlanguagevariant/be.json index eef3813a9c..d58c864cba 100644 --- a/i18n/ve-mw/mwlanguagevariant/be.json +++ b/i18n/ve-mw/mwlanguagevariant/be.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Artsiom91", "Chadyka" ] diff --git a/i18n/ve-mw/mwlanguagevariant/bg.json b/i18n/ve-mw/mwlanguagevariant/bg.json index ffdb13b890..27d7424843 100644 --- a/i18n/ve-mw/mwlanguagevariant/bg.json +++ b/i18n/ve-mw/mwlanguagevariant/bg.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "ShockD", "StanProg" ] diff --git a/i18n/ve-mw/mwlanguagevariant/blk.json b/i18n/ve-mw/mwlanguagevariant/blk.json index ac96bcc3aa..18c39a078a 100644 --- a/i18n/ve-mw/mwlanguagevariant/blk.json +++ b/i18n/ve-mw/mwlanguagevariant/blk.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Khun Kt", "咽頭べさ" ] diff --git a/i18n/ve-mw/mwlanguagevariant/bn.json b/i18n/ve-mw/mwlanguagevariant/bn.json index 08d4a58320..fbac4e2a8d 100644 --- a/i18n/ve-mw/mwlanguagevariant/bn.json +++ b/i18n/ve-mw/mwlanguagevariant/bn.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Ahm masum", - "Amire80", "আফতাবুজ্জামান" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/br.json b/i18n/ve-mw/mwlanguagevariant/br.json index 2c0f0558f1..ea32d0a36c 100644 --- a/i18n/ve-mw/mwlanguagevariant/br.json +++ b/i18n/ve-mw/mwlanguagevariant/br.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Adriendelucca", - "Amire80", "Y-M D" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/ce.json b/i18n/ve-mw/mwlanguagevariant/ce.json index 34c2c24890..2c60ce18e1 100644 --- a/i18n/ve-mw/mwlanguagevariant/ce.json +++ b/i18n/ve-mw/mwlanguagevariant/ce.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Умар" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/cs.json b/i18n/ve-mw/mwlanguagevariant/cs.json index 553a532dd0..c5bab27d95 100644 --- a/i18n/ve-mw/mwlanguagevariant/cs.json +++ b/i18n/ve-mw/mwlanguagevariant/cs.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Mormegil", "Patrik L." ] diff --git a/i18n/ve-mw/mwlanguagevariant/de.json b/i18n/ve-mw/mwlanguagevariant/de.json index d734755d44..d4cc9bc1e3 100644 --- a/i18n/ve-mw/mwlanguagevariant/de.json +++ b/i18n/ve-mw/mwlanguagevariant/de.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Metalhead64" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/eo.json b/i18n/ve-mw/mwlanguagevariant/eo.json index a92a5ec9fe..f0a788b8bd 100644 --- a/i18n/ve-mw/mwlanguagevariant/eo.json +++ b/i18n/ve-mw/mwlanguagevariant/eo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Mirin" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/es.json b/i18n/ve-mw/mwlanguagevariant/es.json index c88018914d..a2a6f744db 100644 --- a/i18n/ve-mw/mwlanguagevariant/es.json +++ b/i18n/ve-mw/mwlanguagevariant/es.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Fitoschido", "Macofe", "Rodney Araujo" diff --git a/i18n/ve-mw/mwlanguagevariant/eu.json b/i18n/ve-mw/mwlanguagevariant/eu.json index 0c9464b179..0feee13860 100644 --- a/i18n/ve-mw/mwlanguagevariant/eu.json +++ b/i18n/ve-mw/mwlanguagevariant/eu.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Iñaki LL", "Mikel Ibaiba", "Xabier Armendaritz" diff --git a/i18n/ve-mw/mwlanguagevariant/fi.json b/i18n/ve-mw/mwlanguagevariant/fi.json index 381f3dd37c..caa28a7c97 100644 --- a/i18n/ve-mw/mwlanguagevariant/fi.json +++ b/i18n/ve-mw/mwlanguagevariant/fi.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Alluk.", - "Amire80", "Hopea", "Nike", "Pyscowicz", diff --git a/i18n/ve-mw/mwlanguagevariant/fr.json b/i18n/ve-mw/mwlanguagevariant/fr.json index 53f5dfa64c..fd3adfda5c 100644 --- a/i18n/ve-mw/mwlanguagevariant/fr.json +++ b/i18n/ve-mw/mwlanguagevariant/fr.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "DePlusJean", "Gomoko", "Thibaut120094", diff --git a/i18n/ve-mw/mwlanguagevariant/fy.json b/i18n/ve-mw/mwlanguagevariant/fy.json index 67d170ca1f..f2b839af04 100644 --- a/i18n/ve-mw/mwlanguagevariant/fy.json +++ b/i18n/ve-mw/mwlanguagevariant/fy.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "PiefPafPier" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/gl.json b/i18n/ve-mw/mwlanguagevariant/gl.json index 8b3175aa67..dfa79bcffa 100644 --- a/i18n/ve-mw/mwlanguagevariant/gl.json +++ b/i18n/ve-mw/mwlanguagevariant/gl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Banjo", "Elisardojm" ] diff --git a/i18n/ve-mw/mwlanguagevariant/hi.json b/i18n/ve-mw/mwlanguagevariant/hi.json index 1b1a7fb70b..b77918a9d0 100644 --- a/i18n/ve-mw/mwlanguagevariant/hi.json +++ b/i18n/ve-mw/mwlanguagevariant/hi.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Saurmandal" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/hr.json b/i18n/ve-mw/mwlanguagevariant/hr.json index 10f2bb11b1..f8304e06b6 100644 --- a/i18n/ve-mw/mwlanguagevariant/hr.json +++ b/i18n/ve-mw/mwlanguagevariant/hr.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Ivi104", "MaGa" ] diff --git a/i18n/ve-mw/mwlanguagevariant/hu.json b/i18n/ve-mw/mwlanguagevariant/hu.json index 45326d34ce..0318e74464 100644 --- a/i18n/ve-mw/mwlanguagevariant/hu.json +++ b/i18n/ve-mw/mwlanguagevariant/hu.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bencemac", "Tacsipacsi", "Tgr" diff --git a/i18n/ve-mw/mwlanguagevariant/hy.json b/i18n/ve-mw/mwlanguagevariant/hy.json index e245d921ab..a5b7732e06 100644 --- a/i18n/ve-mw/mwlanguagevariant/hy.json +++ b/i18n/ve-mw/mwlanguagevariant/hy.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Kareyac", "Դավիթ Սարոյան" ] diff --git a/i18n/ve-mw/mwlanguagevariant/ia.json b/i18n/ve-mw/mwlanguagevariant/ia.json index bcc93aa7db..8f2476a30c 100644 --- a/i18n/ve-mw/mwlanguagevariant/ia.json +++ b/i18n/ve-mw/mwlanguagevariant/ia.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "McDutchie" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/id.json b/i18n/ve-mw/mwlanguagevariant/id.json index 4b565ac1d3..f26a815093 100644 --- a/i18n/ve-mw/mwlanguagevariant/id.json +++ b/i18n/ve-mw/mwlanguagevariant/id.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Gombang", "Rachmat04", "William Surya Permana" diff --git a/i18n/ve-mw/mwlanguagevariant/it.json b/i18n/ve-mw/mwlanguagevariant/it.json index a203a5c201..86d02d2fb9 100644 --- a/i18n/ve-mw/mwlanguagevariant/it.json +++ b/i18n/ve-mw/mwlanguagevariant/it.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Beta16", "Greis", "S4b1nuz E.656", diff --git a/i18n/ve-mw/mwlanguagevariant/ja.json b/i18n/ve-mw/mwlanguagevariant/ja.json index 49b97ab703..3e230cf7ed 100644 --- a/i18n/ve-mw/mwlanguagevariant/ja.json +++ b/i18n/ve-mw/mwlanguagevariant/ja.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Aefgh39622", - "Amire80", "Delim", "Hinaloe", "Omotecho", diff --git a/i18n/ve-mw/mwlanguagevariant/kcg.json b/i18n/ve-mw/mwlanguagevariant/kcg.json index 67c303214d..265c9ef3ac 100644 --- a/i18n/ve-mw/mwlanguagevariant/kcg.json +++ b/i18n/ve-mw/mwlanguagevariant/kcg.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Kambai Akau" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/kn.json b/i18n/ve-mw/mwlanguagevariant/kn.json index cf9da3c6ab..e45574f7a8 100644 --- a/i18n/ve-mw/mwlanguagevariant/kn.json +++ b/i18n/ve-mw/mwlanguagevariant/kn.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/ko.json b/i18n/ve-mw/mwlanguagevariant/ko.json index a46c69fc76..96e29cd6a1 100644 --- a/i18n/ve-mw/mwlanguagevariant/ko.json +++ b/i18n/ve-mw/mwlanguagevariant/ko.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Dr1t jg", "Ykhwong" ] diff --git a/i18n/ve-mw/mwlanguagevariant/lb.json b/i18n/ve-mw/mwlanguagevariant/lb.json index b47df25957..7c2df53b4d 100644 --- a/i18n/ve-mw/mwlanguagevariant/lb.json +++ b/i18n/ve-mw/mwlanguagevariant/lb.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Les Meloures", "Robby" ] diff --git a/i18n/ve-mw/mwlanguagevariant/lij.json b/i18n/ve-mw/mwlanguagevariant/lij.json index 2d7104afcc..8a0c6a384d 100644 --- a/i18n/ve-mw/mwlanguagevariant/lij.json +++ b/i18n/ve-mw/mwlanguagevariant/lij.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Giromin Cangiaxo" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/lmo.json b/i18n/ve-mw/mwlanguagevariant/lmo.json index e44316019b..c5da0d57ed 100644 --- a/i18n/ve-mw/mwlanguagevariant/lmo.json +++ b/i18n/ve-mw/mwlanguagevariant/lmo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Salvemm el lombard" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/lv.json b/i18n/ve-mw/mwlanguagevariant/lv.json index 92377712bf..3d48e592ee 100644 --- a/i18n/ve-mw/mwlanguagevariant/lv.json +++ b/i18n/ve-mw/mwlanguagevariant/lv.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Papuass" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/min.json b/i18n/ve-mw/mwlanguagevariant/min.json index 08772da0a4..51968b5bbf 100644 --- a/i18n/ve-mw/mwlanguagevariant/min.json +++ b/i18n/ve-mw/mwlanguagevariant/min.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Iwan Novirion" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/mk.json b/i18n/ve-mw/mwlanguagevariant/mk.json index 8b995b26ff..f2ad1339b5 100644 --- a/i18n/ve-mw/mwlanguagevariant/mk.json +++ b/i18n/ve-mw/mwlanguagevariant/mk.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bjankuloski06" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/ml.json b/i18n/ve-mw/mwlanguagevariant/ml.json index b5ef0f8e22..82e9aed399 100644 --- a/i18n/ve-mw/mwlanguagevariant/ml.json +++ b/i18n/ve-mw/mwlanguagevariant/ml.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Praveenp" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/mr.json b/i18n/ve-mw/mwlanguagevariant/mr.json index ea90110528..4bdf683707 100644 --- a/i18n/ve-mw/mwlanguagevariant/mr.json +++ b/i18n/ve-mw/mwlanguagevariant/mr.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Sureshkhole", "V.narsikar" ] diff --git a/i18n/ve-mw/mwlanguagevariant/ms.json b/i18n/ve-mw/mwlanguagevariant/ms.json index f6d66e64d4..0e85502df3 100644 --- a/i18n/ve-mw/mwlanguagevariant/ms.json +++ b/i18n/ve-mw/mwlanguagevariant/ms.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Anakmalaysia", "Encikmelur", "Jeluang Terluang" diff --git a/i18n/ve-mw/mwlanguagevariant/my.json b/i18n/ve-mw/mwlanguagevariant/my.json index f75edf2436..35596d443f 100644 --- a/i18n/ve-mw/mwlanguagevariant/my.json +++ b/i18n/ve-mw/mwlanguagevariant/my.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Dr Lotus Black" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/nb.json b/i18n/ve-mw/mwlanguagevariant/nb.json index a57a8cb186..59b5588408 100644 --- a/i18n/ve-mw/mwlanguagevariant/nb.json +++ b/i18n/ve-mw/mwlanguagevariant/nb.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Jon Harald Søby" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/nds-nl.json b/i18n/ve-mw/mwlanguagevariant/nds-nl.json index 9e1548f11f..6b10410fbb 100644 --- a/i18n/ve-mw/mwlanguagevariant/nds-nl.json +++ b/i18n/ve-mw/mwlanguagevariant/nds-nl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Servien" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/ne.json b/i18n/ve-mw/mwlanguagevariant/ne.json index 8353a15f9c..c0ddaf316c 100644 --- a/i18n/ve-mw/mwlanguagevariant/ne.json +++ b/i18n/ve-mw/mwlanguagevariant/ne.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Nirajan pant", "पर्वत सुबेदी", "बडा काजी", diff --git a/i18n/ve-mw/mwlanguagevariant/nl.json b/i18n/ve-mw/mwlanguagevariant/nl.json index 82de1a8456..d88ee8314e 100644 --- a/i18n/ve-mw/mwlanguagevariant/nl.json +++ b/i18n/ve-mw/mwlanguagevariant/nl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Mainframe98", "McDutchie", "Romaine" diff --git a/i18n/ve-mw/mwlanguagevariant/nn.json b/i18n/ve-mw/mwlanguagevariant/nn.json index 9e521da295..6919307304 100644 --- a/i18n/ve-mw/mwlanguagevariant/nn.json +++ b/i18n/ve-mw/mwlanguagevariant/nn.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Jon Harald Søby" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/nqo.json b/i18n/ve-mw/mwlanguagevariant/nqo.json index d370d0f921..71a111033b 100644 --- a/i18n/ve-mw/mwlanguagevariant/nqo.json +++ b/i18n/ve-mw/mwlanguagevariant/nqo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Lancine.kounfantoh.fofana" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/pl.json b/i18n/ve-mw/mwlanguagevariant/pl.json index bef7620d66..3c5701da6b 100644 --- a/i18n/ve-mw/mwlanguagevariant/pl.json +++ b/i18n/ve-mw/mwlanguagevariant/pl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Chrumps", "Sutan" ] diff --git a/i18n/ve-mw/mwlanguagevariant/pt-br.json b/i18n/ve-mw/mwlanguagevariant/pt-br.json index 9d264f4484..7159f985b1 100644 --- a/i18n/ve-mw/mwlanguagevariant/pt-br.json +++ b/i18n/ve-mw/mwlanguagevariant/pt-br.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Eduardoaddad", "Felipe L. Ewald" ] diff --git a/i18n/ve-mw/mwlanguagevariant/pt.json b/i18n/ve-mw/mwlanguagevariant/pt.json index bc83ba0c3a..606325c513 100644 --- a/i18n/ve-mw/mwlanguagevariant/pt.json +++ b/i18n/ve-mw/mwlanguagevariant/pt.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Hamilton Abreu" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/roa-tara.json b/i18n/ve-mw/mwlanguagevariant/roa-tara.json index 084910e0a2..f26303cc4e 100644 --- a/i18n/ve-mw/mwlanguagevariant/roa-tara.json +++ b/i18n/ve-mw/mwlanguagevariant/roa-tara.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Joetaras" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/rsk.json b/i18n/ve-mw/mwlanguagevariant/rsk.json index 08e88d8d71..037cf677d9 100644 --- a/i18n/ve-mw/mwlanguagevariant/rsk.json +++ b/i18n/ve-mw/mwlanguagevariant/rsk.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Vlad5250" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/sah.json b/i18n/ve-mw/mwlanguagevariant/sah.json index ad11a54355..9ceb17502f 100644 --- a/i18n/ve-mw/mwlanguagevariant/sah.json +++ b/i18n/ve-mw/mwlanguagevariant/sah.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "HalanTul" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/scn.json b/i18n/ve-mw/mwlanguagevariant/scn.json index f41d822727..0bd000fe9d 100644 --- a/i18n/ve-mw/mwlanguagevariant/scn.json +++ b/i18n/ve-mw/mwlanguagevariant/scn.json @@ -1,8 +1,7 @@ { "@metadata": { "authors": [ - "Ajeje Brazorf", - "Amire80" + "Ajeje Brazorf" ] }, "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Còdici dâ lingua", diff --git a/i18n/ve-mw/mwlanguagevariant/sh-latn.json b/i18n/ve-mw/mwlanguagevariant/sh-latn.json index 9f9a7e365d..5d07ea2c5b 100644 --- a/i18n/ve-mw/mwlanguagevariant/sh-latn.json +++ b/i18n/ve-mw/mwlanguagevariant/sh-latn.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Winston Sung" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/sk.json b/i18n/ve-mw/mwlanguagevariant/sk.json index fa293bada9..e4d183acda 100644 --- a/i18n/ve-mw/mwlanguagevariant/sk.json +++ b/i18n/ve-mw/mwlanguagevariant/sk.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Luky001" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/sl.json b/i18n/ve-mw/mwlanguagevariant/sl.json index 2f02b5cfcc..6a3292acdb 100644 --- a/i18n/ve-mw/mwlanguagevariant/sl.json +++ b/i18n/ve-mw/mwlanguagevariant/sl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Eleassar", "HairyFotr", "Janezdrilc" diff --git a/i18n/ve-mw/mwlanguagevariant/sq.json b/i18n/ve-mw/mwlanguagevariant/sq.json index dcdf2f0e4e..5d93421763 100644 --- a/i18n/ve-mw/mwlanguagevariant/sq.json +++ b/i18n/ve-mw/mwlanguagevariant/sq.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Besnik b", "TMg", "Vyolla" diff --git a/i18n/ve-mw/mwlanguagevariant/sr-el.json b/i18n/ve-mw/mwlanguagevariant/sr-el.json index 3467967f3b..2c157d6f34 100644 --- a/i18n/ve-mw/mwlanguagevariant/sr-el.json +++ b/i18n/ve-mw/mwlanguagevariant/sr-el.json @@ -1,8 +1,6 @@ { "@metadata": { - "authors": [ - "Amire80" - ] + "authors": [] }, "visualeditor-mwlanguagevariant-disabled": "Preslovljavanje je onemogućeno", "visualeditor-mwlanguagevariant-filter": "Varijante su filtrirane na $1", diff --git a/i18n/ve-mw/mwlanguagevariant/sv.json b/i18n/ve-mw/mwlanguagevariant/sv.json index f86334e05c..3691680178 100644 --- a/i18n/ve-mw/mwlanguagevariant/sv.json +++ b/i18n/ve-mw/mwlanguagevariant/sv.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bengtsson96", "WikiPhoenix" ] diff --git a/i18n/ve-mw/mwlanguagevariant/tr.json b/i18n/ve-mw/mwlanguagevariant/tr.json index ddf0a04522..a5927dae7c 100644 --- a/i18n/ve-mw/mwlanguagevariant/tr.json +++ b/i18n/ve-mw/mwlanguagevariant/tr.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "BaRaN6161 TURK" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/tt-cyrl.json b/i18n/ve-mw/mwlanguagevariant/tt-cyrl.json index a84295e02a..2970dee932 100644 --- a/i18n/ve-mw/mwlanguagevariant/tt-cyrl.json +++ b/i18n/ve-mw/mwlanguagevariant/tt-cyrl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Ерней", "Ильнар" ] diff --git a/i18n/ve-mw/mwlanguagevariant/ug-arab.json b/i18n/ve-mw/mwlanguagevariant/ug-arab.json index dcdf0d8637..da53a6fcfa 100644 --- a/i18n/ve-mw/mwlanguagevariant/ug-arab.json +++ b/i18n/ve-mw/mwlanguagevariant/ug-arab.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Uzdil" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/uk.json b/i18n/ve-mw/mwlanguagevariant/uk.json index 5a54324a4d..01acf480f5 100644 --- a/i18n/ve-mw/mwlanguagevariant/uk.json +++ b/i18n/ve-mw/mwlanguagevariant/uk.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Piramidion" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/vec.json b/i18n/ve-mw/mwlanguagevariant/vec.json index b195d3df1f..04eb63431a 100644 --- a/i18n/ve-mw/mwlanguagevariant/vec.json +++ b/i18n/ve-mw/mwlanguagevariant/vec.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Fierodelveneto" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/vi.json b/i18n/ve-mw/mwlanguagevariant/vi.json index 478dc77431..4c7e05a420 100644 --- a/i18n/ve-mw/mwlanguagevariant/vi.json +++ b/i18n/ve-mw/mwlanguagevariant/vi.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Minh Nguyen" ] }, diff --git a/i18n/ve-mw/mwlanguagevariant/zh-hant.json b/i18n/ve-mw/mwlanguagevariant/zh-hant.json index a5fe273f05..911ae06884 100644 --- a/i18n/ve-mw/mwlanguagevariant/zh-hant.json +++ b/i18n/ve-mw/mwlanguagevariant/zh-hant.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Diskdance", "Kly", "Liuxinyu970226" diff --git a/i18n/ve-mw/nmz.json b/i18n/ve-mw/nmz.json index e8fe2abdf6..684ea2d585 100644 --- a/i18n/ve-mw/nmz.json +++ b/i18n/ve-mw/nmz.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "GastonJeremiah" ] }, diff --git a/i18n/ve-mw/nqo.json b/i18n/ve-mw/nqo.json index 182bb5a3d2..3af7fd7ce8 100644 --- a/i18n/ve-mw/nqo.json +++ b/i18n/ve-mw/nqo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Babamamadidiane", "Babamamadidianee", "Lancine.kounfantoh.fofana", diff --git a/i18n/ve-mw/nup.json b/i18n/ve-mw/nup.json index b34b3d9d65..db2d1a9eb5 100644 --- a/i18n/ve-mw/nup.json +++ b/i18n/ve-mw/nup.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Misbahu umar", "Umar Ahmad2345" ] diff --git a/i18n/ve-mw/nyn.json b/i18n/ve-mw/nyn.json index 2bda32ef16..f6db5191fa 100644 --- a/i18n/ve-mw/nyn.json +++ b/i18n/ve-mw/nyn.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Kakonjo" ] }, diff --git a/i18n/ve-mw/nys.json b/i18n/ve-mw/nys.json index fa7b50f15e..6ce9f37934 100644 --- a/i18n/ve-mw/nys.json +++ b/i18n/ve-mw/nys.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Gnangarra" ] }, diff --git a/i18n/ve-mw/nzi.json b/i18n/ve-mw/nzi.json index 099c1e13eb..206b954e82 100644 --- a/i18n/ve-mw/nzi.json +++ b/i18n/ve-mw/nzi.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Francis Mozu", "Valentine Badu" ] diff --git a/i18n/ve-mw/pt.json b/i18n/ve-mw/pt.json index 22ddf99305..2cfc956da6 100644 --- a/i18n/ve-mw/pt.json +++ b/i18n/ve-mw/pt.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Athena in Wonderland", "Cainamarques", "Diniscoelho", diff --git a/i18n/ve-mw/rn.json b/i18n/ve-mw/rn.json index 0528dbeecf..65ece13892 100644 --- a/i18n/ve-mw/rn.json +++ b/i18n/ve-mw/rn.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Gilbert Ndihokubwayo" ] }, diff --git a/i18n/ve-mw/ro.json b/i18n/ve-mw/ro.json index 8f8734d35a..01bd9fc595 100644 --- a/i18n/ve-mw/ro.json +++ b/i18n/ve-mw/ro.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "AlimanRuna", - "Amire80", "Andrei Stroe", "Danutz", "Firilacroco", diff --git a/i18n/ve-mw/rsk.json b/i18n/ve-mw/rsk.json index e7e683ebfa..abb113146d 100644 --- a/i18n/ve-mw/rsk.json +++ b/i18n/ve-mw/rsk.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Keresturec", "Vlad5250" ] diff --git a/i18n/ve-mw/rw.json b/i18n/ve-mw/rw.json index 84ae2bec5f..e6f36186d8 100644 --- a/i18n/ve-mw/rw.json +++ b/i18n/ve-mw/rw.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "RebecaRwanda", "RebeccaRwanda", "Rodrigue" diff --git a/i18n/ve-mw/sco.json b/i18n/ve-mw/sco.json index 1dff80b909..53cca14c32 100644 --- a/i18n/ve-mw/sco.json +++ b/i18n/ve-mw/sco.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "AmaryllisGardener", - "Amire80", "CiphriusKane", "Foxj", "John Reid", diff --git a/i18n/ve-mw/se.json b/i18n/ve-mw/se.json index 323545073d..ae22a462a7 100644 --- a/i18n/ve-mw/se.json +++ b/i18n/ve-mw/se.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Ante75", + "Jon Harald Søby", "Jon Harald Søby (WMNO)", "Kimberli Mäkäräinen (WMNO)", "Lea-Christine Sara", diff --git a/i18n/ve-mw/sq.json b/i18n/ve-mw/sq.json index a74e55410f..98afbd9b0f 100644 --- a/i18n/ve-mw/sq.json +++ b/i18n/ve-mw/sq.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Agonqurdina", - "Amire80", "Ammartivari", "Arianit", "Besnik b", diff --git a/i18n/ve-mw/sr-ec.json b/i18n/ve-mw/sr-ec.json index f376ba43ca..4c368e3c7c 100644 --- a/i18n/ve-mw/sr-ec.json +++ b/i18n/ve-mw/sr-ec.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Acamicamacaraca", - "Amire80", "BadDog", "Kizule", "Milicevic01", diff --git a/i18n/ve-mw/tig.json b/i18n/ve-mw/tig.json index 29886f1487..69d105dd2f 100644 --- a/i18n/ve-mw/tig.json +++ b/i18n/ve-mw/tig.json @@ -1,13 +1,62 @@ { "@metadata": { "authors": [ + "Bbeshir", "IdrisSeid", "Kassala" ] }, + "tooltip-ca-ve-edit": "እለ ግጽ አስነ", + "tooltip-ca-ve-create": "እላ ገጽ ምነያ", + "visualeditor-backbutton-tooltip": "ግጽ ገራ ኣቅብል", "visualeditor-ca-createlocaldescriptionsource": "ወስፍ ናይ ቀበት መበገሲ ወስክ", "visualeditor-ca-createsource": "ዒን ክለቅ", "visualeditor-ca-editsource": "ዒን አስኔ", "visualeditor-ca-editsource-section": "አሳነዮት ዒን", - "visualeditor-descriptionpagelink": "Project:ለልትርኤ መዐድላይ" + "visualeditor-categories-tool": "ክፋላት", + "visualeditor-descriptionpagelink": "Project:ለልትርኤ መዐድላይ", + "visualeditor-dialog-media-content-filename": "ስሜት ካምለት", + "visualeditor-dialog-media-goback": "ኣቅበሎት", + "visualeditor-dialog-media-info-audiofile": "ፋይል ሶት", + "visualeditor-dialog-media-info-moreinfo": "ወሰክ ሐብሬ", + "visualeditor-dialog-media-info-readmore": "ዚያደት ቅራእ", + "visualeditor-dialog-media-page-advanced": "ለትቀደማ", + "visualeditor-dialog-media-page-general": "ዕሙማይ", + "visualeditor-dialog-media-search-tab-search": "ሕዘው", + "visualeditor-dialog-media-search-tab-upload": "ጸዓን", + "visualeditor-dialog-media-type-border": "ሕዱድ", + "visualeditor-dialog-media-type-none": "ኣሳሲ", + "visualeditor-dialog-media-type-section": "ዓይነት ሱረት", + "visualeditor-dialog-media-type-thumb": "ቅራጭ ሱረት", + "visualeditor-dialog-media-upload": "ጸዓን", + "visualeditor-dialog-meta-categories-category": "ከረርም", + "visualeditor-dialog-meta-categories-data-label": "ክፋላት", + "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "ሕቡዕ ክፋላት", + "visualeditor-dialog-meta-categories-options": "ሓረዮት", + "visualeditor-dialog-meta-categories-section": "ክፋላት", + "visualeditor-dialog-meta-languages-code-label": "ኮድ ሉቀት", + "visualeditor-dialog-meta-languages-label": "ሉቃት", + "visualeditor-dialog-meta-languages-name-label": "ሉቀት", + "visualeditor-dialog-meta-languages-section": "ሉቃት", + "visualeditor-dialog-meta-settings-index-disable": "ኢፋል", + "visualeditor-dialog-meta-settings-index-force": "ዓቤ", + "visualeditor-dialog-meta-settings-newsectioneditlink-default": "ንቡር", + "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "ኢፋል", + "visualeditor-dialog-meta-settings-newsectioneditlink-force": "ዓቤ", + "visualeditor-dialog-meta-settings-toc-default": "ሓቆ ኣትሓዛ", + "visualeditor-dialog-meta-settings-toc-disable": "ኣበደን", + "visualeditor-dialog-meta-settings-toc-force": "ዲማ", + "visualeditor-dialog-meta-title": "ሓረዮት", + "visualeditor-dialog-template-title": "ሞደል", + "visualeditor-dialog-transclusion-add-param-save": "ወስክ", + "visualeditor-dialog-transclusion-add-template-save": "ወስክ", + "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "ግጽ ገራ ኣቅብል", + "visualeditor-languages-tool": "ሉቃት", + "visualeditor-media-title-audio": "ሶት", + "visualeditor-media-title-image": "ሱረት", + "visualeditor-media-title-video": "ቪድዮ", + "visualeditor-meta-tool": "ሓረዮት", + "visualeditor-mwgallerydialog-card-images": "ሱውር", + "visualeditor-mwgallerydialog-card-options": "ሓረዮት", + "visualeditor-version-label": "ኑስኸት" } diff --git a/i18n/ve-mw/tl.json b/i18n/ve-mw/tl.json index 411c39eec3..47caeaca67 100644 --- a/i18n/ve-mw/tl.json +++ b/i18n/ve-mw/tl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "AnakngAraw", "Emem.calist", "GinawaSaHapon", diff --git a/i18n/ve-mw/tum.json b/i18n/ve-mw/tum.json index eeb80f9ce8..7504bd747c 100644 --- a/i18n/ve-mw/tum.json +++ b/i18n/ve-mw/tum.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Tumbuka Arch" ] }, diff --git a/i18n/ve-mw/tw.json b/i18n/ve-mw/tw.json index 12d131db78..fcab690321 100644 --- a/i18n/ve-mw/tw.json +++ b/i18n/ve-mw/tw.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Celestinesucess", "DaSupremo", "Daniella Damptey", diff --git a/i18n/ve-mw/vmw.json b/i18n/ve-mw/vmw.json index a3dcc2f357..066dd63c38 100644 --- a/i18n/ve-mw/vmw.json +++ b/i18n/ve-mw/vmw.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Gildo Máquina", "Jacinto Jeque", "Ofa1975" diff --git a/i18n/ve-mw/wls.json b/i18n/ve-mw/wls.json index 50d06cbf77..4d5db26899 100644 --- a/i18n/ve-mw/wls.json +++ b/i18n/ve-mw/wls.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Lea.Fakauvea", "Lea.fakauvea" ] diff --git a/i18n/ve-mw/xsy.json b/i18n/ve-mw/xsy.json index a191b3b326..1328aaa4ab 100644 --- a/i18n/ve-mw/xsy.json +++ b/i18n/ve-mw/xsy.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Lalotahes" ] }, diff --git a/i18n/ve-mw/zh-hans.json b/i18n/ve-mw/zh-hans.json index 05592af1d9..4ca08f7a70 100644 --- a/i18n/ve-mw/zh-hans.json +++ b/i18n/ve-mw/zh-hans.json @@ -362,7 +362,7 @@ "visualeditor-mwsignature-tool": "您的签名", "visualeditor-preference-visualeditor": "启用可视化编辑器", "visualeditor-preference-newwikitexteditor-enable": "使用可视化编辑器内置的wikitext模式,而不是其他wikitext编辑器", - "visualeditor-preference-newwikitexteditor-help": "此功能有时称作“2017版wikitext编辑器”。", + "visualeditor-preference-newwikitexteditor-help": "此功能有时称作“2017年版wikitext编辑器”。", "visualeditor-preference-tabs": "编辑模式:", "visualeditor-preference-tabs-multi-tab": "向我显示两个编辑器标签", "visualeditor-preference-tabs-prefer-ve": "如果可能,总是让我使用可视化编辑器", diff --git a/i18n/ve-wmf/ady-cyrl.json b/i18n/ve-wmf/ady-cyrl.json index d2dc45b251..b62daa131b 100644 --- a/i18n/ve-wmf/ady-cyrl.json +++ b/i18n/ve-wmf/ady-cyrl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Inyzh", "SmartNart12" ] diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index e761016faa..690bbf1377 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -3,7 +3,6 @@ "authors": [ "Abanima", "Alshamiri1", - "Amire80", "Ciphers", "Claw eg", "Elfalem", diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index 699a2993ef..62ba6c2478 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Cekli829", "Interfase", "Jduranboger", diff --git a/i18n/ve-wmf/ba.json b/i18n/ve-wmf/ba.json index 80895d49c3..61f213bcf8 100644 --- a/i18n/ve-wmf/ba.json +++ b/i18n/ve-wmf/ba.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "AiseluRB", - "Amire80", "Assele", "Bashkorttan", "Haqmar", diff --git a/i18n/ve-wmf/be-tarask.json b/i18n/ve-wmf/be-tarask.json index f9426bb940..978bed1794 100644 --- a/i18n/ve-wmf/be-tarask.json +++ b/i18n/ve-wmf/be-tarask.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "EugeneZelenko", "Red Winged Duck", "Renessaince", diff --git a/i18n/ve-wmf/bn.json b/i18n/ve-wmf/bn.json index 1a29b63897..43bdd77c23 100644 --- a/i18n/ve-wmf/bn.json +++ b/i18n/ve-wmf/bn.json @@ -3,7 +3,6 @@ "authors": [ "Aftab1995", "Aftabuzzaman", - "Amire80", "Bellayet", "Jayantanth", "Nasir8891", diff --git a/i18n/ve-wmf/ce.json b/i18n/ve-wmf/ce.json index 4883a4abf4..90f648e7ca 100644 --- a/i18n/ve-wmf/ce.json +++ b/i18n/ve-wmf/ce.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Умар" ] }, diff --git a/i18n/ve-wmf/ceb.json b/i18n/ve-wmf/ceb.json index 67740034d6..81d370c506 100644 --- a/i18n/ve-wmf/ceb.json +++ b/i18n/ve-wmf/ceb.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bentong Isles", "아라" ] diff --git a/i18n/ve-wmf/cs.json b/i18n/ve-wmf/cs.json index 2eb4be31d1..a37df0b823 100644 --- a/i18n/ve-wmf/cs.json +++ b/i18n/ve-wmf/cs.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Chmee2", "Dvorapa", "Jdforrester", diff --git a/i18n/ve-wmf/da.json b/i18n/ve-wmf/da.json index 6019d860ce..a3b56d496b 100644 --- a/i18n/ve-wmf/da.json +++ b/i18n/ve-wmf/da.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Cgtdk", "Christian List", "EileenSanda", diff --git a/i18n/ve-wmf/el.json b/i18n/ve-wmf/el.json index b28da47be4..dabc4d779d 100644 --- a/i18n/ve-wmf/el.json +++ b/i18n/ve-wmf/el.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Astralnet", "DesVaMan", "Dipa1965", diff --git a/i18n/ve-wmf/es.json b/i18n/ve-wmf/es.json index e34fdc0de7..17207307cd 100644 --- a/i18n/ve-wmf/es.json +++ b/i18n/ve-wmf/es.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Armando-Martin", "Aruizdr", "Benfutbol10", diff --git a/i18n/ve-wmf/fa.json b/i18n/ve-wmf/fa.json index 3f44dadbcb..6670a5889a 100644 --- a/i18n/ve-wmf/fa.json +++ b/i18n/ve-wmf/fa.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Ahmad252", - "Amire80", "Armin1392", "Beginneruser", "Dalba", diff --git a/i18n/ve-wmf/fi.json b/i18n/ve-wmf/fi.json index 477ef7c2dc..889b54b2e0 100644 --- a/i18n/ve-wmf/fi.json +++ b/i18n/ve-wmf/fi.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Alluk.", - "Amire80", "Beluga", "Crt", "Harriv", diff --git a/i18n/ve-wmf/fo.json b/i18n/ve-wmf/fo.json index d6fd5f739e..e4ac67324d 100644 --- a/i18n/ve-wmf/fo.json +++ b/i18n/ve-wmf/fo.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "EileenSanda", "아라" ] diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index cd22949091..129e81d1ff 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Automatik", "Benoit Rochon", "BlueCamille", diff --git a/i18n/ve-wmf/fy.json b/i18n/ve-wmf/fy.json index d86c428ca6..9e41b50c32 100644 --- a/i18n/ve-wmf/fy.json +++ b/i18n/ve-wmf/fy.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Ieneach fan 'e Esk", "PiefPafPier" ] diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index 86780f3f60..01a1da993d 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Alison", - "Amire80", "Elisardojm", "Kscanne", "Toliño", diff --git a/i18n/ve-wmf/ha.json b/i18n/ve-wmf/ha.json index 891f73fd3c..025807d649 100644 --- a/i18n/ve-wmf/ha.json +++ b/i18n/ve-wmf/ha.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bashir Gwanki", "Gwanki", "Yusuf Sa'adu" diff --git a/i18n/ve-wmf/id.json b/i18n/ve-wmf/id.json index 337c2481f8..616a7e44ca 100644 --- a/i18n/ve-wmf/id.json +++ b/i18n/ve-wmf/id.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Diki Ananta", "Farras", "Gombang", diff --git a/i18n/ve-wmf/it.json b/i18n/ve-wmf/it.json index 56821e385c..ec714d5c11 100644 --- a/i18n/ve-wmf/it.json +++ b/i18n/ve-wmf/it.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Alexmar983", - "Amire80", "Anto", "Beta16", "Darth Kule", diff --git a/i18n/ve-wmf/ja.json b/i18n/ve-wmf/ja.json index f5e88aa69d..efcb4ee16f 100644 --- a/i18n/ve-wmf/ja.json +++ b/i18n/ve-wmf/ja.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Ant176", "Darklanlan", "Fryed-peach", diff --git a/i18n/ve-wmf/ka.json b/i18n/ve-wmf/ka.json index 913e8f27b0..eab7319f80 100644 --- a/i18n/ve-wmf/ka.json +++ b/i18n/ve-wmf/ka.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "BRUTE", "David1010", "Gleki", diff --git a/i18n/ve-wmf/kcg.json b/i18n/ve-wmf/kcg.json index 29647acd4a..4d09be7975 100644 --- a/i18n/ve-wmf/kcg.json +++ b/i18n/ve-wmf/kcg.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Kambai Akau" ] }, diff --git a/i18n/ve-wmf/ko.json b/i18n/ve-wmf/ko.json index 45de80bef4..b991d04997 100644 --- a/i18n/ve-wmf/ko.json +++ b/i18n/ve-wmf/ko.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bluehill", "Bluemersen", "Freebiekr", diff --git a/i18n/ve-wmf/lv.json b/i18n/ve-wmf/lv.json index 92a9fd5053..885689da9a 100644 --- a/i18n/ve-wmf/lv.json +++ b/i18n/ve-wmf/lv.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Admresdeserv.", - "Amire80", "Audriusa", "Eitvys200", "Nitalynx", diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index a0018588cc..12b9705397 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bjankuloski06", "Brest", "Iwan Novirion", diff --git a/i18n/ve-wmf/mnc.json b/i18n/ve-wmf/mnc.json index 75d539a75c..e0e2ac27c1 100644 --- a/i18n/ve-wmf/mnc.json +++ b/i18n/ve-wmf/mnc.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Chulsu463" ] }, diff --git a/i18n/ve-wmf/mr.json b/i18n/ve-wmf/mr.json index f923dc0eda..bccddf7072 100644 --- a/i18n/ve-wmf/mr.json +++ b/i18n/ve-wmf/mr.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Kaajawa", "Mahitgar", "Praju23", diff --git a/i18n/ve-wmf/ms.json b/i18n/ve-wmf/ms.json index 76943d5dff..40af98c822 100644 --- a/i18n/ve-wmf/ms.json +++ b/i18n/ve-wmf/ms.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Anakmalaysia", "Aurora", "CyberTroopers", diff --git a/i18n/ve-wmf/nb.json b/i18n/ve-wmf/nb.json index 420f04bd24..0a73cd2c06 100644 --- a/i18n/ve-wmf/nb.json +++ b/i18n/ve-wmf/nb.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Danmichaelo", "Event", "Jeblad", diff --git a/i18n/ve-wmf/nl.json b/i18n/ve-wmf/nl.json index 137cf32341..fec72e49fb 100644 --- a/i18n/ve-wmf/nl.json +++ b/i18n/ve-wmf/nl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Bluyten", "Breghtje", "Catrope", diff --git a/i18n/ve-wmf/om.json b/i18n/ve-wmf/om.json index 7aac05d9b4..d37ec85bdc 100644 --- a/i18n/ve-wmf/om.json +++ b/i18n/ve-wmf/om.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Ahrada2016", - "Amire80", "Cedric31", "Jdforrester", "Muhammad Shuaib", diff --git a/i18n/ve-wmf/pl.json b/i18n/ve-wmf/pl.json index f420a1a9b8..c0988f0fe5 100644 --- a/i18n/ve-wmf/pl.json +++ b/i18n/ve-wmf/pl.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Babanwalia", "Chrumps", "Doctore", diff --git a/i18n/ve-wmf/pt-br.json b/i18n/ve-wmf/pt-br.json index 7dd496b8c0..80db26470f 100644 --- a/i18n/ve-wmf/pt-br.json +++ b/i18n/ve-wmf/pt-br.json @@ -3,7 +3,6 @@ "authors": [ "!Silent", "555", - "Amire80", "Cainamarques", "Dianakc", "Felipe L. Ewald", diff --git a/i18n/ve-wmf/pt.json b/i18n/ve-wmf/pt.json index 2bedbc2e95..198699b8f8 100644 --- a/i18n/ve-wmf/pt.json +++ b/i18n/ve-wmf/pt.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Cainamarques", "Fúlvio", "GoEThe", diff --git a/i18n/ve-wmf/ro.json b/i18n/ve-wmf/ro.json index 6ce9bcd996..82461b1e83 100644 --- a/i18n/ve-wmf/ro.json +++ b/i18n/ve-wmf/ro.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "AlimanRuna", - "Amire80", "Firilacroco", "Minisarm", "NGC 54", diff --git a/i18n/ve-wmf/rw.json b/i18n/ve-wmf/rw.json index 2368d9a682..4faee931bf 100644 --- a/i18n/ve-wmf/rw.json +++ b/i18n/ve-wmf/rw.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Musindi250", "Rodrigue" ] diff --git a/i18n/ve-wmf/sco.json b/i18n/ve-wmf/sco.json index 81e0e1e4a8..bb4c578482 100644 --- a/i18n/ve-wmf/sco.json +++ b/i18n/ve-wmf/sco.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Foxj", "Jdforrester", "John Reid", diff --git a/i18n/ve-wmf/sq.json b/i18n/ve-wmf/sq.json index ebd0074dfe..6ba1983019 100644 --- a/i18n/ve-wmf/sq.json +++ b/i18n/ve-wmf/sq.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Arianit", "Besnik b", "Euriditi", diff --git a/i18n/ve-wmf/sv.json b/i18n/ve-wmf/sv.json index 62c5e9b44a..00fb7178f3 100644 --- a/i18n/ve-wmf/sv.json +++ b/i18n/ve-wmf/sv.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "Ainali", - "Amire80", "Haxpett", "Jopparn", "Knuckles", diff --git a/i18n/ve-wmf/tig.json b/i18n/ve-wmf/tig.json new file mode 100644 index 0000000000..6ecc79d15f --- /dev/null +++ b/i18n/ve-wmf/tig.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Osman Omera" + ] + }, + "visualeditor-welcomedialog-action": "አስነዮት አንብት" +} diff --git a/i18n/ve-wmf/tw.json b/i18n/ve-wmf/tw.json index fcec763e01..5e1f891cd1 100644 --- a/i18n/ve-wmf/tw.json +++ b/i18n/ve-wmf/tw.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Edith101", "Kennedy Twumasi", "Robertjamal12" diff --git a/i18n/ve-wmf/uk.json b/i18n/ve-wmf/uk.json index 73fbbadfa3..232a4b9b84 100644 --- a/i18n/ve-wmf/uk.json +++ b/i18n/ve-wmf/uk.json @@ -4,7 +4,6 @@ "AS", "Aced", "Ahonc", - "Amire80", "Andriykopanytsia", "Base", "Dars", diff --git a/i18n/ve-wmf/vi.json b/i18n/ve-wmf/vi.json index ef8927dc6c..9591be180a 100644 --- a/i18n/ve-wmf/vi.json +++ b/i18n/ve-wmf/vi.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Anh88", "Cheers!", "Doraemonluonbentoi", diff --git a/i18n/ve-wmf/yi.json b/i18n/ve-wmf/yi.json index 08294b0ebf..bf613b0056 100644 --- a/i18n/ve-wmf/yi.json +++ b/i18n/ve-wmf/yi.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Malafaya", "פוילישער", "十弌", diff --git a/i18n/ve-wmf/zh-hans.json b/i18n/ve-wmf/zh-hans.json index 796e1e2b4f..6f88353f96 100644 --- a/i18n/ve-wmf/zh-hans.json +++ b/i18n/ve-wmf/zh-hans.json @@ -1,7 +1,6 @@ { "@metadata": { "authors": [ - "Amire80", "Anakmalaysia", "Anterdc99", "Bencmq", @@ -34,8 +33,8 @@ "tag-visualeditor-description": "使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑器]]进行的编辑", "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑:需检查]]", "tag-visualeditor-needcheck-description": "系统检测到使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑器]]做出的编辑的wikitext可能有意外的更改。", - "tag-visualeditor-wikitext": "2017版源代码编辑", - "tag-visualeditor-wikitext-description": "使用2017版wikitext编辑器做出的编辑", + "tag-visualeditor-wikitext": "2017年版源代码编辑", + "tag-visualeditor-wikitext-description": "使用2017年版wikitext编辑器做出的编辑", "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑:已切换]]", "tag-visualeditor-switched-description": "用户开始编辑时使用可视化编辑器,之后更换为wikitext编辑器。", "visualeditor-feedback-link": "Project:可视化编辑器/反馈", diff --git a/i18n/ve-wmf/zh-hant.json b/i18n/ve-wmf/zh-hant.json index 574ecd3aa2..d3ed01bd91 100644 --- a/i18n/ve-wmf/zh-hant.json +++ b/i18n/ve-wmf/zh-hant.json @@ -2,7 +2,6 @@ "@metadata": { "authors": [ "A2093064", - "Amire80", "Anakmalaysia", "Binkley", "Ch.Andrew", From 90aa7fd9cf36355654a7e19a0a7e2402d6b1e096 Mon Sep 17 00:00:00 2001 From: Andre Klapper Date: Sat, 26 Oct 2024 15:18:21 +0200 Subject: [PATCH 009/730] Use explicit nullable type on parameter arguments (for PHP 8.4) Implicitly marking parameter $... as nullable is deprecated in PHP 8.4. The explicit nullable type must be used instead. Bug: T376276 Change-Id: I6b296c77f8a2f6f1a146972271b1fcb3360d0cc2 --- includes/ApiParsoidTrait.php | 4 ++-- includes/DirectParsoidClient.php | 8 ++++---- includes/VisualEditorDataModule.php | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/includes/ApiParsoidTrait.php b/includes/ApiParsoidTrait.php index f570defbe7..897b4e1bed 100644 --- a/includes/ApiParsoidTrait.php +++ b/includes/ApiParsoidTrait.php @@ -110,7 +110,7 @@ protected function requestRestbasePageHtml( RevisionRecord $revision ): array { * @throws ApiUsageException */ protected function transformHTML( - Title $title, string $html, int $oldid = null, string $etag = null + Title $title, string $html, ?int $oldid = null, ?string $etag = null ): array { $lang = self::getPageLanguage( $title ); @@ -138,7 +138,7 @@ protected function transformHTML( * @throws ApiUsageException */ protected function transformWikitext( - Title $title, string $wikitext, bool $bodyOnly, int $oldid = null, bool $stash = false + Title $title, string $wikitext, bool $bodyOnly, ?int $oldid = null, bool $stash = false ): array { $lang = self::getPageLanguage( $title ); diff --git a/includes/DirectParsoidClient.php b/includes/DirectParsoidClient.php index 71e364177d..6bd1218031 100644 --- a/includes/DirectParsoidClient.php +++ b/includes/DirectParsoidClient.php @@ -48,7 +48,7 @@ public function __construct( private function getHtmlOutputRendererHelper( PageIdentity $page, ?RevisionRecord $revision = null, - Bcp47Code $pageLanguage = null, + ?Bcp47Code $pageLanguage = null, bool $stash = false, string $flavor = self::FLAVOR_DEFAULT ): HtmlOutputRendererHelper { @@ -83,9 +83,9 @@ private function getHtmlOutputRendererHelper( private function getHtmlInputTransformHelper( PageIdentity $page, string $html, - int $oldid = null, - string $etag = null, - Bcp47Code $pageLanguage = null + ?int $oldid = null, + ?string $etag = null, + ?Bcp47Code $pageLanguage = null ): HtmlInputTransformHelper { // Fake REST body $body = [ diff --git a/includes/VisualEditorDataModule.php b/includes/VisualEditorDataModule.php index f345e6dec0..3a2831bc4d 100644 --- a/includes/VisualEditorDataModule.php +++ b/includes/VisualEditorDataModule.php @@ -117,7 +117,7 @@ public function enableModuleContentVersion() { /** * @inheritDoc */ - public function getDependencies( ResourceLoaderContext $context = null ) { + public function getDependencies( ?ResourceLoaderContext $context = null ) { return [ 'ext.visualEditor.base', 'ext.visualEditor.mediawiki', From 6c1f3e24a918904d62c67be88c092e5b399de7c9 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 28 Oct 2024 08:24:42 +0100 Subject: [PATCH 010/730] Localisation updates from https://translatewiki.net. Change-Id: I7d993f95d817137f75228827195891347997a6f0 --- i18n/ve-mw/dua.json | 1 + i18n/ve-mw/en-gb.json | 4 ---- i18n/ve-mw/krc.json | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/i18n/ve-mw/dua.json b/i18n/ve-mw/dua.json index 7ef49e0558..b062567234 100644 --- a/i18n/ve-mw/dua.json +++ b/i18n/ve-mw/dua.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "EbelleMarcel", + "NdumbèNdumbè", "Olivier Moukodi" ] }, diff --git a/i18n/ve-mw/en-gb.json b/i18n/ve-mw/en-gb.json index 36ee5231c5..a0518285f4 100644 --- a/i18n/ve-mw/en-gb.json +++ b/i18n/ve-mw/en-gb.json @@ -14,9 +14,5 @@ "Shirayuki" ] }, - "visualeditor-dialog-media-position-checkbox-help": "You can make this media item appear in line with the text of the page instead of floating. You should do this sparingly, as it will break up the flow of the text if you uncheck this box.", - "visualeditor-dialog-media-size-section-help": "You can set how large the media item appears on the page. This should almost always be the normal size, as a custom size will interfere with the layout of the page for readers and make the media items seem inconsistent.", - "visualeditor-dialog-meta-categories-defaultsort-help": "You can over-ride how this page is sorted when displayed within a category by setting a different index to sort with instead. This is often used to make pages about people show by last name, but be named with their first name shown first.", - "visualeditor-dialog-meta-settings-displaytitle-help": "You can over-ride how this page's title is displayed by setting a different label to show instead.", "visualeditor-dialog-transclusion-template-title-modifier": "Template documentation and [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameter] names (if existing) are not available when editing templates utilising nested syntax or modifiers, such as [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst]." } diff --git a/i18n/ve-mw/krc.json b/i18n/ve-mw/krc.json index 2a593cd613..a201d45b0f 100644 --- a/i18n/ve-mw/krc.json +++ b/i18n/ve-mw/krc.json @@ -33,7 +33,7 @@ "visualeditor-autosave-recovered-title": "Тюрлениуле къутхарылдыла", "visualeditor-backbutton-tooltip": "Кери къайт", "visualeditor-ca-createlocaldescriptionsource": "Локал айгъакълауну къайнагъын къош", - "visualeditor-ca-createsource": "Вики-текстни къура", + "visualeditor-ca-createsource": "Къайнакъ болдур", "visualeditor-ca-editlocaldescriptionsource": "Локал айгъакълауну къайнагъын тюрлендириу", "visualeditor-ca-editsource": "Къайнакъны тюзет", "visualeditor-ca-editsource-section": "къайнакъны тюзет", From 95ed3549cb56fd7ce0dbd8897d78e11d0a414d48 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 29 Oct 2024 08:42:28 +0100 Subject: [PATCH 011/730] Localisation updates from https://translatewiki.net. Change-Id: Ia95cd51dc16078cf8f37a2aeeb3921c27d40fe09 --- i18n/ve-mw/cdo.json | 3 --- i18n/ve-mw/tig.json | 1 + i18n/ve-wmf/cdo.json | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/i18n/ve-mw/cdo.json b/i18n/ve-mw/cdo.json index 91bac19ccb..fca1a88fce 100644 --- a/i18n/ve-mw/cdo.json +++ b/i18n/ve-mw/cdo.json @@ -8,9 +8,6 @@ "唐吉訶德的侍從" ] }, - "tooltip-ca-ve-edit": "Siŭ-gāi cī hiĕk", - "tooltip-ca-editsource": "編輯茲蜀頁其源代碼", - "tooltip-ca-createsource": "創建茲蜀頁其源代碼", "visualeditor-advancedsettings-tool": "高級設置", "visualeditor-backbutton-tooltip": "轉去", "visualeditor-ca-createlocaldescriptionsource": "添加本地描述源代碼", diff --git a/i18n/ve-mw/tig.json b/i18n/ve-mw/tig.json index 69d105dd2f..49f843980f 100644 --- a/i18n/ve-mw/tig.json +++ b/i18n/ve-mw/tig.json @@ -18,6 +18,7 @@ "visualeditor-dialog-media-content-filename": "ስሜት ካምለት", "visualeditor-dialog-media-goback": "ኣቅበሎት", "visualeditor-dialog-media-info-audiofile": "ፋይል ሶት", + "visualeditor-dialog-media-info-meta-artist": "ኬትባይ: $1", "visualeditor-dialog-media-info-moreinfo": "ወሰክ ሐብሬ", "visualeditor-dialog-media-info-readmore": "ዚያደት ቅራእ", "visualeditor-dialog-media-page-advanced": "ለትቀደማ", diff --git a/i18n/ve-wmf/cdo.json b/i18n/ve-wmf/cdo.json index 9df3d7edaa..440d237005 100644 --- a/i18n/ve-wmf/cdo.json +++ b/i18n/ve-wmf/cdo.json @@ -5,7 +5,6 @@ "Ztl8702" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Kō̤-sê-huá biĕng-cĭk]]", "visualeditor-help-label": "讀用戶手冊", "visualeditor-welcomedialog-action": "開始編輯", "visualeditor-welcomedialog-content": "底儂都會編輯,每蜀隻改進都會幫儂家。", From 56906735b5ed6570ceecc1a8e6c5c00ac1e7e71b Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Tue, 29 Oct 2024 09:54:28 -0400 Subject: [PATCH 012/730] Update VE core submodule to master (7a373467c) New changes: a1510bd0a collab: Make the join link work regardless of user preferences d95719c77 Localisation updates from https://translatewiki.net. e0bea1191 Localisation updates from https://translatewiki.net. 2b8072471 Update language list from TranslateWikiBot 921adbb50 When build fails due to ve.availableLanguages, output a helpful message 7a373467c Update DOMPurify to 2.5.7 Bug: T370817 Bug: T377905 Change-Id: I73e80cab56ad48bbbd5243f574cd15205cb1999b --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index bae9101b75..7a373467ce 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit bae9101b758a2d78a4b5e12fbb592f58dabb5967 +Subproject commit 7a373467ce93d23297846e66fff5bc9419f87cce From 2e382cd4c8ce6e3a07327150eced746eca94524f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 30 Oct 2024 08:24:59 +0100 Subject: [PATCH 013/730] Localisation updates from https://translatewiki.net. Change-Id: Ia79f5e60b4c4782a85f358f9091ab79123efee76 --- i18n/ve-mw/nqo.json | 8 ++++++++ i18n/ve-wmf/nqo.json | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/i18n/ve-mw/nqo.json b/i18n/ve-mw/nqo.json index 3af7fd7ce8..09ac529884 100644 --- a/i18n/ve-mw/nqo.json +++ b/i18n/ve-mw/nqo.json @@ -12,8 +12,13 @@ "collabpad-import-subtitle": "ߊ߬ ߟߊߛߣߍߣߍ߲߫ ߞߊ߬ ߓߐ߫ $1 ߟߋ߬", "collabpad": "ߞߏߟߊߓߑߔߊߘ", "tooltip-ca-ve-edit": "ߞߐߜߍ ߣߌ߲߬ ߡߊߦߟߍ߬ߡߊ߲߬", + "tooltip-ca-ve-edit-local": "ߕߌ߲߬ߞߎߘߎ߲ ߕߐ߯ߛߓߍߟߌ߫ ߞߐߜߍ ߡߊߦߟߍ߬ߡߊ߲߫", + "tooltip-ca-ve-create": "ߞߐߜߍ ߣߌ߲߬ ߛߌ߲ߘߌ߫", + "tooltip-ca-ve-create-local": "ߕߌ߲߬ߞߎߘߎ߲ ߕߐ߯ߛߓߍߟߌ߫ ߞߐߜߍ ߡߊߦߟߍ߬ߡߊ߲߫", "tooltip-ca-editsource": "ߞߐߜߍ ߣߌ߲߬ ߘߏߝߙߍߕߍ ߛߎ߲ ߡߊߦߟߍ߬ߡߊ߲߫", + "tooltip-ca-editsource-local": "ߕߌ߲߬ߞߎߘߎ߲ ߕߐ߯ߛߓߍߟߌ߫ ߞߐߜߍ ߓߐߖߎ ߘߏߝߙߍߕߍ ߡߊߦߟߍ߬ߡߊ߲߫", "tooltip-ca-createsource": "ߞߐߜߍ ߣߌ߲߬ ߘߏߝߙߍߕߍ ߛߎ߲ ߛߌ߲ߘߌ߫", + "tooltip-ca-createsource-local": "ߕߌ߲߬ߞߎߘߎ߲ ߕߐ߯ߛߓߌߟߌ߫ ߞߐߜߍ ߘߏߝߙߍߕߍ ߓߐߖߎ ߡߊߦߟߍ߬ߡߊ߲߫", "visualeditor-advancedsettings-tool": "ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߦߊ߬ߘߊ ߖߊ߲߬ߝߊ߬ߣߍ߲ ߠߎ߬", "visualeditor-autosave-modified-prompt-accept": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߊߘߛߏ߫", "visualeditor-autosave-modified-prompt-message": "ߞߐߜߍ ߣߌ߲߬ ߓߘߊ߫ ߡߊߦߟߍ߬ߡߊ߲߫ ߞߊ߬ߦߌ߯ ߊ߬ ߟߊߦߟߍ߬ ߟߊ߬ߓߊ߲ ߡߍ߲ ߞߍ߫ ߘߴߌ ߓߟߏ߫. ߊ߬ ߞߊߘߌ߫ {{GENDER:|ߌ}} ߢߍ߫ ߓߊ߬ ߞߊ߬ {{GENDER:|ߌ ߟߊ߫}} ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬ ߟߊߘߛߏ߫ ߦߌߟߡߊ ߞߘߐ߬ߡߊ߲ ߘߐ߫߸ ߤߊߡߊ߲ߕߍ߫ ߞߊ߬ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲߬ ߞߎߘߊ ߘߊߡߌ߬ߣߊ߬ ߦߌߟߡߊ߫ ߞߐ߯ߟߕߊ ߡߊ߬؟", @@ -29,7 +34,10 @@ "visualeditor-ca-editlocaldescriptionsource": "ߕߌ߲߬ߞߎߘߎ߲ ߞߊ߲߬ߛߓߍ߬ߟߌ ߛߎ߲ ߡߊߦߟߍ߬ߡߊ߲߫", "visualeditor-ca-editsource": "ߊ߬ ߛߎ߲ ߡߊߦߟߍ߬ߡߊ߲߬", "visualeditor-ca-editsource-section": "ߊ߬ ߛߎ߲ ߡߊߦߟߍ߬ߡߊ߲߬", + "visualeditor-ca-editsource-section-hint": "ߕߍߕߍ߮ ߓߐߖߎ ߘߏߝߙߍߕߍ ߡߊߦߟߍ߬ߡߊ߲߫: $1", "visualeditor-categories-tool": "ߦߌߟߡߊ ߟߎ߬", + "visualeditor-changedesc-mwcategory-sortkey-changed": "ߢߣߊߕߐߡߐ߲ߠߌ߲ ߢߌ߲ ߓߘߊ߫ ߡߊߝߊ߬ߟߋ߲߬ ߞߊ߬ ߓߐ߫ $1 ߞߊ߬ ߕߊ߯ $2 ߘߐ߫", + "visualeditor-changedesc-mwcategory-sortkey-set": "ߢߣߊߕߐߡߐ߲ߠߌ߲ ߢߌ߲ $1 ߓߘߊ߫ ߘߐߛߌ߰", "visualeditor-changedesc-mwlanguagevariant": "ߞߊ߲ ߓߐߢߐ߲߯ߞߘߐ ߣߐ߬ߣߐ߬ߟߌ ߓߘߊ߫ ߡߊߝߊ߬ߟߋ߲߫", "visualeditor-changedesc-mwredirect": "ߟߊ߬ߞߎ߲߬ߛߌ߲߬ߠߌ߲ ߕߊ߯ߦߙߐ ߓߘߊ߫ ߡߊߝߊ߬ߟߋ߲߬ ߞߊ߬ ߓߐ߫ $1 ߞߊ߬ ߕߊ߯ $2", "visualeditor-changedesc-mwtransclusion": "ߞߙߊߞߏ ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߦߊ߬ߘߊ ߟߎ߬ ߓߘߊ߫ ߡߊߝߊ߬ߟߋ߲߫", diff --git a/i18n/ve-wmf/nqo.json b/i18n/ve-wmf/nqo.json index e735596f4f..97613de5a4 100644 --- a/i18n/ve-wmf/nqo.json +++ b/i18n/ve-wmf/nqo.json @@ -4,7 +4,11 @@ "Lancine.kounfantoh.fofana" ] }, + "tag-editcheck-newcontent-description": "EditCheck ߦߴߊ߬ ߖߌ߰ ߟߊ߫ ߞߏ߫ ߞߣߐߘߐ߫ ߞߎߘߊ߫ ߓߘߊ߫ ߞߊ߬ߝߏ߬ ߞߣߐߘߐ ߡߊ߬", + "tag-editcheck-newreference-description": "ߦߟߌߡߊߛߙߋ ߘߏ߫ ߓߘߊ߫ ߝߙߊ߬ ߞߐߜߍ ߟߊ߫", "tag-editcheck-references-description": "EditCheck ߦߴߊ߬ ߖߊ߬ߕߋ߬ ߟߊ߫ ߟߋ߬ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߣߌ߲߬ ߘߐ߫", + "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}| ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߬ߟߌ (ߦߟߌߡߊߛߙߋ ߟߎ߬) ߓߘߊ߫ ߟߊߞߎߣߎ߲߫]]", + "tag-editcheck-references-activated-description": "EdidCheck ߦߴߊ߬ ߖߌ߰ ߟߊ߫ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫، ߊ߬ ߘߏ߲߬ UI ߓߘߊ߫ ߦߌ߬ߘߊ߬.", "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲]]", "tag-visualeditor-description": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߡߍ߲ ߠߎ߬ ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ [[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߗߏ߯ ߡߊߦߟߍߡߊ߲]] ߘߐ߫", "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲:ߝߛߍ߬ߝߛߍ߬ߟߌ]]", From 7ac339ce2920289e5617733c7af05a38060217c5 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 8 Oct 2024 13:28:01 +0100 Subject: [PATCH 014/730] Diff extension body contents Bug: T359469 Change-Id: Iad2cddcd7c86f8f4c5a9c575e871392f1942aff4 --- .../ve-mw/dm/nodes/ve.dm.MWExtensionNode.js | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js index fcf8b19d7a..c2c1fe57b0 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js @@ -184,9 +184,57 @@ ve.dm.MWExtensionNode.static.describeChanges = function ( attributeChanges, attr return []; }; -ve.dm.MWExtensionNode.static.describeChange = function ( key ) { +ve.dm.MWExtensionNode.static.describeChange = function ( key, change ) { if ( key === 'body' ) { - // TODO: Produce a diff of the body, suitable to display in the sidebar. + if ( change.from && change.to ) { + const store = new ve.dm.HashValueStore(); + const linearDiffer = new ve.DiffMatchPatch( store, store ); + const trimNewlines = /^\n+|\n+$/g; + const linearDiff = linearDiffer.getCleanDiff( + change.from.replace( trimNewlines, '' ).split( '' ), + change.to.replace( trimNewlines, '' ).split( '' ), + { keepOldText: false } + ); + const div = document.createElement( 'div' ); + linearDiff.forEach( ( diffSection, i ) => { + const [ type, data ] = diffSection; + const text = data.join( '' ); + let el, nodeText; + switch ( type ) { + case ve.DiffMatchPatch.static.DIFF_DELETE: + el = document.createElement( 'del' ); + nodeText = text; + break; + case ve.DiffMatchPatch.static.DIFF_INSERT: + el = document.createElement( 'ins' ); + nodeText = text; + break; + case ve.DiffMatchPatch.static.DIFF_EQUAL: { + el = document.createElement( 'span' ); + const lines = text.split( '\n' ); + const filteredLines = []; + if ( lines.length === 1 ) { + nodeText = text; + } else { + if ( i !== 0 ) { + filteredLines.push( lines[ 0 ] ); + } + if ( lines.length > 2 ) { + filteredLines.push( '…' ); + } + if ( i !== linearDiff.length - 1 ) { + filteredLines.push( lines[ lines.length - 1 ] ); + } + nodeText = filteredLines.join( '\n' ); + } + break; + } + } + el.appendChild( document.createTextNode( nodeText ) ); + div.appendChild( el ); + } ); + return [ div ]; + } return null; } // Parent method From b82cd1c9753cbdb72838bd39f56e3fcd51e0ffd7 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 30 Oct 2024 15:14:36 +0000 Subject: [PATCH 015/730] Remove side padding from toolbar dialogs in Vector 2022 Change-Id: Idcd4491c814154a2d0474eca0e076e12295b7681 --- ...init.mw.DesktopArticleTarget.init-vector-2022.less | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less index 51db9ea765..c5df05a1fa 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less @@ -44,3 +44,14 @@ .ve-init-mw-desktopArticleTarget .ve-init-mw-target-surface > .ve-ce-surface .ve-ce-attachedRootNode { min-height: 15em; } + +// Vector 2022 has no side borders, so there's no need for side padding in toolbar dialogs +.ve-init-mw-desktopArticleTarget-toolbar .ve-ui-toolbarDialog-position-above.ve-ui-toolbarDialog-padded .oo-ui-window-body, +.ve-init-mw-desktopArticleTarget-toolbar .ve-ui-toolbarDialog-position-below.ve-ui-toolbarDialog-padded .oo-ui-window-body { + padding-left: 0; + padding-right: 0; +} + +.ve-init-mw-desktopArticleTarget-toolbar .ve-ui-toolbarDialog-position-side.ve-ui-toolbarDialog-padded .oo-ui-window-body { + padding-right: 0; +} From d06e9dbc31b8e4c4d42c095f6ea967df164ea802 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 29 Oct 2024 17:37:58 +0000 Subject: [PATCH 016/730] Update VE core submodule to master (0e82a6db8) New changes: db0f21d03 ve.ce.Surface: Check dataTransfer.files is non-empty e1cd78933 [BREAKING CHANGE] Move selection handling code to SelectionManager b4b63a463 Move drag/drop handling code to DragDropHandler 540272769 Use the onPaste handler for dropped content d3f9d8485 ClipboardHandler tests: Run tests in series 1232c0420 Tests: Introduce ve.dm.example.annotateText to simplify runs of annotated text 69d7ca482 Apply an annotation to imported (pasted/dropped) text 0e82a6db8 ve.ce.ClipboardHandler: Fix async test running Added files: - src/ce/annotations/ve.ce.ImportedDataAnnotation.js - src/ce/ve.ce.DragDropHandler.js - src/ce/ve.ce.SelectionManager.js - src/dm/annotations/ve.dm.ImportedDataAnnotation.js - tests/ce/ve.ce.DragDropHandler.test.js Local changes: - Implement new selection manager architecture Added files: - src/ce/annotations/ve.ce.ImportedDataAnnotation.js - src/ce/ve.ce.DragDropHandler.js - src/ce/ve.ce.SelectionManager.js - src/dm/annotations/ve.dm.ImportedDataAnnotation.js - tests/ce/ve.ce.DragDropHandler.test.js Bug: T371996 Bug: T377427 Bug: T78696 Change-Id: If8d38246badf919c32915beda7c9a14f16e62a8a --- editcheck/modules/EditCheckDialog.js | 2 +- editcheck/modules/init.js | 4 ++-- extension.json | 5 +++++ lib/ve | 2 +- modules/ve-mw/tests/ce/ve.ce.Surface.test.js | 8 +++++++- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 5bf2a0dbdd..d37764339c 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -62,7 +62,7 @@ ve.ui.EditCheckDialog.prototype.update = function () { } ).$element ); selections.push( ve.ce.Selection.static.newFromModel( check.highlight.getSelection(), surfaceView ) ); } ); - surfaceView.drawSelections( 'editCheckWarning', selections ); + surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', selections ); this.$body.empty().append( $checks ); }; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index c860a02183..adb12edd1c 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -209,7 +209,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable selections.push( selection ); } ); // TODO: Make selections clickable when multicheck is enabled - surfaceView.drawSelections( + surfaceView.getSelectionManager().drawSelections( 'editCheck', checks.map( ( check ) => ve.ce.Selection.static.newFromModel( check.highlight.getSelection(), surfaceView ) ) ); @@ -285,7 +285,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable return saveProcessDeferred.promise().then( ( data ) => { context.removePersistentSource( 'editCheckReferences' ); - surfaceView.drawSelections( 'editCheck', [] ); + surfaceView.getSelectionManager().drawSelections( 'editCheck', [] ); surfaceView.setReviewMode( false ); reviewToolbar.$element.remove(); diff --git a/extension.json b/extension.json index a9f08e802f..a87db6d9a9 100644 --- a/extension.json +++ b/extension.json @@ -933,6 +933,7 @@ "lib/ve/src/dm/nodes/ve.dm.InlineImageNode.js", "lib/ve/src/dm/annotations/ve.dm.LinkAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.TextStyleAnnotation.js", + "lib/ve/src/dm/annotations/ve.dm.ImportedDataAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.AbbreviationAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.BidiAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.BigAnnotation.js", @@ -979,6 +980,8 @@ "lib/ve/src/ce/ve.ce.TableCellableNode.js", "lib/ve/src/ce/ve.ce.Selection.js", "lib/ve/src/ce/ve.ce.ClipboardHandler.js", + "lib/ve/src/ce/ve.ce.DragDropHandler.js", + "lib/ve/src/ce/ve.ce.SelectionManager.js", "lib/ve/src/ce/ve.ce.Surface.js", "lib/ve/src/ce/ve.ce.SurfaceObserver.js", "lib/ve/src/ce/ve.ce.KeyDownHandlerFactory.js", @@ -1032,6 +1035,7 @@ "lib/ve/src/ce/annotations/ve.ce.NailedAnnotation.js", "lib/ve/src/ce/annotations/ve.ce.LinkAnnotation.js", "lib/ve/src/ce/annotations/ve.ce.TextStyleAnnotation.js", + "lib/ve/src/ce/annotations/ve.ce.ImportedDataAnnotation.js", "lib/ve/src/ce/annotations/ve.ce.AbbreviationAnnotation.js", "lib/ve/src/ce/annotations/ve.ce.BidiAnnotation.js", "lib/ve/src/ce/annotations/ve.ce.BigAnnotation.js", @@ -2614,6 +2618,7 @@ "lib/ve/tests/ce/ve.ce.Document.test.js", "modules/ve-mw/tests/ce/ve.ce.Document.test.js", "lib/ve/tests/ce/ve.ce.ClipboardHandler.test.js", + "lib/ve/tests/ce/ve.ce.DragDropHandler.test.js", "lib/ve/tests/ce/ve.ce.Surface.test.js", "modules/ve-mw/tests/ce/ve.ce.Surface.test.js", "lib/ve/tests/ce/ve.ce.RangeState.test.js", diff --git a/lib/ve b/lib/ve index 7a373467ce..0e82a6db85 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 7a373467ce93d23297846e66fff5bc9419f87cce +Subproject commit 0e82a6db8555ff56a2e51fb6c2a8ecb5ceb729b5 diff --git a/modules/ve-mw/tests/ce/ve.ce.Surface.test.js b/modules/ve-mw/tests/ce/ve.ce.Surface.test.js index 486f1633dc..a619c62a47 100644 --- a/modules/ve-mw/tests/ce/ve.ce.Surface.test.js +++ b/modules/ve-mw/tests/ce/ve.ce.Surface.test.js @@ -86,5 +86,11 @@ QUnit.test( 'beforePaste/afterPaste', ( assert ) => { } ]; - cases.forEach( ve.test.utils.runSurfacePasteTest.bind( this, assert ) ); + const done = assert.async(); + ( async function () { + for ( const caseItem of cases ) { + await ve.test.utils.runSurfacePasteTest( assert, caseItem ); + } + done(); + }() ); } ); From f3930e7e12ed04f012ab7b1e41ff2cd9801da687 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 30 Oct 2024 20:28:14 +0000 Subject: [PATCH 017/730] EditCheck: Use getLinearFragment shortcut Change-Id: I53859c24567e01e24ff46a88799ee0edadbd8e1b --- editcheck/modules/AddReferenceEditCheck.js | 2 +- editcheck/modules/ConvertReferenceEditCheck.js | 2 +- editcheck/modules/TextMatchEditCheck.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/AddReferenceEditCheck.js b/editcheck/modules/AddReferenceEditCheck.js index c3d8a0dd2b..a265b6afe4 100644 --- a/editcheck/modules/AddReferenceEditCheck.js +++ b/editcheck/modules/AddReferenceEditCheck.js @@ -11,7 +11,7 @@ mw.editcheck.AddReferenceEditCheck.static.description = ve.msg( 'editcheck-dialo mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceModel ) { return this.findAddedContent( surfaceModel.getDocument() ).map( ( range ) => { - const fragment = surfaceModel.getFragment( new ve.dm.LinearSelection( range ) ); + const fragment = surfaceModel.getLinearFragment( range ); return new mw.editcheck.EditCheckAction( { highlight: fragment, selection: this.adjustForPunctuation( fragment.collapseToEnd() ), diff --git a/editcheck/modules/ConvertReferenceEditCheck.js b/editcheck/modules/ConvertReferenceEditCheck.js index 1ef08e3df0..dc1d3024d4 100644 --- a/editcheck/modules/ConvertReferenceEditCheck.js +++ b/editcheck/modules/ConvertReferenceEditCheck.js @@ -20,7 +20,7 @@ mw.editcheck.ConvertReferenceEditCheck.prototype.onDocumentChange = function ( s const referenceNode = documentModel.getInternalList().getItemNode( index ); const href = ve.ui.CitoidReferenceContextItem.static.getConvertibleHref( referenceNode ); if ( href ) { - const fragment = surfaceModel().getFragment( new ve.dm.LinearSelection( node.getOuterRange() ) ); + const fragment = surfaceModel().getLinearFragment( node.getOuterRange() ); return new mw.editcheck.EditCheckAction( { highlight: fragment, selection: fragment, diff --git a/editcheck/modules/TextMatchEditCheck.js b/editcheck/modules/TextMatchEditCheck.js index d07c38fc44..3260b87719 100644 --- a/editcheck/modules/TextMatchEditCheck.js +++ b/editcheck/modules/TextMatchEditCheck.js @@ -19,7 +19,7 @@ mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange = function ( surfaceM const actions = []; this.constructor.static.replacers.forEach( ( replacer ) => { surfaceModel.getDocument().findText( replacer.query ).forEach( ( range ) => { - const fragment = surfaceModel.getFragment( new ve.dm.LinearSelection( range ) ); + const fragment = surfaceModel.getLinearFragment( range ); actions.push( new mw.editcheck.EditCheckAction( { highlight: fragment, From e810e1bf6dff4a13b6c07443c9f636477935d4bf Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Fri, 1 Nov 2024 03:10:24 +0000 Subject: [PATCH 018/730] build: Updating mediawiki/mediawiki-codesniffer to 45.0.0 Change-Id: Id253c6d8319329a9cb156dede70fbe4db761d3f7 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 6fb0f8eaac..617b94c84f 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "require-dev": { - "mediawiki/mediawiki-codesniffer": "44.0.0", + "mediawiki/mediawiki-codesniffer": "45.0.0", "mediawiki/mediawiki-phan-config": "0.14.0", "mediawiki/minus-x": "1.1.3", "php-parallel-lint/php-console-highlighter": "1.0.0", From 40ec9aa5205f2a3a180eb9cd018b1d2f4e0dafb1 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 1 Nov 2024 08:36:58 +0100 Subject: [PATCH 019/730] Localisation updates from https://translatewiki.net. Change-Id: I186490be48fa70d1d1573b610cb3d2e18efed1c5 --- editcheck/i18n/da.json | 27 +++++++++++++++++++++++++++ i18n/ve-wmf/da.json | 2 ++ 2 files changed, 29 insertions(+) create mode 100644 editcheck/i18n/da.json diff --git a/editcheck/i18n/da.json b/editcheck/i18n/da.json new file mode 100644 index 0000000000..30de0f1924 --- /dev/null +++ b/editcheck/i18n/da.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Steenth" + ] + }, + "editcheck-dialog-action-no": "Nej", + "editcheck-dialog-action-yes": "Ja", + "editcheck-dialog-addref-description": "Hjælp læserne med at forstå, hvor disse oplysninger kommer fra, ved at tilføje et reference.", + "editcheck-dialog-addref-reject-question": "Hvorfor tilføjer du ikke et reference?", + "editcheck-dialog-addref-reject-description": "Andre bidragsydere ville værdsætte at lære mere om din beslutning om at afvise referencen.", + "editcheck-dialog-addref-reject-irrelevant": "Jeg tror ikke, at referencer er relevante for den ændring, jeg laver", + "editcheck-dialog-addref-reject-common-knowledge": "De oplysninger, jeg tilføjer, er almindeligt kendte", + "editcheck-dialog-addref-reject-uncertain": "Jeg er ikke sikker på, hvilket reference jeg skal tilføje", + "editcheck-dialog-addref-reject-other": "Andet", + "editcheck-dialog-addref-success-notify": "Tak fordi du tilføjede en reference!", + "editcheck-dialog-addref-title": "Tilføj en reference", + "editcheck-dialog-title": "Før offentliggørelse", + "tag-editcheck-reference-decline-common-knowledge": "Redigeringstjek (referencer) afvist (almindelig viden)", + "tag-editcheck-reference-decline-common-knowledge-description": "Redigeringstjek-reference blev afvist som almindelig viden", + "tag-editcheck-reference-decline-irrelevant": "Redigeringstjek (referencer) afvist (irrelevant)", + "tag-editcheck-reference-decline-irrelevant-description": "Redigeringstjek-reference blev afvist som irrelevant", + "tag-editcheck-reference-decline-other": "Redigeringstjek (referencer) afvist (andet)", + "tag-editcheck-reference-decline-other-description": "EditCheck-reference blev afvist af en ikke-opført grund", + "tag-editcheck-reference-decline-uncertain": "Redigeringstjek (referencer) afvist (usikker)", + "tag-editcheck-reference-decline-uncertain-description": "Redigeringstjek-reference blev afvist som værende usikker" +} diff --git a/i18n/ve-wmf/da.json b/i18n/ve-wmf/da.json index a3b56d496b..4156d0fff6 100644 --- a/i18n/ve-wmf/da.json +++ b/i18n/ve-wmf/da.json @@ -12,12 +12,14 @@ "Sarrus", "Simeondahl", "SimmeD", + "Steenth", "Tehnix", "Thomsen", "Weblars", "아라" ] }, + "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Redigeringstjek (referencer) aktiveret]]", "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuel redigering]]", "tag-visualeditor-description": "Redigeret ved hjælp af [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuel redigering]]", "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuel redigering: Tjek]]", From ba8f1b28b464ba4355a93af25dace8c4689c8421 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 4 Nov 2024 08:23:53 +0100 Subject: [PATCH 020/730] Localisation updates from https://translatewiki.net. Change-Id: I7114febeebcfcc924f5e725649abee6d9f24a885 --- i18n/ve-mw/it.json | 5 ++++- i18n/ve-mw/mk.json | 2 +- i18n/ve-wmf/ja.json | 4 ++++ i18n/ve-wmf/sat.json | 7 ++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/i18n/ve-mw/it.json b/i18n/ve-mw/it.json index f458ec5f98..4e2a00fe79 100644 --- a/i18n/ve-mw/it.json +++ b/i18n/ve-mw/it.json @@ -46,11 +46,13 @@ "Una giornata uggiosa '94", "Valepert", "Vivbod", - "Wikitoni" + "Wikitoni", + "ZandDev" ] }, "collabpad-import-subtitle": "Importato da $1", "tooltip-ca-ve-edit": "Modifica questa pagina", + "tooltip-ca-ve-create": "Crea questa pagina", "tooltip-ca-editsource": "Modifica il wikitesto di questa pagina", "tooltip-ca-createsource": "Crea il codice sorgente di questa pagina", "visualeditor-advancedsettings-tool": "Impostazioni avanzate", @@ -58,6 +60,7 @@ "visualeditor-autosave-modified-prompt-message": "Questa pagina è stata modificata dopo che l'hai caricata. {{GENDER:|Vuoi}} riprendere la modifica della vecchia versione o iniziare una nuova modifica dell'ultima versione della pagina?", "visualeditor-autosave-modified-prompt-reject": "Inizia una nuova modifica", "visualeditor-autosave-modified-prompt-title": "Riprendere la {{GENDER:|tua}} modifica?", + "visualeditor-autosave-not-recovered-text": "Le tue modifiche non salvate non possono essere ripristinate.", "visualeditor-autosave-recovered-text": "Le tue modifiche non salvate sono state automaticamente ripristinate.", "visualeditor-autosave-recovered-title": "Modifiche ripristinate", "visualeditor-backbutton-tooltip": "Indietro", diff --git a/i18n/ve-mw/mk.json b/i18n/ve-mw/mk.json index f3be340d84..107419e824 100644 --- a/i18n/ve-mw/mk.json +++ b/i18n/ve-mw/mk.json @@ -310,7 +310,7 @@ "visualeditor-mwpredialog-title": "Претформатиран прост текст", "visualeditor-mwsignature-tool": "Ваш потпис", "visualeditor-preference-visualeditor": "Овозможи го нагледниот уредник", - "visualeditor-preference-newwikitexteditor-enable": "Користи викитекстуален режим во нагледниот уредник намсто различен уредник на викитекст", + "visualeditor-preference-newwikitexteditor-enable": "Користи викитекстуален режим во нагледниот уредник наместо различен уредник на викитекст", "visualeditor-preference-newwikitexteditor-help": "Ова понекогаш се нарекува „уредникот на викитекст од 2017 г“.", "visualeditor-preference-tabs": "Режим на уредување:", "visualeditor-preference-tabs-multi-tab": "Дај ги двете уреднички јазичиња", diff --git a/i18n/ve-wmf/ja.json b/i18n/ve-wmf/ja.json index efcb4ee16f..cecd5ff38e 100644 --- a/i18n/ve-wmf/ja.json +++ b/i18n/ve-wmf/ja.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Ant176", + "Chqaz", "Darklanlan", "Fryed-peach", "Miya", @@ -16,6 +17,9 @@ "아라" ] }, + "tag-editcheck-newcontent-description": "編集チェックは新しいコンテンツがページに追加されたことを示します", + "tag-editcheck-newreference-description": "ページに出典が追加されました", + "tag-editcheck-references-description": "編集チェックは出典が必要である可能性があることを示します", "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター]]", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター]]を使用した編集", "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター: 要確認]]", diff --git a/i18n/ve-wmf/sat.json b/i18n/ve-wmf/sat.json index fe92d5aa74..c1f4cc0422 100644 --- a/i18n/ve-wmf/sat.json +++ b/i18n/ve-wmf/sat.json @@ -2,8 +2,13 @@ "@metadata": { "authors": [ "Albinus", - "Manik Soren" + "Manik Soren", + "ᱤᱧ ᱢᱟᱛᱟᱞ" ] }, + "tag-editcheck-newcontent-description": "ᱮ<unk> ᱪᱮᱠ ᱢᱚᱱᱮ ᱟᱠᱟᱫᱟ ᱡᱮ, ᱱᱚᱶᱟ ᱥᱟᱠᱟᱢ ᱨᱮ ᱱᱟᱶᱟ ᱥᱟᱛᱟᱢ ᱥᱮᱞᱮᱫ ᱦᱩᱭ ᱟᱠᱟᱱᱟ ᱾", + "tag-editcheck-newreference-description": "ᱥᱟᱠᱟᱢ ᱨᱮ ᱢᱤᱫᱴᱟᱝ ᱛᱟᱹᱞᱤᱠᱟ ᱥᱮᱞᱮᱫ ᱦᱩᱭ ᱟᱠᱟᱱᱟ ᱾", + "tag-editcheck-references-description": "ᱮ<unk> ᱪᱮᱠ ᱢᱚᱱᱮ ᱟᱠᱟᱫᱟ ᱡᱮ ᱢᱤᱫᱴᱟᱝ ᱨᱮᱯᱷᱟᱨᱮᱱᱥ ᱨᱮᱭᱟᱜ ᱞᱟᱹᱠᱛᱤ ᱦᱩᱭ ᱫᱟᱲᱮᱭᱟᱜᱼᱟ ᱾", + "tag-editcheck-references-activated-description": "ᱮ<unk> ᱪᱮᱠ ᱢᱚᱱᱮ ᱟᱠᱟᱫᱟ ᱡᱮ ᱢᱤᱫᱴᱟᱝ ᱨᱮᱯᱷᱟᱨᱮᱱᱥ ᱨᱮᱭᱟᱜ ᱞᱟᱹᱠᱛᱤ ᱦᱩᱭ ᱫᱟᱲᱮᱭᱟᱜᱼᱟ ᱟᱨ ᱤᱭᱩ ᱟᱭ ᱩᱫᱩᱜ ᱦᱩᱭ ᱟᱠᱟᱱᱟ ᱾", "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ᱧᱮᱞᱚᱜ ᱥᱟᱯᱲᱟᱣ]]" } From 477358b3cbb10937240dd12cc77dd97d8459d37f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 5 Nov 2024 08:34:09 +0100 Subject: [PATCH 021/730] Localisation updates from https://translatewiki.net. Change-Id: Idd38f7b3e8b554c91c73d35c9ead3f6a20c2eb90 --- i18n/ve-mw/cdo.json | 34 ---------------------------------- i18n/ve-mw/crh-ro.json | 2 +- i18n/ve-mw/it.json | 2 +- 3 files changed, 2 insertions(+), 36 deletions(-) diff --git a/i18n/ve-mw/cdo.json b/i18n/ve-mw/cdo.json index fca1a88fce..06b9b5b1c9 100644 --- a/i18n/ve-mw/cdo.json +++ b/i18n/ve-mw/cdo.json @@ -8,40 +8,6 @@ "唐吉訶德的侍從" ] }, - "visualeditor-advancedsettings-tool": "高級設置", - "visualeditor-backbutton-tooltip": "轉去", - "visualeditor-ca-createlocaldescriptionsource": "添加本地描述源代碼", - "visualeditor-ca-createsource": "創建源代碼", - "visualeditor-ca-editlocaldescriptionsource": "編輯本地描述源代碼", - "visualeditor-ca-editsource": "Gāi nguòng-dâi-mā", - "visualeditor-ca-editsource-section": "gāi nguòng-dâi-mā", - "visualeditor-categories-tool": "類別", - "visualeditor-desc": "MediaWiki其可視化編輯器", - "visualeditor-descriptionpagelink": "Project:Kō̤-sê-huá biĕng-cĭk-ké", - "visualeditor-dialog-media-alttext-section": "替代文本", - "visualeditor-dialog-media-alttext-section-help": "汝會使使嚽來為無法看遘項目其人寫蜀段文字描述。描述應該當著讓伊各儂有能耐理解媒體項目提供其目的共信息。嚽對青盲用戶共其他使屏幕閱讀器軟件或者純文本瀏覽器其人來講是嘢重要其。", - "visualeditor-dialog-media-change-image": "更改圖片", - "visualeditor-dialog-media-choose-image": "使者圖片", - "visualeditor-dialog-media-content-filename": "文件名", - "visualeditor-dialog-media-content-section": "圖片說明", - "visualeditor-dialog-media-content-section-help": "汝會使使嚽設媒體下底其標簽乞所有讀者看。啫嚽經常使來講明媒體共上下文其關係,著簡單明了。", - "visualeditor-dialog-media-goback": "轉去", - "visualeditor-dialog-media-info-artist": "由$1上傳", - "visualeditor-dialog-media-info-audiofile": "音頻文件", - "visualeditor-dialog-media-info-created": "創建著:$1", - "visualeditor-dialog-media-info-meta-artist": "藝術家:$1", - "visualeditor-dialog-media-info-moreinfo": "更価信息", - "visualeditor-dialog-media-info-readmore": "讀更価", - "visualeditor-dialog-media-info-uploaded": "上傳著:$1", - "visualeditor-dialog-media-page-advanced": "高級設置", - "visualeditor-dialog-media-page-general": "常規設置", - "visualeditor-dialog-media-position-checkbox": "讓文字內容環繞者對象", - "visualeditor-dialog-media-position-checkbox-help": "汝會使讓頁面裡勢其媒體使行内方式顯示,伓是浮動其方式。啫嚽汝應當盡量少使,因爲汝取消嚽方塊其勾會切斷文字。", - "visualeditor-dialog-media-position-section": "位置", - "visualeditor-dialog-media-position-section-help": "汝會使設置茲萆媒體項目出現著頁面上其位置。嚽有時乞當作拍破頁面蜀邊圖片其長直線。", - "visualeditor-dialog-media-save": "保存", - "visualeditor-dialog-media-search-tab-search": "尋討", - "visualeditor-dialog-media-search-tab-upload": "上傳", "visualeditor-dialog-media-size-section": "圖像尺寸", "visualeditor-dialog-media-title": "媒體文件設置", "visualeditor-dialog-media-type-border": "邊框", diff --git a/i18n/ve-mw/crh-ro.json b/i18n/ve-mw/crh-ro.json index 84cb460a51..060d99c7d9 100644 --- a/i18n/ve-mw/crh-ro.json +++ b/i18n/ve-mw/crh-ro.json @@ -4,7 +4,7 @@ "Zolgoyo" ] }, - "visualeditor-ca-createlocaldescriptionsource": "Mîntîka taswirí úşín memba", + "visualeditor-ca-createlocaldescriptionsource": "Mîntîka taswirí úşún memba", "visualeditor-ca-createsource": "Membadî yasa", "visualeditor-ca-editsource": "Membadî deñíştír", "visualeditor-ca-editsource-section": "membadî deñíştír" diff --git a/i18n/ve-mw/it.json b/i18n/ve-mw/it.json index 4e2a00fe79..1b58e95147 100644 --- a/i18n/ve-mw/it.json +++ b/i18n/ve-mw/it.json @@ -60,7 +60,7 @@ "visualeditor-autosave-modified-prompt-message": "Questa pagina è stata modificata dopo che l'hai caricata. {{GENDER:|Vuoi}} riprendere la modifica della vecchia versione o iniziare una nuova modifica dell'ultima versione della pagina?", "visualeditor-autosave-modified-prompt-reject": "Inizia una nuova modifica", "visualeditor-autosave-modified-prompt-title": "Riprendere la {{GENDER:|tua}} modifica?", - "visualeditor-autosave-not-recovered-text": "Le tue modifiche non salvate non possono essere ripristinate.", + "visualeditor-autosave-not-recovered-text": "Le tue modifiche non salvate non possono essere recuperate.", "visualeditor-autosave-recovered-text": "Le tue modifiche non salvate sono state automaticamente ripristinate.", "visualeditor-autosave-recovered-title": "Modifiche ripristinate", "visualeditor-backbutton-tooltip": "Indietro", From 793a1364aace0e9a4ba38a800642cd984abaaa27 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 5 Nov 2024 11:41:50 +0000 Subject: [PATCH 022/730] Allow multiple highlight fragments to be passed to an edit check Change-Id: Ie9d7010a1a0ee6a5c570d4fd6988fc876afdb9e2 --- editcheck/modules/AddReferenceEditCheck.js | 4 ++-- editcheck/modules/ConvertReferenceEditCheck.js | 2 +- editcheck/modules/EditCheckAction.js | 2 +- editcheck/modules/EditCheckDialog.js | 4 +++- editcheck/modules/EditCheckFactory.js | 2 +- editcheck/modules/TextMatchEditCheck.js | 2 +- editcheck/modules/init.js | 10 ++++++---- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/editcheck/modules/AddReferenceEditCheck.js b/editcheck/modules/AddReferenceEditCheck.js index a265b6afe4..6f6c4c419e 100644 --- a/editcheck/modules/AddReferenceEditCheck.js +++ b/editcheck/modules/AddReferenceEditCheck.js @@ -13,7 +13,7 @@ mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceMo return this.findAddedContent( surfaceModel.getDocument() ).map( ( range ) => { const fragment = surfaceModel.getLinearFragment( range ); return new mw.editcheck.EditCheckAction( { - highlight: fragment, + highlights: [ fragment ], selection: this.adjustForPunctuation( fragment.collapseToEnd() ), check: this } ); @@ -83,7 +83,7 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, co return windowAction.open( 'editCheckReferencesInspector', { - fragment: action.highlight, + fragment: action.highlights[ 0 ], callback: contextItem.data.callback, saveProcessDeferred: contextItem.data.saveProcessDeferred } diff --git a/editcheck/modules/ConvertReferenceEditCheck.js b/editcheck/modules/ConvertReferenceEditCheck.js index dc1d3024d4..f46c53feb0 100644 --- a/editcheck/modules/ConvertReferenceEditCheck.js +++ b/editcheck/modules/ConvertReferenceEditCheck.js @@ -22,7 +22,7 @@ mw.editcheck.ConvertReferenceEditCheck.prototype.onDocumentChange = function ( s if ( href ) { const fragment = surfaceModel().getLinearFragment( node.getOuterRange() ); return new mw.editcheck.EditCheckAction( { - highlight: fragment, + highlights: [ fragment ], selection: fragment, message: ve.msg( 'citoid-referencecontextitem-convert-message' ), check: this diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index a979e6879d..219eef3443 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -1,6 +1,6 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.check = config.check; - this.highlight = config.highlight; + this.highlights = config.highlights; this.selection = config.selection; this.message = config.message; }; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index d37764339c..874ee47c81 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -60,7 +60,9 @@ ve.ui.EditCheckDialog.prototype.update = function () { label: check.message, framed: false } ).$element ); - selections.push( ve.ce.Selection.static.newFromModel( check.highlight.getSelection(), surfaceView ) ); + check.highlights.forEach( ( highlight ) => { + selections.push( ve.ce.Selection.static.newFromModel( highlight.getSelection(), surfaceView ) ); + } ); } ); surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', selections ); this.$body.empty().append( $checks ); diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index 1d32e9ef37..200f325880 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -66,7 +66,7 @@ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( listene } } ); newChecks.sort( - ( a, b ) => a.highlight.getSelection().getCoveringRange().start - b.highlight.getSelection().getCoveringRange().start + ( a, b ) => a.highlights[ 0 ].getSelection().getCoveringRange().start - b.highlights[ 0 ].getSelection().getCoveringRange().start ); return newChecks; }; diff --git a/editcheck/modules/TextMatchEditCheck.js b/editcheck/modules/TextMatchEditCheck.js index 3260b87719..6d22a2f530 100644 --- a/editcheck/modules/TextMatchEditCheck.js +++ b/editcheck/modules/TextMatchEditCheck.js @@ -22,7 +22,7 @@ mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange = function ( surfaceM const fragment = surfaceModel.getLinearFragment( range ); actions.push( new mw.editcheck.EditCheckAction( { - highlight: fragment, + highlights: [ fragment ], selection: fragment, message: replacer.message, check: this diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index adb12edd1c..6a797a4374 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -204,9 +204,11 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable const highlightNodes = []; const selections = []; checks.forEach( ( check ) => { - highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( check.highlight.getSelection().getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); - const selection = ve.ce.Selection.static.newFromModel( check.highlight.getSelection(), surfaceView ); - selections.push( selection ); + check.highlights.forEach( ( highlight ) => { + highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( highlight.getSelection().getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); + const selection = ve.ce.Selection.static.newFromModel( highlight.getSelection(), surfaceView ); + selections.push( selection ); + } ); } ); // TODO: Make selections clickable when multicheck is enabled surfaceView.getSelectionManager().drawSelections( @@ -250,7 +252,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable // eslint-disable-next-line no-inner-declarations function showCheckContext( check ) { - const fragment = check.highlight; + const fragment = check.highlights[ 0 ]; // Select the found content to correctly position the context on desktop fragment.select(); From f2b44a9364a1b64ac6caaaa9ff5f627892cf0a1e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 5 Nov 2024 15:43:53 +0000 Subject: [PATCH 023/730] Update VE core submodule to master (267db0f3c) New changes: d4b5b74d7 ve.ce.Surface: Use getLinearFragment shortcut 1c0e86633 Localisation updates from https://translatewiki.net. fb7f4ed65 Platform: Implement generateUniqueId 6cbed3ff7 Localisation updates from https://translatewiki.net. 507999ffe AnnotationInspector: Remove useless context binding in arrow callback 267db0f3c Localisation updates from https://translatewiki.net. Change-Id: Ibe022e6439d01d71e5476c2e8f61c3b72c69e0ff --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 0e82a6db85..267db0f3c9 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 0e82a6db8555ff56a2e51fb6c2a8ecb5ceb729b5 +Subproject commit 267db0f3c9e8cd520480c9a1685267787b275b73 From 176e9c3297d51505bf6e56d37a1bf958bc80ab1f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 5 Nov 2024 15:44:39 +0000 Subject: [PATCH 024/730] CollabTarget: Use generateUniqueId Change-Id: I69faf3b2efe70d1d880585dd41f227d2d0562594 --- modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js b/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js index 29459c348f..e2479dc44d 100644 --- a/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js +++ b/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js @@ -242,7 +242,7 @@ } function getRandomTitle() { - return Math.random().toString( 36 ).slice( 2 ); + return ve.init.platform.generateUniqueId(); } function onNameChange() { From b67045c994de086914a7a517732eddad73134e6f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 6 Nov 2024 08:24:48 +0100 Subject: [PATCH 025/730] Localisation updates from https://translatewiki.net. Change-Id: Ia9dd30ec921c6c93b41b626df84a167e1fbe48e7 --- i18n/ve-mw/ar.json | 2 +- i18n/ve-mw/krc.json | 8 ++++---- i18n/ve-mw/msi.json | 1 + i18n/ve-wmf/ar.json | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index 1cba6ffa22..9faab4275d 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -327,7 +327,7 @@ "visualeditor-rebase-client-title-help": "ستتمكن من مراجعة التغييرات قبل الحفظ.", "visualeditor-recreate": "لقد تم حذف هذه الصفحة بعد أن بدأت بتحريرها. اضغط على «$1» لإعادة إنشائها.", "visualeditor-redirect-description": "تحويل إلى $1", - "visualeditor-savedialog-identify-anon": "هل تود عوضا عن ذلك حفظ هذه الصفحة على أنك مستخدم مجهول؟ سيتم تسجيل عنوان الآي بي الخاص بك في تاريخ تعديلات الصفحة.", + "visualeditor-savedialog-identify-anon": "لم تعد تسجيل الدخول إذا استمررت في ذلك، سيتم تسجيل عنوان IP الخاص بك في تاريخ تحرير هذه الصفحة.", "visualeditor-savedialog-identify-user": "لقد سجلت الدخول على أنك [[User:$1|$1]]. سيرتبط تعديلك بهذا الحساب إذا حفظت هذا التعديل.", "visualeditor-savedialog-keyboard-shortcut-submit": "يمكنك الضغط على $1 لحفظ تعديلك.", "visualeditor-savedialog-label-publish-short": "انشر", diff --git a/i18n/ve-mw/krc.json b/i18n/ve-mw/krc.json index a201d45b0f..8f1fe5e37d 100644 --- a/i18n/ve-mw/krc.json +++ b/i18n/ve-mw/krc.json @@ -43,7 +43,7 @@ "visualeditor-changedesc-mwcategory-sortkey-set": "Сафландырыу ачхычха $1 магъана берилди", "visualeditor-changedesc-mwcategory-sortkey-unset": "Сафландырыу ачхычны магъанасы $1 болуудан чыкъды", "visualeditor-changedesc-mwlanguagevariant": "Тил вариантны белгилениую тюрленди", - "visualeditor-changedesc-mwredirect": "Джангыдан джибериу нюзюр $1 нюзюрден $2 нюзюрге тюрленди", + "visualeditor-changedesc-mwredirect": "Джолландырыу нюзюр $1 нюзюрден $2 нюзюрге тюрленди", "visualeditor-changedesc-mwtransclusion": "Шаблон параметрле тюрлендиле", "visualeditor-desc": "MediaWiki ючюн визуал редактор", "visualeditor-descriptionpagelink": "Project:Визуал редактор", @@ -133,8 +133,8 @@ "visualeditor-dialog-meta-settings-notitleconvert-help": "Бу бетни башлыгъын башха скриптлеге автомат халда конвертация болууун тыяргъа боллукъсуз.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Бетни атын тил вариантланы арасында конвертация этмегиз", "visualeditor-dialog-meta-settings-redirect-help": "Бу бетни, автомат халда окъуучуланы бу викидеги башха бетге ашырырача джангыдан джибериуге бурургъа боллукъсуз. Бу джангылыч джазылыуда эмда альтернатив атла неда концепцияла ючюн хайырланырчады. Буну этсегиз, окъуучула бу бетни ичиндегисин кёрлюк тюлдюле.", - "visualeditor-dialog-meta-settings-redirect-label": "Бу бетге редирект эт", - "visualeditor-dialog-meta-settings-redirect-placeholder": "Редирект ючюн нюзюрлю бет", + "visualeditor-dialog-meta-settings-redirect-label": "Бу бетге джолландыр", + "visualeditor-dialog-meta-settings-redirect-placeholder": "Джолландырыу ючюн нюзюрлю бет", "visualeditor-dialog-meta-settings-redirect-statichelp": "Бу джангыдан джибериуню джибердиги бет кёчсе, автомат халда джангыртылыуун тыяргъа боллукъусуз, бу бек аз керек болады.", "visualeditor-dialog-meta-settings-redirect-staticlabel": "Нюзюрлю бетни аты тюрленнген сагъатда бу редиректни джангырмазча эт.", "visualeditor-dialog-meta-settings-section": "Бетни параметрлери", @@ -322,7 +322,7 @@ "visualeditor-rebase-client-import-name": "Бетни башлыгъы", "visualeditor-rebase-client-title-help": "Сакълауну аллы бла тюзетиулени къараргъа боллукъсуз.", "visualeditor-recreate": "Сиз редакторлукъ этиб башлагъанлы бу бет кетериглен этгенди. Аны джангыдан къурар ючюн «$1» тиекни басыгъыз.", - "visualeditor-redirect-description": "$1 джангыдан джиберилди", + "visualeditor-redirect-description": "$1 джолла", "visualeditor-savedialog-identify-anon": "Системадан чыгъыбсыз, IP-адресигиз бетни тюзетиу тарихинде сакъланныкъды.", "visualeditor-savedialog-identify-temp": "Мындан ары $1 болджаллы хайырланыучу атны хайырланасыз. Андан ары да бардырсагъыз, тюзетиуюгюз бу ат бла байламлы боллукъду.", "visualeditor-savedialog-identify-user": "Энди [[User:$1|$1]] болуб сессияны ачдыгъыз. Андан бардырсагъыз, тюзетиулеригиз бу хыйсаб бла байламлы боллукъдула.", diff --git a/i18n/ve-mw/msi.json b/i18n/ve-mw/msi.json index b7433ed9c2..1c3c27537a 100644 --- a/i18n/ve-mw/msi.json +++ b/i18n/ve-mw/msi.json @@ -4,6 +4,7 @@ "Tofeiku" ] }, + "visualeditor-ca-createlocaldescriptionsource": "Tambah sumber katarangan tampatan", "visualeditor-ca-createsource": "Buat sumber", "visualeditor-ca-editsource": "Idit sumber", "visualeditor-ca-editsource-section": "idit sumber", diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index 690bbf1377..3106fa4eeb 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -20,7 +20,7 @@ "아라" ] }, - "tag-editcheck-references-description": "يعتقد EditCheck أنه ربما كانت هناك حاجة إلى مرجع في هذا التعديل", + "tag-editcheck-references-description": "يعتقد (إديت تشيك) أنّه قد يكون هناك حاجة إلى مرجع", "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|فحص التحرير (أداة التحقق) مفعلّة]]", "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|تحرير مرئي]]", "tag-visualeditor-description": "تم التعديل باستخدام [[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", From d0dedfb512fb95143811ee105e0bde351b195950 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 7 Nov 2024 08:19:59 +0100 Subject: [PATCH 026/730] Localisation updates from https://translatewiki.net. Change-Id: I5e4db7bb8e52c3fbc5f01de5b364c29e13e62f1e --- i18n/ve-mw/ann.json | 2 +- i18n/ve-mw/api/fr.json | 3 ++- i18n/ve-mw/api/gl.json | 3 ++- i18n/ve-mw/api/pt-br.json | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/i18n/ve-mw/ann.json b/i18n/ve-mw/ann.json index 2ba181f42d..1bb0b4a6f7 100644 --- a/i18n/ve-mw/ann.json +++ b/i18n/ve-mw/ann.json @@ -7,7 +7,7 @@ "tooltip-ca-ve-edit": "Nen̄e akpọk yi ge", "visualeditor-ca-createlocaldescriptionsource": "Tap ebon mkpa-mwele eyi local", "visualeditor-ca-createsource": "Rom ebon", - "visualeditor-ca-editsource": "Nen̄e ere înan̄abe ge", + "visualeditor-ca-editsource": "Nen̄e me ebon", "visualeditor-ca-editsource-section": "nen̄e me ebon", "visualeditor-descriptionpagelink": "Project:ÒnweneEyiEkimun̄", "visualeditor-rebase-client-export-start": "Ria sibi", diff --git a/i18n/ve-mw/api/fr.json b/i18n/ve-mw/api/fr.json index 9998d46ce4..180283c5f3 100644 --- a/i18n/ve-mw/api/fr.json +++ b/i18n/ve-mw/api/fr.json @@ -7,6 +7,7 @@ "Gomoko", "Jdforrester", "Matma Rex", + "McDutchie", "MuratTheTurkish", "NemesisIII", "Thibaut120094", @@ -54,7 +55,7 @@ "apihelp-visualeditoredit-param-sectiontitle": "Titre de la nouvelle section.", "apihelp-visualeditoredit-param-starttimestamp": "Lors de l’enregistrement, règle ceci avec l’horodatage du moment où la page a été chargée. Utilisé pour détecter les conflits d’édition.", "apihelp-visualeditoredit-param-summary": "Modifier le résumé.", - "apihelp-visualeditoredit-param-tags": "Modifier les balises à appliquer à la modification.", + "apihelp-visualeditoredit-param-tags": "Les balises de modification à appliquer à la version.", "apihelp-visualeditoredit-param-wikitext": "Le wikicode avec lequel agir.", "apihelp-visualeditoredit-summary": "Enregistrer une page HTML5 en MediaWiki (convertie en wikicode via le service Parsoid)." } diff --git a/i18n/ve-mw/api/gl.json b/i18n/ve-mw/api/gl.json index 3827dbb123..616520c23c 100644 --- a/i18n/ve-mw/api/gl.json +++ b/i18n/ve-mw/api/gl.json @@ -4,6 +4,7 @@ "Banjo", "Elisardojm", "Matma Rex", + "McDutchie", "Toliño" ] }, @@ -45,7 +46,7 @@ "apihelp-visualeditoredit-param-sectiontitle": "Título para a nova sección.", "apihelp-visualeditoredit-param-starttimestamp": "Ao gardar, definir coa data e hora de cando se cargou a páxina. Úsase para detectar conflitos de edición.", "apihelp-visualeditoredit-param-summary": "Resumo de edición.", - "apihelp-visualeditoredit-param-tags": "Cambiar as etiquetas a aplicar á edición.", + "apihelp-visualeditoredit-param-tags": "As etiquetas de cambio que se aplicarán á edición.", "apihelp-visualeditoredit-param-wikitext": "O texto wiki co que traballar.", "apihelp-visualeditoredit-summary": "Gardar unha páxina HTML5 en MediaWiki (convertida en texto wiki mediante o servizo do Parsoid)." } diff --git a/i18n/ve-mw/api/pt-br.json b/i18n/ve-mw/api/pt-br.json index 75ab014b6e..80f51267d8 100644 --- a/i18n/ve-mw/api/pt-br.json +++ b/i18n/ve-mw/api/pt-br.json @@ -5,6 +5,7 @@ "Eduardoaddad", "Felipe L. Ewald", "Fúlvio", + "McDutchie", "TheGabrielZaum" ] }, @@ -46,7 +47,7 @@ "apihelp-visualeditoredit-param-sectiontitle": "Título para nova seção.", "apihelp-visualeditoredit-param-starttimestamp": "Ao salvar, define isto à data e hora de quando a página foi carregada. Usado para detectar conflitos de edição.", "apihelp-visualeditoredit-param-summary": "Sumário de edição.", - "apihelp-visualeditoredit-param-tags": "Altere as etiquetas para aplicar à edição.", + "apihelp-visualeditoredit-param-tags": "As tags de alteração a serem aplicadas à edição.", "apihelp-visualeditoredit-param-wikitext": "O texto wiki para ser utilizado.", "apihelp-visualeditoredit-summary": "Salva uma página HTML5 em MediaWiki (convertida para texto wiki através do serviço Parsoid)." } From d414ced79c1f4e04d8f1efdfdf27dc38cc423466 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 8 Nov 2024 08:29:59 +0100 Subject: [PATCH 027/730] Localisation updates from https://translatewiki.net. Change-Id: Ibc75b2094f88d4eef7eaf9c7ac36a82831a95266 --- i18n/ve-mw/api/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/api/nl.json b/i18n/ve-mw/api/nl.json index 272cdd3623..173a0ab989 100644 --- a/i18n/ve-mw/api/nl.json +++ b/i18n/ve-mw/api/nl.json @@ -43,7 +43,7 @@ "apihelp-visualeditoredit-param-needcheck": "Stel deze parameter in tijdens het opslaan als de versie mogelijk roundtripproblemen heeft. Dit resulteert in het labelen van de bewerking.", "apihelp-visualeditoredit-param-oldid": "Het te gebruiken versienummer. Standaard de laatste versie.", "apihelp-visualeditoredit-param-paction": "De te verrichten handeling.", - "apihelp-visualeditoredit-param-page": "De pagina waarop handelingen worden uitgevoerd.", + "apihelp-visualeditoredit-param-page": "De pagina om de handelingen op te verrichten.", "apihelp-visualeditoredit-param-section": "De te behandelen sectie.", "apihelp-visualeditoredit-param-sectiontitle": "De naam van de nieuw kopje.", "apihelp-visualeditoredit-param-starttimestamp": "Stel dit tijdens het opslaan in op de tijd waarop de pagina is geladen. Wordt gebruikt om bewerkingsconflicten te detecteren.", From b8f032d26653cd8fb849bfe188d5add83e909fcc Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 8 Nov 2024 14:05:09 +0000 Subject: [PATCH 028/730] Handle view tab clicks even on edit pages This allows the proper "discard changes" dialog to show. A few more steps of the teardown now happen in the client, but eventually in DesktopArticleTarget#teardown we check again if we weren't on a view page and redirect (as this is what we do after save). Bug: T379367 Change-Id: I995649f37e5d841b6c1784a74f3bd353adfbe69f --- .../ve.init.mw.DesktopArticleTarget.js | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index 7fc7f31652..3228048749 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -889,26 +889,23 @@ ve.init.mw.DesktopArticleTarget.prototype.onToolbarMetaButtonClick = function () * 'Edit' and single edit tab are bound in mw.DesktopArticleTarget.init. */ ve.init.mw.DesktopArticleTarget.prototype.setupSkinTabs = function () { - if ( this.isViewPage ) { - const namespaceNumber = mw.config.get( 'wgNamespaceNumber' ); - const namespaceName = mw.config.get( 'wgCanonicalNamespace' ); - const isTalkNamespace = mw.Title.isTalkNamespace( namespaceNumber ); - // Title::getNamespaceKey() - let namespaceKey = namespaceName.toLowerCase() || 'main'; - if ( namespaceKey === 'file' ) { - namespaceKey = 'image'; - } - let namespaceTabId; - // SkinTemplate::buildContentNavigationUrls() - if ( isTalkNamespace ) { - namespaceTabId = 'ca-talk'; - } else { - namespaceTabId = 'ca-nstab-' + namespaceKey; - } - // Allow instant switching back to view mode, without refresh - $( '#ca-view' ).add( '#' + namespaceTabId ).find( 'a' ) - .on( 'click.ve-target', this.onViewTabClick.bind( this ) ); + const namespaceNumber = mw.config.get( 'wgNamespaceNumber' ); + const namespaceName = mw.config.get( 'wgCanonicalNamespace' ); + const isTalkNamespace = mw.Title.isTalkNamespace( namespaceNumber ); + // Title::getNamespaceKey() + let namespaceKey = namespaceName.toLowerCase() || 'main'; + if ( namespaceKey === 'file' ) { + namespaceKey = 'image'; + } + let namespaceTabId; + // SkinTemplate::buildContentNavigationUrls() + if ( isTalkNamespace ) { + namespaceTabId = 'ca-talk'; + } else { + namespaceTabId = 'ca-nstab-' + namespaceKey; } + $( '#ca-view' ).add( '#' + namespaceTabId ).find( 'a' ) + .on( 'click.ve-target', this.onViewTabClick.bind( this ) ); // Used by Extension:GuidedTour mw.hook( 've.skinTabSetupComplete' ).fire(); From 239aa714fa85e9e0a6e9d471cc543da1a6e27785 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Sun, 10 Nov 2024 23:19:13 -0600 Subject: [PATCH 029/730] Edit check: fix an error when drawing selections Follow-up to 793a1364aace0e9a4ba38a800642cd984abaaa27 Change-Id: Ieb4f30ba2fe37fdca8cad559d3e4211c83642a5c --- editcheck/modules/init.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 6a797a4374..c9d426cf34 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -213,7 +213,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable // TODO: Make selections clickable when multicheck is enabled surfaceView.getSelectionManager().drawSelections( 'editCheck', - checks.map( ( check ) => ve.ce.Selection.static.newFromModel( check.highlight.getSelection(), surfaceView ) ) + selections ); surfaceView.setReviewMode( true, highlightNodes ); }; From a6b5a0e269fc882ec05365021010f54976f7c65c Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 11 Nov 2024 08:24:16 +0100 Subject: [PATCH 030/730] Localisation updates from https://translatewiki.net. Change-Id: I13863d8b54dc1ef138f5172accce7de0806ab816 --- i18n/ve-mw/az.json | 9 +++++---- i18n/ve-mw/mak.json | 2 ++ i18n/ve-mw/maw.json | 9 +++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 i18n/ve-mw/maw.json diff --git a/i18n/ve-mw/az.json b/i18n/ve-mw/az.json index 1cd11eb995..a6373855a3 100644 --- a/i18n/ve-mw/az.json +++ b/i18n/ve-mw/az.json @@ -12,7 +12,8 @@ "Toghrul Rahimli", "Vesely35", "Wertuose", - "Şeyx Şamil" + "Şeyx Şamil", + "Əkrəm Cəfər" ] }, "collabpad-doctitle": "CollabPad: $1", @@ -99,7 +100,7 @@ "visualeditor-dialog-meta-categories-category": "Kateqoriya", "visualeditor-dialog-meta-categories-data-label": "Kateqoriyalar", "visualeditor-dialog-meta-categories-defaultsort-help": "Bunun əvəzinə sıralamaq üçün fərqli bir indeks təyin edərək bir kateqoriya daxilində göstərildikdə bu səhifənin necə sıralanacağını dəyişə bilərsiniz. Bu tez-tez insanlar haqqında səhifələrin soyadla göstərilməsini təmin etmək üçün istifadə olunur, lakin əvvəlcə adları göstərilir.", - "visualeditor-dialog-meta-categories-defaultsort-label": "Səhifəni susmaya görə sırala", + "visualeditor-dialog-meta-categories-defaultsort-label": "Səhifəni defolt olaraq bu cür çeşidlə:", "visualeditor-dialog-meta-categories-hidden": "Bu kateqoriya əlavə edildiyi səhifələrdə görünmür.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Gizli kateqoriyalar", "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Müvafiq kateqoriyalar", @@ -120,13 +121,13 @@ "visualeditor-dialog-meta-settings-displaytitle-help": "Bunun əvəzinə fərqli bir başlıq təyin edərək bu səhifənin başlığının necə görünəcəyini dəyişə bilərsiniz.", "visualeditor-dialog-meta-settings-hiddencat-help": "Bu kateqoriyanın üzv səhifələrdəki kateqoriyalar siyahısında görünməsinin qarşısını ala bilərsiniz. Bu, redaktorlar üçün maraqlı olan, lakin oxucuların əksəriyyəti üçün olmayan, məsələn, şəkilə ehtiyacı olan səhifələr üçün faydalıdır.", "visualeditor-dialog-meta-settings-hiddencat-label": "Gizli kateqoriya", - "visualeditor-dialog-meta-settings-index-default": "Susmaya görə", + "visualeditor-dialog-meta-settings-index-default": "Defolt", "visualeditor-dialog-meta-settings-index-disable": "Xeyr", "visualeditor-dialog-meta-settings-index-force": "Bəli", "visualeditor-dialog-meta-settings-index-help": "Axtarış mühərriklərini bu səhifəni müvafiq nəticələr siyahısına salmağa və ya salmamağa məcbur edə bilərsiniz. Bu seçim sayt daxilində axtarışa təsir etmir.", "visualeditor-dialog-meta-settings-index-label": "Axtarış sistemlərinin bu səhifəni indeksləşdirməsinə icazə ver", "visualeditor-dialog-meta-settings-label": "Səhifənin parametrləri", - "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Susmaya görə", + "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Defolt", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Xeyr", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Bəli", "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Bu səhifədəki \"$1\" bölməsinin yanında əlavə bir nişanın göstərilməsini aktivləşdirə edə bilərsiniz, hansı ki yeni bir bölmə əlavə etməyi asanlaşdıracaq.", diff --git a/i18n/ve-mw/mak.json b/i18n/ve-mw/mak.json index 51a9f64ff5..17fe0a3444 100644 --- a/i18n/ve-mw/mak.json +++ b/i18n/ve-mw/mak.json @@ -4,6 +4,8 @@ "Han4299" ] }, + "visualeditor-ca-createlocaldescriptionsource": "Tambai pappakasingarak lokalak", + "visualeditor-ca-createsource": "Parek (tulisang wiki)", "visualeditor-ca-editsource": "Pakabajiki assalakna", "visualeditor-ca-editsource-section": "pakabajiki assalakna", "visualeditor-descriptionpagelink": "Project:VisualEditor" diff --git a/i18n/ve-mw/maw.json b/i18n/ve-mw/maw.json new file mode 100644 index 0000000000..f89ae12bbe --- /dev/null +++ b/i18n/ve-mw/maw.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Christian Yakubu" + ] + }, + "visualeditor-ca-editsource": "Malinniŋ din yi sheeli na", + "visualeditor-ca-editsource-section": "Malinniŋ din yi sheeli na" +} From a5200b46e5c8789d4bc5a8b8eab84f496556744f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 11 Nov 2024 16:21:34 +0000 Subject: [PATCH 031/730] Update VE core submodule to master (50d3711de) New changes: f9d6ec27b ClipboardHandler: Give importedData annotations unique event IDs ec97d88b7 ClipboardHandler: Improve handling of text style conversion 6454e904a Demo: Don't restore from auto-save when switching to/from source 8b4a254b9 Localisation updates from https://translatewiki.net. 2e48754b7 Add test case documenting wrong behaviour when moving annotated metadata Change-Id: I18f2ce43797c464b50197120570ccd5b9891f034 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 267db0f3c9..50d3711ded 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 267db0f3c9e8cd520480c9a1685267787b275b73 +Subproject commit 50d3711ded587cd8f47d35f377699ffad94ed985 From 56e16076652606af16207ed1a6c39dcb0b5ea75d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 12 Nov 2024 08:19:19 +0100 Subject: [PATCH 032/730] Localisation updates from https://translatewiki.net. Change-Id: Icb76796ebce9c3604c6ea0637722af88fa4c42a6 --- i18n/ve-mw/ar.json | 2 +- i18n/ve-wmf/scn.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index 9faab4275d..28ac776443 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -110,7 +110,7 @@ "visualeditor-dialog-media-type-section": "نوع الصورة", "visualeditor-dialog-media-type-section-help": "أنت يمكنك ضبط كيف يظهر عنصر الميديا على الصفحة. هذا نبغي أن يكون صيغة الصورة المصغرة ليكون متناسقا مع الصفحات الأخرى في كل الحالات تقريبا.", "visualeditor-dialog-media-type-thumb": "تصغير", - "visualeditor-dialog-media-upload": "ارفع", + "visualeditor-dialog-media-upload": "رفع", "visualeditor-dialog-meta-advancedsettings-label": "إعدادات متقدمة", "visualeditor-dialog-meta-advancedsettings-section": "إعدادات متقدمة", "visualeditor-dialog-meta-categories-addcategory-label": "أضف تصنيفا لهذه الصفحة", diff --git a/i18n/ve-wmf/scn.json b/i18n/ve-wmf/scn.json index b64b226c0d..58f15a9046 100644 --- a/i18n/ve-wmf/scn.json +++ b/i18n/ve-wmf/scn.json @@ -14,6 +14,7 @@ "tag-visualeditor-description": "Canciamentu fattu usannu [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: cuntrullari]]", "tag-visualeditor-needcheck-description": "Canciamentu fattu usannu [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] unni lu sistema rilivau pussibbili canciamenti nun vulutu ntô wikitestu.", + "tag-visualeditor-wikitext": "Editor wikitestu 2017", "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Canciamentu visuali: cummutatu]]", "visualeditor-feedback-link": "Project:VisualEditor/Cummenta", "visualeditor-feedback-tool": "Lassa nu cummentu supra stu software", From df82cecfd7e03b6f58e3eb62555c0f9f6757e868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=BDeljko=20Filipin?= Date: Tue, 12 Nov 2024 13:56:56 +0100 Subject: [PATCH 033/730] selenium: Replace Node.js Assert library with WebdriverIO Expect library Assertions from Expect library are more readable that assertions from Assert library. Bug: T325740 Change-Id: I3255483d99e096deea12aaccbebeabcdcc2e1b21 --- tests/selenium/specs/content_editable.js | 9 ++++----- tests/selenium/specs/toolbar.js | 19 +++++++++---------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/tests/selenium/specs/content_editable.js b/tests/selenium/specs/content_editable.js index feb6ab53c3..19cb52f97d 100644 --- a/tests/selenium/specs/content_editable.js +++ b/tests/selenium/specs/content_editable.js @@ -1,5 +1,4 @@ 'use strict'; -const assert = require( 'assert' ); const EditPage = require( '../pageobjects/edit.page' ); const LoginPage = require( 'wdio-mediawiki/LoginPage' ); const Util = require( 'wdio-mediawiki/Util' ); @@ -25,13 +24,13 @@ describe( 'Content Editable', () => { } ); it( 'should load when an url is opened @daily', async () => { - assert( await EditPage.toolbar.isDisplayed() ); + await expect( await EditPage.toolbar ).toBeDisplayed(); } ); it( 'should be editable', async () => { await EditPage.veRootNode.setValue( content ); - assert.equal( await EditPage.veRootNode.getText(), content ); + await expect( await EditPage.veRootNode ).toHaveText( content ); } ); it( 'should save an edit', async () => { @@ -41,13 +40,13 @@ describe( 'Content Editable', () => { await EditPage.savePage.click(); await EditPage.saveComplete(); - assert.strictEqual( await EditPage.notification.getText(), 'The page has been created.' ); + await expect( await EditPage.notification ).toHaveText( 'The page has been created.' ); } ); it( 'should insert a table', async () => { await EditPage.insertTable(); - assert( await EditPage.insertedTable.isDisplayed() ); + await expect( await EditPage.insertedTable ).toBeDisplayed(); } ); } ); diff --git a/tests/selenium/specs/toolbar.js b/tests/selenium/specs/toolbar.js index 71c5c4404a..362223ebba 100644 --- a/tests/selenium/specs/toolbar.js +++ b/tests/selenium/specs/toolbar.js @@ -1,5 +1,4 @@ 'use strict'; -const assert = require( 'assert' ); const EditPage = require( '../pageobjects/edit.page' ); const Util = require( 'wdio-mediawiki/Util' ); @@ -21,25 +20,25 @@ describe( 'Toolbar', () => { } ); it( 'should open notices popup as soon as it loads', async () => { - assert( await EditPage.notices.isDisplayed() ); + await expect( await EditPage.notices ).toBeDisplayed(); } ); it( 'should open switch editor', async () => { await EditPage.switchEditorElement.click(); - assert( await EditPage.visualEditing.isDisplayed() ); + await expect( await EditPage.visualEditing ).toBeDisplayed(); } ); it( 'should open page options', async () => { await EditPage.pageOptionsElement.click(); - assert( await EditPage.options.isDisplayed() ); + await expect( await EditPage.options ).toBeDisplayed(); } ); it( 'should open help popup', async () => { await EditPage.helpElement.click(); - assert( await EditPage.helpPopup.isDisplayed() ); + await expect( await EditPage.helpPopup ).toBeDisplayed(); } ); // Skipped on 2023-06-21 in 931997 because of T296187 @@ -47,31 +46,31 @@ describe( 'Toolbar', () => { await EditPage.specialCharacterElement.click(); await EditPage.specialCharacterMenu.waitForDisplayed( { timeout: 1000 } ); - assert( await EditPage.specialCharacterMenu.isDisplayed() ); + await expect( await EditPage.specialCharacterMenu ).toBeDisplayed(); } ); it( 'should open insert menu', async () => { await EditPage.insert.click(); - assert( await EditPage.insertMenu.isDisplayed() ); + await expect( await EditPage.insertMenu ).toBeDisplayed(); } ); it( 'should open structure options menu', async () => { await EditPage.structureOptionsElement.click(); - assert( await EditPage.bulletListOption.isDisplayed() ); + await expect( await EditPage.bulletListOption ).toBeDisplayed(); } ); it( 'should open style text options', async () => { await EditPage.styleTextElement.click(); - assert( await EditPage.boldTextStyleOption.isDisplayed() ); + await expect( await EditPage.boldTextStyleOption ).toBeDisplayed(); } ); it( 'should open format paragraph menu', async () => { await EditPage.formatParagraphElement.click(); - assert( await EditPage.paragraphFormatMenu.isDisplayed() ); + await expect( await EditPage.paragraphFormatMenu ).toBeDisplayed(); } ); } ); From e434ad65ec5c413c2d6326dda8bd48e7a8777c67 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 11 Nov 2024 13:29:22 +0000 Subject: [PATCH 034/730] MobileArticleTarget: Make close/publish buttons fixed width This aligns them with the mobile wikitext editor. At mobile widths the difference is negligible. On tablets this distinguishes "navigation" buttons from the surface toolbar buttons. Bug: T344370 Change-Id: I342e3bb579afb9f26e2af743e28eedb32efa3d46 --- .../ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less b/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less index c159c0097d..1e1c4f2974 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less +++ b/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less @@ -71,6 +71,14 @@ position: fixed; } +.ve-init-mw-mobileArticleTarget-toolbar.ve-ui-targetToolbar-mobile .oo-ui-toolbar-tools > { + .ve-ui-toolbar-group-back, + .ve-ui-toolbar-group-save { + flex: 0; + min-width: 2.75em; + } +} + @media screen and ( max-width: 767px ) { .ve-init-mw-target-surface > .ve-ui-surface-placeholder > * { /* Fix margin overlap */ From 7b81b03b23862b89fca770b625058975865c9762 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 13 Nov 2024 08:26:46 +0100 Subject: [PATCH 035/730] Localisation updates from https://translatewiki.net. Change-Id: I5710b86c431723ef1a13db5927c3ce94cde4d889 --- i18n/ve-mw/tok.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/ve-mw/tok.json b/i18n/ve-mw/tok.json index 1e74dba60b..61347174b5 100644 --- a/i18n/ve-mw/tok.json +++ b/i18n/ve-mw/tok.json @@ -3,9 +3,12 @@ "authors": [ "LesVisages", "Robin van der Vliet", + "Tamzin", "Tbodt" ] }, + "visualeditor-ca-createlocaldescriptionsource": "lipu ni la o pana e lipu sona kepeken toki nanpa", + "visualeditor-ca-createsource": "o pali e toki ilo", "visualeditor-ca-editsource": "o ante e toki ilo", "visualeditor-ca-editsource-section": "o ante e toki ilo", "visualeditor-dialog-meta-languages-name-label": "toki" From a0ec12fda50ef4f28bd8525c6272498a632a389d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 14 Nov 2024 08:20:59 +0100 Subject: [PATCH 036/730] Localisation updates from https://translatewiki.net. Change-Id: Id3a8e36e2344f1dd18b85c70281d41588d7bcac7 --- i18n/ve-mw/tok.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/tok.json b/i18n/ve-mw/tok.json index 61347174b5..663364fed1 100644 --- a/i18n/ve-mw/tok.json +++ b/i18n/ve-mw/tok.json @@ -7,7 +7,7 @@ "Tbodt" ] }, - "visualeditor-ca-createlocaldescriptionsource": "lipu ni la o pana e lipu sona kepeken toki nanpa", + "visualeditor-ca-createlocaldescriptionsource": "lipu ni la o pana e lipu sona kepeken toki ilo", "visualeditor-ca-createsource": "o pali e toki ilo", "visualeditor-ca-editsource": "o ante e toki ilo", "visualeditor-ca-editsource-section": "o ante e toki ilo", From bde8fece8c16fdbe78231999f9fcd8dad62d0957 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 14 Nov 2024 11:46:49 +0000 Subject: [PATCH 037/730] Set enforceResizesContent on mobile targets Logically depends on If412dc5828. Bug: T379780 Change-Id: Id7667de9e2251820158ee532a42fabec18d9d5a1 --- modules/ve-mw-collab/ve.init.mw.MobileCollabTarget.js | 2 ++ modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/modules/ve-mw-collab/ve.init.mw.MobileCollabTarget.js b/modules/ve-mw-collab/ve.init.mw.MobileCollabTarget.js index 9d1add4739..b459231999 100644 --- a/modules/ve-mw-collab/ve.init.mw.MobileCollabTarget.js +++ b/modules/ve-mw-collab/ve.init.mw.MobileCollabTarget.js @@ -89,6 +89,8 @@ ve.init.mw.MobileCollabTarget.static.toolbarGroups = [ } ]; +ve.init.mw.MobileCollabTarget.static.enforceResizesContent = true; + /* Methods */ /** diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index f8fe746d18..d3a8a29569 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -87,6 +87,8 @@ ve.init.mw.MobileArticleTarget.static.trackingName = 'mobile'; // FIXME Some of these users will be on tablets, check for this ve.init.mw.MobileArticleTarget.static.platformType = 'phone'; +ve.init.mw.MobileArticleTarget.static.enforceResizesContent = true; + /* Methods */ /** From 0abef83d502ca4f16004fcc242d9f1f661dce736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=BDeljko=20Filipin?= Date: Tue, 29 Oct 2024 12:46:42 +0100 Subject: [PATCH 038/730] selenium: Delete a test disabled more than a year ago Bug: T280652 Change-Id: I963ad35a04173c4ce1341146001ef231298ee083 --- tests/selenium/specs/toolbar.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/selenium/specs/toolbar.js b/tests/selenium/specs/toolbar.js index 362223ebba..455a826a29 100644 --- a/tests/selenium/specs/toolbar.js +++ b/tests/selenium/specs/toolbar.js @@ -41,14 +41,6 @@ describe( 'Toolbar', () => { await expect( await EditPage.helpPopup ).toBeDisplayed(); } ); - // Skipped on 2023-06-21 in 931997 because of T296187 - it.skip( 'should open special characters menu', async () => { - await EditPage.specialCharacterElement.click(); - await EditPage.specialCharacterMenu.waitForDisplayed( { timeout: 1000 } ); - - await expect( await EditPage.specialCharacterMenu ).toBeDisplayed(); - } ); - it( 'should open insert menu', async () => { await EditPage.insert.click(); From d44cf4cd670ae96f5c42161d42e800cb3323fa08 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 24 Jan 2024 19:11:17 +0000 Subject: [PATCH 039/730] Introduce a new init hook (ve.newTarget) to replace all others Bug: T355555 Change-Id: I4dbe183e1631046cd54c63bf6366deb1765ee3a5 --- extension.json | 1 + .../init/targets/ve.init.mw.ArticleTarget.js | 12 +++- .../ve-mw/init/targets/ve.init.mw.Target.js | 12 +++- .../ve-mw/init/ve.init.mw.TargetFactory.js | 68 +++++++++++++++++++ modules/ve-mw/init/ve.init.mw.js | 4 +- .../ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js | 9 +++ 6 files changed, 100 insertions(+), 6 deletions(-) create mode 100644 modules/ve-mw/init/ve.init.mw.TargetFactory.js diff --git a/extension.json b/extension.json index a87db6d9a9..57059ebe4c 100644 --- a/extension.json +++ b/extension.json @@ -704,6 +704,7 @@ "modules/ve-mw/init/apiresponsecache/ve.init.mw.GalleryImageInfoCache.js", "modules/ve-mw/init/ve.init.mw.Platform.js", "modules/ve-mw/init/ve.init.mw.Platform.init.js", + "modules/ve-mw/init/ve.init.mw.TargetFactory.js", "modules/ve-mw/init/targets/ve.init.mw.Target.js" ], "styles": [ diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 43c9044a5c..4ad3b7795d 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -40,6 +40,7 @@ ve.init.mw.ArticleTarget = function VeInitMwArticleTarget( config ) { this.saveDialog = null; this.saveDeferred = null; this.saveFields = {}; + this.wasSaveable = null; this.docToSave = null; this.originalDmDocPromise = null; this.originalHtml = null; @@ -1951,9 +1952,15 @@ ve.init.mw.ArticleTarget.prototype.isSaveable = function () { * Update the toolbar save button to reflect if the article can be saved */ ve.init.mw.ArticleTarget.prototype.updateToolbarSaveButtonState = function () { - // This should really be an emit('updateState') but that would cause + // This should really be an emit( 'updateState' ) but that would cause // every tool to be updated on every transaction. this.toolbarSaveButton.onUpdateState(); + + const isSaveable = this.isSaveable(); + if ( isSaveable !== this.wasSaveable ) { + this.emit( 'toolbarSaveButtonStateChanged' ); + this.wasSaveable = isSaveable; + } }; /** @@ -2008,7 +2015,8 @@ ve.init.mw.ArticleTarget.prototype.showSaveDialog = function ( action, checkboxN resolve: 'onSaveDialogResolveConflict', retry: 'onSaveDialogRetry', // The array syntax is a way to call `this.emit( 'saveWorkflowEnd' )`. - close: [ 'emit', 'saveWorkflowEnd' ] + close: [ 'emit', 'saveWorkflowEnd' ], + changePanel: [ 'emit', 'saveWorkflowChangePanel' ] } ); // Attach custom overlay diff --git a/modules/ve-mw/init/targets/ve.init.mw.Target.js b/modules/ve-mw/init/targets/ve.init.mw.Target.js index 2a56df59d0..c58f73a389 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.Target.js +++ b/modules/ve-mw/init/targets/ve.init.mw.Target.js @@ -35,6 +35,14 @@ ve.init.mw.Target = function VeInitMwTarget( config ) { OO.inheritClass( ve.init.mw.Target, ve.init.Target ); +/* Events */ + +/** + * Fired when the target has been torn down + * + * @event ve.init.mw.Target#teardown + */ + /* Static Properties */ /** @@ -512,7 +520,9 @@ ve.init.mw.Target.prototype.teardown = function () { this.clearDocState(); // Parent method - return ve.init.mw.Target.super.prototype.teardown.call( this ); + return ve.init.mw.Target.super.prototype.teardown.call( this ).then( () => { + this.emit( 'teardown' ); + } ); }; /** diff --git a/modules/ve-mw/init/ve.init.mw.TargetFactory.js b/modules/ve-mw/init/ve.init.mw.TargetFactory.js new file mode 100644 index 0000000000..edfbd84e86 --- /dev/null +++ b/modules/ve-mw/init/ve.init.mw.TargetFactory.js @@ -0,0 +1,68 @@ +/*! + * VisualEditor MediaWiki Initialization TargetFactory class. + * + * @copyright See AUTHORS.txt + */ + +/** + * Target factory. + * + * @class + * @extends OO.Factory + * @constructor + */ +ve.init.mw.TargetFactory = function VeInitMwTargetFactory() { + // Parent constructor + ve.init.mw.TargetFactory.super.call( this ); +}; + +/* Inheritance */ + +OO.inheritClass( ve.init.mw.TargetFactory, OO.Factory ); + +/* Methods */ + +/** + * @inheritdoc + */ +ve.init.mw.TargetFactory.prototype.create = function () { + // Parent method + const target = ve.init.mw.TargetFactory.super.prototype.create.apply( this, arguments ); + + /* + * This hook is designed to replace all the previous post-init + * article editor hooks: + * + * mw.hook( 've.newTarget' ).add( ( target ) => { + * if ( target.constructor.static.name !== 'article' ) { + * return; + * } + * + * // ve.activationComplete + * target.on( 'surfaceReady', () => { + * console.log( 'surface ready' ); + * } ); + * + * // ve.toolbarSaveButton.stateChanged + * target.on( 'toolbarSaveButtonStateChanged', () => { + * console.log( 'toolbar save button changed', target.toolbarSaveButton, target.isSaveable() ); + * } ); + * + * // ve.saveDialog.stateChanged + * target.on( 'saveWorkflowChangePanel', () => { + * console.log( 'save dialog change panel', ve.init.target.saveDialog ); + * } ); + * + * // ve.deactivationComplete + * target.on( 'teardown', () => { + * console.log( 'teardown', ve.init.target.edited ); + * } ); + * } ); + */ + mw.hook( 've.newTarget' ).fire( target ); + + return target; +}; + +/* Initialization */ +ve.init.mw.targetFactory = new ve.init.mw.TargetFactory(); diff --git a/modules/ve-mw/init/ve.init.mw.js b/modules/ve-mw/init/ve.init.mw.js index 99370e86b9..bd77fc6f0e 100644 --- a/modules/ve-mw/init/ve.init.mw.js +++ b/modules/ve-mw/init/ve.init.mw.js @@ -11,9 +11,7 @@ * * @namespace */ -ve.init.mw = { - targetFactory: new OO.Factory() -}; +ve.init.mw = {}; /** * @namespace mw.libs.ve diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js index fa8c0df454..ccfcc43117 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js @@ -120,6 +120,12 @@ ve.ui.MWSaveDialog.static.actions = [ * @event ve.ui.MWSaveDialog#retry */ +/** + * Emitted when the save dialog changes panel, and when it opens + * + * @event ve.ui.MWSaveDialog#changePanel + */ + /* Methods */ /** @@ -516,6 +522,8 @@ ve.ui.MWSaveDialog.prototype.initialize = function () { // Properties this.panels = new OO.ui.StackLayout( { scrollable: false } ); + this.panels.connect( this, { set: [ 'emit', 'changePanel' ] } ); + this.savePanel = new OO.ui.PanelLayout( { expanded: false, padded: true, @@ -863,6 +871,7 @@ ve.ui.MWSaveDialog.prototype.getReadyProcess = function ( data ) { // This includes a #focus call this.editSummaryInput.moveCursorToEnd(); } + this.emit( 'changePanel' ); } ); }; From ee79edb58bf2d2961c9a52d03b9e95f3e14f7801 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 14 Nov 2024 16:44:59 +0000 Subject: [PATCH 040/730] Move edit checks to /editchecks folder Change-Id: I27eee69c4086d44fd7d60bacde9a76c170af63fe --- editcheck/modules/{ => editchecks}/AddReferenceEditCheck.js | 0 .../modules/{ => editchecks}/ConvertReferenceEditCheck.js | 0 editcheck/modules/{ => editchecks}/TextMatchEditCheck.js | 0 editcheck/modules/init.js | 6 +++--- extension.json | 6 +++--- 5 files changed, 6 insertions(+), 6 deletions(-) rename editcheck/modules/{ => editchecks}/AddReferenceEditCheck.js (100%) rename editcheck/modules/{ => editchecks}/ConvertReferenceEditCheck.js (100%) rename editcheck/modules/{ => editchecks}/TextMatchEditCheck.js (100%) diff --git a/editcheck/modules/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js similarity index 100% rename from editcheck/modules/AddReferenceEditCheck.js rename to editcheck/modules/editchecks/AddReferenceEditCheck.js diff --git a/editcheck/modules/ConvertReferenceEditCheck.js b/editcheck/modules/editchecks/ConvertReferenceEditCheck.js similarity index 100% rename from editcheck/modules/ConvertReferenceEditCheck.js rename to editcheck/modules/editchecks/ConvertReferenceEditCheck.js diff --git a/editcheck/modules/TextMatchEditCheck.js b/editcheck/modules/editchecks/TextMatchEditCheck.js similarity index 100% rename from editcheck/modules/TextMatchEditCheck.js rename to editcheck/modules/editchecks/TextMatchEditCheck.js diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index c9d426cf34..ecab91c8b0 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -11,9 +11,9 @@ require( './EditCheckAction.js' ); require( './BaseEditCheck.js' ); // TODO: Load these checks behind feature flags -// require( './ConvertReferenceEditCheck.js' ); -// require( './TextMatchEditCheck.js' ); -require( './AddReferenceEditCheck.js' ); +// require( './editchecks/ConvertReferenceEditCheck.js' ); +// require( './editchecks/TextMatchEditCheck.js' ); +require( './editchecks/AddReferenceEditCheck.js' ); /** * Return the content ranges (content branch node interiors) contained within a range diff --git a/extension.json b/extension.json index a87db6d9a9..7a2e5db03e 100644 --- a/extension.json +++ b/extension.json @@ -618,9 +618,9 @@ "editcheck/modules/EditCheckFactory.js", "editcheck/modules/EditCheckAction.js", "editcheck/modules/BaseEditCheck.js", - "editcheck/modules/AddReferenceEditCheck.js", - "editcheck/modules/ConvertReferenceEditCheck.js", - "editcheck/modules/TextMatchEditCheck.js", + "editcheck/modules/editchecks/AddReferenceEditCheck.js", + "editcheck/modules/editchecks/ConvertReferenceEditCheck.js", + "editcheck/modules/editchecks/TextMatchEditCheck.js", { "name": "editcheck/modules/config.json", "callback": "\\MediaWiki\\Extension\\VisualEditor\\EditCheck\\ResourceLoaderData::getConfig" From bf22d07d2b5e76ffcc0f37cf17847bfbfda3295e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 14 Nov 2024 22:38:00 +0100 Subject: [PATCH 041/730] Fix Phan error related to showPendingTakeover() Caused by type hints added in MediaWiki core in I3e0df790ff9db2fa630f82408a7254a359fe61ca. Change-Id: I45d0906c11d9e66801dfedd54e6018e90ef027c4 --- includes/Hooks.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/Hooks.php b/includes/Hooks.php index 955d42711d..c8561c24a1 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -410,6 +410,7 @@ public function onCustomEditor( $article, $user ) { $out = $article->getContext()->getOutput(); $titleMsg = $title->exists() ? 'editing' : 'creating'; $out->setPageTitleMsg( wfMessage( $titleMsg, $title->getPrefixedText() ) ); + // @phan-suppress-next-line PhanTypeMismatchArgumentNullable Only null for invalid URL, shouldn't happen $out->showPendingTakeover( $url, 'visualeditor-toload', $urlUtils->expand( $url ) ); $out->setRevisionId( $req->getInt( 'oldid', $article->getRevIdFetched() ) ); From 02654c0086939d4b63594f8b4700e0299bc7c4be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 14 Nov 2024 22:30:05 +0100 Subject: [PATCH 042/730] Fix forwarding promise rejection arguments Follow-up to arrow functions refactoring (4db99d7a2730e0393be9003ac4915ba711ef9a69). Change-Id: I6ea41256d9a91552736742100630aab333375125 --- modules/ve-mw/preinit/ve.init.mw.DiffLoader.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DiffLoader.js b/modules/ve-mw/preinit/ve.init.mw.DiffLoader.js index d1e59e52c1..d04e9ba93c 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DiffLoader.js +++ b/modules/ve-mw/preinit/ve.init.mw.DiffLoader.js @@ -64,11 +64,11 @@ true ).then( ( response ) => parseDocumentModulePromise.then( () => mw.libs.ve.diffLoader.getModelFromResponse( response, section ) ), - () => { - // Clear promise. Do not cache errors. + ( ...args ) => { + // Clear promise. Do not cache errors. delete revCache[ cacheKey ]; // Let caller handle the error code - return $.Deferred().rejectWith( this, arguments ); + return $.Deferred().reject( ...args ); } ); From d8256488ebeed55aa02f16f349468b0dbd7fcd30 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 15 Nov 2024 08:45:57 +0100 Subject: [PATCH 043/730] Localisation updates from https://translatewiki.net. Change-Id: I6e0c363c917a20742cc1303745b0715e795604b4 --- i18n/ve-mw/ce.json | 2 +- i18n/ve-mw/ru.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/ce.json b/i18n/ve-mw/ce.json index d989c5bce2..9ad135e0ba 100644 --- a/i18n/ve-mw/ce.json +++ b/i18n/ve-mw/ce.json @@ -325,7 +325,7 @@ "visualeditor-savedialog-label-review-good": "дӀайазйен форме гӀо", "visualeditor-savedialog-label-save-short": "Ӏалашйан", "visualeditor-savedialog-label-save-short-start": "Ӏалашйан...", - "visualeditor-savedialog-review-nosummary": "Нисдарах лаьцна йаздина дац", + "visualeditor-savedialog-review-nosummary": "Нисдарх лаьцна йаздина дац", "visualeditor-savedialog-review-visual": "БӀаьра", "visualeditor-savedialog-review-wikitext": "Вики-текст", "visualeditor-savedialog-title-conflict": "Дов", diff --git a/i18n/ve-mw/ru.json b/i18n/ve-mw/ru.json index 9efc6ddee4..ecd08f397f 100644 --- a/i18n/ve-mw/ru.json +++ b/i18n/ve-mw/ru.json @@ -191,7 +191,7 @@ "visualeditor-dialog-meta-settings-toc-disable": "Никогда", "visualeditor-dialog-meta-settings-toc-force": "Всегда", "visualeditor-dialog-meta-settings-toc-help": "Вы можете сделать и так, что оглавление, в котором показываются все заголовки со страницы, появлялись, даже если там менее четырёх заголовков, или же заставить его не появляется вообще. По умолчанию содержание показывается, если на странице присутствует четыре и более заголовков.", - "visualeditor-dialog-meta-settings-toc-label": "Показать оглавление", + "visualeditor-dialog-meta-settings-toc-label": "Показать содержание", "visualeditor-dialog-meta-templatesused-noresults": "Шаблоны не обнаружены.", "visualeditor-dialog-meta-title": "Настройки", "visualeditor-dialog-table-collapsed": "Изначально свёрнута", From ae9717975ae774f57fa5a4d39d6a3d6800c8fcd5 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 18 Nov 2024 17:02:54 +0000 Subject: [PATCH 044/730] Update VE core submodule to master (09c2bd53d) New changes: 03ef2ad75 Fix an inheritance typo 835107926 LinkContextItem: Fix alignment of items in "Text" section 30fdf399a Update OOUI to v0.51.2 30569879c Remove annotations from reparented meta items 2d4c9d100 Mark pastes from other VE instances as such 4249774e7 newFromDocumentInsertion: Skip list replacement when new list is empty 647f621b0 Follow-up I83ea6ddb: getAnnotationRanges Re-initialise for each branch node a13132496 Move linear part of getAnnotationsRanges to ElementLinearData 09c2bd53d Localisation updates from https://translatewiki.net. Bug: T130142 Bug: T379563 Bug: T379619 Change-Id: Ic764b9940cbe82d0e3a0b0ba9fa0e62f3c7bdd60 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 50d3711ded..09c2bd53d2 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 50d3711ded587cd8f47d35f377699ffad94ed985 +Subproject commit 09c2bd53d293055282efb3b36973a40c492462c4 From 733d0a835e1716970deaa42b6e34025c55432bd8 Mon Sep 17 00:00:00 2001 From: DLynch Date: Tue, 19 Nov 2024 02:02:03 +0000 Subject: [PATCH 045/730] Revert "editcheck: Remove try/catch around transaction squashing" This reverts commit cf8a08f76ca7a68978dfea4a8975745208d1224d. Reason for revert: these errors are still happening Bug: T333710 Bug: T380234 Change-Id: I4b4a061757316bf720fecc7cfd971737b68d122f --- editcheck/modules/init.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index c860a02183..a6a820946f 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -59,7 +59,16 @@ mw.editcheck.getModifiedRanges = function ( documentModel, coveredNodesOnly ) { if ( !documentModel.completeHistory.getLength() ) { return []; } - const operations = documentModel.completeHistory.squash().transactions[ 0 ].operations; + let operations; + try { + operations = documentModel.completeHistory.squash().transactions[ 0 ].operations; + } catch ( err ) { + // TransactionSquasher can sometimes throw errors; until T333710 is + // fixed just count this as not needing a reference. + mw.errorLogger.logError( err, 'error.visualeditor' ); + return []; + } + const ranges = []; let offset = 0; const endOffset = documentModel.getDocumentRange().end; From b70d878f271bf9ed73ec04736e50d54cec0cecff Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 19 Nov 2024 08:19:18 +0100 Subject: [PATCH 046/730] Localisation updates from https://translatewiki.net. Change-Id: I3d101c8ec1414c98e4e079142613880fcae8cec0 --- i18n/ve-mw/pt.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/ve-mw/pt.json b/i18n/ve-mw/pt.json index 2cfc956da6..76e94b6009 100644 --- a/i18n/ve-mw/pt.json +++ b/i18n/ve-mw/pt.json @@ -18,6 +18,7 @@ "Luckas", "Macofe", "Mansil alfalb", + "Mbs262", "McDutchie", "MokaAkashiyaPT", "Opraco", @@ -334,6 +335,8 @@ "visualeditor-preference-tabs-prefer-ve": "Usar sempre que possível o editor visual", "visualeditor-preference-tabs-prefer-wt": "Usar sempre o editor de código-fonte", "visualeditor-preference-tabs-remember-last": "Relembrar o meu último editor", + "visualeditor-preference-collab-label": "Edição colaborativa", + "visualeditor-preference-collab-description": "Convide outros utilizadores para participar na sua sessão de edição no editor visual.", "visualeditor-rebase-client-export": "Exportar", "visualeditor-rebase-client-export-start": "Exportar...", "visualeditor-rebase-client-import": "Importar", From 43b49080c901308335640861f0d86c66d47101dc Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 19 Nov 2024 13:41:38 +0000 Subject: [PATCH 047/730] EditCheck: Add more method documentation Change-Id: Ia250a0c09d700b0f8e78bf2ea9c17e35b8c40d6d --- editcheck/modules/EditCheckAction.js | 19 +++++++++++++++++++ editcheck/modules/EditCheckContextItem.js | 10 ++++++++++ editcheck/modules/EditCheckFactory.js | 12 ++++++++++++ editcheck/modules/EditCheckInspector.js | 3 +++ .../editchecks/AddReferenceEditCheck.js | 7 +++++++ editcheck/modules/init.js | 14 ++++++++++++++ 6 files changed, 65 insertions(+) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 219eef3443..8d0bccfb87 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -1,3 +1,12 @@ +/** + * EditCheckAction + * + * @param {Object} config + * @param {mw.editcheck.BaseEditCheck} check + * @param {ve.dm.SurfaceFragment[]} highlights Fragments to highlight + * @param {ve.dm.SurfaceFragment} selection Fragment to select when acting + * @param {jQuery|string|Function|OO.ui.HtmlSnippet} message Check message body + */ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.check = config.check; this.highlights = config.highlights; @@ -7,10 +16,20 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { OO.initClass( mw.editcheck.EditCheckAction ); +/** + * Get the available choices + * + * @return {Object[]} + */ mw.editcheck.EditCheckAction.prototype.getChoices = function () { return this.check.getChoices( this ); }; +/** + * Get a description of the check + * + * @return {string} + */ mw.editcheck.EditCheckAction.prototype.getDescription = function () { return this.check.getDescription( this ); }; diff --git a/editcheck/modules/EditCheckContextItem.js b/editcheck/modules/EditCheckContextItem.js index 4f82dbf8a0..eed4f54bb0 100644 --- a/editcheck/modules/EditCheckContextItem.js +++ b/editcheck/modules/EditCheckContextItem.js @@ -64,6 +64,11 @@ ve.ui.EditCheckContextItem.prototype.renderBody = function () { ); }; +/** + * Close the context item + * + * @param {Object} data Window closing data + */ ve.ui.EditCheckContextItem.prototype.close = function ( data ) { // HACK: Un-suppress close button on mobile context if ( this.context.isMobile() ) { @@ -72,6 +77,11 @@ ve.ui.EditCheckContextItem.prototype.close = function ( data ) { this.data.callback( data, this.data ); }; +/** + * Handle click events on a choice button + * + * @param {string} choice Choice identifier, e.g. 'accept' or 'reject' + */ ve.ui.EditCheckContextItem.prototype.onChoiceClick = function ( choice ) { this.data.action.check.act( choice, this.data.action, this ); }; diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index 200f325880..2094577a60 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -14,6 +14,9 @@ OO.inheritClass( mw.editcheck.EditCheckFactory, OO.Factory ); /* Methods */ +/** + * @inheritdoc + */ mw.editcheck.EditCheckFactory.prototype.register = function ( constructor, name ) { name = name || ( constructor.static && constructor.static.name ); @@ -53,6 +56,15 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener return this.checksByListener[ listener ]; }; +/** + * Create all checks actions for a given listener + * + * TODO: Rename to createAllActionsByListener + * + * @param {string} listener Listener name + * @param {ve.dm.Surface} surfaceModel Surface model + * @return {mw.editcheck.EditCheckActions[]} Actions, sorted by range + */ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( listener, surfaceModel ) { const newChecks = []; this.getNamesByListener( listener ).forEach( ( checkName ) => { diff --git a/editcheck/modules/EditCheckInspector.js b/editcheck/modules/EditCheckInspector.js index 74f0b9b33f..8cb23dc3d7 100644 --- a/editcheck/modules/EditCheckInspector.js +++ b/editcheck/modules/EditCheckInspector.js @@ -135,6 +135,9 @@ ve.ui.EditCheckInspector.prototype.getReadyProcess = function ( data ) { }, this ); }; +/** + * @inheritdoc + */ ve.ui.EditCheckInspector.prototype.getActionProcess = function ( action ) { if ( action === '' ) { return new OO.ui.Process( function () { diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index 6f6c4c419e..db3ddece86 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -20,6 +20,13 @@ mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceMo } ); }; +/** + * Find content ranges which have been inserted + * + * @param {ve.dm.Document} documentModel + * @param {boolean} includeReferencedContent Include contents that already contains a reference + * @return {ve.Range[]} + */ mw.editcheck.AddReferenceEditCheck.prototype.findAddedContent = function ( documentModel, includeReferencedContent ) { // Broken out so a helper for tagging can call it const ranges = this.getModifiedContentRanges( documentModel ).filter( ( range ) => { diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index ecab91c8b0..4ed349f229 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -44,6 +44,13 @@ mw.editcheck.getContentRanges = function ( documentModel, range, covers ) { return ranges; }; +/** + * Check if the document has content needing a reference, for AddReferenceEditCheck + * + * @param {ve.dm.Document} documentModel + * @param {boolean} includeReferencedContent Include contents that already contains a reference + * @return {boolean} + */ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, includeReferencedContent ) { // helper for ve.init.mw.ArticleTarget save-tagging, keep logic below in-sync with AddReferenceEditCheck. // This is bypassing the normal "should this check apply?" logic for creation, so we need to manually @@ -55,6 +62,13 @@ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, include return check.findAddedContent( documentModel, includeReferencedContent ).length > 0; }; +/** + * Get content ranges which have been inserted + * + * @param {ve.dm.Document} documentModel + * @param {boolean} coveredNodesOnly Only include ranges which cover the whole of their node + * @return {ve.Range[]} + */ mw.editcheck.getModifiedRanges = function ( documentModel, coveredNodesOnly ) { if ( !documentModel.completeHistory.getLength() ) { return []; From 32e3cfb07e52c9d6aacd2ef2581c08e24f61bec1 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 20 Nov 2024 08:27:37 +0100 Subject: [PATCH 048/730] Localisation updates from https://translatewiki.net. Change-Id: I9ba14ac02d592dd27e9404f461821b626cf3dbdc --- i18n/ve-mw/fvr.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 i18n/ve-mw/fvr.json diff --git a/i18n/ve-mw/fvr.json b/i18n/ve-mw/fvr.json new file mode 100644 index 0000000000..bd7a019a64 --- /dev/null +++ b/i18n/ve-mw/fvr.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Dinkawiki" + ] + }, + "visualeditor-ca-editsource": "Ka̠rɨŋas jaáŋo", + "visualeditor-ca-editsource-section": "Ka̠rɨŋas jaáŋo" +} From 3085fba0f326e22ab6460f1b6f676f592b98b7eb Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 21 Nov 2024 08:23:07 +0100 Subject: [PATCH 049/730] Localisation updates from https://translatewiki.net. Change-Id: I4aa33a05b617af99e739a1df94b175e58c23aa7c --- i18n/ve-mw/qqq.json | 3 ++- i18n/ve-mw/ru.json | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/i18n/ve-mw/qqq.json b/i18n/ve-mw/qqq.json index 731a4999b4..bb46e06c96 100644 --- a/i18n/ve-mw/qqq.json +++ b/i18n/ve-mw/qqq.json @@ -28,6 +28,7 @@ "Sayak Sarkar", "Shirayuki", "Siebrand", + "Stjn", "Tacsipacsi", "Trevor Parscal", "UV", @@ -283,7 +284,7 @@ "visualeditor-includes-onlyinclude-start": "Label of the context item for an opening <onlyinclude> tag.", "visualeditor-includes-onlyinclude-end": "Label of the context item for a closing </onlyinclude> tag.", "visualeditor-includes-includeonly": "Label of the context item for a pair of <includeonly></includeonly> tags.", - "visualeditor-includes-noinclude-description": "Additional explanation for an opening ;lt&noinclude> tag.", + "visualeditor-includes-noinclude-description": "Additional explanation for an opening <noinclude> tag.", "visualeditor-includes-onlyinclude-description": "Additional explanation for an opening <onlyinclude> tag.", "visualeditor-includes-includeonly-description": "Additional explanation for a pair of <includeonly></includeonly> tags. This is followed by the content of the tags.", "visualeditor-includes-documentation": "Link to documentation displayed below each of these messages:\n* {{msg-mw|visualeditor-includes-noinclude-description}}\n* {{msg-mw|visualeditor-includes-onlyinclude-description}}\n* {{msg-mw|visualeditor-includes-includeonly-description}}", diff --git a/i18n/ve-mw/ru.json b/i18n/ve-mw/ru.json index ecd08f397f..1f1d1c692a 100644 --- a/i18n/ve-mw/ru.json +++ b/i18n/ve-mw/ru.json @@ -286,13 +286,13 @@ "visualeditor-formatdropdown-format-mw-heading5": "Подзаголовок 3", "visualeditor-formatdropdown-format-mw-heading6": "Подзаголовок 4", "visualeditor-generating-wikitext-progress": "Генерация вики-текста", - "visualeditor-includes-noinclude-start": "Начало содержимого исключено из отрывков", - "visualeditor-includes-noinclude-end": "Конец содержимого исключён из отрывков", - "visualeditor-includes-onlyinclude-start": "Начало содержимого разрешено в отрывках", - "visualeditor-includes-onlyinclude-end": "Конец содержимого разрешён в отрывках", + "visualeditor-includes-noinclude-start": "Начало контента, исключённого из включений", + "visualeditor-includes-noinclude-end": "Конец контента, исключённого из включений", + "visualeditor-includes-onlyinclude-start": "Начало контента, разрешённого во включениях", + "visualeditor-includes-onlyinclude-end": "Конец контента, разрешённого во включениях", "visualeditor-includes-includeonly": "Только содержимое в отрывках", - "visualeditor-includes-noinclude-description": "Когда содержимое с этой страницы используется другой страницей, содержимое отсюда до совпадающего конечного маркера не включается. Будьте осторожны при редактировании содержимого за пределами этих маркеров, так как другие страницы могут его использовать.", - "visualeditor-includes-onlyinclude-description": "Когда содержимое с этой страницы используется другой страницей, будет включено только содержимое отсюда до соответствующего маркера конца. Будьте осторожны при редактировании содержимого за пределами этих маркеров, так как другие страницы могут его использовать.", + "visualeditor-includes-noinclude-description": "Когда содержимое этой страницы используется другими страницами, контент с этого места до совпадающего закрывающего тэга не будет включён. Будьте осторожны, редактируя контент вне этих тэгов, так как его могут использовать другие страницы.", + "visualeditor-includes-onlyinclude-description": "Когда содержимое этой страницы используется на других страницах, будет включён только контент с этого места до совпадающего закрывающего тэга. Будьте осторожны, редактируя контент внутри этих тэгов, так как его могут использовать другие страницы.", "visualeditor-includes-includeonly-description": "Когда содержание этой страницы используется на другой странице, то следующее дополнительное содержание будет внесено сюда:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Узнать больше о частичном включении]", "visualeditor-languages-tool": "Языки", From 3e28af76021546d449c957d37032386149d196f6 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 21 Nov 2024 13:23:31 +0000 Subject: [PATCH 050/730] ArticleTargetSaver: Use mw.deflateAsync mw.deflate is deprecated. mw.deflateAsync is faster in supported browsers. Change-Id: Ia16e5823365b55b741f3184572b7bdeb5bbb1bd6 Depends-On: I722ebb03c0db7c7b3ee16cc8881e41909142cee9 --- modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js index 922867755b..1281dcfe18 100644 --- a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js +++ b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js @@ -33,7 +33,7 @@ * @return {jQuery.Promise} Promise resolved with deflated HTML */ deflate: function ( html ) { - return mw.loader.using( 'mediawiki.deflate' ).then( () => mw.deflate( html ) ); + return mw.loader.using( 'mediawiki.deflate' ).then( () => mw.deflateAsync( html ) ); }, From afb55049a3031512c17d34d8acd598fe4e360313 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 21 Nov 2024 11:33:18 -0600 Subject: [PATCH 051/730] Editcheck: fix typo in ConvertReferenceEditCheck Follow-up to 4cd67004de6fbd505859baa14c32827e904d9cc7 Change-Id: Ie95f36344c3627bcf0ab2a8fc2abcaf1745ab3a8 --- editcheck/modules/editchecks/ConvertReferenceEditCheck.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/ConvertReferenceEditCheck.js b/editcheck/modules/editchecks/ConvertReferenceEditCheck.js index f46c53feb0..d824d7329a 100644 --- a/editcheck/modules/editchecks/ConvertReferenceEditCheck.js +++ b/editcheck/modules/editchecks/ConvertReferenceEditCheck.js @@ -20,7 +20,7 @@ mw.editcheck.ConvertReferenceEditCheck.prototype.onDocumentChange = function ( s const referenceNode = documentModel.getInternalList().getItemNode( index ); const href = ve.ui.CitoidReferenceContextItem.static.getConvertibleHref( referenceNode ); if ( href ) { - const fragment = surfaceModel().getLinearFragment( node.getOuterRange() ); + const fragment = surfaceModel.getLinearFragment( node.getOuterRange() ); return new mw.editcheck.EditCheckAction( { highlights: [ fragment ], selection: fragment, From a226525fd740ff6808e0e23a1c26adf4282e5e5a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 22 Nov 2024 08:43:06 +0100 Subject: [PATCH 052/730] Localisation updates from https://translatewiki.net. Change-Id: I1d8ca1c49d1343184de0bfda68dbb8819ca6a954 --- editcheck/i18n/lt.json | 8 ++++ i18n/ve-mw/api/ar.json | 1 + i18n/ve-mw/az.json | 86 +++++++++++++++++++++--------------------- i18n/ve-mw/fvr.json | 1 + i18n/ve-wmf/az.json | 10 ++--- 5 files changed, 58 insertions(+), 48 deletions(-) create mode 100644 editcheck/i18n/lt.json diff --git a/editcheck/i18n/lt.json b/editcheck/i18n/lt.json new file mode 100644 index 0000000000..2f1e54c653 --- /dev/null +++ b/editcheck/i18n/lt.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Homo" + ] + }, + "tag-editcheck-reference-decline-common-knowledge": "Redagavimo patikra (išnašos) atmesta (bendrosios žinios)" +} diff --git a/i18n/ve-mw/api/ar.json b/i18n/ve-mw/api/ar.json index 0dc39a2262..b4d9694620 100644 --- a/i18n/ve-mw/api/ar.json +++ b/i18n/ve-mw/api/ar.json @@ -32,6 +32,7 @@ "apihelp-visualeditoredit-param-cachekey": "استخدام نتيجة لتسلسل السابق لطلب مخبأ مع هذا المفتاح.\nيتجاوز $1html.", "apihelp-visualeditoredit-param-captchaid": "CAPTCHA ID (عندما تحفظ مع استجابة CAPTCHA).", "apihelp-visualeditoredit-param-captchaword": "الإجابة على اختبار CAPTCHA (عندما الادخار مع استجابة CAPTCHA).", + "apihelp-visualeditoredit-param-nocontent": "احذف محتوى HTML الخاص بالإصدار الجديد في الاستجابة.", "apihelp-visualeditoredit-param-plugins": "الإضافات المرتبطة بطلب API.", "apihelp-visualeditoredit-param-data-{plugin}": "تم إرسال البيانات التعسفية بواسطة مكون إضافي مع طلب واجهة برمجة التطبيقات.", "apihelp-visualeditoredit-param-etag": "ETag للإرسال.", diff --git a/i18n/ve-mw/az.json b/i18n/ve-mw/az.json index a6373855a3..b6b978c193 100644 --- a/i18n/ve-mw/az.json +++ b/i18n/ve-mw/az.json @@ -23,9 +23,9 @@ "tooltip-ca-ve-edit-local": "Yerli təsvir səhifəsini redaktə et", "tooltip-ca-ve-create": "Bu səhifəni yarat", "tooltip-ca-ve-create-local": "Yerli təsvir səhifəsini yarat", - "tooltip-ca-editsource": "Səhifənin cari kodunu redaktə et", + "tooltip-ca-editsource": "Səhifənin mənbə kodunu redaktə et", "tooltip-ca-editsource-local": "Yerli təsvir səhifəsinin mənbə kodunu redaktə et", - "tooltip-ca-createsource": "Cari kod redaktorunda səhifəni yarat", + "tooltip-ca-createsource": "Bu səhifənin mənbə kodunu yarat", "tooltip-ca-createsource-local": "Yerli təsvir səhifəsinin mənbə kodunu yarat", "visualeditor-advancedsettings-tool": "Əlavə parametrlər", "visualeditor-annotations-default-description": "Səhifənin bu hissəsi annotasiya aralığının bir hissəsidir.", @@ -54,7 +54,7 @@ "visualeditor-changedesc-mwlanguagevariant": "Dil variantının işarələnməsi dəyişdirildi", "visualeditor-changedesc-mwredirect": "$1 olan yönləndirmə hədəfi $2 olaraq dəyişdirildi", "visualeditor-changedesc-mwtransclusion": "Şablon parametrləri dəyişdi", - "visualeditor-desc": "MediaWiki üçün Vizual redaktor", + "visualeditor-desc": "MediaViki üçün Vizual redaktor", "visualeditor-descriptionpagelink": "Project:Vizual redaktor", "visualeditor-dialog-extension-abandonedit": "Dəyişikliklərinizi tətbiq etmədən bu pəncərəni bağlamaq istədiyinizə əminsiniz?", "visualeditor-dialog-media-alttext-checkbox": "Alternativ mətn kimi başlıqdan istifadə edin", @@ -64,7 +64,7 @@ "visualeditor-dialog-media-choose-image": "Bu şəkli istifadə et", "visualeditor-dialog-media-content-description-link": "(izah səhifəsi)", "visualeditor-dialog-media-content-filename": "Fayl adı", - "visualeditor-dialog-media-content-section": "İmza", + "visualeditor-dialog-media-content-section": "Başlıq", "visualeditor-dialog-media-content-section-help": "Bütün oxucular üçün faylın yanında görünən bir etiket göstərmək üçün bundan istifadə edə bilərsiniz. Bu tez-tez faylın niyə bu kontekstə uyğun olduğunu izah etmək üçün istifadə olunur. Bu qısa və məlumatlandırıcı olmalıdır.", "visualeditor-dialog-media-goback": "Geri", "visualeditor-dialog-media-info-artist": "$1 tərəfindən yüklənilib", @@ -75,7 +75,7 @@ "visualeditor-dialog-media-info-readmore": "Daha çox oxu", "visualeditor-dialog-media-info-uploaded": "Yüklənmə tarixi: $1", "visualeditor-dialog-media-page-advanced": "Daha çox", - "visualeditor-dialog-media-page-general": "Əsas parametrlər", + "visualeditor-dialog-media-page-general": "Ümumi", "visualeditor-dialog-media-position-checkbox": "Məzmunu bu elementin ətrafına yay", "visualeditor-dialog-media-position-checkbox-help": "Bu media elementini üzən (floating) yerinə səhifənin mətninə uyğun olaraq göstərə bilərsiniz. Bunu nadir hallarda etməlisiniz, çünki bu qutunu işarələməsəniz mətn axını pozulacaq.", "visualeditor-dialog-media-position-section": "Mövqe", @@ -85,7 +85,7 @@ "visualeditor-dialog-media-search-tab-upload": "Yüklə", "visualeditor-dialog-media-size-section": "Şəklin ölçüsü", "visualeditor-dialog-media-size-section-help": "Səhifədə faylın nə qədər böyük görünəcəyini təyin edə bilərsiniz. Bu, demək olar ki, həmişə normal ölçüdə olmalıdır, çünki xüsusi bir ölçü oxucular üçün səhifənin tərtibatına müdaxilə edəcək və onu tutarsız hala gətirəcəkdir.", - "visualeditor-dialog-media-title": "Media-faylın parametrləri", + "visualeditor-dialog-media-title": "Media parametrləri", "visualeditor-dialog-media-type-border": "Sərhəd", "visualeditor-dialog-media-type-frame": "Çərçivə", "visualeditor-dialog-media-type-frameless": "Çərçivəsiz", @@ -94,28 +94,28 @@ "visualeditor-dialog-media-type-section-help": "Faylın səhifədə necə görünəcəyini təyin edə bilərsiniz. Demək olar ki, bütün hallarda digər səhifələrlə uyğun olmaq üçün bu kiçik şəkil formatı olmalıdır.", "visualeditor-dialog-media-type-thumb": "Miniatür", "visualeditor-dialog-media-upload": "Yüklə", - "visualeditor-dialog-meta-advancedsettings-label": "Təkmil parametrlər", - "visualeditor-dialog-meta-advancedsettings-section": "Təkmil parametrlər", + "visualeditor-dialog-meta-advancedsettings-label": "Qabaqcıl parametrlər", + "visualeditor-dialog-meta-advancedsettings-section": "Qabaqcıl parametrlər", "visualeditor-dialog-meta-categories-addcategory-label": "Bu səhifəyə kateqoriya əlavə et", "visualeditor-dialog-meta-categories-category": "Kateqoriya", "visualeditor-dialog-meta-categories-data-label": "Kateqoriyalar", "visualeditor-dialog-meta-categories-defaultsort-help": "Bunun əvəzinə sıralamaq üçün fərqli bir indeks təyin edərək bir kateqoriya daxilində göstərildikdə bu səhifənin necə sıralanacağını dəyişə bilərsiniz. Bu tez-tez insanlar haqqında səhifələrin soyadla göstərilməsini təmin etmək üçün istifadə olunur, lakin əvvəlcə adları göstərilir.", "visualeditor-dialog-meta-categories-defaultsort-label": "Səhifəni defolt olaraq bu cür çeşidlə:", - "visualeditor-dialog-meta-categories-hidden": "Bu kateqoriya əlavə edildiyi səhifələrdə görünmür.", + "visualeditor-dialog-meta-categories-hidden": "Bu kateqoriya əlavə olunduğu səhifələrdə göstərilməmək üçün təyin edilib.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Gizli kateqoriyalar", - "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Müvafiq kateqoriyalar", + "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Uyğun kateqoriyalar", "visualeditor-dialog-meta-categories-input-movecategorylabel": "Kateqoriyanı buraya köçür", "visualeditor-dialog-meta-categories-input-newcategorylabel": "Yeni kateqoriya", "visualeditor-dialog-meta-categories-input-placeholder": "Kateqoriya əlavə et", "visualeditor-dialog-meta-categories-missing": "Bu kateqoriyanın izah səhifəsi yoxdur.", - "visualeditor-dialog-meta-categories-options": "Nizamlamalar", + "visualeditor-dialog-meta-categories-options": "Seçimlər", "visualeditor-dialog-meta-categories-section": "Kateqoriyalar", - "visualeditor-dialog-meta-categories-sortkey-label": "Səhifəni adına görə sırala", + "visualeditor-dialog-meta-categories-sortkey-label": "Səhifəni bu formada çeşidlə:", "visualeditor-dialog-meta-languages-code-label": "Dil kodu", "visualeditor-dialog-meta-languages-label": "Dillər", - "visualeditor-dialog-meta-languages-link-label": "Əlaqəli səhifə", + "visualeditor-dialog-meta-languages-link-label": "Keçid verilmiş səhifə", "visualeditor-dialog-meta-languages-name-label": "Dil", - "visualeditor-dialog-meta-languages-readonlynote": "Bu digər dillərdə olan əlaqəli səhifələrin siyahısıdır. Hal-hazırda o yalnız əsas redaktə rejimində və ya VikiMəlumatda redaktə oluna bilər.", + "visualeditor-dialog-meta-languages-readonlynote": "Bu, digər dillərdə keçid verilmiş səhifələrin siyahısıdır. Hal-hazırda, o, yalnız əsas redaktə rejimində və ya Vikidatada redaktə oluna bilər.", "visualeditor-dialog-meta-languages-section": "Dillər", "visualeditor-dialog-meta-settings-displaytitle": "Göstərilən başlıq", "visualeditor-dialog-meta-settings-displaytitle-help": "Bunun əvəzinə fərqli bir başlıq təyin edərək bu səhifənin başlığının necə görünəcəyini dəyişə bilərsiniz.", @@ -125,30 +125,30 @@ "visualeditor-dialog-meta-settings-index-disable": "Xeyr", "visualeditor-dialog-meta-settings-index-force": "Bəli", "visualeditor-dialog-meta-settings-index-help": "Axtarış mühərriklərini bu səhifəni müvafiq nəticələr siyahısına salmağa və ya salmamağa məcbur edə bilərsiniz. Bu seçim sayt daxilində axtarışa təsir etmir.", - "visualeditor-dialog-meta-settings-index-label": "Axtarış sistemlərinin bu səhifəni indeksləşdirməsinə icazə ver", - "visualeditor-dialog-meta-settings-label": "Səhifənin parametrləri", + "visualeditor-dialog-meta-settings-index-label": "Axtarış mühərriklərinin bu səhifəni indeksləşdirməsinə icazə ver", + "visualeditor-dialog-meta-settings-label": "Səhifə parametrləri", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Defolt", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Xeyr", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Bəli", "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Bu səhifədəki \"$1\" bölməsinin yanında əlavə bir nişanın göstərilməsini aktivləşdirə edə bilərsiniz, hansı ki yeni bir bölmə əlavə etməyi asanlaşdıracaq.", - "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Bu səhifədə yeni bölmə əlavə edilməsi üçün qoşmanı göstər", + "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Yeni bölmə əlavə etmək üçün bu səhifədə vərəqəni göstər", "visualeditor-dialog-meta-settings-nocontentconvert-help": "Bu səhifənin məzmununun avtomatik olaraq digər skriptlərə çevrilməsinin qarşısını ala bilərsiniz.", "visualeditor-dialog-meta-settings-nocontentconvert-label": "Məzmunu dil variantları arasında çevirmə", "visualeditor-dialog-meta-settings-noeditsection-help": "Redaktə keçidlərinin qeyri-adi vəziyyətdə hər bölmənin yanında görünməsini ləğv edə bilərsiniz.", - "visualeditor-dialog-meta-settings-noeditsection-label": "Bu səhifədə hər bölmə başlığının yanındakı redaktə keçidlərini yığışdır.", + "visualeditor-dialog-meta-settings-noeditsection-label": "Bu səhifədəki hər başlığın yanındakı redaktə keçidlərini deaktiv et.", "visualeditor-dialog-meta-settings-nogallery-help": "Bu vəziyyətdə uyğun deyilsə, bu kateqoriyanın üzv fayllarını qalereya kimi göstərilməsini ləğv edə bilərsiniz.", "visualeditor-dialog-meta-settings-nogallery-label": "Qalereyanı deaktivləşdir", "visualeditor-dialog-meta-settings-notitleconvert-help": "Bu səhifənin başlığının avtomatik olaraq digər skriptlərə çevrilməsinin qarşısını ala bilərsiniz.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Başlığı dil variantları arasında çevirmə", "visualeditor-dialog-meta-settings-redirect-help": "Bu səhifəni oxucuları avtomatik olaraq bu vikidə başqa bir səhifəyə aparacaq bir yönləndirmə halına gətirə bilərsiniz. Bu səhv yazılışlar və alternativ adlar və ya anlayışlar üçün faydalıdır. Belə etsəniz, oxucular bu səhifənin məzmununu görməyəcəklər.", - "visualeditor-dialog-meta-settings-redirect-label": "Bu səhifəni bura yönləndir:", + "visualeditor-dialog-meta-settings-redirect-label": "Bu səhifəni buraya yönləndir:", "visualeditor-dialog-meta-settings-redirect-placeholder": "Yönləndirmə üçün hədəf səhifəsi", "visualeditor-dialog-meta-settings-redirect-statichelp": "Ehtiyac olduğu çox nadir hallarda, yönləndirdiyi səhifənin adı dəyişdirildikdə bu yönləndirmənin avtomatik olaraq yenilənməsinin qarşısını ala bilərsiniz.", "visualeditor-dialog-meta-settings-redirect-staticlabel": "Hədəf səhifəsinin adı dəyişdirildikdə bu yönləndirmənin yenilənməsinin qarşısını alın.", "visualeditor-dialog-meta-settings-section": "Səhifə parametrləri", "visualeditor-dialog-meta-settings-toc-default": "Ehtiyac varsa", "visualeditor-dialog-meta-settings-toc-disable": "Heç vaxt", - "visualeditor-dialog-meta-settings-toc-force": "Hər zaman", + "visualeditor-dialog-meta-settings-toc-force": "Həmişə", "visualeditor-dialog-meta-settings-toc-help": "Səhifədəki mündəricatı dörd başlıqdan az olan səhifələrdə göstərməyə məcbur edə bilərsiniz və ya ümumiyyətlə görünməməyə məcbur edə bilərsiniz. Defolt olaraq, səhifədə dörd və ya daha çox başlıq varsa görünür.", "visualeditor-dialog-meta-settings-toc-label": "Mündəricatı göstər", "visualeditor-dialog-meta-templatesused-noresults": "Heç bir şablon tapılmadı.", @@ -185,7 +185,7 @@ "visualeditor-dialog-transclusion-contextitem-description": "Yaradılan: $1", "visualeditor-dialog-transclusion-contextitem-loading": "Yüklənir…", "visualeditor-dialog-transclusion-expand-options": "Seçimləri göstər", - "visualeditor-dialog-transclusion-filter-hide-unused": "İstifadə edilməyənləri gizlə", + "visualeditor-dialog-transclusion-filter-hide-unused": "İstifadə olunmayanları gizlət", "visualeditor-dialog-transclusion-filter-no-match": "Heç bir nəticə tapılmadı", "visualeditor-dialog-transclusion-filter-placeholder": "Sahə tap", "visualeditor-dialog-transclusion-filter-show-all": "Hamısını göstər", @@ -200,7 +200,7 @@ "visualeditor-dialog-transclusion-multipart-message": "Siz hal-hazırda bir şablonu və [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content əlaqəli məzmunun] bir və ya daha çox hissəsini redaktə edirsiniz (vikimətn və/və ya əlavə şablonlar).", "visualeditor-dialog-transclusion-no-template-data-description": "Bu şablonda [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] yoxdur. Onun parametrləri [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters avtomatik olaraq yaradıldı]. Bunun nəticəsi olaraq şablon və onun parametrlərində izah bölməsi yoxdur. [[$1|Şablonun səhifəsində]] daha ətraflı məlumat ola bilər.", "visualeditor-dialog-transclusion-no-template-description": "\"$1\" şablonunun hələ ki izah bölməsi yoxdur amma [[$2|səhifəsində]] məlumat ola bilər.", - "visualeditor-dialog-transclusion-no-template-parameters": "Bu şablonun parametrlərinin izahı verilməyib və ya onlar olmadan istifadəsi nəzərdə tutulub.", + "visualeditor-dialog-transclusion-no-template-parameters": "Bu şablonun sənədləşdirilmiş parametrləri yoxdur və onlar olmadan istifadə üçün nəzərdə tutula bilər.", "visualeditor-dialog-transclusion-param-default": "Defolt: $1", "visualeditor-dialog-transclusion-param-example-long": "Məsələn: $1", "visualeditor-dialog-transclusion-param-selection-aria-description": "Parametrləri əlavə etmək və ya silmək üçün Space düyməsinə basın. Parametr əlavə etmək və dəyərini dərhal redaktə etmək üçün Enter düyməsinə basın. Parametr artıq seçildikdə, dəyəri redaktə etmək üçün Enter düyməsinə basın.", @@ -226,19 +226,19 @@ "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "Vikimətn elementini silmək üçün Ctrl+Del düymələrinə basın.", "visualeditor-dialogbutton-media-tooltip": "Şəkillər və media", "visualeditor-dialogbutton-template-tooltip": "Şablon", - "visualeditor-editconflict": "Sizin dəyişikliklər redaktə münaqişəsinə görə yadda saxlanıla bilmir. {{GENDER:|Siz}} münaqişəni əllə həll etmək istəyirsinizmi?", + "visualeditor-editconflict": "Dəyişiklikləriniz redaktə münaqişəsinə görə yadda saxlanıla bilmir. Münaqişəni manual həll etmək istəyirsiniz?", "visualeditor-editingtabdialog-body": "{{SITENAME}} artıq hansı redaktora üstünlük verdiyini xatırlayır. Redaktə edərkən redaktə rejimlərini dəyişə və seçiminizi daha sonra dəyişə bilərsiniz.", "visualeditor-editingtabdialog-ok": "Son redaktəmdə istifadə etdiyim redaktordan istifadə et", "visualeditor-editingtabdialog-title": "Nişanları redaktə etmə", - "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|notice|notices}}", + "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|bildiriş}}", "visualeditor-editnotices-tooltip": "Redaktə bildirişləri", - "visualeditor-editsummary": "Edilən dəyişikliklərin izahı", + "visualeditor-editsummary": "Nəyi dəyişdiyinizi təsvir edin", "visualeditor-editsummary-characters-remaining": "Qalan simvolların sayı", "visualeditor-educationpopup-dismiss": "Tamam, başa düşdüm", "visualeditor-expandable-less": "Daha az", "visualeditor-expandable-more": "Daha çox", "visualeditor-feedback-defaultmessage": "URL: $1", - "visualeditor-formatdropdown-format-mw-heading1": "Səhifənin adı", + "visualeditor-formatdropdown-format-mw-heading1": "Səhifə başlığı", "visualeditor-formatdropdown-format-mw-heading2": "Başlıq", "visualeditor-formatdropdown-format-mw-heading3": "Alt başlıq 1", "visualeditor-formatdropdown-format-mw-heading4": "Alt başlıq 2", @@ -262,9 +262,9 @@ "visualeditor-linkinspector-convert-link-rfc": "RFC keçidinə çevir", "visualeditor-linkinspector-educationpopup-text": "Digər viki məqalələrinə və ya hətta digər veb saytlara vacib sözlərlə keçid verin. Bu oxucuların məzmunu anlamalarına kömək edəcək.", "visualeditor-linkinspector-educationpopup-title": "Keçidlər", - "visualeditor-linkinspector-illegal-title": "Yanlış səhifənin adı", + "visualeditor-linkinspector-illegal-title": "Etibarsız səhifə başlığı", "visualeditor-linkinspector-invalid-blocked": "Bu vikidəki insanlar bu sayta keçidləri bloklamaq qərarına gəliblər. Zəhmət olmasa, başqa link yoxlayın.", - "visualeditor-linkinspector-invalid-external": "URL əlavə edin, məs. https://numune.org", + "visualeditor-linkinspector-invalid-external": "URL daxil edin, məs. https://example.org", "visualeditor-linknodeinspector-add-label": "Etiket əlavə et", "visualeditor-linknodeinspector-title": "Sadə keçid", "visualeditor-magiclinknodeinspector-convert-link": "Sadə keçidə çevir", @@ -274,19 +274,19 @@ "visualeditor-media-title-audio": "Audio", "visualeditor-media-title-image": "Şəkil", "visualeditor-media-title-video": "Video", - "visualeditor-meta-tool": "Nizamlamalar", + "visualeditor-meta-tool": "Seçimlər", "visualeditor-mweditmode-tooltip": "Redaktoru dəyiş", "visualeditor-mweditmodesource-progress": "Mənbə redaktəsinə keçilir…", - "visualeditor-mweditmodesource-tool-current": "İlkin mətnin redaktəsi", + "visualeditor-mweditmodesource-tool-current": "Mənbə kodunun redaktəsi", "visualeditor-mweditmodesource-tool-unavailable": "Mənbə redaktəsi burda mövcud deyil", - "visualeditor-mweditmodeve-popup-body": "Siz hər an bu təsvirə tıqlayaraq vizual redaktəyə keçə bilərsiniz.", - "visualeditor-mweditmodeve-popup-title": "Siz ilkin mətnin redaktəsinə keçid etdiniz", + "visualeditor-mweditmodeve-popup-body": "İstənilən vaxt bu işarəyə klikləməklə vizual redaktəyə qayıda bilərsiniz.", + "visualeditor-mweditmodeve-popup-title": "Mənbə redaktəsinə keçdiniz", "visualeditor-mweditmodeve-progress": "Vizual redaktəyə keçilir…", - "visualeditor-mweditmodeve-showagain": "Bu bildirişi təkrar göstərmə", + "visualeditor-mweditmodeve-showagain": "Bu mesajı bir daha göstərmə", "visualeditor-mweditmodeve-tool-current": "Vizual redaktə", "visualeditor-mweditmodeve-tool-unavailable": "Vizual redaktə burda mövcud deyil", - "visualeditor-mweditmodewt-popup-body": "Siz istənilən an bu nişana tıqlayaraq yenidən ilkin mətnin redaktəsinə keçid edə bilərsiniz.", - "visualeditor-mweditmodewt-popup-title": "Siz vizual redaktə alətinə keçid etdiniz", + "visualeditor-mweditmodewt-popup-body": "İstənilən vaxt bu işarəyə klikləməklə mənbə redaktəsinə qayıda bilərsiniz.", + "visualeditor-mweditmodewt-popup-title": "Siz vizual redaktəyə keçdiniz", "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|şəkil}}", "visualeditor-mwgallerydialog-caption-field-label": "Qalereya başlığı", "visualeditor-mwgallerydialog-card-images": "Şəkillər", @@ -314,9 +314,9 @@ "visualeditor-mwgallerydialog-widths-input-placeholder": "Defolt: $1 px", "visualeditor-mwpredialog-convert": "Mətn stilləşdirilməsinə icazə ver", "visualeditor-mwpredialog-title": "Öncədən formatlaşdırılmış düz mətn", - "visualeditor-mwsignature-tool": "Sizin imzanız", + "visualeditor-mwsignature-tool": "İmzanız", "visualeditor-preference-visualeditor": "Vizual redaktoru aktivləşdir", - "visualeditor-preference-newwikitexteditor-enable": "Fərqli bir vikimətn redaktoru yerinə vizual redaktorda vikimətn rejimini istifadə et", + "visualeditor-preference-newwikitexteditor-enable": "Fərqli vikimətn redaktoru əvəzinə vizual redaktor daxilində vikimətn rejimindən istifadə et", "visualeditor-preference-newwikitexteditor-help": "Bu funksiya bəzən \"2017 vikimətn redaktoru\" da adlanır.", "visualeditor-preference-tabs": "Redaktə rejimi:", "visualeditor-preference-tabs-multi-tab": "Mənə hər iki redaktor bölməsini də göstər", @@ -338,19 +338,19 @@ "visualeditor-savedialog-keyboard-shortcut-submit": "Redaktənizi saxlamaq üçün $1 basa bilərsiniz.", "visualeditor-savedialog-label-publish-short": "Yayımla", "visualeditor-savedialog-label-publish-short-start": "Yayımla...", - "visualeditor-savedialog-label-resolve-conflict": "Münaqişənin həlli", - "visualeditor-savedialog-label-resume-editing": "Redaktəyə qayıt", + "visualeditor-savedialog-label-resolve-conflict": "Münaqişəni həll et", + "visualeditor-savedialog-label-resume-editing": "Redaktəyə davam et", "visualeditor-savedialog-label-review": "Dəyişikliklərinizi gözdən keçirin", - "visualeditor-savedialog-label-review-good": "Qeydetmə formasına geri dön", + "visualeditor-savedialog-label-review-good": "Yadda saxlama formasına qayıt", "visualeditor-savedialog-label-save-short": "Yadda saxla", "visualeditor-savedialog-label-save-short-start": "Yadda saxla...", "visualeditor-savedialog-review-nosummary": "Redaktənin izahı yoxdur", "visualeditor-savedialog-review-visual": "Vizual", "visualeditor-savedialog-review-wikitext": "Vikimətn", - "visualeditor-savedialog-title-conflict": "Konflikt", + "visualeditor-savedialog-title-conflict": "Münaqişə", "visualeditor-savedialog-title-preview": "Dəyişikliklərinizi gözdən keçirin", - "visualeditor-savedialog-title-review": "Dəyişikliklərə bax", - "visualeditor-savedialog-title-save": "Yadda saxla", + "visualeditor-savedialog-title-review": "Dəyişikliklərinizi gözdən keçirin", + "visualeditor-savedialog-title-save": "Dəyişikliklərinizi yadda saxla", "visualeditor-section-body-placeholder": "Yeni bölmə", "visualeditor-section-title-placeholder": "Mövzu", "visualeditor-loaderror-revidconflict": "Serverdən qayıdan versiya nömrələri uyğun gəlmir (sənəd: $1, metadata: $2).", diff --git a/i18n/ve-mw/fvr.json b/i18n/ve-mw/fvr.json index bd7a019a64..06d724e8de 100644 --- a/i18n/ve-mw/fvr.json +++ b/i18n/ve-mw/fvr.json @@ -4,6 +4,7 @@ "Dinkawiki" ] }, + "visualeditor-ca-createsource": "Ka̠rɨŋa jetéré", "visualeditor-ca-editsource": "Ka̠rɨŋas jaáŋo", "visualeditor-ca-editsource-section": "Ka̠rɨŋas jaáŋo" } diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index 62ba6c2478..5f724c2947 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -20,15 +20,15 @@ "tag-visualeditor-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktorun]] köməyi ilə edilib", "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktor: Yoxla]]", "tag-visualeditor-needcheck-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizual redaktor]] ilə edildi, sistem burada vikimətndə gözlənilməyən dəyişikliklər aşkar etdi.", - "tag-visualeditor-wikitext": "2017 viki-mətn redaktoru", - "tag-visualeditor-wikitext-description": "2017 viki-mətn redaktoru vasitəsilə edilmiş düzəlişlər", + "tag-visualeditor-wikitext": "2017 mənbə redaktoru", + "tag-visualeditor-wikitext-description": "2017 mənbə redaktoru vasitəsilə edilmiş düzəlişlər", "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktor: Dəyişdirildi]]", "tag-visualeditor-switched-description": "İstifadəçi vizual redaktorla başladı, daha sonra vikimətn redaktoruna keçdi.", - "visualeditor-feedback-link": "Layihə:Vizual redaktor/Rəy", + "visualeditor-feedback-link": "Project:Vizual redaktor/Rəy", "visualeditor-feedback-tool": "Bu funksiya haqqında rəyinizi bildirin", - "visualeditor-help-label": "İstifadəçinin bələdçisini oxu", + "visualeditor-help-label": "İstifadəçi təlimatını oxu", "visualeditor-welcomedialog-action": "Redaktəyə başla", - "visualeditor-welcomedialog-content": "Burada hər kəs redaktə edə bilər. Hər düzəliş təkmilləşməyə kömək edir.", + "visualeditor-welcomedialog-content": "Hər kəs redaktə edə bilər və hər bir təkmilləşdirmə kömək edir.", "visualeditor-welcomedialog-content-thanks": "Hər kəsin daha çox şey öyrənməsinə kömək etdiyiniz üçün sizə təşəkkür edirik!", "visualeditor-welcomedialog-switch": "Mənbə redaktoruna keç", "visualeditor-welcomedialog-switch-ve": "Vizual redaktora keç", From d8061868103be70c40bd1415d2f884a78f6fcdb9 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 22 Nov 2024 10:34:06 -0600 Subject: [PATCH 053/730] Edit check: move config defaults to the client-side This lets us encapsulate everything about a check in its JS definition, which makes it much simpler for other extensions or gadgets to create checks. Change-Id: Ica23fc26a576d55addb001e4baf78b3702927208 --- editcheck/includes/ResourceLoaderData.php | 15 +-------------- editcheck/modules/BaseEditCheck.js | 9 ++++++++- .../modules/editchecks/AddReferenceEditCheck.js | 5 +++++ 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/editcheck/includes/ResourceLoaderData.php b/editcheck/includes/ResourceLoaderData.php index 2cb80026f8..912502f341 100644 --- a/editcheck/includes/ResourceLoaderData.php +++ b/editcheck/includes/ResourceLoaderData.php @@ -13,19 +13,6 @@ class ResourceLoaderData { - private const DEFAULTS = [ - 'addReference' => [ - 'minimumCharacters' => 50, - 'beforePunctuation' => false, - // TODO: when we have multiple edit checks this will likely be a generic block: - // account: loggedin, loggedout, anything non-truthy means allow either - 'account' => false, - 'maximumEditcount' => 100, - 'ignoreSections' => [], - 'ignoreLeadSection' => false, - ], - ]; - /** * Return configuration data for edit checks, fetched from an on-wiki JSON message * @@ -35,6 +22,6 @@ class ResourceLoaderData { public static function getConfig( MessageLocalizer $context ): array { $raw_config = json_decode( $context->msg( 'editcheck-config.json' )->inContentLanguage()->plain(), true ); - return array_replace_recursive( self::DEFAULTS, $raw_config ?? [] ); + return $raw_config ?? []; } } diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index e5d8a81a51..84da82d225 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -1,5 +1,5 @@ mw.editcheck.BaseEditCheck = function MWBaseEditCheck( config ) { - this.config = config; + this.config = ve.extendObject( {}, this.constructor.static.defaultConfig, config ); }; OO.initClass( mw.editcheck.BaseEditCheck ); @@ -19,6 +19,13 @@ mw.editcheck.BaseEditCheck.static.choices = [ } ]; +mw.editcheck.BaseEditCheck.static.defaultConfig = { + account: false, // 'loggedin', 'loggedout', anything non-truthy means allow either + maximumEditcount: 100, + ignoreSections: [], + ignoreLeadSection: false +}; + mw.editcheck.BaseEditCheck.static.description = ve.msg( 'editcheck-dialog-addref-description' ); /** diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index db3ddece86..caf8828085 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -9,6 +9,11 @@ mw.editcheck.AddReferenceEditCheck.static.name = 'addReference'; mw.editcheck.AddReferenceEditCheck.static.description = ve.msg( 'editcheck-dialog-addref-description' ); +mw.editcheck.AddReferenceEditCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.BaseEditCheck.static.defaultConfig, { + minimumCharacters: 50, + beforePunctuation: false +} ); + mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceModel ) { return this.findAddedContent( surfaceModel.getDocument() ).map( ( range ) => { const fragment = surfaceModel.getLinearFragment( range ); From d2134d7df2505909306e1787aedeafd8e3c3d723 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 25 Nov 2024 08:25:02 +0100 Subject: [PATCH 054/730] Localisation updates from https://translatewiki.net. Change-Id: I03a0e35bd7f7668bf36d8bebc225ce54d982f4f5 --- i18n/ve-mw/fvr.json | 1 + i18n/ve-mw/kk-cyrl.json | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/fvr.json b/i18n/ve-mw/fvr.json index 06d724e8de..4f2860d87f 100644 --- a/i18n/ve-mw/fvr.json +++ b/i18n/ve-mw/fvr.json @@ -4,6 +4,7 @@ "Dinkawiki" ] }, + "visualeditor-ca-createlocaldescriptionsource": "Inlóó'ŋ jáwli'ŋ ka̠rɨŋas jányi", "visualeditor-ca-createsource": "Ka̠rɨŋa jetéré", "visualeditor-ca-editsource": "Ka̠rɨŋas jaáŋo", "visualeditor-ca-editsource-section": "Ka̠rɨŋas jaáŋo" diff --git a/i18n/ve-mw/kk-cyrl.json b/i18n/ve-mw/kk-cyrl.json index b1813f7bc0..1a081d723e 100644 --- a/i18n/ve-mw/kk-cyrl.json +++ b/i18n/ve-mw/kk-cyrl.json @@ -153,10 +153,11 @@ "visualeditor-magiclinknodeinspector-title-rfc": "RFC сілтеме", "visualeditor-meta-tool": "Параметрлер", "visualeditor-mweditmodesource-tool-current": "Қайнарын өңдеу", - "visualeditor-mweditmodeve-popup-body": "Сіз кез келген уақытта бұл белгішені басу арқылы көріп өңдеуге ауысуға қайта аласыз.", + "visualeditor-mweditmodeve-popup-body": "Кез келген уақытта осы белгішені басу арқылы көріп өңдеуге қайта ауыса аласыз.", "visualeditor-mweditmodeve-popup-title": "Қайнарын өңдеуге ауыстыңыз", - "visualeditor-mweditmodeve-showagain": "Бұл хабарламаны қайтадан көрсетпе", + "visualeditor-mweditmodeve-showagain": "Бұл хабарламаны қайта көрсетпе", "visualeditor-mweditmodeve-tool-current": "Көріп өңдеу", + "visualeditor-mweditmodewt-popup-body": "Кез келген уақытта осы белгішені басу арқылы қайнарын өңдеуге қайта ауыса аласыз.", "visualeditor-mwgallerydialog-title": "Галерея", "visualeditor-mwsignature-tool": "Қолтаңбаңыз", "visualeditor-preference-tabs": "Өңдеу режимі", From 43326984082ff61f9bacc23dd27eac5cd047a2ba Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 22 Nov 2024 13:05:41 +0000 Subject: [PATCH 055/730] Upstream CSS hacks from skins Change-Id: Ic2aca1e005c5d5f89a97372de40bd8aa6f4b2aa0 --- .../ve-mw/init/styles/ve.init.mw.Target.less | 20 +++++++++++++++++++ ...DesktopArticleTarget.init-vector-2022.less | 7 +++++++ 2 files changed, 27 insertions(+) diff --git a/modules/ve-mw/init/styles/ve.init.mw.Target.less b/modules/ve-mw/init/styles/ve.init.mw.Target.less index 14e8b199ea..55891bee46 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.Target.less +++ b/modules/ve-mw/init/styles/ve.init.mw.Target.less @@ -96,3 +96,23 @@ a[ rel~='mw:PageProp/Category' ] { white-space: nowrap; font-weight: bold; } + +/* Night mode */ + +// FIXME: Can be removed when T369092 is resolved +&.skin-theme-clientpref-night { + .ve-ce-branchNode-blockSlug, + body p.ve-ce-branchNode-newSlug { + background-color: rgba( 241, 247, 251, 0.1 ); + } +} + +/* stylelint-disable-next-line plugin/no-unsupported-browser-features */ +@media ( prefers-color-scheme: dark ) { + &.skin-theme-clientpref-os { + .ve-ce-branchNode-blockSlug, + body p.ve-ce-branchNode-newSlug { + background-color: rgba( 241, 247, 251, 0.1 ); + } + } +} diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less index c5df05a1fa..cac616dfed 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less @@ -5,6 +5,13 @@ * @license The MIT License (MIT); see LICENSE.txt */ +// Temporarily disable TOC in edit mode until TOC +// works with both visual and source editors (T294950) +/* stylelint-disable-next-line selector-class-pattern */ +.ve-activated .vector-toc { + display: none; +} + .ve-init-mw-desktopArticleTarget-toolbar, .ve-init-mw-desktopArticleTarget-toolbarPlaceholder, .ve-ui-overlay-local, From 2c73af983e205375cfb30a220e2a20d9474e39f4 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 25 Nov 2024 10:46:02 -0600 Subject: [PATCH 056/730] Edit check: move some methods into BaseEditCheck This is mostly cleanup from 4cd67004d removing Diff, which was the original caller of the moved functions. Change-Id: I015cb310527d9e7593e4ba6ac15ac204435d9ab4 --- editcheck/modules/BaseEditCheck.js | 96 ++++++++++++++++++- .../editchecks/AddReferenceEditCheck.js | 8 ++ editcheck/modules/init.js | 74 -------------- 3 files changed, 99 insertions(+), 79 deletions(-) diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index 84da82d225..cb472da79d 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -104,11 +104,97 @@ mw.editcheck.BaseEditCheck.prototype.canBeShown = function () { * @return {ve.Range[]} */ mw.editcheck.BaseEditCheck.prototype.getModifiedContentRanges = function ( documentModel ) { - return mw.editcheck.getModifiedRanges( documentModel, this.constructor.static.onlyCoveredNodes ) - .filter( - ( range ) => range.getLength() >= this.config.minimumCharacters && - this.isRangeInValidSection( range, documentModel ) - ); + return this.getModifiedRanges( documentModel, this.constructor.static.onlyCoveredNodes, true ); +}; + +/** + * Get content ranges which have been inserted + * + * @param {ve.dm.Document} documentModel + * @param {boolean} coveredNodesOnly Only include ranges which cover the whole of their node + * @param {boolean} onlyContentRanges Only return ranges which are content branch node interiors + * @return {ve.Range[]} + */ +mw.editcheck.BaseEditCheck.prototype.getModifiedRanges = function ( documentModel, coveredNodesOnly, onlyContentRanges ) { + if ( !documentModel.completeHistory.getLength() ) { + return []; + } + let operations; + try { + operations = documentModel.completeHistory.squash().transactions[ 0 ].operations; + } catch ( err ) { + // TransactionSquasher can sometimes throw errors; until T333710 is + // fixed just count this as not needing a reference. + mw.errorLogger.logError( err, 'error.visualeditor' ); + return []; + } + + const ranges = []; + let offset = 0; + const endOffset = documentModel.getDocumentRange().end; + operations.every( ( op ) => { + if ( op.type === 'retain' ) { + offset += op.length; + } else if ( op.type === 'replace' ) { + const insertedRange = new ve.Range( offset, offset + op.insert.length ); + offset += op.insert.length; + // 1. Only trigger if the check is a pure insertion, with no adjacent content removed (T340088) + if ( op.remove.length === 0 ) { + if ( onlyContentRanges ) { + ve.batchPush( + ranges, + // 2. Only fully inserted paragraphs (ranges that cover the whole node) (T345121) + this.getContentRangesFromRange( documentModel, insertedRange, coveredNodesOnly ) + ); + } else { + ranges.push( insertedRange ); + } + } + } + // Reached the end of the doc / start of internal list, stop searching + return offset < endOffset; + } ); + return ranges.filter( ( range ) => this.isRangeValid( range, documentModel ) ); +}; + +/** + * Return the content ranges (content branch node interiors) contained within a range + * + * For a content branch node entirely contained within the range, its entire interior + * range will be included. For a content branch node overlapping with the range boundary, + * only the covered part of its interior range will be included. + * + * @param {ve.dm.Document} documentModel The documentModel to search + * @param {ve.Range} range The range to include + * @param {boolean} covers Only include ranges which cover the whole of their node + * @return {ve.Range[]} The contained content ranges (content branch node interiors) + */ +mw.editcheck.BaseEditCheck.prototype.getContentRangesFromRange = function ( documentModel, range, covers ) { + const ranges = []; + documentModel.selectNodes( range, 'branches' ).forEach( ( spec ) => { + if ( + spec.node.canContainContent() && ( + !covers || ( + !spec.range || // an empty range means the node is covered + spec.range.equalsSelection( spec.nodeRange ) + ) + ) + ) { + ranges.push( spec.range || spec.nodeRange ); + } + } ); + return ranges; +}; + +/** + * Test whether the range is valid for the check to apply + * + * @param {ve.Range} range + * @param {ve.dm.Document} documentModel + * @return {boolean} + */ +mw.editcheck.BaseEditCheck.prototype.isRangeValid = function ( range, documentModel ) { + return this.isRangeInValidSection( range, documentModel ); }; /** diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index caf8828085..4b8b522466 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -114,6 +114,14 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, co } }; +/** + * @inheritdoc + */ +mw.editcheck.AddReferenceEditCheck.prototype.isRangeValid = function ( range, documentModel ) { + return range.getLength() >= ( this.config.minimumCharacters || 0 ) && + mw.editcheck.AddReferenceEditCheck.super.prototype.isRangeValid.call( this, range, documentModel ); +}; + /** * Adjust a fragment to include/exclude trailing punctuation * diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 0ecaadfdae..f7f1b1ebb6 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -15,35 +15,6 @@ require( './BaseEditCheck.js' ); // require( './editchecks/TextMatchEditCheck.js' ); require( './editchecks/AddReferenceEditCheck.js' ); -/** - * Return the content ranges (content branch node interiors) contained within a range - * - * For a content branch node entirely contained within the range, its entire interior - * range will be included. For a content branch node overlapping with the range boundary, - * only the covered part of its interior range will be included. - * - * @param {ve.dm.Document} documentModel The documentModel to search - * @param {ve.Range} range The range to include - * @param {boolean} covers Only include ranges which cover the whole of their node - * @return {ve.Range[]} The contained content ranges (content branch node interiors) - */ -mw.editcheck.getContentRanges = function ( documentModel, range, covers ) { - const ranges = []; - documentModel.selectNodes( range, 'branches' ).forEach( ( spec ) => { - if ( - spec.node.canContainContent() && ( - !covers || ( - !spec.range || // an empty range means the node is covered - spec.range.equalsSelection( spec.nodeRange ) - ) - ) - ) { - ranges.push( spec.range || spec.nodeRange ); - } - } ); - return ranges; -}; - /** * Check if the document has content needing a reference, for AddReferenceEditCheck * @@ -62,51 +33,6 @@ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, include return check.findAddedContent( documentModel, includeReferencedContent ).length > 0; }; -/** - * Get content ranges which have been inserted - * - * @param {ve.dm.Document} documentModel - * @param {boolean} coveredNodesOnly Only include ranges which cover the whole of their node - * @return {ve.Range[]} - */ -mw.editcheck.getModifiedRanges = function ( documentModel, coveredNodesOnly ) { - if ( !documentModel.completeHistory.getLength() ) { - return []; - } - let operations; - try { - operations = documentModel.completeHistory.squash().transactions[ 0 ].operations; - } catch ( err ) { - // TransactionSquasher can sometimes throw errors; until T333710 is - // fixed just count this as not needing a reference. - mw.errorLogger.logError( err, 'error.visualeditor' ); - return []; - } - - const ranges = []; - let offset = 0; - const endOffset = documentModel.getDocumentRange().end; - operations.every( ( op ) => { - if ( op.type === 'retain' ) { - offset += op.length; - } else if ( op.type === 'replace' ) { - const insertedRange = new ve.Range( offset, offset + op.insert.length ); - offset += op.insert.length; - // 1. Only trigger if the check is a pure insertion, with no adjacent content removed (T340088) - if ( op.remove.length === 0 ) { - ve.batchPush( - ranges, - // 2. Only fully inserted paragraphs (ranges that cover the whole node) (T345121) - mw.editcheck.getContentRanges( documentModel, insertedRange, coveredNodesOnly ) - ); - } - } - // Reached the end of the doc / start of internal list, stop searching - return offset < endOffset; - } ); - return ranges; -}; - mw.editcheck.rejections = []; mw.editcheck.getRejectionReasons = function () { From 34030accdb43177db38e200d3815d79e623b0582 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 25 Nov 2024 10:47:56 -0600 Subject: [PATCH 057/730] Edit check: add helper to BaseEditCheck to find added nodes Change-Id: Ia6e2d97b57c002f9cea2167c64f960f1422dabfe --- editcheck/modules/BaseEditCheck.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index cb472da79d..6e130e02dd 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -107,6 +107,26 @@ mw.editcheck.BaseEditCheck.prototype.getModifiedContentRanges = function ( docum return this.getModifiedRanges( documentModel, this.constructor.static.onlyCoveredNodes, true ); }; +/** + * Find nodes that were added during the edit session + * + * @param {ve.dm.Document} documentModel + * @param {string} [type] Type of nodes to find, or all nodes if false + * @return {ve.dm.Node[]} + */ +mw.editcheck.BaseEditCheck.prototype.getAddedNodes = function ( documentModel, type ) { + const matchedNodes = []; + this.getModifiedRanges( documentModel ).forEach( ( range ) => { + const nodes = documentModel.selectNodes( range, 'covered' ); + nodes.forEach( ( node ) => { + if ( !type || node.node.getType() === type ) { + matchedNodes.push( node.node ); + } + } ); + } ); + return matchedNodes; +}; + /** * Get content ranges which have been inserted * From 0aaa6599dc9bb8e92903e67ccef0fdb8e3ecdb2c Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 26 Nov 2024 08:17:28 +0100 Subject: [PATCH 058/730] Localisation updates from https://translatewiki.net. Change-Id: I332097e6937e4768f316a509d396d168b5ad7652 --- editcheck/i18n/gl.json | 9 +++++++++ i18n/ve-mw/kk-cyrl.json | 5 +++++ i18n/ve-mw/ru.json | 2 +- i18n/ve-wmf/abs.json | 2 +- i18n/ve-wmf/ace.json | 4 ++-- i18n/ve-wmf/acm.json | 8 ++++---- i18n/ve-wmf/ady-cyrl.json | 2 +- i18n/ve-wmf/af.json | 4 ++-- i18n/ve-wmf/alt.json | 2 +- i18n/ve-wmf/ami.json | 2 +- i18n/ve-wmf/an.json | 2 +- i18n/ve-wmf/anp.json | 2 +- i18n/ve-wmf/ar.json | 8 ++++---- i18n/ve-wmf/arq.json | 2 +- i18n/ve-wmf/ary.json | 2 +- i18n/ve-wmf/arz.json | 2 +- i18n/ve-wmf/as.json | 6 +++--- i18n/ve-wmf/ast.json | 6 +++--- i18n/ve-wmf/atj.json | 2 +- i18n/ve-wmf/av.json | 2 +- i18n/ve-wmf/avk.json | 2 +- i18n/ve-wmf/awa.json | 2 +- i18n/ve-wmf/az.json | 8 ++++---- i18n/ve-wmf/azb.json | 2 +- i18n/ve-wmf/ba.json | 6 +++--- i18n/ve-wmf/ban.json | 6 +++--- i18n/ve-wmf/bbc-latn.json | 2 +- i18n/ve-wmf/bci.json | 2 +- i18n/ve-wmf/bcl.json | 4 ++-- i18n/ve-wmf/be-tarask.json | 6 +++--- i18n/ve-wmf/be.json | 6 +++--- i18n/ve-wmf/bew.json | 6 +++--- i18n/ve-wmf/bg.json | 6 +++--- i18n/ve-wmf/bgn.json | 2 +- i18n/ve-wmf/bho.json | 2 +- i18n/ve-wmf/bjn.json | 4 ++-- i18n/ve-wmf/blk.json | 6 +++--- i18n/ve-wmf/bn.json | 8 ++++---- i18n/ve-wmf/bqi.json | 2 +- i18n/ve-wmf/br.json | 8 ++++---- i18n/ve-wmf/bs.json | 6 +++--- i18n/ve-wmf/btm.json | 2 +- i18n/ve-wmf/ca.json | 6 +++--- i18n/ve-wmf/ccp.json | 2 +- i18n/ve-wmf/{cdo.json => cdo-hant.json} | 3 +-- i18n/ve-wmf/cdo-latn.json | 6 ++++++ i18n/ve-wmf/ce.json | 6 +++--- i18n/ve-wmf/ceb.json | 2 +- i18n/ve-wmf/ckb.json | 4 ++-- i18n/ve-wmf/cnr-latn.json | 2 +- i18n/ve-wmf/co.json | 2 +- i18n/ve-wmf/cop.json | 2 +- i18n/ve-wmf/cs.json | 6 +++--- i18n/ve-wmf/csb.json | 2 +- i18n/ve-wmf/cv.json | 8 ++++---- i18n/ve-wmf/cy.json | 6 +++--- i18n/ve-wmf/da.json | 8 ++++---- i18n/ve-wmf/dag.json | 8 ++++---- i18n/ve-wmf/de.json | 8 ++++---- i18n/ve-wmf/din.json | 2 +- i18n/ve-wmf/diq.json | 6 +++--- i18n/ve-wmf/dsb.json | 6 +++--- i18n/ve-wmf/dty.json | 2 +- i18n/ve-wmf/el.json | 6 +++--- i18n/ve-wmf/eml.json | 6 +++--- i18n/ve-wmf/eo.json | 8 ++++---- i18n/ve-wmf/es.json | 6 +++--- i18n/ve-wmf/et.json | 8 ++++---- i18n/ve-wmf/eu.json | 6 +++--- i18n/ve-wmf/ext.json | 2 +- i18n/ve-wmf/fa.json | 8 ++++---- i18n/ve-wmf/ff.json | 2 +- i18n/ve-wmf/fi.json | 8 ++++---- i18n/ve-wmf/fit.json | 2 +- i18n/ve-wmf/fo.json | 4 ++-- i18n/ve-wmf/fon.json | 2 +- i18n/ve-wmf/fr.json | 8 ++++---- i18n/ve-wmf/frp.json | 2 +- i18n/ve-wmf/frr.json | 6 +++--- i18n/ve-wmf/fur.json | 4 ++-- i18n/ve-wmf/fy.json | 6 +++--- i18n/ve-wmf/gcr.json | 2 +- i18n/ve-wmf/gd.json | 2 +- i18n/ve-wmf/gl.json | 8 ++++---- i18n/ve-wmf/gld.json | 2 +- i18n/ve-wmf/glk.json | 2 +- i18n/ve-wmf/gom-deva.json | 2 +- i18n/ve-wmf/gom-latn.json | 4 ++-- i18n/ve-wmf/gor.json | 2 +- i18n/ve-wmf/grc.json | 2 +- i18n/ve-wmf/gsw.json | 4 ++-- i18n/ve-wmf/gu.json | 6 +++--- i18n/ve-wmf/guc.json | 2 +- i18n/ve-wmf/gur.json | 8 ++++---- i18n/ve-wmf/guw.json | 2 +- i18n/ve-wmf/gv.json | 9 +++++++++ i18n/ve-wmf/ha.json | 8 ++++---- i18n/ve-wmf/hak.json | 2 +- i18n/ve-wmf/he.json | 8 ++++---- i18n/ve-wmf/hi.json | 6 +++--- i18n/ve-wmf/hr.json | 8 ++++---- i18n/ve-wmf/hrx.json | 2 +- i18n/ve-wmf/hsb.json | 6 +++--- i18n/ve-wmf/hsn.json | 2 +- i18n/ve-wmf/ht.json | 2 +- i18n/ve-wmf/hu.json | 6 +++--- i18n/ve-wmf/hy.json | 6 +++--- i18n/ve-wmf/hyw.json | 2 +- i18n/ve-wmf/ia.json | 8 ++++---- i18n/ve-wmf/id.json | 6 +++--- i18n/ve-wmf/ie.json | 4 ++-- i18n/ve-wmf/ig.json | 2 +- i18n/ve-wmf/ilo.json | 6 +++--- i18n/ve-wmf/inh.json | 2 +- i18n/ve-wmf/io.json | 6 +++--- i18n/ve-wmf/is.json | 6 +++--- i18n/ve-wmf/it.json | 8 ++++---- i18n/ve-wmf/ja.json | 6 +++--- i18n/ve-wmf/jam.json | 2 +- i18n/ve-wmf/jje.json | 2 +- i18n/ve-wmf/jut.json | 2 +- i18n/ve-wmf/jv.json | 6 +++--- i18n/ve-wmf/ka.json | 6 +++--- i18n/ve-wmf/kaa.json | 6 +++--- i18n/ve-wmf/kab.json | 2 +- i18n/ve-wmf/kbp.json | 2 +- i18n/ve-wmf/kcg.json | 6 +++--- i18n/ve-wmf/khw.json | 2 +- i18n/ve-wmf/kjp.json | 6 +++--- i18n/ve-wmf/kk-cyrl.json | 6 +++--- i18n/ve-wmf/km.json | 2 +- i18n/ve-wmf/kn.json | 6 +++--- i18n/ve-wmf/ko-kp.json | 2 +- i18n/ve-wmf/ko.json | 8 ++++---- i18n/ve-wmf/koi.json | 2 +- i18n/ve-wmf/krc.json | 8 ++++---- i18n/ve-wmf/krl.json | 2 +- i18n/ve-wmf/ks-arab.json | 4 ++-- i18n/ve-wmf/ksh.json | 6 +++--- i18n/ve-wmf/ku-latn.json | 6 +++--- i18n/ve-wmf/kum.json | 2 +- i18n/ve-wmf/kus.json | 8 ++++---- i18n/ve-wmf/kw.json | 4 ++-- i18n/ve-wmf/ky.json | 4 ++-- i18n/ve-wmf/la.json | 2 +- i18n/ve-wmf/lad.json | 2 +- i18n/ve-wmf/lb.json | 6 +++--- i18n/ve-wmf/lbe.json | 2 +- i18n/ve-wmf/lez.json | 2 +- i18n/ve-wmf/lfn.json | 2 +- i18n/ve-wmf/li.json | 2 +- i18n/ve-wmf/lij.json | 6 +++--- i18n/ve-wmf/lki.json | 2 +- i18n/ve-wmf/lld.json | 2 +- i18n/ve-wmf/lmo.json | 6 +++--- i18n/ve-wmf/lo.json | 2 +- i18n/ve-wmf/lrc.json | 2 +- i18n/ve-wmf/lt.json | 6 +++--- i18n/ve-wmf/luz.json | 2 +- i18n/ve-wmf/lv.json | 6 +++--- i18n/ve-wmf/lzh.json | 2 +- i18n/ve-wmf/lzz.json | 8 -------- i18n/ve-wmf/mad.json | 2 +- i18n/ve-wmf/mag.json | 8 ++++---- i18n/ve-wmf/mai.json | 2 +- i18n/ve-wmf/mg.json | 6 +++--- i18n/ve-wmf/min.json | 6 +++--- i18n/ve-wmf/mk.json | 8 ++++---- i18n/ve-wmf/ml.json | 6 +++--- i18n/ve-wmf/mnc-mong.json | 2 +- i18n/ve-wmf/mnc.json | 2 +- i18n/ve-wmf/mni.json | 2 +- i18n/ve-wmf/mnw.json | 4 ++-- i18n/ve-wmf/mos.json | 8 ++++---- i18n/ve-wmf/mr.json | 6 +++--- i18n/ve-wmf/mrh.json | 6 +++--- i18n/ve-wmf/ms-arab.json | 2 +- i18n/ve-wmf/ms.json | 6 +++--- i18n/ve-wmf/mt.json | 6 +++--- i18n/ve-wmf/mui.json | 2 +- i18n/ve-wmf/mwl.json | 2 +- i18n/ve-wmf/my.json | 4 ++-- i18n/ve-wmf/mzn.json | 2 +- i18n/ve-wmf/nan-latn-pehoeji.json | 4 ++-- i18n/ve-wmf/nap.json | 6 +++--- i18n/ve-wmf/nb.json | 8 ++++---- i18n/ve-wmf/nds-nl.json | 6 +++--- i18n/ve-wmf/nds.json | 4 ++-- i18n/ve-wmf/ne.json | 8 ++++---- i18n/ve-wmf/nia.json | 2 +- i18n/ve-wmf/nl.json | 8 ++++---- i18n/ve-wmf/nn.json | 8 ++++---- i18n/ve-wmf/nqo.json | 8 ++++---- i18n/ve-wmf/nys.json | 2 +- i18n/ve-wmf/oc.json | 6 +++--- i18n/ve-wmf/ojb.json | 2 +- i18n/ve-wmf/olo.json | 2 +- i18n/ve-wmf/om.json | 4 ++-- i18n/ve-wmf/or.json | 4 ++-- i18n/ve-wmf/pa.json | 4 ++-- i18n/ve-wmf/pap.json | 2 +- i18n/ve-wmf/pcd.json | 2 +- i18n/ve-wmf/pfl.json | 6 +++--- i18n/ve-wmf/pl.json | 8 ++++---- i18n/ve-wmf/pms.json | 6 +++--- i18n/ve-wmf/pnb.json | 6 +++--- i18n/ve-wmf/prg.json | 2 +- i18n/ve-wmf/ps.json | 4 ++-- i18n/ve-wmf/pt-br.json | 8 ++++---- i18n/ve-wmf/pt.json | 8 ++++---- i18n/ve-wmf/pwn.json | 2 +- i18n/ve-wmf/qu.json | 6 +++--- i18n/ve-wmf/rmc.json | 2 +- i18n/ve-wmf/ro.json | 6 +++--- i18n/ve-wmf/roa-tara.json | 6 +++--- i18n/ve-wmf/rsk.json | 6 +++--- i18n/ve-wmf/ru.json | 6 +++--- i18n/ve-wmf/rue.json | 2 +- i18n/ve-wmf/rw.json | 6 +++--- i18n/ve-wmf/ryu.json | 2 +- i18n/ve-wmf/sa.json | 2 +- i18n/ve-wmf/sah.json | 6 +++--- i18n/ve-wmf/sat.json | 2 +- i18n/ve-wmf/scn.json | 6 +++--- i18n/ve-wmf/sco.json | 6 +++--- i18n/ve-wmf/sd.json | 6 +++--- i18n/ve-wmf/sdc.json | 2 +- i18n/ve-wmf/sdh.json | 2 +- i18n/ve-wmf/se.json | 8 ++++---- i18n/ve-wmf/ses.json | 2 +- i18n/ve-wmf/sgs.json | 2 +- i18n/ve-wmf/sh-latn.json | 6 +++--- i18n/ve-wmf/shi.json | 2 +- i18n/ve-wmf/shn.json | 2 +- i18n/ve-wmf/shy-latn.json | 2 +- i18n/ve-wmf/si.json | 2 +- i18n/ve-wmf/sjd.json | 4 ++-- i18n/ve-wmf/sk.json | 6 +++--- i18n/ve-wmf/skr-arab.json | 2 +- i18n/ve-wmf/sl.json | 8 ++++---- i18n/ve-wmf/sli.json | 2 +- i18n/ve-wmf/smn.json | 6 +++--- i18n/ve-wmf/so.json | 2 +- i18n/ve-wmf/sq.json | 6 +++--- i18n/ve-wmf/sr-ec.json | 6 +++--- i18n/ve-wmf/sr-el.json | 6 +++--- i18n/ve-wmf/sty.json | 2 +- i18n/ve-wmf/su.json | 2 +- i18n/ve-wmf/sv.json | 6 +++--- i18n/ve-wmf/sw.json | 6 +++--- i18n/ve-wmf/szl.json | 2 +- i18n/ve-wmf/szy.json | 6 +++--- i18n/ve-wmf/tay.json | 2 +- i18n/ve-wmf/tcy.json | 2 +- i18n/ve-wmf/tdd.json | 2 +- i18n/ve-wmf/te.json | 6 +++--- i18n/ve-wmf/tg-cyrl.json | 2 +- i18n/ve-wmf/th.json | 6 +++--- i18n/ve-wmf/ti.json | 4 ++-- i18n/ve-wmf/tk.json | 2 +- i18n/ve-wmf/tl.json | 6 +++--- i18n/ve-wmf/tly.json | 6 +++--- i18n/ve-wmf/tr.json | 8 ++++---- i18n/ve-wmf/trv.json | 2 +- i18n/ve-wmf/tt-cyrl.json | 8 ++++---- i18n/ve-wmf/tt-latn.json | 2 +- i18n/ve-wmf/tum.json | 6 +++--- i18n/ve-wmf/tw.json | 6 +++--- i18n/ve-wmf/udm.json | 2 +- i18n/ve-wmf/uk.json | 8 ++++---- i18n/ve-wmf/ur.json | 2 +- i18n/ve-wmf/uz.json | 6 +++--- i18n/ve-wmf/vec.json | 6 +++--- i18n/ve-wmf/vep.json | 2 +- i18n/ve-wmf/vi.json | 6 +++--- i18n/ve-wmf/vmw.json | 2 +- i18n/ve-wmf/vo.json | 9 +++++++++ i18n/ve-wmf/vro.json | 2 +- i18n/ve-wmf/wa.json | 2 +- i18n/ve-wmf/wal.json | 6 +++--- i18n/ve-wmf/war.json | 2 +- i18n/ve-wmf/wls.json | 2 +- i18n/ve-wmf/wo.json | 2 +- i18n/ve-wmf/wuu-hans.json | 2 +- i18n/ve-wmf/xmf.json | 2 +- i18n/ve-wmf/xsy.json | 2 +- i18n/ve-wmf/yi.json | 6 +++--- i18n/ve-wmf/yo.json | 2 +- i18n/ve-wmf/yue-hant.json | 6 +++--- i18n/ve-wmf/zgh.json | 2 +- i18n/ve-wmf/zh-hans.json | 8 ++++---- i18n/ve-wmf/zh-hant.json | 8 ++++---- 292 files changed, 653 insertions(+), 624 deletions(-) create mode 100644 editcheck/i18n/gl.json rename i18n/ve-wmf/{cdo.json => cdo-hant.json} (94%) create mode 100644 i18n/ve-wmf/cdo-latn.json create mode 100644 i18n/ve-wmf/gv.json delete mode 100644 i18n/ve-wmf/lzz.json create mode 100644 i18n/ve-wmf/vo.json diff --git a/editcheck/i18n/gl.json b/editcheck/i18n/gl.json new file mode 100644 index 0000000000..40e5707b75 --- /dev/null +++ b/editcheck/i18n/gl.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Toliño" + ] + }, + "editcheck-dialog-action-no": "Non", + "editcheck-dialog-action-yes": "Si" +} diff --git a/i18n/ve-mw/kk-cyrl.json b/i18n/ve-mw/kk-cyrl.json index 1a081d723e..3f30be1af7 100644 --- a/i18n/ve-mw/kk-cyrl.json +++ b/i18n/ve-mw/kk-cyrl.json @@ -13,12 +13,17 @@ "tooltip-ca-editsource": "Бұл беттің қайнар мәтінін өңдеу", "tooltip-ca-createsource": "Бұл беттің қайнар мәтінін бастау", "visualeditor-advancedsettings-tool": "Кеңейтілген параметрлер", + "visualeditor-autosave-modified-prompt-accept": "Өңдеуді жалғастыру", + "visualeditor-autosave-modified-prompt-message": "Бұл бет сіз жаңа ғана жүктегенге дейін өңделген. Алдыңғы нұсқадағы {{GENDER:|өңдеуді}} {{GENDER:|жалғастырасыз}} ба, әлде соңғы нұсқадағы жаңа өңдеме жасағыңыз келе ме?", + "visualeditor-autosave-modified-prompt-reject": "Жаңа өңдеме жасау", + "visualeditor-autosave-modified-prompt-title": "{{GENDER:|Өңдеуді}} жалғастырғыңыз келе ме?", "visualeditor-backbutton-tooltip": "Артқа қайту", "visualeditor-ca-createlocaldescriptionsource": "Жергілікті сипаттама көзін қосу", "visualeditor-ca-createsource": "Қайнарын құру", "visualeditor-ca-editlocaldescriptionsource": "Жергілікті сипаттама қайнарын өңдеу", "visualeditor-ca-editsource": "Қайнарын өңдеу", "visualeditor-ca-editsource-section": "қайнарын өңдеу", + "visualeditor-ca-editsource-section-hint": "Бөлімнің қайнар кодын өңдеу: $1", "visualeditor-categories-tool": "Санаттар", "visualeditor-desc": "МедиаУики үшін визуальды өңдегіш", "visualeditor-descriptionpagelink": "Project:VisualEditor", diff --git a/i18n/ve-mw/ru.json b/i18n/ve-mw/ru.json index 1f1d1c692a..eb71cea27d 100644 --- a/i18n/ve-mw/ru.json +++ b/i18n/ve-mw/ru.json @@ -211,7 +211,7 @@ "visualeditor-dialog-transclusion-add-param-error-exists-selected": "Невозможно дважды добавить параметр \"$2\".", "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "Параметр \"$2\" уже доступен для использования. Пожалуйста, проверьте параметры на боковой панели.", "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 — запрещенный символ. Удалите его, чтобы добавить параметр.", - "visualeditor-dialog-transclusion-add-param-help": "Если известно, введите имена [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters недокументированного параметра]. Обратите внимание, что только параметры, известные шаблону, будут иметь эффект. Вы можете найти информацию о существующих параметрах на [[$1|странице шаблона]].", + "visualeditor-dialog-transclusion-add-param-help": "Введите имена [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters недокументированных параметров], если вы знаете их. Обратите внимание, что будут работать только известные шаблону имена параметров. Информацию о существующих параметрах можно найти на [[$1|странице шаблона]].", "visualeditor-dialog-transclusion-add-param-placeholder": "Имя параметра", "visualeditor-dialog-transclusion-add-param-save": "Добавить", "visualeditor-dialog-transclusion-add-template": "Добавить шаблон", diff --git a/i18n/ve-wmf/abs.json b/i18n/ve-wmf/abs.json index 8c8c4aac4e..79da57117a 100644 --- a/i18n/ve-wmf/abs.json +++ b/i18n/ve-wmf/abs.json @@ -4,5 +4,5 @@ "Anok kutai jang" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Parobahan Visual]]" + "tag-visualeditor": "Parobahan Visual" } diff --git a/i18n/ve-wmf/ace.json b/i18n/ve-wmf/ace.json index 73ac2a8914..381e824b02 100644 --- a/i18n/ve-wmf/ace.json +++ b/i18n/ve-wmf/ace.json @@ -5,9 +5,9 @@ "Si Gam Acèh" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Peusaneut visual]]", + "tag-visualeditor": "Peusaneut visual", "tag-visualeditor-description": "Geupeusaneut ngön [[{{MediaWiki:visualeditor-descriptionpagelink}}|peusaneut visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Peusaneut visual: Kalön lom]]", + "tag-visualeditor-needcheck": "Peusaneut visual: Kalön lom", "visualeditor-feedback-link": "Project:VisualEditor/Umpeuën likôt", "visualeditor-feedback-tool": "Keubah umpeuën likôt", "visualeditor-help-label": "Beuët peunuman ureuëng ngui", diff --git a/i18n/ve-wmf/acm.json b/i18n/ve-wmf/acm.json index b0142d1245..86ff961c48 100644 --- a/i18n/ve-wmf/acm.json +++ b/i18n/ve-wmf/acm.json @@ -7,15 +7,15 @@ "tag-editcheck-newcontent-description": "ايديت شيك يكول اكو محتوه جديد اجه لهاي الصفحه", "tag-editcheck-newreference-description": "خليت مرجع للصفحه", "tag-editcheck-references-description": "ايديت شيك يكول المصدر المفروض يصير ضروري", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|ايديت شيك (المصادر) مشتعله]]", + "tag-editcheck-references-activated": "ايديت شيك (المصادر) مشتعله", "tag-editcheck-references-activated-description": "ايديت شيك يكول ضروري يصير مصدر، والواجهه جانت طالعه", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|تحرير مرئي]]", + "tag-visualeditor": "تحرير مرئي", "tag-visualeditor-description": "إنته عدلت بـ[[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي: تحقق]]", + "tag-visualeditor-needcheck": "المحرر المرئي: تحقق", "tag-visualeditor-needcheck-description": "التعديل صار [[{{MediaWiki:visualeditor-descriptionpagelink}}|بالمحرر المرئي]] والنظام اكتشف اكو تعديلات يمكن تصير بدون قصد على نص الويكي.", "tag-visualeditor-wikitext": "تعديل مصدر 2017", "tag-visualeditor-wikitext-description": "التعديل صار بمحرر نص الويكي 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي: تبديل]]", + "tag-visualeditor-switched": "المحرر المرئي: تبديل", "tag-visualeditor-switched-description": "بده النفر يحرر بالمرئي وإنتقل لمحرر نص الويكي.", "visualeditor-feedback-link": "Project:المحرر المرئي/تعليقات", "visualeditor-feedback-tool": "خلي تعليق على هاذه البرنامج", diff --git a/i18n/ve-wmf/ady-cyrl.json b/i18n/ve-wmf/ady-cyrl.json index b62daa131b..b9344a80a2 100644 --- a/i18n/ve-wmf/ady-cyrl.json +++ b/i18n/ve-wmf/ady-cyrl.json @@ -5,5 +5,5 @@ "SmartNart12" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ВизуалЕӀэзэн]]" + "tag-visualeditor": "ВизуалЕӀэзэн" } diff --git a/i18n/ve-wmf/af.json b/i18n/ve-wmf/af.json index b287b0aa96..1c942bd324 100644 --- a/i18n/ve-wmf/af.json +++ b/i18n/ve-wmf/af.json @@ -6,8 +6,8 @@ "Rooiratel" ] }, - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|WysigingKontroller (verwysings) geaktiveer]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuele teksverwerker]]", + "tag-editcheck-references-activated": "WysigingKontroller (verwysings) geaktiveer", + "tag-visualeditor": "Visuele teksverwerker", "tag-visualeditor-description": "Wysiging gemaak met die [[{{MediaWiki:Visualeditor-descriptionpagelink}}|visuele teksverwerker]]", "tag-visualeditor-needcheck-description": "Wysiging gemaak met die [[{{MediaWiki:Visualeditor-descriptionpagelink}}|visuele teksverwerker]] waar die stelsel potensieel onbedoelde veranderings opgespoor het.", "visualeditor-feedback-link": "Project:Visuele teksverwerker/Terugvoer", diff --git a/i18n/ve-wmf/alt.json b/i18n/ve-wmf/alt.json index a2549802f3..001a524709 100644 --- a/i18n/ve-wmf/alt.json +++ b/i18n/ve-wmf/alt.json @@ -4,5 +4,5 @@ "Батыр Комдошев" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуальный тӱзедӱчи]]" + "tag-visualeditor": "Визуальный тӱзедӱчи" } diff --git a/i18n/ve-wmf/ami.json b/i18n/ve-wmf/ami.json index 66f37cc869..7d685b7109 100644 --- a/i18n/ve-wmf/ami.json +++ b/i18n/ve-wmf/ami.json @@ -4,5 +4,5 @@ "Vickylin77s" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|malo nanengnengan a nikawitan]]" + "tag-visualeditor": "malo nanengnengan a nikawitan" } diff --git a/i18n/ve-wmf/an.json b/i18n/ve-wmf/an.json index 3a4ca8bc4f..0241ae7f9b 100644 --- a/i18n/ve-wmf/an.json +++ b/i18n/ve-wmf/an.json @@ -4,5 +4,5 @@ "Willtron" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edición visual]]" + "tag-visualeditor": "Edición visual" } diff --git a/i18n/ve-wmf/anp.json b/i18n/ve-wmf/anp.json index da3c1de33c..13123f4a54 100644 --- a/i18n/ve-wmf/anp.json +++ b/i18n/ve-wmf/anp.json @@ -4,5 +4,5 @@ "Angpradesh" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य संपादिका]]" + "tag-visualeditor": "यथादृश्य संपादिका" } diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index 3106fa4eeb..f8e6ebc897 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -21,14 +21,14 @@ ] }, "tag-editcheck-references-description": "يعتقد (إديت تشيك) أنّه قد يكون هناك حاجة إلى مرجع", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|فحص التحرير (أداة التحقق) مفعلّة]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|تحرير مرئي]]", + "tag-editcheck-references-activated": "فحص التحرير (أداة التحقق) مفعلّة", + "tag-visualeditor": "تحرير مرئي", "tag-visualeditor-description": "تم التعديل باستخدام [[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي: تحقق]]", + "tag-visualeditor-needcheck": "المحرر المرئي: تحقق", "tag-visualeditor-needcheck-description": "تم التعديل [[{{MediaWiki:visualeditor-descriptionpagelink}}|بالمحرر المرئي]] حيث اكتشف النظام تغييرات ربما تكون غير مقصودة على نص الويكي.", "tag-visualeditor-wikitext": "تعديل مصدر 2017", "tag-visualeditor-wikitext-description": "التعديل تم باستخدام محرر نص الويكي 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي: تبديل]]", + "tag-visualeditor-switched": "المحرر المرئي: تبديل", "tag-visualeditor-switched-description": "بدأ المستخدم بالتحرير باستخدام المحرر المرئي ثم انتقل إلى محرر نص الويكي.", "visualeditor-feedback-link": "Project:المحرر المرئي/تعليقات", "visualeditor-feedback-tool": "اترك تعليقًا حول هذا البرنامج", diff --git a/i18n/ve-wmf/arq.json b/i18n/ve-wmf/arq.json index bd1fd99adb..1b843e5059 100644 --- a/i18n/ve-wmf/arq.json +++ b/i18n/ve-wmf/arq.json @@ -6,7 +6,7 @@ "Oldstoneage" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|الكتابه المنظوره]]", + "tag-visualeditor": "الكتابه المنظوره", "visualeditor-welcomedialog-action": "بدا التبدال", "visualeditor-welcomedialog-content": "أي واحد يقدر يبدل، و كل تسڤام يعاون. صحيت كي راك تعاون العالم يتعلم كثر!" } diff --git a/i18n/ve-wmf/ary.json b/i18n/ve-wmf/ary.json index f1b71ae3fc..15550605ae 100644 --- a/i18n/ve-wmf/ary.json +++ b/i18n/ve-wmf/ary.json @@ -4,5 +4,5 @@ "SADIQUI" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|تحرير مرئي]]" + "tag-visualeditor": "تحرير مرئي" } diff --git a/i18n/ve-wmf/arz.json b/i18n/ve-wmf/arz.json index 83e2bd0674..e8054f153d 100644 --- a/i18n/ve-wmf/arz.json +++ b/i18n/ve-wmf/arz.json @@ -4,5 +4,5 @@ "Ghaly" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|تحرير متشاف]]" + "tag-visualeditor": "تحرير متشاف" } diff --git a/i18n/ve-wmf/as.json b/i18n/ve-wmf/as.json index e51f778d58..a501648d60 100644 --- a/i18n/ve-wmf/as.json +++ b/i18n/ve-wmf/as.json @@ -5,13 +5,13 @@ "Gitartha.bordoloi" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ভিজুৱেলএডিট]]", + "tag-visualeditor": "ভিজুৱেলএডিট", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ভিজুৱেল এডিটৰ]]ৰে কৰা সম্পাদনা", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ভিজুৱেল এডিটৰ: পৰীক্ষা কৰক]]", + "tag-visualeditor-needcheck": "ভিজুৱেল এডিটৰ: পৰীক্ষা কৰক", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ভিজুৱেল এডিটৰ]]ৰে সম্পাদনা কৰা হৈছে য'ত প্ৰণালীয়ে অনিচ্ছাকৃতভাৱে সালসলনি হোৱা সম্ভাব্য ৱিকিপাঠ্য চিনাক্ত কৰিছে।", "tag-visualeditor-wikitext": "২০১৭ উৎস সম্পাদনা", "tag-visualeditor-wikitext-description": "২০১৭ ৱিকিপাঠ্য সম্পাদক ব্যৱহাৰ কৰি সম্পাদনা কৰা হৈছে", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ভিজুৱেলএডিটৰ: পৰিবৰ্তন]]", + "tag-visualeditor-switched": "ভিজুৱেলএডিটৰ: পৰিবৰ্তন", "tag-visualeditor-switched-description": "সদস্যই ভিজুৱেল এডিটৰ ব্যৱহাৰ কৰি সম্পাদনা আৰম্ভ কৰি, পাছত ৱিকিপাঠ সম্পাদকলৈ সলনি কৰিছিল।", "visualeditor-feedback-link": "Project:ভিজুৱেলেডিটৰ/প্ৰতিক্ৰিয়া", "visualeditor-feedback-tool": "এই চফ্টৱেৰ সম্পৰ্কত আপোনাৰ মন্তব্য দিয়ক", diff --git a/i18n/ve-wmf/ast.json b/i18n/ve-wmf/ast.json index 5d159001d3..85f6e86bab 100644 --- a/i18n/ve-wmf/ast.json +++ b/i18n/ve-wmf/ast.json @@ -6,13 +6,13 @@ "Xuacu" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edición visual]]", + "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Edición fecha usando l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edición visual: Comprobar]]", + "tag-visualeditor-needcheck": "Edición visual: Comprobar", "tag-visualeditor-needcheck-description": "Edición fecha usando l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] na que'l sistema detectó que'l testu wiki pudiera tener cambeos nun deseaos.", "tag-visualeditor-wikitext": "edición de fonte 2017", "tag-visualeditor-wikitext-description": "Edición fecha usando l'editor visual de testu wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edición visual: Cambiáu]]", + "tag-visualeditor-switched": "Edición visual: Cambiáu", "tag-visualeditor-switched-description": "L'usuariu principió la edición usando l'editor visual y llueu cambió al editor de testu wiki.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Dexar un comentariu sobro esti programa", diff --git a/i18n/ve-wmf/atj.json b/i18n/ve-wmf/atj.json index 7ba8db31e7..19887aa9e9 100644 --- a/i18n/ve-wmf/atj.json +++ b/i18n/ve-wmf/atj.json @@ -5,5 +5,5 @@ "Jeannette Coocoo" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Oripatak itasinihikan]]" + "tag-visualeditor": "Oripatak itasinihikan" } diff --git a/i18n/ve-wmf/av.json b/i18n/ve-wmf/av.json index a0281f0da9..82f1b64c1d 100644 --- a/i18n/ve-wmf/av.json +++ b/i18n/ve-wmf/av.json @@ -6,5 +6,5 @@ "Аль-Гимравий" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуалияб редактор]]" + "tag-visualeditor": "Визуалияб редактор" } diff --git a/i18n/ve-wmf/avk.json b/i18n/ve-wmf/avk.json index 9431f80f34..0d5a3cec0d 100644 --- a/i18n/ve-wmf/avk.json +++ b/i18n/ve-wmf/avk.json @@ -4,5 +4,5 @@ "Axel xadolik" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Wirafi piskusiki]]" + "tag-visualeditor": "Wirafi piskusiki" } diff --git a/i18n/ve-wmf/awa.json b/i18n/ve-wmf/awa.json index de05a30615..fed45fc8c7 100644 --- a/i18n/ve-wmf/awa.json +++ b/i18n/ve-wmf/awa.json @@ -5,5 +5,5 @@ "हिमाल सुबेदी" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य सम्पादक]]" + "tag-visualeditor": "दृश्य सम्पादक" } diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index 5f724c2947..307af7d66e 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -14,15 +14,15 @@ "tag-editcheck-newcontent-description": "EditCheck hesab edir ki, səhifəyə yeni məzmun əlavə olunub", "tag-editcheck-newreference-description": "Səhifəyə istinad əlavə edildi", "tag-editcheck-references-description": "EditCheck hesab edir ki, istinad lazım ola bilər", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Redaktə Yoxlanışı (istinadlar) aktivləşdirilib]]", + "tag-editcheck-references-activated": "Redaktə Yoxlanışı (istinadlar) aktivləşdirilib", "tag-editcheck-references-activated-description": "EditCheck istinad lazım olduğunu düşünür və interfeys göstərilir", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktor]]", + "tag-visualeditor": "Vizual redaktor", "tag-visualeditor-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktorun]] köməyi ilə edilib", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktor: Yoxla]]", + "tag-visualeditor-needcheck": "Vizual redaktor: Yoxla", "tag-visualeditor-needcheck-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizual redaktor]] ilə edildi, sistem burada vikimətndə gözlənilməyən dəyişikliklər aşkar etdi.", "tag-visualeditor-wikitext": "2017 mənbə redaktoru", "tag-visualeditor-wikitext-description": "2017 mənbə redaktoru vasitəsilə edilmiş düzəlişlər", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktor: Dəyişdirildi]]", + "tag-visualeditor-switched": "Vizual redaktor: Dəyişdirildi", "tag-visualeditor-switched-description": "İstifadəçi vizual redaktorla başladı, daha sonra vikimətn redaktoruna keçdi.", "visualeditor-feedback-link": "Project:Vizual redaktor/Rəy", "visualeditor-feedback-tool": "Bu funksiya haqqında rəyinizi bildirin", diff --git a/i18n/ve-wmf/azb.json b/i18n/ve-wmf/azb.json index a9eed99022..2768f79519 100644 --- a/i18n/ve-wmf/azb.json +++ b/i18n/ve-wmf/azb.json @@ -6,7 +6,7 @@ "Mousa" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|بصری دییشدیریجی]]", + "tag-visualeditor": "بصری دییشدیریجی", "visualeditor-feedback-tool": "بو پروقراما گؤره فیدبک گؤندرین", "visualeditor-help-label": "ایشلدن کؤمگینی اوْخویون" } diff --git a/i18n/ve-wmf/ba.json b/i18n/ve-wmf/ba.json index 61f213bcf8..97bc8889e3 100644 --- a/i18n/ve-wmf/ba.json +++ b/i18n/ve-wmf/ba.json @@ -11,11 +11,11 @@ "Янмурза Баки" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Күҙләгес мөхәррир]]", + "tag-visualeditor": "Күҙләгес мөхәррир", "tag-visualeditor-description": "Төҙәтеү [[{{MediaWiki:visualeditor-descriptionpagelink}}|Күҙләгес мөхәррир]] ҡулланып башҡарылған", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Күҙләгес мөхәррир: Тикшереү]]", + "tag-visualeditor-needcheck": "Күҙләгес мөхәррир: Тикшереү", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Күҙләгес мөхәррир]] аша эшләнгән төҙәтеүҙә система аңламаҫтан үҙгәртелгән вики-текст булыу ихтималлығын асыҡланы.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Күҙләгес мөхәррир: Тикшереү]]", + "tag-visualeditor-switched": "Күҙләгес мөхәррир: Тикшереү", "tag-visualeditor-switched-description": "Ҡулланыусы күҙләгес мөхәррир менән үҙгәртә башланы, һуңынан викитекст мөхәрриренә күсте.", "visualeditor-feedback-link": "Project:VisualEditor/Фекер алышыу", "visualeditor-feedback-tool": "Программа тәьминәте тураһында фекер ҡалдырығыҙ", diff --git a/i18n/ve-wmf/ban.json b/i18n/ve-wmf/ban.json index 41a0fab5a4..23f508c3d1 100644 --- a/i18n/ve-wmf/ban.json +++ b/i18n/ve-wmf/ban.json @@ -5,13 +5,13 @@ "NoiX180" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Uahan visual]]", + "tag-visualeditor": "Uahan visual", "tag-visualeditor-description": "Uahan sané nganggén [[{{MediaWiki:visualeditor-descriptionpagelink}}|panguahan visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Panguahan visual: Periksa]]", + "tag-visualeditor-needcheck": "Panguahan visual: Periksa", "tag-visualeditor-needcheck-description": "Uahan sané nganggén [[{{MediaWiki:visualeditor-descriptionpagelink}}|panguahan visual]] ring sistem sané nguningayang kawéntenan teks wiki prasida mikolehin pauahan sané nénten kamanutin.", "tag-visualeditor-wikitext": "Uahan wit 2017", "tag-visualeditor-wikitext-description": "Nguahin nganggén panguah teks wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Uahan visual: Silurin]]", + "tag-visualeditor-switched": "Uahan visual: Silurin", "tag-visualeditor-switched-description": "Sang anganggé ngawitin panguahan nganggén uahan visual selanturné nyilurin manados uahan teks wiki.", "visualeditor-feedback-link": "Project:VisualEditor/Pamrayoga", "visualeditor-feedback-tool": "Ngicain sara antuk piranti lunak puniki", diff --git a/i18n/ve-wmf/bbc-latn.json b/i18n/ve-wmf/bbc-latn.json index ab94f732a0..b13c69fe7f 100644 --- a/i18n/ve-wmf/bbc-latn.json +++ b/i18n/ve-wmf/bbc-latn.json @@ -4,5 +4,5 @@ "Salomo Christian Hutajulu" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Patota na tarbereng]]" + "tag-visualeditor": "Patota na tarbereng" } diff --git a/i18n/ve-wmf/bci.json b/i18n/ve-wmf/bci.json index 6180ae13bd..b9684b7f62 100644 --- a/i18n/ve-wmf/bci.json +++ b/i18n/ve-wmf/bci.json @@ -4,5 +4,5 @@ "Kjeanclaude" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Nounklèklèlè floua boué]]" + "tag-visualeditor": "Nounklèklèlè floua boué" } diff --git a/i18n/ve-wmf/bcl.json b/i18n/ve-wmf/bcl.json index dc1f421ecc..6a6a9015e6 100644 --- a/i18n/ve-wmf/bcl.json +++ b/i18n/ve-wmf/bcl.json @@ -6,9 +6,9 @@ "Sky Harbor" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Biswal-na-Pagliwat]]", + "tag-visualeditor": "Biswal-na-Pagliwat", "tag-visualeditor-description": "An pagliwat pinaghimo na ginagamit an [[{{MediaWiki:visualeditor-descriptionpagelink}}|Biswal-na-Paraliwat]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Biswal-na-Paraliwat: Rikisaron]]", + "tag-visualeditor-needcheck": "Biswal-na-Paraliwat: Rikisaron", "tag-visualeditor-needcheck-description": "An pagliwat pinaghimo na ginagamit an [[{{MediaWiki:visualeditor-descriptionpagelink}}|Biswal na Paraliwat]] kun saen an sistema namangnohan na an wikiteksto posibleng nagkaigwa nin bakong pinagtutuyong mga kaliwatan.", "tag-visualeditor-switched-description": "An paragamit nagpoon na magliwat gamit an biswal na paraliwat, asin nagbalyo sa wikitekstong paraliwat.", "visualeditor-feedback-link": "Project:Biswal-na-Paraliwat/Balik-simbag", diff --git a/i18n/ve-wmf/be-tarask.json b/i18n/ve-wmf/be-tarask.json index 978bed1794..954b4b9d8f 100644 --- a/i18n/ve-wmf/be-tarask.json +++ b/i18n/ve-wmf/be-tarask.json @@ -9,13 +9,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуальная праўка]]", + "tag-visualeditor": "Візуальная праўка", "tag-visualeditor-description": "Праўка зробленая празь [[{{MediaWiki:visualeditor-descriptionpagelink}}|візуальны рэдактар]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуальная праўка: праверыць]]", + "tag-visualeditor-needcheck": "Візуальная праўка: праверыць", "tag-visualeditor-needcheck-description": "Праўка была зроблена [[{{MediaWiki:visualeditor-descriptionpagelink}}|візуальным рэдактарам]], і сыстэма заўважыла патэнцыйна непажаданыя зьмены ў вікітэксьце.", "tag-visualeditor-wikitext": "рэдактар вікітэксту-2017", "tag-visualeditor-wikitext-description": "Рэдагаваньне зробленае з дапамогай рэдактара вікітэксту-2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуальная праўка: пераключана]]", + "tag-visualeditor-switched": "Візуальная праўка: пераключана", "tag-visualeditor-switched-description": "Удзельнік пачаў рэдагаваць з дапамогай візуальнага рэдактару, а потым пераключыўся на рэдактар вікітэксту.", "visualeditor-feedback-link": "Project:Візуальны рэдактар/Водгукі", "visualeditor-feedback-tool": "Пакінуць водгук пра гэтае праграмнае забесьпячэньне", diff --git a/i18n/ve-wmf/be.json b/i18n/ve-wmf/be.json index ec6b2899f5..c92d688ccd 100644 --- a/i18n/ve-wmf/be.json +++ b/i18n/ve-wmf/be.json @@ -10,13 +10,13 @@ "Чаховіч Уладзіслаў" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуальны рэдактар]]", + "tag-visualeditor": "Візуальны рэдактар", "tag-visualeditor-description": "Праўка зроблена з дапамогай [[{{MediaWiki:visualeditor-descriptionpagelink}}|візуальнага рэдактара]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуальная праўка: Праверыць]]", + "tag-visualeditor-needcheck": "Візуальная праўка: Праверыць", "tag-visualeditor-needcheck-description": "Праўка была зроблена з дапамогай [[{{MediaWiki:visualeditor-descriptionpagelink}}|візуальнага рэдактара]], і сістэма заўважыла патэнцыйна непажаданыя змены ў вікітэксце.", "tag-visualeditor-wikitext": "рэдактар вікітэксту 2017", "tag-visualeditor-wikitext-description": "Праўка зроблена з дапамогай рэдактара вікітэксту 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуальная праўка: Пераключана]]", + "tag-visualeditor-switched": "Візуальная праўка: Пераключана", "tag-visualeditor-switched-description": "Удзельнік пачаў правіць з дапамогай візуальнага рэдактара, а потым пераключыўся на рэдактар вікітэксту.", "visualeditor-feedback-link": "Project:VisualEditor/Водгукі", "visualeditor-feedback-tool": "Пакінуць водгук пра гэтае праграмнае забеспячэнне", diff --git a/i18n/ve-wmf/bew.json b/i18n/ve-wmf/bew.json index 2d146554e9..5816d05a3f 100644 --- a/i18n/ve-wmf/bew.json +++ b/i18n/ve-wmf/bew.json @@ -8,13 +8,13 @@ "tag-editcheck-newreference-description": "Ada ruju'an nyang ditambahin ke halaman", "tag-editcheck-references-description": "EditCheck nyananya ruju'an barangkali dibutuhin", "tag-editcheck-references-activated-description": "EditCheck nyananya ruju'an diperluin, èn telampangan pemaké (TP)-nya dikasi unjuk", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Permak delengan]]", + "tag-visualeditor": "Permak delengan", "tag-visualeditor-description": "Permakan dikeja paké [[{{MediaWiki:visualeditor-descriptionpagelink}}|pemermak delengan]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Permak pisual: Perèksa]]", + "tag-visualeditor-needcheck": "Permak pisual: Perèksa", "tag-visualeditor-needcheck-description": "Permakan dikeja paké [[{{MediaWiki:visualeditor-descriptionpagelink}}|pemermak delengan]] di sistim nyang ngendus adanya tèks wiki nyang barangkali ada perobahan nyang kaga' dipèngèninnya.", "tag-visualeditor-wikitext": "permakan sumber 2017", "tag-visualeditor-wikitext-description": "Permak dikeja paké pemermak tèks wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Permakan delengan: Diganti]]", + "tag-visualeditor-switched": "Permakan delengan: Diganti", "tag-visualeditor-switched-description": "Pemaké mulain mermak paké pemermak delengan, terus ngrobah ke pemermak tèks wiki.", "visualeditor-feedback-link": "Project:VisualEditor/Empan balik", "visualeditor-feedback-tool": "Tinggalin empan balik pasal ni peranti alus", diff --git a/i18n/ve-wmf/bg.json b/i18n/ve-wmf/bg.json index bb99ec8289..f0c409c419 100644 --- a/i18n/ve-wmf/bg.json +++ b/i18n/ve-wmf/bg.json @@ -12,13 +12,13 @@ "පසිඳු කාවින්ද" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуален редактор]]", + "tag-visualeditor": "Визуален редактор", "tag-visualeditor-description": "Редакция, направена с [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалния редактор]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуална редакция за проверка]]", + "tag-visualeditor-needcheck": "Визуална редакция за проверка", "tag-visualeditor-needcheck-description": "Редакция, направена с [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалния редактор]], за която системата откри възможно нежелани промени по уикикода.", "tag-visualeditor-wikitext": "Уикитекстов редактор – 2017", "tag-visualeditor-wikitext-description": "Редакцията е извършена чрез уикитекстов редактор – 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуален редактор: превключен]]", + "tag-visualeditor-switched": "Визуален редактор: превключен", "tag-visualeditor-switched-description": "Потребителят започва да редактира чрез визуалния редактор и след това преминава към уикитекст редактора.", "visualeditor-feedback-link": "Project:Визуален редактор/Мнения", "visualeditor-feedback-tool": "Оставете отзив за софтуера", diff --git a/i18n/ve-wmf/bgn.json b/i18n/ve-wmf/bgn.json index b23988d97e..a3cdaf7764 100644 --- a/i18n/ve-wmf/bgn.json +++ b/i18n/ve-wmf/bgn.json @@ -5,5 +5,5 @@ "Ibrahim khashrowdi" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ديستینوکین ایڈیٹگر]]" + "tag-visualeditor": "ديستینوکین ایڈیٹگر" } diff --git a/i18n/ve-wmf/bho.json b/i18n/ve-wmf/bho.json index ee14b28b72..1fb9983c42 100644 --- a/i18n/ve-wmf/bho.json +++ b/i18n/ve-wmf/bho.json @@ -4,5 +4,5 @@ "SatyamMishra" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|विजुअल संपादन]]" + "tag-visualeditor": "विजुअल संपादन" } diff --git a/i18n/ve-wmf/bjn.json b/i18n/ve-wmf/bjn.json index 900422eb93..2096fcee84 100644 --- a/i18n/ve-wmf/bjn.json +++ b/i18n/ve-wmf/bjn.json @@ -8,8 +8,8 @@ "tag-editcheck-newcontent-description": "EditCheck bapikir isi hanyar ditambahi ka laman", "tag-editcheck-newreference-description": "Bahan acuan ditambahakan ka laman", "tag-editcheck-references-description": "EditCheck bapikir sabuting bahan acuan pinanya diparluakan", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check (references) activated]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Babakan visual]]", + "tag-editcheck-references-activated": "Edit Check (references) activated", + "tag-visualeditor": "Babakan visual", "tag-visualeditor-description": "Dibabak lawan [[{{MediaWiki:visualeditor-descriptionpagelink}}|pambabak visual]]", "tag-visualeditor-wikitext-description": "Babakan mamakai pambabak naskah wiki 2017", "tag-visualeditor-switched-description": "Pamakai mulai mambabak lawan éditor visual imbah ngitu maubahnya manjadi éditor naskah wiki.", diff --git a/i18n/ve-wmf/blk.json b/i18n/ve-wmf/blk.json index 1e7a72d215..7a2a938701 100644 --- a/i18n/ve-wmf/blk.json +++ b/i18n/ve-wmf/blk.json @@ -4,13 +4,13 @@ "咽頭べさ" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ခြပ်ချော်ꩻ မဲ့ထာꩻထီႏ]]", + "tag-visualeditor": "ခြပ်ချော်ꩻ မဲ့ထာꩻထီႏ", "tag-visualeditor-description": "ထူႏသုင်ꩻအီတောမ်ႏ ခြပ်ချော်ꩻရုက်ပုင်ႏနယ်တဲင် [[{{MediaWiki:visualeditor-descriptionpagelink}}|ခြပ်ချော်ꩻသွော့]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ခြပ်ချော်ꩻ မဲ့ထာꩻထီႏ:စဲစ်ဆေꩻ]]", + "tag-visualeditor-needcheck": "ခြပ်ချော်ꩻ မဲ့ထာꩻထီႏ:စဲစ်ဆေꩻ", "tag-visualeditor-needcheck-description": "ဝီခီလိတ်ယာႏစနိစ်နဝ်ꩻ တအင်းရေႏတဝ်းလဲ့ ပြောင်ꩻလုဲင်ႏမုꩻဖုံႏ အဝ်ႏဒျာႏနဝ်ꩻသွူ။ စဲစ်ထွားကမော့ꩻဒါႏ [[{{MediaWiki:visualeditor-descriptionpagelink}}|ခြပ်ချော်ꩻထာꩻ]] ထီႏသားယို ထူႏသုင်ꩻသွူတွော့ꩻ ခြပ်ချော်ꩻသွော့။", "tag-visualeditor-wikitext": "ခြပ်ချော်ꩻအရွီးခိုႏ ၂၀၁၇", "tag-visualeditor-wikitext-description": "ထူႏသုင်ꩻအီတောမ်ႏ ခြပ်ချော်ꩻဝီခီလိတ်ယာႏတဲင် ခြပ်ချော်ꩻသွော့ ၂၀၁၇", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ခြပ်ချော်ꩻမုꩻ မဲ့ထာꩻထီႏ:ပြောင်ꩻခါꩻ]]", + "tag-visualeditor-switched": "ခြပ်ချော်ꩻမုꩻ မဲ့ထာꩻထီႏ:ပြောင်ꩻခါꩻ", "tag-visualeditor-switched-description": "ထူႏသုင်ꩻအီတောမ်ႏ ကေားသုင်ꩻသား ခြပ်ချော်ꩻရုက်ပုင်ႏတဲင် စထွူလဲဉ်း ခြပ်ချော်ꩻမုꩻသွူ၊ နဝ်ꩻထွူ ပြောင်ꩻလုဲင်ႏလဲဉ်း ခြပ်ချော်ꩻဝီခီလိတ်ယာႏသွူ။", "visualeditor-feedback-link": "ပရောစဲစ်:ခြပ်ချော်ꩻထာꩻထီႏ/လဝ်းပြန်ႏချာချက်", "visualeditor-feedback-tool": "တဲမ်းဖေႏသွော့ သော့ဝွဲးယိုအခရာႏ ဖေႏကျံႏညဏ်ႏချက်သြ", diff --git a/i18n/ve-wmf/bn.json b/i18n/ve-wmf/bn.json index 43bdd77c23..cd49fc1758 100644 --- a/i18n/ve-wmf/bn.json +++ b/i18n/ve-wmf/bn.json @@ -12,14 +12,14 @@ ] }, "tag-editcheck-newreference-description": "পাতাটিতে একটি তথ্যসূত্র যোগ হয়েছে", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|সম্পাদনা পরীক্ষা (তথ্যসূত্র) সক্রিয় করা হয়েছে]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|দৃশ্যমান সম্পাদনা]]", + "tag-editcheck-references-activated": "সম্পাদনা পরীক্ষা (তথ্যসূত্র) সক্রিয় করা হয়েছে", + "tag-visualeditor": "দৃশ্যমান সম্পাদনা", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|দৃশ্যমান সম্পাদনা]] ব্যবহার করে সম্পাদিত", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|দৃশ্যমান সম্পাদনা: যাচাই করুন]]", + "tag-visualeditor-needcheck": "দৃশ্যমান সম্পাদনা: যাচাই করুন", "tag-visualeditor-needcheck-description": "এই সম্পাদনাটি [[{{MediaWiki:visualeditor-descriptionpagelink}}|দৃশ্যমান সম্পাদনা]] ব্যবহার করে সম্পাদনা করা হয়েছে যেখানে সিস্টেম সনাক্ত করেছে উইকিপাঠ্যে সম্ভাব্য অনিচ্ছাকৃত পরিবর্তন ঘটেছে।", "tag-visualeditor-wikitext": "২০১৭ উৎস সম্পাদনা", "tag-visualeditor-wikitext-description": "২০১৭ উইকিটেক্সট সম্পাদক ব্যবহার করে সম্পাদনা করা হয়েছে", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|দৃশ্যমান সম্পাদনা: সুইচকৃত]]", + "tag-visualeditor-switched": "দৃশ্যমান সম্পাদনা: সুইচকৃত", "tag-visualeditor-switched-description": "ব্যবহারকারী দৃশ্যমান সম্পাদনা ব্যবহার করে সম্পাদনা করতে শুরু করে, তারপর উইকিপাঠ্য সম্পাদকে পরিবর্তন করে।", "visualeditor-feedback-link": "Project:ভিজ্যুয়ালএডিটর/প্রতিক্রিয়া", "visualeditor-feedback-tool": "এই সফটওয়্যার সম্পর্কে আপনার প্রতিক্রিয়া জানান", diff --git a/i18n/ve-wmf/bqi.json b/i18n/ve-wmf/bqi.json index 39ca563b7a..83bd64fa5b 100644 --- a/i18n/ve-wmf/bqi.json +++ b/i18n/ve-wmf/bqi.json @@ -4,5 +4,5 @@ "Mogoeilor" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ڤیرایشت ڤٱراْ تی]]" + "tag-visualeditor": "ڤیرایشت ڤٱراْ تی" } diff --git a/i18n/ve-wmf/br.json b/i18n/ve-wmf/br.json index 23e4f653c3..3370d8cef7 100644 --- a/i18n/ve-wmf/br.json +++ b/i18n/ve-wmf/br.json @@ -12,15 +12,15 @@ "tag-editcheck-newcontent-description": "Hervez EditCheck ez eus bet ouzhpennet endalc’h nevez d’a bajenn", "tag-editcheck-newreference-description": "Ouzphennet ez eus bet un daveenn d’ar bajenn-mañ.", "tag-editcheck-references-description": "Hervez EditCheck e vefe ezhomm eus un daveenn", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check (daveoù) gweredekaet]]", + "tag-editcheck-references-activated": "Edit Check (daveoù) gweredekaet", "tag-editcheck-references-activated-description": "Hervez EditCheck e vefe ezhomm eus un daveenn, ha diskouezet eo bet an etrefas implijer", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Gwelaozer]]", + "tag-visualeditor": "Gwelaozer", "tag-visualeditor-description": "Kemm graet gant ar [[{{MediaWiki:visualeditor-descriptionpagelink}}|gwelaozer]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Gwelaozer: Da wiriañ]]", + "tag-visualeditor-needcheck": "Gwelaozer: Da wiriañ", "tag-visualeditor-needcheck-description": "Kamm graet gant ar [[{{MediaWiki:visualeditor-descriptionpagelink}}|gwelaozer]], kavet ennañ gant ar sistem wikitestenn a c’hellfe ober kemmoù dic’hortoz.", "tag-visualeditor-wikitext": "Aozer kod 2017", "tag-visualeditor-wikitext-description": "Kemm graet gant an aozer wikitestenn 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Gwelaozer: diweredekaet]]", + "tag-visualeditor-switched": "Gwelaozer: diweredekaet", "tag-visualeditor-switched-description": "Kroget en deus an implijer ober gant ar gwelaozer, hag aet eo war lerc’h d’an aozer wikitestenn.", "visualeditor-feedback-link": "Raktres:Gwelaozer/Soñjoù", "visualeditor-feedback-tool": "Rannañ ho soñj diwar-benn an arload-mañ", diff --git a/i18n/ve-wmf/bs.json b/i18n/ve-wmf/bs.json index be17612c09..9f150942f3 100644 --- a/i18n/ve-wmf/bs.json +++ b/i18n/ve-wmf/bs.json @@ -7,13 +7,13 @@ "Srđan" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno uređivanje]]", + "tag-visualeditor": "vizualno uređivanje", "tag-visualeditor-description": "Izmjena načinjena korištenjem [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualnog uređivača]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno uređivanje: potrebna provjera]]", + "tag-visualeditor-needcheck": "vizualno uređivanje: potrebna provjera", "tag-visualeditor-needcheck-description": "Izmjena načinjena korištenjem [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualnog uređivača]] gdje je sistem detektirao wikitekst s mogućim neželjenim izmjenama.", "tag-visualeditor-wikitext": "uređivanje izvornog kôda (2017)", "tag-visualeditor-wikitext-description": "Izmjena napravljena uređivačem wikiteksta iz 2017.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno uređivanje: prebačeno]]", + "tag-visualeditor-switched": "vizualno uređivanje: prebačeno", "tag-visualeditor-switched-description": "Korisnik je počeo uređivati koristeći vizualni uređivač, pa se prebacio na izvorno uređivanje wikiteksta.", "visualeditor-feedback-link": "Project:Vizualni uređivač/Povratne informacije", "visualeditor-feedback-tool": "Ostavite povratnu informaciju", diff --git a/i18n/ve-wmf/btm.json b/i18n/ve-wmf/btm.json index 4014cd9845..8d6a688d23 100644 --- a/i18n/ve-wmf/btm.json +++ b/i18n/ve-wmf/btm.json @@ -4,5 +4,5 @@ "Simartampua" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edit Visual]]" + "tag-visualeditor": "Edit Visual" } diff --git a/i18n/ve-wmf/ca.json b/i18n/ve-wmf/ca.json index f3dd08aac1..4f06b6bc3c 100644 --- a/i18n/ve-wmf/ca.json +++ b/i18n/ve-wmf/ca.json @@ -16,13 +16,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", + "tag-visualeditor": "editor visual", "tag-visualeditor-description": "Modificació feta amb l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edició visual: a comprovar]]", + "tag-visualeditor-needcheck": "Edició visual: a comprovar", "tag-visualeditor-needcheck-description": "Edició feta amb l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]], en la qual el sistema ha detectat que el text wiki pot contenir canvis no desitjats.", "tag-visualeditor-wikitext": "editor de codi 2017", "tag-visualeditor-wikitext-description": "Modificació feta utilitzant l'editor de text wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|edició visual: canviat]]", + "tag-visualeditor-switched": "edició visual: canviat", "tag-visualeditor-switched-description": "L'usuari ha començar a editar utilitzant l'editor visual i després ha canviat a l'editor wikitext.", "visualeditor-feedback-link": "Project:Editor visual/Comentaris", "visualeditor-feedback-tool": "Deixeu comentaris sobre aquest programari", diff --git a/i18n/ve-wmf/ccp.json b/i18n/ve-wmf/ccp.json index a82cadc3ff..d87d828291 100644 --- a/i18n/ve-wmf/ccp.json +++ b/i18n/ve-wmf/ccp.json @@ -7,7 +7,7 @@ "tag-editcheck-newcontent-description": "𑄃𑄬𑄓𑄨𑄑𑄴𑄌𑄬𑄇𑄴 𑄟𑄧𑄚𑄬 𑄉𑄧𑄢𑄨 𑄛𑄘𑄖𑄴 𑄚𑄱 𑄇𑄧𑄚𑄴𑄑𑄬𑄚𑄴𑄑𑄴 𑄃𑄬𑄉𑄧𑄖𑄴𑄧𑄢𑄴 𑄉𑄧𑄢 𑄦𑄮𑄠𑄬", "tag-editcheck-newreference-description": "𑄛𑄘𑄊𑄚𑄧𑄖𑄴 𑄄𑄇𑄴𑄮 𑄢𑄬𑄜𑄢𑄬𑄚𑄴𑄥𑄴 𑄆𑄉𑄧𑄖𑄴𑄧𑄢𑄴 𑄉𑄧𑄢 𑄦𑄮𑄠𑄬", "tag-editcheck-references-description": "𑄆𑄓𑄨𑄑𑄴𑄌𑄬𑄇𑄴 𑄟𑄧𑄚𑄬 𑄉𑄧𑄢𑄨 𑄆𑄇𑄴𑄳𑄦𑄚𑄴 𑄢𑄬𑄜𑄢𑄬𑄚𑄴𑄥𑄴 𑄉𑄧𑄢𑄧𑄌𑄴 𑄦𑄮𑄠𑄴 𑄛𑄢𑄬", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|𑄆𑄓𑄨𑄑𑄴𑄌𑄬𑄇𑄴 (𑄢𑄬𑄜𑄢𑄬𑄚𑄴𑄥𑄬𑄥𑄴) 𑄆𑄇𑄴𑄑𑄨𑄞𑄬𑄑𑄬𑄓𑄴]]", + "tag-editcheck-references-activated": "𑄆𑄓𑄨𑄑𑄴𑄌𑄬𑄇𑄴 (𑄢𑄬𑄜𑄢𑄬𑄚𑄴𑄥𑄬𑄥𑄴) 𑄆𑄇𑄴𑄑𑄨𑄞𑄬𑄑𑄬𑄓𑄴", "tag-visualeditor-wikitext": "𑄸𑄶𑄷𑄽 𑄥𑄮𑄢𑄴𑄥𑄴 𑄆𑄓𑄨𑄑𑄴", "visualeditor-help-label": "𑄣𑄢𑄴𑄌𑄢𑄴 𑄉𑄧𑄢𑄨𑄠𑄬 𑄉𑄭𑄓𑄴 𑄟𑄘𑄚", "visualeditor-welcomedialog-action": "𑄥𑄮𑄢𑄴 𑄉𑄧𑄢𑄚 𑄃𑄢𑄴𑄉𑄚𑄨 𑄉𑄧𑄢𑄴", diff --git a/i18n/ve-wmf/cdo.json b/i18n/ve-wmf/cdo-hant.json similarity index 94% rename from i18n/ve-wmf/cdo.json rename to i18n/ve-wmf/cdo-hant.json index 440d237005..f36c1cf426 100644 --- a/i18n/ve-wmf/cdo.json +++ b/i18n/ve-wmf/cdo-hant.json @@ -1,8 +1,7 @@ { "@metadata": { "authors": [ - "Davidzdh", - "Ztl8702" + "Winston Sung" ] }, "visualeditor-help-label": "讀用戶手冊", diff --git a/i18n/ve-wmf/cdo-latn.json b/i18n/ve-wmf/cdo-latn.json new file mode 100644 index 0000000000..eb7857b58d --- /dev/null +++ b/i18n/ve-wmf/cdo-latn.json @@ -0,0 +1,6 @@ +{ + "@metadata": { + "authors": [] + }, + "tag-visualeditor": "Kō̤-sê-huá biĕng-cĭk" +} diff --git a/i18n/ve-wmf/ce.json b/i18n/ve-wmf/ce.json index 90f648e7ca..3a21553ad3 100644 --- a/i18n/ve-wmf/ce.json +++ b/i18n/ve-wmf/ce.json @@ -5,13 +5,13 @@ ] }, "tag-editcheck-newreference-description": "АгӀонна хьажорг тӀетоьхна", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редактор]]", + "tag-visualeditor": "БӀаьран редактор", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редакторца]] дина нисдарш", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редактор]]: талла", + "tag-visualeditor-needcheck": "БӀаьран редактор: талла", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редакторан]] гӀоьнца дина нисдар, цунна чохь системин карийна нийса боцу вики-текстан хийцамаш.", "tag-visualeditor-wikitext": "вики-йозан 2017 редактор", "tag-visualeditor-wikitext-description": "Нисдар дина вики-текст 2017 редакторан гӀоьнца", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|бӀаьран редактор]] дӀадайина", + "tag-visualeditor-switched": "бӀаьран редактор дӀадайина", "tag-visualeditor-switched-description": "Декъашхо бӀаьран редакторца хийцамаш бан болийна, цул тӀаьхьа вики-текстан редактор чохь хийцамаш бира цо.", "visualeditor-feedback-link": "Project:БӀаьран редактор/Хетарш", "visualeditor-feedback-tool": "Йазде хьайна хетарг", diff --git a/i18n/ve-wmf/ceb.json b/i18n/ve-wmf/ceb.json index 81d370c506..94055b6272 100644 --- a/i18n/ve-wmf/ceb.json +++ b/i18n/ve-wmf/ceb.json @@ -5,5 +5,5 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Giusab ginamit ang visual editor]]" + "tag-visualeditor": "Giusab ginamit ang visual editor" } diff --git a/i18n/ve-wmf/ckb.json b/i18n/ve-wmf/ckb.json index f94c53910f..5542c4cc27 100644 --- a/i18n/ve-wmf/ckb.json +++ b/i18n/ve-wmf/ckb.json @@ -11,9 +11,9 @@ "ئارام بکر" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|دەستکاریی دیداری]]", + "tag-visualeditor": "دەستکاریی دیداری", "tag-visualeditor-description": "دەستکاری بە [[{{MediaWiki:visualeditor-descriptionpagelink}}|دەستکاریکەری دیداری]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|دەستکاریکەری دیداری: تاوتوێ]]", + "tag-visualeditor-needcheck": "دەستکاریکەری دیداری: تاوتوێ", "tag-visualeditor-wikitext": "دەستکاریی سەرچاوەی ٢٠١٧", "visualeditor-feedback-tool": "فیدباک دەربارەی ئەم نەرمامێرە بدە", "visualeditor-help-label": "ڕێنوێنیی بەکارھێنەر بخوێنەرەوە", diff --git a/i18n/ve-wmf/cnr-latn.json b/i18n/ve-wmf/cnr-latn.json index 8b4f88fc78..b28e8a92d6 100644 --- a/i18n/ve-wmf/cnr-latn.json +++ b/i18n/ve-wmf/cnr-latn.json @@ -4,5 +4,5 @@ "Ookuninusi" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno uređivanje]]" + "tag-visualeditor": "vizualno uređivanje" } diff --git a/i18n/ve-wmf/co.json b/i18n/ve-wmf/co.json index 5e581135c7..27e00acd49 100644 --- a/i18n/ve-wmf/co.json +++ b/i18n/ve-wmf/co.json @@ -5,6 +5,6 @@ "Paulu" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Mudifica visuale]]", + "tag-visualeditor": "Mudifica visuale", "tag-visualeditor-description": "Edizione fatta per via di" } diff --git a/i18n/ve-wmf/cop.json b/i18n/ve-wmf/cop.json index 9b3c2a02b5..a91bd8cc3b 100644 --- a/i18n/ve-wmf/cop.json +++ b/i18n/ve-wmf/cop.json @@ -4,5 +4,5 @@ "Bloomaround" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ϫⲓⲛⲫⲱⲛϩ ⲛ̀ⲛⲁⲩ]]" + "tag-visualeditor": "ϫⲓⲛⲫⲱⲛϩ ⲛ̀ⲛⲁⲩ" } diff --git a/i18n/ve-wmf/cs.json b/i18n/ve-wmf/cs.json index a37df0b823..2e8fd28952 100644 --- a/i18n/ve-wmf/cs.json +++ b/i18n/ve-wmf/cs.json @@ -22,13 +22,13 @@ "아라" ] }, - "tag-visualeditor": "editace z [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuálního editoru]]", + "tag-visualeditor": "editace z Vizuálního editoru", "tag-visualeditor-description": "Editace provedená za použití [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuálního editoru]]", - "tag-visualeditor-needcheck": "možná chyba ve [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuálním editoru]]", + "tag-visualeditor-needcheck": "možná chyba ve Vizuálním editoru", "tag-visualeditor-needcheck-description": "Editace provedená za použití [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuálního editoru]], u které systém detekoval možné nezamýšlené změny wikitextu.", "tag-visualeditor-wikitext": "editor wikitextu 2017", "tag-visualeditor-wikitext-description": "Editace provedená pomocí editoru wikitextu 2017", - "tag-visualeditor-switched": "přepnuto z [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuálního editoru]]", + "tag-visualeditor-switched": "přepnuto z Vizuálního editoru", "tag-visualeditor-switched-description": "Uživatel začal editovat pomocí Vizuálního editoru, načež se přepnul do editoru wikitextu.", "visualeditor-feedback-link": "Project:Vizuální editor/Názory", "visualeditor-feedback-tool": "Poslat názor na tento software", diff --git a/i18n/ve-wmf/csb.json b/i18n/ve-wmf/csb.json index 3dc187d988..b883593a47 100644 --- a/i18n/ve-wmf/csb.json +++ b/i18n/ve-wmf/csb.json @@ -5,7 +5,7 @@ "Kirsan" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Wizualny editora]]", + "tag-visualeditor": "Wizualny editora", "tag-visualeditor-wikitext": "editor zdrojowégò kòdu 2017", "visualeditor-welcomedialog-action": "Naczni edicjã", "visualeditor-welcomedialog-content": "Kòżdi mòże editowac i kòżdô edicjô rozwijô kaszëbską Wikipediã.", diff --git a/i18n/ve-wmf/cv.json b/i18n/ve-wmf/cv.json index d22305f877..592742796b 100644 --- a/i18n/ve-wmf/cv.json +++ b/i18n/ve-wmf/cv.json @@ -7,14 +7,14 @@ "tag-editcheck-newcontent-description": "EditCheck шутланӑ тӑрӑх, страницӑна ҫӗнӗ контент хушӑ", "tag-editcheck-newreference-description": "Страницӑна каҫӑ хушӑннӑ", "tag-editcheck-references-description": "EditCheck шутланӑ тӑрӑх кунта каҫӑ хушмалла", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|EditCheck (каҫӑсем) ӗҫлет]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|курӑмлӑ редакторпа]]", + "tag-editcheck-references-activated": "EditCheck (каҫӑсем) ӗҫлет", + "tag-visualeditor": "курӑмлӑ редакторпа", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Курӑмлӑ редакторпа]] тунӑ тӳрлетӳсем", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|курӑмлӑ редакторпа]]: тӗрӗсле", + "tag-visualeditor-needcheck": "курӑмлӑ редакторпа: тӗрӗсле", "tag-visualeditor-needcheck-description": "Система [[{{MediaWiki:visualeditor-descriptionpagelink}}|курӑмлӑ редакторпа]] тунӑ, вики-текста тӗрӗс мар улшӑну кӗртнӗ тӳрлетӗве асӑрханӑ.", "tag-visualeditor-wikitext": "вики-текст редакторӗ 2017", "tag-visualeditor-wikitext-description": "Ку тӳрлетӗве 2017 вики-текст редакторӗпе усӑ курса тунӑ", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|курӑмлӑ редактор]] ӗҫлемест", + "tag-visualeditor-switched": "курӑмлӑ редактор ӗҫлемест", "tag-visualeditor-switched-description": "Хутшӑнакан текста курӑмлӑ редакторпа улӑштарма пуҫланӑ, кайран вики-текст редакторне куҫнӑ.", "visualeditor-feedback-link": "Project:Курӑмлӑ редактор/Сирӗн шухӑшсем", "visualeditor-feedback-tool": "Хӑвӑр шухӑшӑра пӗлтерӗр", diff --git a/i18n/ve-wmf/cy.json b/i18n/ve-wmf/cy.json index 464eb729ff..9bbf050843 100644 --- a/i18n/ve-wmf/cy.json +++ b/i18n/ve-wmf/cy.json @@ -10,13 +10,13 @@ ] }, "tag-editcheck-references-description": "Mae EditCheck yn meddwl y gallai fod angen cyfeiriad yn y golygiad hwn", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Golygiad Gweladwy]]", + "tag-visualeditor": "Golygiad Gweladwy", "tag-visualeditor-description": "Golygwyd gyda'r [[{{MediaWiki:visualeditor-descriptionpagelink}}|golygydd gweladwy]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Golygiad gweledol: Gwirio]]", + "tag-visualeditor-needcheck": "Golygiad gweledol: Gwirio", "tag-visualeditor-needcheck-description": "Golygiad trwy'r [[{{MediaWiki:visualeditor-descriptionpagelink}}|golygydd gweledol]] lle y gallai'r gystrawen wici wedi gwneud newidiadau anfwriadol yn ôl y system.", "tag-visualeditor-wikitext": "Golygiad cod 2017", "tag-visualeditor-wikitext-description": "Golygiad trwy ddefnyddio'r golygydd cystrawen wici 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Golygu gweledol: Newidiwyd]]", + "tag-visualeditor-switched": "Golygu gweledol: Newidiwyd", "tag-visualeditor-switched-description": "Dechreuodd y defnyddiwr olygu yn y golygydd gweledol, yna newid i'r golygydd wicidestun.", "visualeditor-feedback-link": "Project:VisualEditor/Adborth", "visualeditor-feedback-tool": "Anfon adborth am y meddalwedd hwn", diff --git a/i18n/ve-wmf/da.json b/i18n/ve-wmf/da.json index 4156d0fff6..92895f3e45 100644 --- a/i18n/ve-wmf/da.json +++ b/i18n/ve-wmf/da.json @@ -19,14 +19,14 @@ "아라" ] }, - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Redigeringstjek (referencer) aktiveret]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuel redigering]]", + "tag-editcheck-references-activated": "Redigeringstjek (referencer) aktiveret", + "tag-visualeditor": "Visuel redigering", "tag-visualeditor-description": "Redigeret ved hjælp af [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuel redigering]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuel redigering: Tjek]]", + "tag-visualeditor-needcheck": "Visuel redigering: Tjek", "tag-visualeditor-needcheck-description": "Redigering gjort med [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuel redigering]], hvor systemet har registreret at wikiteksten muligvis har utilsigtede ændringer.", "tag-visualeditor-wikitext": "2017-kilderedigering", "tag-visualeditor-wikitext-description": "Redigering foretaget med 2017-kilderedigering", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuel redigering: Skiftede]]", + "tag-visualeditor-switched": "Visuel redigering: Skiftede", "tag-visualeditor-switched-description": "Brugeren begyndte redigeringen med VisualEditor og skiftede derefter til wikitekst-redigering.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Giv tilbagemelding om denne software", diff --git a/i18n/ve-wmf/dag.json b/i18n/ve-wmf/dag.json index c94b389960..8d5dce9bfe 100644 --- a/i18n/ve-wmf/dag.json +++ b/i18n/ve-wmf/dag.json @@ -9,15 +9,15 @@ "tag-editcheck-newcontent-description": "Labi maali niŋ ka baŋ ni yɛla pala nyɛla din pahi yaɣili ŋɔ", "tag-editcheck-newreference-description": "Kundivihirili nyɛla din pahi yaɣili ŋɔ", "tag-editcheck-references-description": "Labi lihi ka baŋ ni kundivihira nyɛla din ni tooi pahi", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|lihi maali niŋ (kundivihira) activated]]", + "tag-editcheck-references-activated": "lihi maali niŋ (kundivihira) activated", "tag-editcheck-references-activated-description": "Labi lihi ka baŋ ni kundivihira nyɛla din ni tooi pahi ka UI maa di wuhi", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Nin'nyabu mali niŋ ]]", + "tag-visualeditor": "Nin'nyabu mali niŋ", "tag-visualeditor-description": "Zaŋmi [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]m-maali niŋ", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Check]]", + "tag-visualeditor-needcheck": "Visual edit: Check", "tag-visualeditor-needcheck-description": "Zaŋmi [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]m-maali niŋ luɣ’ shɛli wikitext ni ka bi tahira yiriŋ", "tag-visualeditor-wikitext": "2017 Maaliniŋ yibushee", "tag-visualeditor-wikitext-description": "Zaŋmi 2017wikitext maaliniŋ edita", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Switched]]", + "tag-visualeditor-switched": "Visual edit: Switched", "tag-visualeditor-switched-description": "Zaŋmi pilibu soli m-maali lihibu edita, ka taɣi li chaŋ wikitext edita.", "visualeditor-feedback-link": "Tuma:Nininyabu edita/din niŋ nyaaŋa", "visualeditor-feedback-tool": "Chɛli din niŋ nyaaŋa jɛndi komputa tuma", diff --git a/i18n/ve-wmf/de.json b/i18n/ve-wmf/de.json index 19155ef4d9..a13c5acd59 100644 --- a/i18n/ve-wmf/de.json +++ b/i18n/ve-wmf/de.json @@ -18,15 +18,15 @@ "tag-editcheck-newcontent-description": "EditCheck geht davon aus, dass der Seite neue Inhalte hinzugefügt wurden", "tag-editcheck-newreference-description": "Der Seite wurde ein Einzelnachweis hinzugefügt", "tag-editcheck-references-description": "EditCheck ist der Meinung, dass möglicherweise ein Einzelnachweis benötigt wird", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Bearbeitungsprüfung (Belege) aktiviert]]", + "tag-editcheck-references-activated": "Bearbeitungsprüfung (Belege) aktiviert", "tag-editcheck-references-activated-description": "EditCheck geht davon aus, dass möglicherweise ein Einzelnachweis erforderlich war, und die Benutzeroberfläche wurde angezeigt", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuelle Bearbeitung]]", + "tag-visualeditor": "Visuelle Bearbeitung", "tag-visualeditor-description": "Bearbeitungen, die mit dem [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editor]] ausgeführt wurden.", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuelle Bearbeitung: Überprüfung]]", + "tag-visualeditor-needcheck": "Visuelle Bearbeitung: Überprüfung", "tag-visualeditor-needcheck-description": "Bearbeitungen, die mit dem [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editor]] ausgeführt wurden und bei denen es möglicherweise zu ungewollten Änderungen des Wikitexts gekommen ist.", "tag-visualeditor-wikitext": "2017-Quelltext-Bearbeitung", "tag-visualeditor-wikitext-description": "Bearbeitungen, die mit dem Wikitext-Editor 2017 ausgeführt wurden.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuelle Bearbeitung: Gewechselt]]", + "tag-visualeditor-switched": "Visuelle Bearbeitung: Gewechselt", "tag-visualeditor-switched-description": "Bearbeitungen, die mithilfe des visuellen Editors begonnen, aber nach dem Wechsel mit dem Wikitext-Editor beendet wurden.", "visualeditor-feedback-link": "Project:VisualEditor/Rückmeldungen", "visualeditor-feedback-tool": "Rückmeldungen über diese Software hinterlassen", diff --git a/i18n/ve-wmf/din.json b/i18n/ve-wmf/din.json index 17f83f30a5..fcf7212531 100644 --- a/i18n/ve-wmf/din.json +++ b/i18n/ve-wmf/din.json @@ -4,5 +4,5 @@ "Dinkawiki" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|cokic däi-yic edit]]" + "tag-visualeditor": "cokic däi-yic edit" } diff --git a/i18n/ve-wmf/diq.json b/i18n/ve-wmf/diq.json index 6a3b8c8b3c..12948d3bff 100644 --- a/i18n/ve-wmf/diq.json +++ b/i18n/ve-wmf/diq.json @@ -13,13 +13,13 @@ "Se4598" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vurnayışo asaye]]", + "tag-visualeditor": "Vurnayışo asaye", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vurnayışo asaye]] ra vurnayış bıkerê", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vurnayışo Asaye: Raştkerdış]]", + "tag-visualeditor-needcheck": "Vurnayışo Asaye: Raştkerdış", "tag-visualeditor-needcheck-description": "Sistem [[{{MediaWiki:visualeditor-descriptionpagelink}}|vurnayışê asayi]] ya nêşenê ke timar kerê se, lakin çıma vurnayışi ra normal editore ya ma tesbit kerdo ke şıma vurnayış kerd o.", "tag-visualeditor-wikitext": "[[Wikipedia:2017 vırnayışê çımey|2017 vırnayışê çımey]]", "tag-visualeditor-wikitext-description": "2017 vurnayoğê wikimetiniya vurnayışi bıkarnê", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vurnayışo Asaye: Vurriyayo]]", + "tag-visualeditor-switched": "Vurnayışo Asaye: Vurriyayo", "tag-visualeditor-switched-description": "Karberi \"Vurnayışo asaye\" ya vurnayışi kerd, dıma ravêrd çıme vurnayışi.", "visualeditor-feedback-link": "Project:Vurnayoğo vênıte/Peyderıştış", "visualeditor-feedback-tool": "Heqa nê nustekeni peyd rışte bırış", diff --git a/i18n/ve-wmf/dsb.json b/i18n/ve-wmf/dsb.json index 52e58152a7..a1314f473e 100644 --- a/i18n/ve-wmf/dsb.json +++ b/i18n/ve-wmf/dsb.json @@ -4,11 +4,11 @@ "Michawiki" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Z pomocu [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditora]] wobźěłany", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Pśeglědanje]]", + "tag-visualeditor-needcheck": "VisualEditor: Pśeglědanje", "tag-visualeditor-needcheck-description": "Změna, kótaraž jo se z pomocu [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]a pśewjadła, źož system jo snaź wikitekst namakał, kótaryž wopśimujo mimowólne změny.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Pśešaltowany]]", + "tag-visualeditor-switched": "VisualEditor: Pśešaltowany", "tag-visualeditor-switched-description": "Wužywaŕ jo zachopił, z pomocu VisualEditora wobźěłowaś a jo pón k wikitekstowemu editoroju pśejšeł.", "visualeditor-feedback-link": "Project:VisualEditor/Komentary", "visualeditor-feedback-tool": "Komentar zawóstajiś", diff --git a/i18n/ve-wmf/dty.json b/i18n/ve-wmf/dty.json index 2890905658..82b24b7dd1 100644 --- a/i18n/ve-wmf/dty.json +++ b/i18n/ve-wmf/dty.json @@ -5,5 +5,5 @@ "हिमाल सुबेदी" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य सम्पादक]]" + "tag-visualeditor": "दृश्य सम्पादक" } diff --git a/i18n/ve-wmf/el.json b/i18n/ve-wmf/el.json index dabc4d779d..8d72d2ea37 100644 --- a/i18n/ve-wmf/el.json +++ b/i18n/ve-wmf/el.json @@ -18,13 +18,13 @@ "tag-editcheck-newcontent-description": "Το EditCheck πιστεύει ότι προστέθηκε νέο περιεχόμενο στη σελίδα", "tag-editcheck-newreference-description": "Προστέθηκε παραπομπή στη σελίδα", "tag-editcheck-references-description": "To EditCheck θεωρεί ότι μπορεί να υπάρχει ανάγκη για προσθήκη παραπομπής σε αυτήν την τροποποίηση", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Οπτική επεξεργασία]]", + "tag-visualeditor": "Οπτική επεξεργασία", "tag-visualeditor-description": "Επεξεργασία που έγινε με χρήση του [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Οπτική επεξεργασία: Έλεγχος]]", + "tag-visualeditor-needcheck": "Οπτική επεξεργασία: Έλεγχος", "tag-visualeditor-needcheck-description": "Επεξεργασία που έγινε μέσω του [[{{MediaWiki:visualeditor-descriptionpagelink}}|οπτικού επεξεργαστή]], όπου το σύστημα ανίχνευσε πιθανές μη ηθελημένες αλλαγές στον κώδικα wiki.", "tag-visualeditor-wikitext": "επεξεργασία κώδικα 2017", "tag-visualeditor-wikitext-description": "Η επεξεργασία έγινε χρησιμοποιώντας τον επεξεργαστή κώδικα wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Οπτική επεξεργασία: Άλλαξε]]", + "tag-visualeditor-switched": "Οπτική επεξεργασία: Άλλαξε", "tag-visualeditor-switched-description": "Ο χρήστης άρχισε να επεξεργάζεται χρησιμοποιώντας τον οπτικό επεξεργαστή και στη συνέχεια άλλαξε σε επεξεργαστή κώδικα wiki.", "visualeditor-feedback-link": "Project:VisualEditor/Ανατροφοδότηση", "visualeditor-feedback-tool": "Αφήστε σχόλια σχετικά με αυτό το λογισμικό", diff --git a/i18n/ve-wmf/eml.json b/i18n/ve-wmf/eml.json index c878789b60..c41538bddd 100644 --- a/i18n/ve-wmf/eml.json +++ b/i18n/ve-wmf/eml.json @@ -5,11 +5,11 @@ "Lévi" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|EditōrVisuèl]]", + "tag-visualeditor": "EditōrVisuèl", "tag-visualeditor-description": "Cambiamèint fât cun l' [[{{MediaWiki:visualeditor-descriptionpagelink}}|EditōrVisuèl]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|EditōrVisuèl: da controlêr]]", + "tag-visualeditor-needcheck": "EditōrVisuèl: da controlêr", "tag-visualeditor-needcheck-description": "Mudéfichi fâti cun l' [[{{MediaWiki:visualeditor-descriptionpagelink}}|EditōrVisuèl]], in dóv' al sistēma l'à vést dal mudéfichi, fōrsi mía vrudi, fâti 'nd al 'wikitex'.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|EditōrVisuèl: cambiê]]", + "tag-visualeditor-switched": "EditōrVisuèl: cambiê", "tag-visualeditor-switched-description": "'L utèint 'l ìva cumincê a scrìver c'n al VisualEditor pò 'l è pasê a scrìver cun 'l editōr wikitext.", "visualeditor-feedback-link": "Project:VisualEditor/I cumèint", "visualeditor-feedback-tool": " Dì quèl te pèins in sìm'a 'l nōv sistēma", diff --git a/i18n/ve-wmf/eo.json b/i18n/ve-wmf/eo.json index 9f4c5ea05a..150b89f8ff 100644 --- a/i18n/ve-wmf/eo.json +++ b/i18n/ve-wmf/eo.json @@ -15,15 +15,15 @@ "tag-editcheck-newcontent-description": "Redakto-kontrolo kredas, ke nova enhavo estis aldonita al la paĝo", "tag-editcheck-newreference-description": "Referenco estis aldonita al la paĝo", "tag-editcheck-references-description": "Redakto-kontrolo opinias, ke referenco eble estis bezonata", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Redakto-kontrolo (referencoj) aktivigita]]", + "tag-editcheck-references-activated": "Redakto-kontrolo (referencoj) aktivigita", "tag-editcheck-references-activated-description": "Redakto-kontrolo kredas, ke referenco eble estis bezonata, kaj la UI estis montrita", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vida redakto]]", + "tag-visualeditor": "Vida redakto", "tag-visualeditor-description": "Redakto farita per [[{{MediaWiki:visualeditor-descriptionpagelink}}|vida redaktilo]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vida redaktilo:Kontroli]]", + "tag-visualeditor-needcheck": "vida redaktilo:Kontroli", "tag-visualeditor-needcheck-description": "Redakto farita per [[{{MediaWiki:visualeditor-descriptionpagelink}}|vida redaktilo]] kie sistemo detektis eblajn neintencajn ŝanĝojn de vikiteksto.", "tag-visualeditor-wikitext": "redakto de fonto je 2017", "tag-visualeditor-wikitext-description": "Redakto farita per la vikiteksta redaktilo de 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vida redaktilo: Komutita]]", + "tag-visualeditor-switched": "vida redaktilo: Komutita", "tag-visualeditor-switched-description": "Uzanto komenci redakti uzante la vidan redaktilon kaj poste ŝanĝis al vikiteksta redaktilo.", "visualeditor-feedback-link": "Project:VidRedaktilo/Rimarkoj", "visualeditor-feedback-tool": "Provizu rimarkojn pri tiu ĉi programo", diff --git a/i18n/ve-wmf/es.json b/i18n/ve-wmf/es.json index 17207307cd..03eba408de 100644 --- a/i18n/ve-wmf/es.json +++ b/i18n/ve-wmf/es.json @@ -20,13 +20,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edición visual]]", + "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Modificación hecha con el [[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edición visual: comprobar]]", + "tag-visualeditor-needcheck": "Edición visual: comprobar", "tag-visualeditor-needcheck-description": "Edición realizada con el [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] en la que el sistema detectó posibles cambios no intencionales en el wikitexto.", "tag-visualeditor-wikitext": "editor de código 2017", "tag-visualeditor-wikitext-description": "Modificación realizada con el editor de código 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edición visual: cambiado]]", + "tag-visualeditor-switched": "Edición visual: cambiado", "tag-visualeditor-switched-description": "El usuario comenzó a editar utilizando el editor visual y luego cambió al editor de wikitexto.", "visualeditor-feedback-link": "Project:Editor visual/Comentarios", "visualeditor-feedback-tool": "Deja tus comentarios acerca de este software", diff --git a/i18n/ve-wmf/et.json b/i18n/ve-wmf/et.json index 2ba034483e..efa0ed488b 100644 --- a/i18n/ve-wmf/et.json +++ b/i18n/ve-wmf/et.json @@ -10,15 +10,15 @@ "tag-editcheck-newcontent-description": "EditCheck arvab, et leheküljele lisati uut sisu", "tag-editcheck-newreference-description": "Leheküljele lisati viide", "tag-editcheck-references-description": "EditCheck arvab, et vaja võis olla viidet", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Muudatuse kontroll (viited) aktiveeritud]]", + "tag-editcheck-references-activated": "Muudatuse kontroll (viited) aktiveeritud", "tag-editcheck-references-activated-description": "EditCheck arvab, et vaja võis olla viidet ning näidati selle kasutajaliidest.", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalmuudatus]]", + "tag-visualeditor": "Visuaalmuudatus", "tag-visualeditor-description": "Muudatus tehtud [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuaaltoimetiga]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalmuudatus: kontrollida]]", + "tag-visualeditor-needcheck": "Visuaalmuudatus: kontrollida", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaaltoimetiga]] tehtud muudatus, mille tõttu võis vikitekst muutuda ettekavatsemata viisil.", "tag-visualeditor-wikitext": "Lähteteksti muudatus (2017)", "tag-visualeditor-wikitext-description": "Muudatus tehti lähteteksti toimeti 2017. aasta versiooniga.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalmuudatus: ümberlülitus]]", + "tag-visualeditor-switched": "Visuaalmuudatus: ümberlülitus", "tag-visualeditor-switched-description": "Kasutaja alustas redigeerimist visuaaltoimetiga, aga läks seejärel üle vikiteksti toimetile.", "visualeditor-feedback-link": "Project:VisualEditor/Tagasiside", "visualeditor-feedback-tool": "Anna selle tarkvara kohta tagasisidet", diff --git a/i18n/ve-wmf/eu.json b/i18n/ve-wmf/eu.json index b9a7ea8841..45166c37de 100644 --- a/i18n/ve-wmf/eu.json +++ b/i18n/ve-wmf/eu.json @@ -9,13 +9,13 @@ "Xabier Armendaritz" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Ikusizko edizioa]]", + "tag-visualeditor": "Ikusizko edizioa", "tag-visualeditor-description": "Edizio hau egiteko, [[{{MediaWiki:visualeditor-descriptionpagelink}}|ikusizko editorea]] erabili da", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Ikusizko editorea: egiaztatzea]]", + "tag-visualeditor-needcheck": "Ikusizko editorea: egiaztatzea", "tag-visualeditor-needcheck-description": "Edizio hau egiteko, [[{{MediaWiki:visualeditor-descriptionpagelink}}|ikusizko editorea]] erabili da. Sistemak detektatu du edizio honetan wikitestuan egindako zenbait aldaketa beharbada nahi gabe egin direla.", "tag-visualeditor-wikitext": "2017 wikitestu editorearekin", "tag-visualeditor-wikitext-description": "2017 wikitestu editorearekin egindako aldaketa", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Ikusizko Editorea: kommutatua]]", + "tag-visualeditor-switched": "Ikusizko Editorea: kommutatua", "tag-visualeditor-switched-description": "Lankidea Ikusizko Editorearekin hasi eta gero wikitestu editorera aldatua.", "visualeditor-feedback-link": "Project:Ikusizko editorea/Oharrak", "visualeditor-feedback-tool": "Oharrak", diff --git a/i18n/ve-wmf/ext.json b/i18n/ve-wmf/ext.json index 87f336c8d8..c3564189af 100644 --- a/i18n/ve-wmf/ext.json +++ b/i18n/ve-wmf/ext.json @@ -4,5 +4,5 @@ "Crucifunked" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Eición visual]]" + "tag-visualeditor": "Eición visual" } diff --git a/i18n/ve-wmf/fa.json b/i18n/ve-wmf/fa.json index 6670a5889a..0082088ec2 100644 --- a/i18n/ve-wmf/fa.json +++ b/i18n/ve-wmf/fa.json @@ -26,15 +26,15 @@ "tag-editcheck-newcontent-description": "بررسی ویرایش فکر می‌کند که محتوای جدیدی به صفحه افزوده شده است", "tag-editcheck-newreference-description": "ارجاعی به صفحه افزوده شد", "tag-editcheck-references-description": "بررسی ویرایش فکر می‌کند که ممکن است به ارجاع نیاز بوده باشد", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|بررسی ویرایش (ارجاعات) فعال شد]]", + "tag-editcheck-references-activated": "بررسی ویرایش (ارجاعات) فعال شد", "tag-editcheck-references-activated-description": "بررسی ویرایش فکر می‌کند که ممکن است به ارجاع نیاز باشد و رابط کاربری آن نمایش یافته است", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ویرایشگر دیداری]]", + "tag-visualeditor": "ویرایشگر دیداری", "tag-visualeditor-description": "ویرایش توسط [[{{MediaWiki:visualeditor-descriptionpagelink}}|ویرایشگر دیداری]] انجام شده است.", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ویرایشگر دیداری: بررسی]]", + "tag-visualeditor-needcheck": "ویرایشگر دیداری: بررسی", "tag-visualeditor-needcheck-description": "ویرایش انجام‌شده با [[{{MediaWiki:visualeditor-descriptionpagelink}}|ویرایشگر دیداری]] که در آن سامانۀ احتمال وقوع تغییرات ناخواسته در ویکی‌متن را شناسایی کرد.", "tag-visualeditor-wikitext": "ویرایش مبدأ ۲۰۱۷", "tag-visualeditor-wikitext-description": "ویرایش توسط ویرایشگر متنی نسخهٔ ۲۰۱۷", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ویرایشگر دیداری: به ویرایشگر منبع تغییر داده شده]]", + "tag-visualeditor-switched": "ویرایشگر دیداری: به ویرایشگر منبع تغییر داده شده", "tag-visualeditor-switched-description": "کاربر شروع به ویرایش با استفاده از ویرایشگر دیداری کرد، سپس به ویرایشگر متن ویکی تغییر داده شد.", "visualeditor-feedback-link": "Project:ویرایشگر دیداری/بازخورد", "visualeditor-feedback-tool": "گذاشتن بازخورد در مورد این نرم‌افزار", diff --git a/i18n/ve-wmf/ff.json b/i18n/ve-wmf/ff.json index cd2ded663d..2615b7fa21 100644 --- a/i18n/ve-wmf/ff.json +++ b/i18n/ve-wmf/ff.json @@ -5,5 +5,5 @@ "Ibrahima Malal Sarr" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Taƴtorde Jiyol]]" + "tag-visualeditor": "Taƴtorde Jiyol" } diff --git a/i18n/ve-wmf/fi.json b/i18n/ve-wmf/fi.json index 889b54b2e0..fcd987c99c 100644 --- a/i18n/ve-wmf/fi.json +++ b/i18n/ve-wmf/fi.json @@ -21,15 +21,15 @@ "tag-editcheck-newcontent-description": "Muokkaustarkistimen mukaan uutta sisältöä lisättiin sivulle", "tag-editcheck-newreference-description": "Lähde lisättiin tälle sivulle", "tag-editcheck-references-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Muokkaustarkistin (lähteet) aktivoitu]]", + "tag-editcheck-references-activated": "Muokkaustarkistin (lähteet) aktivoitu", "tag-editcheck-references-activated-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen, ja käyttöliittymä näytettiin", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalinen muokkaus]]", + "tag-visualeditor": "Visuaalinen muokkaus", "tag-visualeditor-description": "Muutos tehtiin [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuaalisella muokkaimella]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalinen muokkaus: Tarkista]]", + "tag-visualeditor-needcheck": "Visuaalinen muokkaus: Tarkista", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalisella muokkaimella]] tehty muokkaus, jossa järjestelmä havaitsi wikitekstissä mahdollisesti olevan tahattomia muutoksia.", "tag-visualeditor-wikitext": "wikitekstimuokkaus 2017", "tag-visualeditor-wikitext-description": "Vuoden 2017 wikitekstimuokkaimella tehty muokkaus", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalinen muokkaus: vaihdettu]]", + "tag-visualeditor-switched": "Visuaalinen muokkaus: vaihdettu", "tag-visualeditor-switched-description": "Käyttäjä aloitti muokkaamisen visuaalisella muokkaimella; sen jälkeen vaihtoi wikitekstin muokkaustilaan.", "visualeditor-feedback-link": "Project:Visuaalinen muokkain/Palaute", "visualeditor-feedback-tool": "Anna palautetta tästä ohjelmistosta", diff --git a/i18n/ve-wmf/fit.json b/i18n/ve-wmf/fit.json index daeb5b39db..7ac5770f09 100644 --- a/i18n/ve-wmf/fit.json +++ b/i18n/ve-wmf/fit.json @@ -4,5 +4,5 @@ "Pyscowicz" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalinen mookkaus]]" + "tag-visualeditor": "Visuaalinen mookkaus" } diff --git a/i18n/ve-wmf/fo.json b/i18n/ve-wmf/fo.json index e4ac67324d..e905ba5c6b 100644 --- a/i18n/ve-wmf/fo.json +++ b/i18n/ve-wmf/fo.json @@ -5,9 +5,9 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Rætting sum er gjørd við [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Kanna eftir]]", + "tag-visualeditor-needcheck": "VisualEditor: Kanna eftir", "tag-visualeditor-needcheck-description": "Rættin ið varð gjørd við at brúka [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] har ið skipanin hevur funnið fram til at wikiteksturin kann hava ótilætlaðar broytingar.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Gev afturmelding", diff --git a/i18n/ve-wmf/fon.json b/i18n/ve-wmf/fon.json index 1eece4d92e..df94012ff9 100644 --- a/i18n/ve-wmf/fon.json +++ b/i18n/ve-wmf/fon.json @@ -4,5 +4,5 @@ "Mahuton" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Nukun mɔ bo wlan]]" + "tag-visualeditor": "Nukun mɔ bo wlan" } diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index 129e81d1ff..edec88e242 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -42,15 +42,15 @@ "tag-editcheck-newcontent-description": "EditCheck pense que du nouveau contenu a été ajouté à la page", "tag-editcheck-newreference-description": "Une référence a été ajoutée à la page", "tag-editcheck-references-description": "EditCheck pense qu’une référence peut être nécessaire", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Vérification de modification (références) activé]]", + "tag-editcheck-references-activated": "Vérification de modification (références) activé", "tag-editcheck-references-activated-description": "EditCheck pense qu’une référence peut être nécessaire, et l’IHM a été affichée", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Éditeur visuel]]", + "tag-visualeditor": "Éditeur visuel", "tag-visualeditor-description": "Modification effectuée avec l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|éditeur visuel]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Éditeur visuel : à vérifier]]", + "tag-visualeditor-needcheck": "Éditeur visuel : à vérifier", "tag-visualeditor-needcheck-description": "Modification faite en utilisant l’[[{{MediaWiki:visualeditor-descriptionpagelink}}|éditeur visuel]], dans laquelle le système a détecté que le wikicode contient peut-être des modifications inattendues.", "tag-visualeditor-wikitext": "Éditeur de wikicode 2017", "tag-visualeditor-wikitext-description": "Modification effectuée en utilisant l’éditeur de wikicode 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Éditeur visuel : basculé]]", + "tag-visualeditor-switched": "Éditeur visuel : basculé", "tag-visualeditor-switched-description": "L’utilisateur a commencé à modifier en utilisant l’éditeur visuel puis est passé sur l’éditeur de wikicode.", "visualeditor-feedback-link": "Project:ÉditeurVisuel/Avis", "visualeditor-feedback-tool": "Laisser un avis à propos de ce logiciel", diff --git a/i18n/ve-wmf/frp.json b/i18n/ve-wmf/frp.json index 513b1aefc0..4734bd5df9 100644 --- a/i18n/ve-wmf/frp.json +++ b/i18n/ve-wmf/frp.json @@ -4,6 +4,6 @@ "ChrisPtDe" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Èditor visuâl]]", + "tag-visualeditor": "Èditor visuâl", "visualeditor-feedback-tool": "Balyér voutron avis" } diff --git a/i18n/ve-wmf/frr.json b/i18n/ve-wmf/frr.json index c143fd72bf..df76b417a6 100644 --- a/i18n/ve-wmf/frr.json +++ b/i18n/ve-wmf/frr.json @@ -5,11 +5,11 @@ "Murma174" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Bewerkin mä VisualEditor]]", + "tag-visualeditor": "Bewerkin mä VisualEditor", "tag-visualeditor-description": "Bewerket mä [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Preew]]", + "tag-visualeditor-needcheck": "VisualEditor: Preew", "tag-visualeditor-needcheck-description": "Mä [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] bewerket, an det süsteem san ferlicht ünferwaans feranrangen üübfäälen.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Waksel]]", + "tag-visualeditor-switched": "VisualEditor: Waksel", "tag-visualeditor-switched-description": "Mä VisualEditor begand an do mä di kweltekst widjer werket.", "visualeditor-feedback-link": "Project:VisualEditor/Komentaaren", "visualeditor-feedback-tool": "Komentaar skriiw", diff --git a/i18n/ve-wmf/fur.json b/i18n/ve-wmf/fur.json index 1ad7fc4400..b9fd663c73 100644 --- a/i18n/ve-wmf/fur.json +++ b/i18n/ve-wmf/fur.json @@ -5,9 +5,9 @@ "Tocaibon" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: controlâ]]", + "tag-visualeditor-needcheck": "VisualEditor: controlâ", "tag-visualeditor-needcheck-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] dulâ che il sisteme al à cjatât des modifichis forsit no voludis intal wikitest.", "visualeditor-feedback-link": "Project:VisualEditor/Coments", "visualeditor-feedback-tool": "Lasse un coment", diff --git a/i18n/ve-wmf/fy.json b/i18n/ve-wmf/fy.json index 9e41b50c32..9e0d7ce4dd 100644 --- a/i18n/ve-wmf/fy.json +++ b/i18n/ve-wmf/fy.json @@ -5,13 +5,13 @@ "PiefPafPier" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Fisuële bewurking]]", + "tag-visualeditor": "Fisuële bewurking", "tag-visualeditor-description": "Bewurking dien mei de [[{{MediaWiki:visualeditor-descriptionpagelink}}|fisuële tekstbewurker]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Fisuële bewurking: Neisjen]]", + "tag-visualeditor-needcheck": "Fisuële bewurking: Neisjen", "tag-visualeditor-needcheck-description": "Bewurking dien mei de [[{{MediaWiki:visualeditor-descriptionpagelink}}|fisuële tekstbewurker]], wêrby't it systeem mooglik net-bedoelde feroarings yn 'e wikitekst ûntdutsen hat.", "tag-visualeditor-wikitext": "Boarnebewurker 2017", "tag-visualeditor-wikitext-description": "Bewurking dien mei de wikitekstbewurker 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Fisuële bewurking: Omskeakele]]", + "tag-visualeditor-switched": "Fisuële bewurking: Omskeakele", "tag-visualeditor-switched-description": "Meidogger begûn it bewurkjen mei de fisuële tekstbewurker, en gong dêrnei oer op de wikitekstbewurker.", "visualeditor-feedback-link": "Project:Fisuële tekstbewurker/Weromkeppeling", "visualeditor-feedback-tool": "Weromkeppelje oer dit programma", diff --git a/i18n/ve-wmf/gcr.json b/i18n/ve-wmf/gcr.json index 2fa2db7d7c..9ee5886c16 100644 --- a/i18n/ve-wmf/gcr.json +++ b/i18n/ve-wmf/gcr.json @@ -4,5 +4,5 @@ "LeGuyanaisPure" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Éditò vizwèl]]" + "tag-visualeditor": "Éditò vizwèl" } diff --git a/i18n/ve-wmf/gd.json b/i18n/ve-wmf/gd.json index 0c28c9a8fd..36a6a76950 100644 --- a/i18n/ve-wmf/gd.json +++ b/i18n/ve-wmf/gd.json @@ -5,7 +5,7 @@ "GunChleoc" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Deasachadh lèirsinneach]]", + "tag-visualeditor": "Deasachadh lèirsinneach", "tag-visualeditor-description": "Chaidh a dheasachadh leis an [[{{MediaWiki:visualeditor-descriptionpagelink}}|deasaiche lèirsinneach]]", "tag-visualeditor-needcheck-description": "Chaidh a dheasachadh leis an [[{{MediaWiki:visualeditor-descriptionpagelink}}|deasaiche lèirsinneach]] agus mhothaich an siostam dha wikitext a dh'atharraicheadh nithean air dòigh nach robhar an dùil air ma dh'fhaoidte.", "visualeditor-feedback-link": "Project:Deasaiche lèirsinneach/Beachdan", diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index 01a1da993d..690a6ea448 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -11,15 +11,15 @@ "tag-editcheck-newcontent-description": "EditCheck cre que se engadiu contido novo á páxina", "tag-editcheck-newreference-description": "Engadiuse unha referencia á páxina", "tag-editcheck-references-description": "EditCheck cre que cómpre unha referencia", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Verificación de modificacións (referencias) activada]]", + "tag-editcheck-references-activated": "Verificación de modificacións (referencias) activada", "tag-editcheck-references-activated-description": "EditCheck cre que podería ser necesaria unha referencia e mostrouse a interface de usuario", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edición visual]]", + "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Edición feita mediante o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual: Comprobar]]", + "tag-visualeditor-needcheck": "Editor visual: Comprobar", "tag-visualeditor-needcheck-description": "Edición feita mediante o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] na que o sistema detectou que o texto wiki posiblemente teña modificacións non intencionadas.", "tag-visualeditor-wikitext": "edición de código 2017", "tag-visualeditor-wikitext-description": "Edición feita usando o editor de texto wiki do ano 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual: Cambio]]", + "tag-visualeditor-switched": "Editor visual: Cambio", "tag-visualeditor-switched-description": "O usuario empezou editando mediante o editor visual e logo cambiou ao editor de texto wiki.", "visualeditor-feedback-link": "Project:Editor visual/Comentarios", "visualeditor-feedback-tool": "Deixe un comentario sobre este programa", diff --git a/i18n/ve-wmf/gld.json b/i18n/ve-wmf/gld.json index 7d81f68993..ef7a7f7ec4 100644 --- a/i18n/ve-wmf/gld.json +++ b/i18n/ve-wmf/gld.json @@ -4,5 +4,5 @@ "RFScott" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|дурумбэ ичэми дёбовори]]" + "tag-visualeditor": "дурумбэ ичэми дёбовори" } diff --git a/i18n/ve-wmf/glk.json b/i18n/ve-wmf/glk.json index 00101724db..194f5dc369 100644 --- a/i18n/ve-wmf/glk.json +++ b/i18n/ve-wmf/glk.json @@ -4,5 +4,5 @@ "شیخ" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|دئني دچينواچينگر]]" + "tag-visualeditor": "دئني دچينواچينگر" } diff --git a/i18n/ve-wmf/gom-deva.json b/i18n/ve-wmf/gom-deva.json index 1345779ed3..984f54099e 100644 --- a/i18n/ve-wmf/gom-deva.json +++ b/i18n/ve-wmf/gom-deva.json @@ -5,5 +5,5 @@ "Vaishali Parab" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृष्टी संपादन]]" + "tag-visualeditor": "दृष्टी संपादन" } diff --git a/i18n/ve-wmf/gom-latn.json b/i18n/ve-wmf/gom-latn.json index f9d9e15f0b..6045a90250 100644 --- a/i18n/ve-wmf/gom-latn.json +++ b/i18n/ve-wmf/gom-latn.json @@ -4,9 +4,9 @@ "The Discoverer" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Dixtti sompadon]]", + "tag-visualeditor": "Dixtti sompadon", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Dixtti sompadoka]] vorvim kel'lem sompadon", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Dixtti sompadon: Topas]]", + "tag-visualeditor-needcheck": "Dixtti sompadon: Topas", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Dixtti sompadok]] vaprun kel'lem sompadon zoim pronallik wikimozkur melltta zaka tozvit korunk naslole bodol asat", "tag-visualeditor-wikitext": "2017 mull sompadon", "tag-visualeditor-wikitext-description": "2017 wikimozkur sompadoka vorvim kel'lem sompadon", diff --git a/i18n/ve-wmf/gor.json b/i18n/ve-wmf/gor.json index 084970974a..032ea86eec 100644 --- a/i18n/ve-wmf/gor.json +++ b/i18n/ve-wmf/gor.json @@ -4,5 +4,5 @@ "Marwan Mohamad" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Suntingan visual]]" + "tag-visualeditor": "Suntingan visual" } diff --git a/i18n/ve-wmf/grc.json b/i18n/ve-wmf/grc.json index 0d8f54fd52..f954c9657e 100644 --- a/i18n/ve-wmf/grc.json +++ b/i18n/ve-wmf/grc.json @@ -5,5 +5,5 @@ "PastelKos" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Ὀπτικὴ μεταγραφή]]" + "tag-visualeditor": "Ὀπτικὴ μεταγραφή" } diff --git a/i18n/ve-wmf/gsw.json b/i18n/ve-wmf/gsw.json index d1e91ae7ee..309d77604c 100644 --- a/i18n/ve-wmf/gsw.json +++ b/i18n/ve-wmf/gsw.json @@ -6,9 +6,9 @@ "Terfili" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|visuelli Bearbeitig]]", + "tag-visualeditor": "visuelli Bearbeitig", "tag-visualeditor-description": "Gänderet mit em [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Iberpriefig]]", + "tag-visualeditor-needcheck": "VisualEditor: Iberpriefig", "tag-visualeditor-needcheck-description": "Änderig, wu mit em [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] gmacht woren isch, wu s Syschtem villicht Änderige im Wikitäxt entdeckt het, wu nit beabsichtigt gsii sin.", "visualeditor-feedback-link": "Project:VisualEditor/Ruggmäldige", "visualeditor-feedback-tool": "Ruggmäldig gäh", diff --git a/i18n/ve-wmf/gu.json b/i18n/ve-wmf/gu.json index bd1e97d09d..55bad35b1c 100644 --- a/i18n/ve-wmf/gu.json +++ b/i18n/ve-wmf/gu.json @@ -6,13 +6,13 @@ "The Discoverer" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|વિઝ્યુલ સંપાદન]]", + "tag-visualeditor": "વિઝ્યુલ સંપાદન", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|વિઝ્યુલ સંપાદક]] વડે કરેલ ફેરફાર", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|વિઝ્યુલ સંપાદક: ચકાસો]]", + "tag-visualeditor-needcheck": "વિઝ્યુલ સંપાદક: ચકાસો", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|વિઝ્યુલ સંપાદક]] દ્વારા કરેલ ફેરફાર જ્યાં સિસ્ટમે ન ધારેલા વિકિલખાણ ફેરફારો મેળવ્યા.", "tag-visualeditor-wikitext": "૨૦૧૭ સ્ત્રોત ફેરફાર", "tag-visualeditor-wikitext-description": "૨૦૧૭ના સ્ત્રોત સંપાદક વડે થયેલ ફેરફાર", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|વિઝ્યુલ સંપાદક: બદલેલ]]", + "tag-visualeditor-switched": "વિઝ્યુલ સંપાદક: બદલેલ", "tag-visualeditor-switched-description": "સભ્યે વિઝ્યુલ સંપાદક વાપરવાનું શરુ કર્યું પછી વિકિલખાણ સંપાદકમાં ગયા.", "visualeditor-feedback-link": "Project:વિઝ્યુલસંપાદક/પ્રતિભાવ", "visualeditor-feedback-tool": "આ સોફ્ટવેર વિશે પ્રતિભાવ આપો", diff --git a/i18n/ve-wmf/guc.json b/i18n/ve-wmf/guc.json index 50052bef25..40ca12eefc 100644 --- a/i18n/ve-wmf/guc.json +++ b/i18n/ve-wmf/guc.json @@ -4,5 +4,5 @@ "Leonfd1992" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|E'rajiaapülee anaatünaka]]" + "tag-visualeditor": "E'rajiaapülee anaatünaka" } diff --git a/i18n/ve-wmf/gur.json b/i18n/ve-wmf/gur.json index e90f7033b5..3220f4d0e4 100644 --- a/i18n/ve-wmf/gur.json +++ b/i18n/ve-wmf/gur.json @@ -8,15 +8,15 @@ "tag-editcheck-newcontent-description": "Leregere bisa la tɛ'ɛse ti yelezuo la yuum saalam mɛ pɛgerɛ la zuo.", "tag-editcheck-newreference-description": "Viisegɔ lɔgerɔ la yuum pa'ase la pɛgerɛ la puan", "tag-editcheck-references-description": "Leregere bisega te'esɛ ti viisegɔ lɔgerɔ taam ta bu'ulɛ", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check (references) activated]]", + "tag-editcheck-references-activated": "Edit Check (references) activated", "tag-editcheck-references-activated-description": "Leregere limesegɔ te'ese ti viisegɔ lɔgerɔ wa'an ta'am bu'ulɛ,gee ti ba pa'ale UI", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|nyɛta demesego]]", + "tag-visualeditor": "nyɛta demesego", "tag-visualeditor-description": "Leregere sɛka ti tu tari [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Check]]", + "tag-visualeditor-needcheck": "Visual edit: Check", "tag-visualeditor-needcheck-description": "Leregere basɛ ti fu san bɔta ti fu dikɛ tum[[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] zi'a ti kusolego kwikikaalegɔ tari la sɛla n kan nyaŋɛ tee.", "tag-visualeditor-wikitext": "Leregere ze'ele la 2017 yuunɛ la puan.", "tag-visualeditor-wikitext-description": "Leregere base mɛ ti fu san tari 2017 yuunɛ la wikikaalego leregere", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Switched]]", + "tag-visualeditor-switched": "Visual edit: Switched", "tag-visualeditor-switched-description": "Mina n leregere la tari la bisegaleregere,gee nyaa tee wikikaalego leregere.", "visualeditor-feedback-link": "Tuuma:bisegaleregere/lebesego", "visualeditor-feedback-tool": "Base lebesego n de soofiwɛɛ la", diff --git a/i18n/ve-wmf/guw.json b/i18n/ve-wmf/guw.json index f0a64fabde..bf594e34e8 100644 --- a/i18n/ve-wmf/guw.json +++ b/i18n/ve-wmf/guw.json @@ -4,5 +4,5 @@ "Misteld" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit]]" + "tag-visualeditor": "Visual edit" } diff --git a/i18n/ve-wmf/gv.json b/i18n/ve-wmf/gv.json new file mode 100644 index 0000000000..289b4950d0 --- /dev/null +++ b/i18n/ve-wmf/gv.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Shimmin Beg" + ] + }, + "tag-visualeditor-needcheck": "Reagheyder Reayrtagh: Son shickyraghey", + "tag-visualeditor-needcheck-description": "Ceaghley jeant liorish y [[{{MediaWiki:visualeditor-descriptionpagelink}}|Reagheyder Reayrtagh]], as caghlaaghyn neuyioinagh jeant 'sy choad wiki, foddee." +} diff --git a/i18n/ve-wmf/ha.json b/i18n/ve-wmf/ha.json index 025807d649..1d4f48609c 100644 --- a/i18n/ve-wmf/ha.json +++ b/i18n/ve-wmf/ha.json @@ -9,14 +9,14 @@ "tag-editcheck-newcontent-description": "EditCheck yana tunanin an kara sabon abun ciki a shafin", "tag-editcheck-newreference-description": "An kara wani bayani a shafin", "tag-editcheck-references-description": "EditCheck yana tunanin ana iya buƙatar bayani", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Aikin Duba (nassoshi) na gyarawa]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Gyaran gani]]", + "tag-editcheck-references-activated": "Aikin Duba (nassoshi) na gyarawa", + "tag-visualeditor": "Gyaran gani", "tag-visualeditor-description": "An yi gyara ta amfani da [[{{MediaWiki:visualeditor-descriptionpagelink}}|Gyaran gani]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Check]]", + "tag-visualeditor-needcheck": "Visual edit: Check", "tag-visualeditor-needcheck-description": "An yi gyara ta amfani da [[{{MediaWiki:visualeditor-descriptionpagelink}}|Gyaran gani]] inda tsarin ya gano wikitext mai yiwuwa yana da canje-canje da ba a yi niyya ba.", "tag-visualeditor-wikitext": "tushen gyara 2017", "tag-visualeditor-wikitext-description": "An yi gyara ta amfani da editan wikitext na 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Switched]]", + "tag-visualeditor-switched": "Visual edit: Switched", "tag-visualeditor-switched-description": "Mai amfani ya fara gyara ta amfani da editan gani, sannan ya canza zuwa editan wikitext.", "visualeditor-feedback-link": "Aikin: VisualEditor/Feedback", "visualeditor-feedback-tool": "Bar ra'ayi game da wannan software", diff --git a/i18n/ve-wmf/hak.json b/i18n/ve-wmf/hak.json index 80285b3ad7..013c47b001 100644 --- a/i18n/ve-wmf/hak.json +++ b/i18n/ve-wmf/hak.json @@ -4,5 +4,5 @@ "Hakka" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Sṳ-kok-fa phiên-siá]]" + "tag-visualeditor": "Sṳ-kok-fa phiên-siá" } diff --git a/i18n/ve-wmf/he.json b/i18n/ve-wmf/he.json index 496ff43952..5245c5f311 100644 --- a/i18n/ve-wmf/he.json +++ b/i18n/ve-wmf/he.json @@ -20,15 +20,15 @@ "tag-editcheck-newcontent-description": "מערכת בדיקת עריכה חושבת שנוסף תוכן חדש לדף.", "tag-editcheck-newreference-description": "נוספה הערת שוליים לדף", "tag-editcheck-references-description": "מערכת בדיקת עריכה חושבת שאולי היה צורך בהערת שוליים", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|מערכת בדיקת עריכה (הערות שוליים) הופעלה]]", + "tag-editcheck-references-activated": "מערכת בדיקת עריכה (הערות שוליים) הופעלה", "tag-editcheck-references-activated-description": "מערכת בדיקת עריכה חושבת שאולי נוספת הערת שוליים, וממשק המשתמש של זה הוצג", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|עריכה חזותית]]", + "tag-visualeditor": "עריכה חזותית", "tag-visualeditor-description": "עריכה שנעשתה באמצעות [[{{MediaWiki:visualeditor-descriptionpagelink}}|העורך החזותי]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|עריכה חזותית: נא לבדוק]]", + "tag-visualeditor-needcheck": "עריכה חזותית: נא לבדוק", "tag-visualeditor-needcheck-description": "עריכה שנעשתה באמצעות [[{{MediaWiki:visualeditor-descriptionpagelink}}|העורך החזותי]] ושהמערכת זיהתה שבקוד שלה אולי יש שינויים שלא היו אמורים להיעשות.", "tag-visualeditor-wikitext": "עריכת קוד מקור 2017", "tag-visualeditor-wikitext-description": "עריכה שנעשתה באמצעות עורך קוד המקור החדש של שנת 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|עריכה חזותית: הועבר לעריכת קוד מקור]]", + "tag-visualeditor-switched": "עריכה חזותית: הועבר לעריכת קוד מקור", "tag-visualeditor-switched-description": "משתמש התחיל לערוך באמצעות העורך החזותי ואז שינה לעורך קוד ויקי.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "שליחת משוב על התוכנה הזאת", diff --git a/i18n/ve-wmf/hi.json b/i18n/ve-wmf/hi.json index 8c35de466d..226f0c31bc 100644 --- a/i18n/ve-wmf/hi.json +++ b/i18n/ve-wmf/hi.json @@ -11,13 +11,13 @@ "संजीव कुमार" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य संपादिका]]", + "tag-visualeditor": "यथादृश्य संपादिका", "tag-visualeditor-description": "संपादन [[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य संपादिका]] के उपयोग द्वारा किया गया", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य संपादिका: जाँचें]]", + "tag-visualeditor-needcheck": "यथादृश्य संपादिका: जाँचें", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य संपादिका]] से किया गया सम्पादन जिसमें सिस्टम ने पाया है कि विकिटेक्स्ट में अनपेक्षित बदलाव हो सकते हैं।", "tag-visualeditor-wikitext": "2017 स्रोत संपादन", "tag-visualeditor-wikitext-description": "2017 विकिटेक्स्ट एडिटर से किया गया सम्पादन", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य संपादिका: बदला]]", + "tag-visualeditor-switched": "यथादृश्य संपादिका: बदला", "tag-visualeditor-switched-description": "सदस्य ने यथादृश्य संपादिका की मदद से सम्पादन कार्य आरम्भ किया और उसके बाद स्रोत सम्पादित करने के विकल्प को चुना।", "visualeditor-feedback-link": "Project:VisualEditor/प्रतिक्रिया", "visualeditor-feedback-tool": "इस सॉफ़्टवेयर के बारे में अपने सुझाव लिखें", diff --git a/i18n/ve-wmf/hr.json b/i18n/ve-wmf/hr.json index d74354ff34..799fa83635 100644 --- a/i18n/ve-wmf/hr.json +++ b/i18n/ve-wmf/hr.json @@ -12,15 +12,15 @@ "tag-editcheck-newcontent-description": "EditCheck pretpostavlja da je na stranicu dodan nov sadržaj", "tag-editcheck-newreference-description": "Na stranicu je dodana referencija", "tag-editcheck-references-description": "EditCheck pretpostavlja da je bila potrebna referencija", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check pokrenut za referencije]]", + "tag-editcheck-references-activated": "Edit Check pokrenut za referencije", "tag-editcheck-references-activated-description": "EditCheck je pretpostavio da je bila potrebna referencija pa je prikazano korisničko sučelje", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Uređivanje napravljeno [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditorom]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno uređivanje: provjera]]", + "tag-visualeditor-needcheck": "vizualno uređivanje: provjera", "tag-visualeditor-needcheck-description": "Uređivanje učinjeno [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditorom]] pri čemu je sustav označio wikitekst kao mogućom nenamjernom izmjenom.", "tag-visualeditor-wikitext": "VisualEditor: wikitekst", "tag-visualeditor-wikitext-description": "Uređivanje učinjeno uređivačem wikiteksta (2017.)", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: prebačeno na wikitekst]]", + "tag-visualeditor-switched": "VisualEditor: prebačeno na wikitekst", "tag-visualeditor-switched-description": "Suradnik je počeo uređivati koristeći vizualni uređivač i onda se prebacio u uređivač wikiteksta.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Napišite povratnu informaciju o ovom softveru", diff --git a/i18n/ve-wmf/hrx.json b/i18n/ve-wmf/hrx.json index e1ce9f8992..9587e68f38 100644 --- a/i18n/ve-wmf/hrx.json +++ b/i18n/ve-wmf/hrx.json @@ -4,5 +4,5 @@ "Iohanen" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell beaarvetung]]" + "tag-visualeditor": "Visuell beaarvetung" } diff --git a/i18n/ve-wmf/hsb.json b/i18n/ve-wmf/hsb.json index 28df58fa2e..12f9a1bee7 100644 --- a/i18n/ve-wmf/hsb.json +++ b/i18n/ve-wmf/hsb.json @@ -5,11 +5,11 @@ "Michawiki" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Z VisualEditorom wobdźěłane]]", + "tag-visualeditor": "Z VisualEditorom wobdźěłane", "tag-visualeditor-description": "Z pomocu [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditora]] wobdźěłany", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Přepruwowanje]]", + "tag-visualeditor-needcheck": "VisualEditor: Přepruwowanje", "tag-visualeditor-needcheck-description": "Změna, kotraž je so z pomocu [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]a přewjedła, hdźež system snano wikitekst wotkry, kotryž njewotpohladne změny wobsahuje.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Přešaltowany]]", + "tag-visualeditor-switched": "VisualEditor: Přešaltowany", "tag-visualeditor-switched-description": "Wužiwar je započał, z pomocu VisualEditora wobdźěłować a je potom k wikitekstowemu editorej přešoł.", "visualeditor-feedback-link": "Project:VisualEditor/Komentary", "visualeditor-feedback-tool": "Komentar zawostajić", diff --git a/i18n/ve-wmf/hsn.json b/i18n/ve-wmf/hsn.json index 6e98978da6..57fbb6b544 100644 --- a/i18n/ve-wmf/hsn.json +++ b/i18n/ve-wmf/hsn.json @@ -4,5 +4,5 @@ "ChoiChong" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑]]" + "tag-visualeditor": "可视化编辑" } diff --git a/i18n/ve-wmf/ht.json b/i18n/ve-wmf/ht.json index 4778bd7c63..31225ebdfc 100644 --- a/i18n/ve-wmf/ht.json +++ b/i18n/ve-wmf/ht.json @@ -4,7 +4,7 @@ "Amire80" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modifikasyon vizyèl]]", + "tag-visualeditor": "Modifikasyon vizyèl", "visualeditor-feedback-tool": "Pataje reyaksyon ou sou lojisyèl sa a", "visualeditor-help-label": "Li gid itilizatè a", "visualeditor-welcomedialog-action": "Kòmanse modifikasyon", diff --git a/i18n/ve-wmf/hu.json b/i18n/ve-wmf/hu.json index 9f3568ce6f..3ff12b6c28 100644 --- a/i18n/ve-wmf/hu.json +++ b/i18n/ve-wmf/hu.json @@ -10,13 +10,13 @@ "ViDam" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuális szerkesztés]]", + "tag-visualeditor": "Vizuális szerkesztés", "tag-visualeditor-description": "A szerkesztés a [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizuális szerkesztővel]] készült.", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuális szerkesztés: Ellenőrizendő]]", + "tag-visualeditor-needcheck": "Vizuális szerkesztés: Ellenőrizendő", "tag-visualeditor-needcheck-description": "A szerkesztés a [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizuális szerkesztővel]] készült, és a rendszer észlelte, hogy a wikiszövegben nem kívánt módosítások történhettek.", "tag-visualeditor-wikitext": "2017-es forrásszöveg-szerkesztő", "tag-visualeditor-wikitext-description": "A 2017-es forrásszöveg-szerkesztővel végzett szerkesztések", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuális szerkesztés: Átváltott]]", + "tag-visualeditor-switched": "Vizuális szerkesztés: Átváltott", "tag-visualeditor-switched-description": "A felhasználó a vizuális szerkesztővel kezdett el szerkeszteni, majd átváltott a wikiszöveg-szerkesztőre.", "visualeditor-feedback-link": "Project:VisualEditor/Visszajelzés", "visualeditor-feedback-tool": "Visszajelzés erről a szoftverről", diff --git a/i18n/ve-wmf/hy.json b/i18n/ve-wmf/hy.json index 35a5d7c47f..92fa20bc5e 100644 --- a/i18n/ve-wmf/hy.json +++ b/i18n/ve-wmf/hy.json @@ -7,11 +7,11 @@ "Դավիթ Սարոյան" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Վիզուալ խմբագիր]]", + "tag-visualeditor": "Վիզուալ խմբագիր", "tag-visualeditor-description": "Խմբագրումը կատարվել է [[{{MediaWiki:visualeditor-descriptionpagelink}}|Վիզուալ խմբագրով]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Վիզուալ խմբագիր: Ստուգել]]", + "tag-visualeditor-needcheck": "Վիզուալ խմբագիր: Ստուգել", "tag-visualeditor-needcheck-description": "Խմբագրումը կատարվել է [[{{MediaWiki:visualeditor-descriptionpagelink}}|ՎիզուալԽմբագրիչով]] այն ժամանակ, երբ համակարգը նկատել է վիքիտեքստի հնարավոր ոչ ցանկալի փոփոխություններ:", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Վիզուալ խմբագրիչն անջատված է]]", + "tag-visualeditor-switched": "Վիզուալ խմբագրիչն անջատված է", "tag-visualeditor-switched-description": "Մասնակիցը սկսել է խմբագրել ՎիզուալԽմբարիչով, բայց հետո անցել է վիքիտեքստի խմբագրմանը:", "visualeditor-feedback-link": "Նախագիծ:ՎիզուալԽմբագրիչ/Ֆիդբեք", "visualeditor-feedback-tool": "Կարծիք հայտնել", diff --git a/i18n/ve-wmf/hyw.json b/i18n/ve-wmf/hyw.json index 2bc8dba41f..0adfeda143 100644 --- a/i18n/ve-wmf/hyw.json +++ b/i18n/ve-wmf/hyw.json @@ -6,7 +6,7 @@ "Դավիթ Սարոյան" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|տեսողական խմբագրում]]", + "tag-visualeditor": "տեսողական խմբագրում", "tag-visualeditor-switched": "Տեսողական խմբագրիչը անջատուած է", "visualeditor-feedback-tool": "Կարծիք յայտնել", "visualeditor-help-label": "Ուղեցոյցը կարդա՛", diff --git a/i18n/ve-wmf/ia.json b/i18n/ve-wmf/ia.json index b0424afe50..021b848989 100644 --- a/i18n/ve-wmf/ia.json +++ b/i18n/ve-wmf/ia.json @@ -7,15 +7,15 @@ "tag-editcheck-newcontent-description": "EditCheck pensa que nove contento ha essite addite al pagina", "tag-editcheck-newreference-description": "Un referentia ha essite addite al pagina", "tag-editcheck-references-description": "EditCheck pensa que un referentia pote esser necessari", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Verification de modification (referentias) activate]]", + "tag-editcheck-references-activated": "Verification de modification (referentias) activate", "tag-editcheck-references-activated-description": "EditCheck pensa que un referentia poterea haber essite necessari, e le interfacie de usator graphic ha essite monstrate", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modification visual]]", + "tag-visualeditor": "Modification visual", "tag-visualeditor-description": "Modification facite con le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual: a verificar]]", + "tag-visualeditor-needcheck": "Editor visual: a verificar", "tag-visualeditor-needcheck-description": "Modification facite con le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] ubi le systema ha detegite que le wikitexto pote haber cambiate de maniera impreviste.", "tag-visualeditor-wikitext": "Editor de codice fonte de 2017", "tag-visualeditor-wikitext-description": "Modification facite usante le editor de wikitexto de 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual: Commutate]]", + "tag-visualeditor-switched": "Editor visual: Commutate", "tag-visualeditor-switched-description": "Le usator ha comenciate a modificar per medio del editor visual, postea ha passate al editor de wikitexto traditional.", "visualeditor-feedback-link": "Project:Editor visual/Commentario", "visualeditor-feedback-tool": "Lassar un commento sur iste programma", diff --git a/i18n/ve-wmf/id.json b/i18n/ve-wmf/id.json index 616a7e44ca..c7ab96baf1 100644 --- a/i18n/ve-wmf/id.json +++ b/i18n/ve-wmf/id.json @@ -16,13 +16,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Disunting dengan [[{{MediaWiki:visualeditor-descriptionpagelink}}|penyunting visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Penyunting visual: Periksa]]", + "tag-visualeditor-needcheck": "Penyunting visual: Periksa", "tag-visualeditor-needcheck-description": "Penyuntingan yang menggunakan [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] pada sistem yang mendeteksi adanya teks wiki mungkin mengalami perubahan yang tidak diinginkan.", "tag-visualeditor-wikitext": "suntingan sumber", "tag-visualeditor-wikitext-description": "Suntingan menggunakan penyunting teks wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor-alih]]", + "tag-visualeditor-switched": "VisualEditor-alih", "tag-visualeditor-switched-description": "Pengguna mulai menyunting dengan editor visual lalu mengubahnya menjadi editor teks wiki.", "visualeditor-feedback-link": "Project:VisualEditor/Umpan balik", "visualeditor-feedback-tool": "Tinggalkan umpan balik untuk peranti lunak ini", diff --git a/i18n/ve-wmf/ie.json b/i18n/ve-wmf/ie.json index 44bed0706f..802f950228 100644 --- a/i18n/ve-wmf/ie.json +++ b/i18n/ve-wmf/ie.json @@ -6,9 +6,9 @@ "Stavanger7" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|visual modification]]", + "tag-visualeditor": "visual modification", "tag-visualeditor-description": "Editet per li [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Examination]]", + "tag-visualeditor-needcheck": "VisualEditor: Examination", "tag-visualeditor-needcheck-description": "Edite per li [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]], durant quel li systema ha forsan descovrit ínintentionat modificationes in li wikitextu.", "visualeditor-feedback-link": "Project:VisualEditor/Remarcas", "visualeditor-feedback-tool": "Dar feedback pri ti software", diff --git a/i18n/ve-wmf/ig.json b/i18n/ve-wmf/ig.json index 7750a0244f..e801847c49 100644 --- a/i18n/ve-wmf/ig.json +++ b/i18n/ve-wmf/ig.json @@ -5,7 +5,7 @@ "Tochiprecious" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ndezi nke anya na-ele]]", + "tag-visualeditor": "ndezi nke anya na-ele", "tag-visualeditor-description": "Mmezigharịa eji [[{{MediaWiki:visualeditor-descriptionpagelink}}|ndezi anya na-ahụ]] wee mee", "tag-visualeditor-wikitext": "Ndezi ebe osi nke 2017", "tag-visualeditor-wikitext-description": "Edezi eji 2017 wikitext editọ wee mee", diff --git a/i18n/ve-wmf/ilo.json b/i18n/ve-wmf/ilo.json index 4e8e2f8071..9f1af7a2ee 100644 --- a/i18n/ve-wmf/ilo.json +++ b/i18n/ve-wmf/ilo.json @@ -4,11 +4,11 @@ "Lam-ang" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Bisual a panagurnos]]", + "tag-visualeditor": "Bisual a panagurnos", "tag-visualeditor-description": "Inurnos nga inusar ti [[{{MediaWiki:visualeditor-descriptionpagelink}}|bisual a panagurnos]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Bisual a panagurnos: Kitaen]]", + "tag-visualeditor-needcheck": "Bisual a panagurnos: Kitaen", "tag-visualeditor-needcheck-description": "Inurnos nga inaramid nga inusar ti [[{{MediaWiki:visualeditor-descriptionpagelink}}|bisual a panagurnos]] a ti sistema ket nakaduktal ti wikitext nga adda kadagiti mabalin a saan a naikeddeng a panagbalbaliw.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Bisual a panagurnos: Sinukatan]]", + "tag-visualeditor-switched": "Bisual a panagurnos: Sinukatan", "tag-visualeditor-switched-description": "Ti agar-aramat ket nangrugi a nagusar iti bisual nga editor, kalpasanna ket sinukatanna iti editor ti wikitext.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Mangibati ti feedback a maipanggep iti daytoy a sopwer", diff --git a/i18n/ve-wmf/inh.json b/i18n/ve-wmf/inh.json index 162f034db6..8fe78529ce 100644 --- a/i18n/ve-wmf/inh.json +++ b/i18n/ve-wmf/inh.json @@ -4,5 +4,5 @@ "Adam-Yourist" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуальни хувцам]]" + "tag-visualeditor": "Визуальни хувцам" } diff --git a/i18n/ve-wmf/io.json b/i18n/ve-wmf/io.json index 30a0067c65..b239c21954 100644 --- a/i18n/ve-wmf/io.json +++ b/i18n/ve-wmf/io.json @@ -6,13 +6,13 @@ ] }, "tag-editcheck-newcontent-description": "Redakto-kontrolo (''EditCheck'') kredas ke nova kontenajo adjuntesis a la pagino", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Redakto per VisualEditor]]", + "tag-visualeditor": "Redakto per VisualEditor", "tag-visualeditor-description": "Redaktita per la [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Redakto per VisualEditor: Kontrolar]]", + "tag-visualeditor-needcheck": "Redakto per VisualEditor: Kontrolar", "tag-visualeditor-needcheck-description": "Redaktita per la [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] ube la sistemo detektis ke la wikitexto forsan neintence chanjesis.", "tag-visualeditor-wikitext": "2017 fonto-redakto", "tag-visualeditor-wikitext-description": "Redaktita per la 2017 \"wikitext\"-redaktilo", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Redakto per VisualEditor: Swichita]]", + "tag-visualeditor-switched": "Redakto per VisualEditor: Swichita", "tag-visualeditor-switched-description": "Uzanto komencis per VisualEditor, pose swichis a la bazala redaktilo.", "visualeditor-feedback-link": "Project:VisualEditor/Reakto", "visualeditor-feedback-tool": "Lasar reakto pri ca programo", diff --git a/i18n/ve-wmf/is.json b/i18n/ve-wmf/is.json index 5c5d8e92d9..fd3b298826 100644 --- a/i18n/ve-wmf/is.json +++ b/i18n/ve-wmf/is.json @@ -6,11 +6,11 @@ "Stefán Örvar Sigmundsson" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Sýnileg breyting]]", + "tag-visualeditor": "Sýnileg breyting", "tag-visualeditor-description": "Breyting gerð með [[{{MediaWiki:visualeditor-descriptionpagelink}}|Sýnilega ritlinum]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Sýnileg breyting: Athuga]]", + "tag-visualeditor-needcheck": "Sýnileg breyting: Athuga", "tag-visualeditor-needcheck-description": "Breyting gerð með [[{{MediaWiki:visualeditor-descriptionpagelink}}|sýnilega ritlinum]] þar sem kerfið greindi að wiki-textinn hafi mögulega ófyrirsjáanlegar breytingar.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Sýnilegi ritilinn: Skipti yfir]]", + "tag-visualeditor-switched": "Sýnilegi ritilinn: Skipti yfir", "tag-visualeditor-switched-description": "Notandinn byrjaði að gera breytingar með sýnilega ritlinum en fór svo að breyta wikitextanum.", "visualeditor-feedback-link": "Project:VisualEditor/Ábendingar", "visualeditor-feedback-tool": "Skilja eftir ábendingu um þennan hugbúnað", diff --git a/i18n/ve-wmf/it.json b/i18n/ve-wmf/it.json index ec714d5c11..001725f611 100644 --- a/i18n/ve-wmf/it.json +++ b/i18n/ve-wmf/it.json @@ -26,14 +26,14 @@ "아라" ] }, - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check (citazioni) attivato]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modifica visuale]]", + "tag-editcheck-references-activated": "Edit Check (citazioni) attivato", + "tag-visualeditor": "Modifica visuale", "tag-visualeditor-description": "Modifica eseguita usando l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visuale]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modifica visuale: controllare]]", + "tag-visualeditor-needcheck": "Modifica visuale: controllare", "tag-visualeditor-needcheck-description": "Modifica eseguita utilizzando l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visuale]] dove il sistema ha rilevato possibili modifiche non volute nel wikitesto.", "tag-visualeditor-wikitext": "Editor wikitesto 2017", "tag-visualeditor-wikitext-description": "Modifica effettuata utilizzando l'editor wikitesto 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modifica visuale: commutato]]", + "tag-visualeditor-switched": "Modifica visuale: commutato", "tag-visualeditor-switched-description": "L'utente ha iniziato a modificare utilizzando l'editor visuale, poi è passato all'editor di wikitesto.", "visualeditor-feedback-link": "Project:VisualEditor/Commenti", "visualeditor-feedback-tool": "Scrivi un commento su questo software", diff --git a/i18n/ve-wmf/ja.json b/i18n/ve-wmf/ja.json index cecd5ff38e..e38d4f0b40 100644 --- a/i18n/ve-wmf/ja.json +++ b/i18n/ve-wmf/ja.json @@ -20,13 +20,13 @@ "tag-editcheck-newcontent-description": "編集チェックは新しいコンテンツがページに追加されたことを示します", "tag-editcheck-newreference-description": "ページに出典が追加されました", "tag-editcheck-references-description": "編集チェックは出典が必要である可能性があることを示します", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター]]", + "tag-visualeditor": "ビジュアルエディター", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター]]を使用した編集", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター: 要確認]]", + "tag-visualeditor-needcheck": "ビジュアルエディター: 要確認", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター]]を使用した編集のうち、意図しない変更点を含むおそれがあるとシステムが判断したもの", "tag-visualeditor-wikitext": "2017年版ソースエディター", "tag-visualeditor-wikitext-description": "2017年版ウィキテキストエディターを使用した編集", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター: 中途切替]]", + "tag-visualeditor-switched": "ビジュアルエディター: 中途切替", "tag-visualeditor-switched-description": "ビジュアルエディターで編集を開始したあと、ウィキテキストエディターに変更したもの", "visualeditor-feedback-link": "Project:ビジュアルエディター/フィードバック", "visualeditor-feedback-tool": "このソフトウェアについてフィードバックを送信", diff --git a/i18n/ve-wmf/jam.json b/i18n/ve-wmf/jam.json index 3d3691b833..d6f0ef9ab3 100644 --- a/i18n/ve-wmf/jam.json +++ b/i18n/ve-wmf/jam.json @@ -4,5 +4,5 @@ "Katxis" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vijual edit]]" + "tag-visualeditor": "Vijual edit" } diff --git a/i18n/ve-wmf/jje.json b/i18n/ve-wmf/jje.json index 0a42cf02cd..90452f01c5 100644 --- a/i18n/ve-wmf/jje.json +++ b/i18n/ve-wmf/jje.json @@ -4,5 +4,5 @@ "고솜" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|베리멍 바꼬기]]" + "tag-visualeditor": "베리멍 바꼬기" } diff --git a/i18n/ve-wmf/jut.json b/i18n/ve-wmf/jut.json index 9af59b067e..aab2bc6762 100644 --- a/i18n/ve-wmf/jut.json +++ b/i18n/ve-wmf/jut.json @@ -4,5 +4,5 @@ "Jyllanj" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuel øndreng]]" + "tag-visualeditor": "Visuel øndreng" } diff --git a/i18n/ve-wmf/jv.json b/i18n/ve-wmf/jv.json index 6a6fc1af56..b72395d674 100644 --- a/i18n/ve-wmf/jv.json +++ b/i18n/ve-wmf/jv.json @@ -8,12 +8,12 @@ "Sumbukompor" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Besutan visual]]", + "tag-visualeditor": "Besutan visual", "tag-visualeditor-description": "Besutan sarana [[{{MediaWiki:visualeditor-descriptionpagelink}}|pambesut visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Besutan visual: Priksa]]", + "tag-visualeditor-needcheck": "Besutan visual: Priksa", "tag-visualeditor-wikitext": "Besutan sumber", "tag-visualeditor-wikitext-description": "Besutan nganggo pambesut tèks-wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Besutan visual: Ganti]]", + "tag-visualeditor-switched": "Besutan visual: Ganti", "tag-visualeditor-switched-description": "Naraguna wiwit mbesut sarana pambesut visual, banjur salin nganggo pambesut tèks-wiki.", "visualeditor-feedback-link": "Project:VisualEditor/Pamrayoga", "visualeditor-feedback-tool": "Wènèhana saran ngenani piranti alus iki", diff --git a/i18n/ve-wmf/ka.json b/i18n/ve-wmf/ka.json index eab7319f80..155aaa1676 100644 --- a/i18n/ve-wmf/ka.json +++ b/i18n/ve-wmf/ka.json @@ -14,13 +14,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ვიზუალური რედაქტირება]]", + "tag-visualeditor": "ვიზუალური რედაქტირება", "tag-visualeditor-description": "რედაქტირება შესრულებულია [[{{MediaWiki:visualeditor-descriptionpagelink}}|ვიზუალური რედაქტორის]] საშუალებით", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ვიზუალური რედაქტორი: შემოწმება]]", + "tag-visualeditor-needcheck": "ვიზუალური რედაქტორი: შემოწმება", "tag-visualeditor-needcheck-description": "რედაქტირება შესრულებულია [[{{MediaWiki:visualeditor-descriptionpagelink}}|ვიზუალური რედაქტორის]] საშუალებით, რომელშიც სისტემამ აღმოაჩინა, შესაძლოა უნებლიეთ შეცვლილი ვიკი-ტექსტი.", "tag-visualeditor-wikitext": "წყაროს რედაქტორი 2017", "tag-visualeditor-wikitext-description": "რედაქტირება გაკეთებულია ვიკიტექსტის რედაქტორი 2017-ის გამოყენებით", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ვიზუალური რედაქტორი: გადართულია]]", + "tag-visualeditor-switched": "ვიზუალური რედაქტორი: გადართულია", "tag-visualeditor-switched-description": "მომხმარებელმა დაიწყო ვიზუალური რედაქტორის გამოყენება, ხოლო შემდეგ ვიკიტექსტის რედაქტორით შეცვალა.", "visualeditor-feedback-link": "Project:ვიზუალური რედაქტორი/შეფასება", "visualeditor-feedback-tool": "გამოხმაურების დატოვება ამ პროგრამული უზრუნველყოფის შესახებ", diff --git a/i18n/ve-wmf/kaa.json b/i18n/ve-wmf/kaa.json index e8acfafc2b..d838ed3261 100644 --- a/i18n/ve-wmf/kaa.json +++ b/i18n/ve-wmf/kaa.json @@ -5,12 +5,12 @@ "Nurlan" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktor arqalı]]", + "tag-visualeditor": "Vizual redaktor arqalı", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktor]] arqalı islengen redaktorlaw.", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktor: Tekseriw]]", + "tag-visualeditor-needcheck": "Vizual redaktor: Tekseriw", "tag-visualeditor-needcheck-description": "Redaktorlaw [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizual redaktor]] arqalı orınlanǵan, biraq sistema abaysızdan wikitekst redaktorına ózgerip ketken bolıwı múmkinligin anıqladı.", "tag-visualeditor-wikitext": "Derekti redaktorlaw", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktordan wikitekst redaktorına ótildi]]", + "tag-visualeditor-switched": "Vizual redaktordan wikitekst redaktorına ótildi", "tag-visualeditor-switched-description": "Paydalanıwshı vizual redaktor kómeginde redaktorlap basladı, sońınan wikitekst redaktorına ótti.", "visualeditor-feedback-tool": "Bul programma haqqında pikir qaldırıw", "visualeditor-help-label": "Paydalanıwshı qollanbasın oqıńız", diff --git a/i18n/ve-wmf/kab.json b/i18n/ve-wmf/kab.json index 6d584e9806..f11f950647 100644 --- a/i18n/ve-wmf/kab.json +++ b/i18n/ve-wmf/kab.json @@ -4,5 +4,5 @@ "Belkacem77" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Amaẓrag aẓrayan]]" + "tag-visualeditor": "Amaẓrag aẓrayan" } diff --git a/i18n/ve-wmf/kbp.json b/i18n/ve-wmf/kbp.json index 60b3c10cda..dda2c3f470 100644 --- a/i18n/ve-wmf/kbp.json +++ b/i18n/ve-wmf/kbp.json @@ -4,5 +4,5 @@ "Gnangbade" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Ñɔɔzɩtʋ kpaagbaa]]" + "tag-visualeditor": "Ñɔɔzɩtʋ kpaagbaa" } diff --git a/i18n/ve-wmf/kcg.json b/i18n/ve-wmf/kcg.json index 4d09be7975..377545d597 100644 --- a/i18n/ve-wmf/kcg.json +++ b/i18n/ve-wmf/kcg.json @@ -4,13 +4,13 @@ "Kambai Akau" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Jhyuk nwuan]]", + "tag-visualeditor": "Jhyuk nwuan", "tag-visualeditor-description": "Á̱ nyia̱ jhyuk huni ma̱ng [[{{MediaWiki:visualeditor-descriptionpagelink}}|kyangjhyuk nwuan huhwa]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Jhyuk nwuan: Nwuan]]", + "tag-visualeditor-needcheck": "Jhyuk nwuan: Nwuan", "tag-visualeditor-needcheck-description": "Á̱ nyia̱ jhyuk huni ma̱ng [[{{MediaWiki:visualeditor-descriptionpagelink}}|kyangjhyuk nwuan]] da̱ a̱vwuo ka nang sistem ji si̱ li wikitext hu ma̱ng a̱ka̱shai na̱ maai yet ghyuap nia a̱ni.", "tag-visualeditor-wikitext": "jhyuk a̱vwuoneet 2017", "tag-visualeditor-wikitext-description": "Á̱ nyia̱ jhyuk huni ma̱ng kyangjhyuk wikitext 2017 huhwa", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Jhyuk nwuan: Á̱ shai]]", + "tag-visualeditor-switched": "Jhyuk nwuan: Á̱ shai", "tag-visualeditor-switched-description": "A̱tyuta̱m ku tsa jhyuk ma̱ng kyangjhyuk nwuan, a̱ si̱ ba̱ shai nat kyangjhyuk wikitext hu.", "visualeditor-feedback-link": "Project:KyangjhyukNwuan/A̱di̱dam", "visualeditor-feedback-tool": "Ghwon a̱di̱dam tazwa kyanglilyiit huni", diff --git a/i18n/ve-wmf/khw.json b/i18n/ve-wmf/khw.json index 6b0bca042f..1a25204fe3 100644 --- a/i18n/ve-wmf/khw.json +++ b/i18n/ve-wmf/khw.json @@ -4,5 +4,5 @@ "Rachitrali" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ویژول ایڈیٹر]]" + "tag-visualeditor": "ویژول ایڈیٹر" } diff --git a/i18n/ve-wmf/kjp.json b/i18n/ve-wmf/kjp.json index df7032bdf9..19afa2024a 100644 --- a/i18n/ve-wmf/kjp.json +++ b/i18n/ve-wmf/kjp.json @@ -4,13 +4,13 @@ "Rul1902" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ဟ်ုဆ်ုဍး သံင့်ၜးၯဴ]]", + "tag-visualeditor": "ဟ်ုဆ်ုဍး သံင့်ၜးၯဴ", "tag-visualeditor-description": "မ်ုသံင့်ၜးၯဴ မ်ုသုံႋလ်ု [[{{MediaWiki:visualeditor-descriptionpagelink}}|ဟ်ုဆ်ုဍး သံင့်ၜးၯဴဆာႋ]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ဟ်ုဆ်ုဍး သံင့်ၜးၯဴ:ဆၟိုဝ်]]", + "tag-visualeditor-needcheck": "ဟ်ုဆ်ုဍး သံင့်ၜးၯဴ:ဆၟိုဝ်", "tag-visualeditor-needcheck-description": "မ်ုသံင့်ၜးၯဴၯံင် အင်းသုံႋ [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] အ်ုက်ုရေင်ႋလ်ုအှ် ဆ်ုသံင့်ၜးၯဴဝီးကေဝ်အ်ုၯာင်ႋအ်ုကျံင်းၮှ် မ်ုၜးလေဝ်ႋအင်းၰူ့ယောဝ်ႋ အ်ုဖၠံင်အ်ုဖၠကုံ ခဝ့်လယ်။", "tag-visualeditor-wikitext": "၂၀၁၇ အ်ုထါ်သံင့်ၜးၯဴ", "tag-visualeditor-wikitext-description": "မ်ုသံင့်ၜးၯဴၯံင် မ်ုသုံႋ ၂၀၁၇ ဝီးကေဝ်အ်ုၯာင်ႋအ်ုကျံင်း သံင့်ၜးၯဴဆာႋ", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ဟ်ုဆ်ုဍး သံင့်ၜးၯဴ:အူရာ်ၯံင်]]", + "tag-visualeditor-switched": "ဟ်ုဆ်ုဍး သံင့်ၜးၯဴ:အူရာ်ၯံင်", "tag-visualeditor-switched-description": "ဆ်ုသုံႋဆာႋ ပ္တံင်ထင်းသင့်ဝေ့လ်ု ဟ်ုဆ်ုဍး သံင့်ၜးၯဴ, အေးၯံင် အင်းလယ်ခိုက်ဝေ့ လ်ုဝီးကေဝ်အ်ုၯာင်ႋအ်ုကျံင်းခဝ့်။", "visualeditor-feedback-link": "Project:ဟ်ုဆ်ုဍးသံင့်ၜးၯဴ/လဝ်ပ်ုယုံ့ထါင်", "visualeditor-feedback-tool": "ဆေါႋဝဲါအ်ုယိုဝ်ကျံင် အှ်ကှ်ေထဝ်ႋဆ်ုလဝ်ပ်ုယုံ့ထါင်", diff --git a/i18n/ve-wmf/kk-cyrl.json b/i18n/ve-wmf/kk-cyrl.json index 532fb7d561..fe4f78b71a 100644 --- a/i18n/ve-wmf/kk-cyrl.json +++ b/i18n/ve-wmf/kk-cyrl.json @@ -6,13 +6,13 @@ "Casserium" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] арқылы жасалған өңдеме", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Тексеру]]", + "tag-visualeditor-needcheck": "VisualEditor: Тексеру", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] қолданылып жасалған өңдеменде жүйе уикитекстіге күтпеген өзгерістер болуы мүмкіндігін жүйе анықтады. .", "tag-visualeditor-wikitext": "Уики-мәтін редакторы 2017", "tag-visualeditor-wikitext-description": "2017 жылғы уикимәтін редакторын қолданып жасаған өңдеме", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Ауысты]]", + "tag-visualeditor-switched": "VisualEditor: Ауысты", "tag-visualeditor-switched-description": "Қатысушы VisualEditor қолданып өңдеуді бастады содан кейін уикимәтін өңдегішке ауыстырды.", "visualeditor-feedback-link": "Project:VisualEditor/Пікірлер", "visualeditor-feedback-tool": "Бұл бағдарлама туралы пікір қалдыру", diff --git a/i18n/ve-wmf/km.json b/i18n/ve-wmf/km.json index 1a17c7d015..e4ad1e2acd 100644 --- a/i18n/ve-wmf/km.json +++ b/i18n/ve-wmf/km.json @@ -5,7 +5,7 @@ "គីមស៊្រុន" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|កែប្រែតាមគំហើញ]]", + "tag-visualeditor": "កែប្រែតាមគំហើញ", "tag-visualeditor-description": "ការកែប្រែដោយប្រើ[[{{MediaWiki:visualeditor-descriptionpagelink}}|មុខងារកែប្រែតាមគំហើញ]]", "tag-visualeditor-wikitext": "មុខងារកែប្រែកូដឆ្នាំ២០១៧", "tag-visualeditor-wikitext-description": "កំណែប្រែដែលធ្វើឡើងដោយប្រើឧបករណ៍កែប្រែវិគីអត្ថបទ", diff --git a/i18n/ve-wmf/kn.json b/i18n/ve-wmf/kn.json index a529c30e9d..8660d7b39e 100644 --- a/i18n/ve-wmf/kn.json +++ b/i18n/ve-wmf/kn.json @@ -8,11 +8,11 @@ "Yogesh" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ದೃಶ್ಯ ಸಂಪಾದನೆ]]", + "tag-visualeditor": "ದೃಶ್ಯ ಸಂಪಾದನೆ", "tag-visualeditor-description": "ಸಂಪಾದನೆಗೆ ಬಳಸಿದ್ದು [[{{MediaWiki:visualeditor-descriptionpagelink}}|ದೃಶ್ಯ ಸಂಪಾದಕ]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ದೃಶ್ಯ ಸಂಪಾದಕ: ಪರೀಕ್ಷಿಸು]]", + "tag-visualeditor-needcheck": "ದೃಶ್ಯ ಸಂಪಾದಕ: ಪರೀಕ್ಷಿಸು", "tag-visualeditor-needcheck-description": "ಸಂಪಾದನೆಗೆ ಬಳಸಿದ್ದು [[{{MediaWiki:visualeditor-descriptionpagelink}}|ದೃಶ್ಯ ಸಂಪಾದಕ]] ಇಲ್ಲಿ ಸಾಧನವು ಬೇಡದ ಕೆಲವು ಬದಲಾವಣೆಗಳಾಗಿರುವುದನ್ನು ಗಮನಿಸಿದೆ.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ದೃಶ್ಯ ಸಂಪಾದಕ: ಬದಲಿಸಿದ್ದು]]", + "tag-visualeditor-switched": "ದೃಶ್ಯ ಸಂಪಾದಕ: ಬದಲಿಸಿದ್ದು", "tag-visualeditor-switched-description": "ಬಳಕೆದಾರ ದೃಶ್ಯ ಸಂಪಾದಕವನ್ನು ಬಳಸಿ ಸಂಪಾದನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದ ನಂತರ ವಿಕಿಪಠ್ಯ ಸಂಪಾದಕಕ್ಕೆ ಮರಳಿದ್ದಾನೆ.", "visualeditor-feedback-link": "ಯೋಜನೆ:ದೃಶ್ಯ ಸಂಪಾದಕ /ಪ್ರತಿಕ್ರಿಯೆ", "visualeditor-feedback-tool": "ಈ ತಂತ್ರಾಂಶದ ಬಗ್ಗೆ ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆ ನೀಡಿ", diff --git a/i18n/ve-wmf/ko-kp.json b/i18n/ve-wmf/ko-kp.json index 85d1273a4d..b0f5fe065e 100644 --- a/i18n/ve-wmf/ko-kp.json +++ b/i18n/ve-wmf/ko-kp.json @@ -4,5 +4,5 @@ "Delim" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|시각편집기]]" + "tag-visualeditor": "시각편집기" } diff --git a/i18n/ve-wmf/ko.json b/i18n/ve-wmf/ko.json index b991d04997..9fc61a9a67 100644 --- a/i18n/ve-wmf/ko.json +++ b/i18n/ve-wmf/ko.json @@ -19,15 +19,15 @@ "tag-editcheck-newcontent-description": "EditCheck는 새로운 내용이 페이지에 추가되었다고 간주합니다", "tag-editcheck-newreference-description": "페이지에 참조가 추가되었습니다", "tag-editcheck-references-description": "EditCheck는 출처가 필요할 수 있다고 간주합니다", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|편집 검사(출처)를 활성화함]]", + "tag-editcheck-references-activated": "편집 검사(출처)를 활성화함", "tag-editcheck-references-activated-description": "EditCheck는 출처가 필요할 수 있다고 간주하며 UI를 표시합니다", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|시각 편집]]", + "tag-visualeditor": "시각 편집", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|시각편집기]]를 사용한 편집", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|시각편집기: 확인 필요]]", + "tag-visualeditor-needcheck": "시각편집기: 확인 필요", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|시각편집기]]를 사용하는 도중 시스템에서 잠재적으로 의도하지 않은 변경사항을 포함한 위키텍스트가 감지된 편집.", "tag-visualeditor-wikitext": "2017 원본 편집", "tag-visualeditor-wikitext-description": "2017 위키텍스트 편집기로 한 편집", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|시각 편집: 전환됨]]", + "tag-visualeditor-switched": "시각 편집: 전환됨", "tag-visualeditor-switched-description": "사용자가 시각편집기를 사용해 편집을 시작한 다음 위키텍스트 편집기로 바꾸었습니다.", "visualeditor-feedback-link": "Project:시각편집기/피드백", "visualeditor-feedback-tool": "이 소프트웨어에 대한 피드백 남기기", diff --git a/i18n/ve-wmf/koi.json b/i18n/ve-wmf/koi.json index f1a659bfd1..228d992dad 100644 --- a/i18n/ve-wmf/koi.json +++ b/i18n/ve-wmf/koi.json @@ -4,5 +4,5 @@ "Римма" ] }, - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check (references) activated]]Веськӧтны проверитӧм (ыстісьӧм) активируйтӧм" + "tag-editcheck-references-activated": "Edit Check (references) activatedВеськӧтны проверитӧм (ыстісьӧм) активируйтӧм" } diff --git a/i18n/ve-wmf/krc.json b/i18n/ve-wmf/krc.json index 4cc3886331..9fe7d2d5a1 100644 --- a/i18n/ve-wmf/krc.json +++ b/i18n/ve-wmf/krc.json @@ -9,15 +9,15 @@ "tag-editcheck-newcontent-description": "EditCheck бетге джангы контент къошулгъаннга санайды", "tag-editcheck-newreference-description": "Бетге белгилеу къошулгъанды", "tag-editcheck-references-description": "EditCheck белгилеуню керек болгъанын санайды", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Тюзетиуню Тинтиу (белгилеу) тирилтилди]]", + "tag-editcheck-references-activated": "Тюзетиуню Тинтиу (белгилеу) тирилтилди", "tag-editcheck-references-activated-description": "EditCheck белгилеуню керек болгъаннга санар эмда интерфейс кёргюзюр", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Къарам тюзетиу]]", + "tag-visualeditor": "Къарам тюзетиу", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Къарам редакторну]] хайырланыб тюзетигиз", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Къарам тюзетиу:тинт]]", + "tag-visualeditor-needcheck": "Къарам тюзетиу:тинт", "tag-visualeditor-needcheck-description": "Система, иш этиб тюрлендирилмеген вики-текст табхан, [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуал редакторну]] болушлугъу бла этилген тюрлендириу.", "tag-visualeditor-wikitext": "2017 къайнакъ тюзетиу", "tag-visualeditor-wikitext-description": "Тюзетиу 2017 вики-текст редактор бла этилгенди", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Къарам тюзетиу:алмашдырылды]]", + "tag-visualeditor-switched": "Къарам тюзетиу:алмашдырылды", "tag-visualeditor-switched-description": "Редакторлукъ этиу визуал редактор бла башланнганды, сора уа викитекст редакторгъа кёчюлгенди.", "visualeditor-feedback-link": "Project:VisualEditor/Оюмла", "visualeditor-feedback-tool": "Оюмунгу къой", diff --git a/i18n/ve-wmf/krl.json b/i18n/ve-wmf/krl.json index adabfbbcad..ec0790c799 100644 --- a/i18n/ve-wmf/krl.json +++ b/i18n/ve-wmf/krl.json @@ -4,5 +4,5 @@ "Varvana" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visualini korjauš]]" + "tag-visualeditor": "Visualini korjauš" } diff --git a/i18n/ve-wmf/ks-arab.json b/i18n/ve-wmf/ks-arab.json index ab5a0f6c25..dac4407d0a 100644 --- a/i18n/ve-wmf/ks-arab.json +++ b/i18n/ve-wmf/ks-arab.json @@ -4,11 +4,11 @@ "Iflaq" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ظٲہِر اؠڈِٹ]]", + "tag-visualeditor": "ظٲہِر اؠڈِٹ", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ظٲہِر اؠڈِٹ خانَس]] مَنٛز کَرنہٕ آمِت اؠڈِٹ", "tag-visualeditor-wikitext": "2017 کوڈ اؠڈِٹ خانہٕ", "tag-visualeditor-wikitext-description": "اؠڈِٹ یِم 2017 وِکی مَتَن اؠڈِٹ خانَس مَنٛز کَرنہٕ آے", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ظٲہِر اؠڈِٹ: بَدلاونہٕ]]", + "tag-visualeditor-switched": "ظٲہِر اؠڈِٹ: بَدلاونہٕ", "visualeditor-feedback-tool": "یَتھ سافٹٕویرَس مُتلِق دِیِو پَنٕنؠ راے", "visualeditor-help-label": "صٲرِف تَعارُف کِتاب پٔرِو", "visualeditor-welcomedialog-action": "اؠڈِٹ کَرُن کٔرِو شُروٗع", diff --git a/i18n/ve-wmf/ksh.json b/i18n/ve-wmf/ksh.json index d0f418c33c..0c02374dab 100644 --- a/i18n/ve-wmf/ksh.json +++ b/i18n/ve-wmf/ksh.json @@ -4,11 +4,11 @@ "Purodha" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Änderong mem VisualEditor]]", + "tag-visualeditor": "Änderong mem VisualEditor", "tag-visualeditor-description": "En Veränderon jemaat mem [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Pröhfe nühdesch: VisualEditor metmaache. Op däm Träf]]", + "tag-visualeditor-needcheck": "Pröhfe nühdesch: VisualEditor metmaache. Op däm Träf", "tag-visualeditor-needcheck-description": "En Änderog, di mem [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] jemaat woode es, woh dä Wikkitäx velleijsch obb en onjewollte Manier verändert woode es.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Ömjeschalldt vum VisualEditor op Wikkitäx]]", + "tag-visualeditor-switched": "Ömjeschalldt vum VisualEditor op Wikkitäx", "tag-visualeditor-switched-description": "Dä Metmaacher feng sing Änderong mem {{int:tag-visualeditor}} aan un jingk dann op der Wikkitäx.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Jivv_en Röckmäldong övver heh di ẞoffwäer", diff --git a/i18n/ve-wmf/ku-latn.json b/i18n/ve-wmf/ku-latn.json index 4e32d9fd92..cd98316a25 100644 --- a/i18n/ve-wmf/ku-latn.json +++ b/i18n/ve-wmf/ku-latn.json @@ -7,13 +7,13 @@ "Guherto" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Guhartina dîtbarî]]", + "tag-visualeditor": "Guhartina dîtbarî", "tag-visualeditor-description": "Bi bikaranîna [[{{MediaWiki:visualeditor-descriptionpagelink}}|guhartina dîtbarî]] hat guhartin", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Guhartina dîtbarî: Kontrol bike]]", + "tag-visualeditor-needcheck": "Guhartina dîtbarî: Kontrol bike", "tag-visualeditor-needcheck-description": "Guhartina ku bi [[{{MediaWiki:visualeditor-descriptionpagelink}}|edîtora dîtbarî]] hatiye çêkirin ku li wir sîstemê dît ku di wîkînivîsê de dibe ku guhartinên nexwestî hebin.", "tag-visualeditor-wikitext": "2017 amûra guhartina çavkaniyê", "tag-visualeditor-wikitext-description": "Guhartinên bi rêya 2017 amûra guhartina çavkaniyê hatine pêkanîn", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Guhartina dîtbarî: Ji çavkaniyê hatiye guhartin]]", + "tag-visualeditor-switched": "Guhartina dîtbarî: Ji çavkaniyê hatiye guhartin", "tag-visualeditor-switched-description": "Bikarhênerî bi edîtora dîtbarî dest bi guhartinê kir, dû re çûye ser edîtora wîkînivîsê.", "visualeditor-feedback-link": "Project:VisualEditor/Paşragihandin", "visualeditor-feedback-tool": "Di derbarê vê nermalavê de fikrên xwe bibêje", diff --git a/i18n/ve-wmf/kum.json b/i18n/ve-wmf/kum.json index 3ec2c08e53..9b47953d4f 100644 --- a/i18n/ve-wmf/kum.json +++ b/i18n/ve-wmf/kum.json @@ -5,5 +5,5 @@ "ArslanX" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуал тюзлев къуралы]]" + "tag-visualeditor": "Визуал тюзлев къуралы" } diff --git a/i18n/ve-wmf/kus.json b/i18n/ve-wmf/kus.json index b54b68d767..a8031d9390 100644 --- a/i18n/ve-wmf/kus.json +++ b/i18n/ve-wmf/kus.json @@ -7,15 +7,15 @@ "tag-editcheck-newcontent-description": "EditCheck tɛn'ɛs ye ba paas nɛ bʋnpaal lakirin la", "tag-editcheck-newreference-description": "Ba paas kpinnim lak̃ir la ni", "tag-editcheck-references-description": "EditCheck tɛn'ɛs ye ba pa' na ti bɔɔd kplnnim", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check (references) activated]]", + "tag-editcheck-references-activated": "Edit Check (references) activated", "tag-editcheck-references-activated-description": "EditCheck tɛn'ɛs ye ba pa'a ti bɔɔd, kpinnim ka UI lɛɛ bɛ", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit]]", + "tag-visualeditor": "Visual edit", "tag-visualeditor-description": "Tiakir kanɛ niŋ nɛ [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Check]]", + "tag-visualeditor-needcheck": "Visual edit: Check", "tag-visualeditor-needcheck-description": "Tiakir kanɛ niŋ nɛ [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] ka zink la baŋ ye wikitext la pʋ mɔr pʋtɛn'ɛr nɛ tiak si'a", "tag-visualeditor-wikitext": "2017 zink tiakir", "tag-visualeditor-wikitext-description": "Tiakir kanɛ niŋ nɛ 2017 wikitext tiakid", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Switched]]", + "tag-visualeditor-switched": "Visual edit: Switched", "tag-visualeditor-switched-description": "O pin'ili tiak nɛ, nɛ visual tiakid ka lɛn tiaki lɛb wikitext tiakid", "visualeditor-feedback-link": "Yʋʋm la: tiakir kanɛ nyɛt/gandigir", "visualeditor-feedback-tool": "Tisim lɛbisʋg software nwa yɛla", diff --git a/i18n/ve-wmf/kw.json b/i18n/ve-wmf/kw.json index 76c7b5fc03..41544871aa 100644 --- a/i18n/ve-wmf/kw.json +++ b/i18n/ve-wmf/kw.json @@ -8,9 +8,9 @@ "Purodha" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Chanj gwelesek]]", + "tag-visualeditor": "Chanj gwelesek", "tag-visualeditor-description": "Chanjyes der an [[{{MediaWiki:visualeditor-descriptionpagelink}}|janjyel welesek]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Chanjyel welesek: Checkya]]", + "tag-visualeditor-needcheck": "Chanjyel welesek: Checkya", "visualeditor-welcomedialog-action": "Dalleth golegi", "visualeditor-welcomedialog-switch": "Skwychya dhe'n wolegell bennfenten", "visualeditor-welcomedialog-switch-ve": "Skwychya dhe'n janjyell welesek", diff --git a/i18n/ve-wmf/ky.json b/i18n/ve-wmf/ky.json index 21768986e9..364803f8ca 100644 --- a/i18n/ve-wmf/ky.json +++ b/i18n/ve-wmf/ky.json @@ -9,8 +9,8 @@ "Викиней" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалдык түзөтүү]]", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалдык режиминде түзөтүлө баштап, викитекст режиминде жарыяланды]]", + "tag-visualeditor": "визуалдык түзөтүү", + "tag-visualeditor-switched": "визуалдык режиминде түзөтүлө баштап, викитекст режиминде жарыяланды", "tag-visualeditor-switched-description": "Колдонуучу визуалдык түзөткүч менен түзөтө баштап, кийин викитекст түзөткүчкө өттү.", "visualeditor-feedback-tool": "Бул курал боюнча пикир билдирүү", "visualeditor-help-label": "Колдонмону окуу", diff --git a/i18n/ve-wmf/la.json b/i18n/ve-wmf/la.json index 43193858a0..3573c0d370 100644 --- a/i18n/ve-wmf/la.json +++ b/i18n/ve-wmf/la.json @@ -4,5 +4,5 @@ "Andrew Dalby" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Per editorem visualem]]" + "tag-visualeditor": "Per editorem visualem" } diff --git a/i18n/ve-wmf/lad.json b/i18n/ve-wmf/lad.json index 73e5001be5..5808e5659b 100644 --- a/i18n/ve-wmf/lad.json +++ b/i18n/ve-wmf/lad.json @@ -4,5 +4,5 @@ "WikiiiTranslator" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|trocamiento visual]]" + "tag-visualeditor": "trocamiento visual" } diff --git a/i18n/ve-wmf/lb.json b/i18n/ve-wmf/lb.json index 0348c5537d..7ef5658424 100644 --- a/i18n/ve-wmf/lb.json +++ b/i18n/ve-wmf/lb.json @@ -11,13 +11,13 @@ "Викиней" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell Ännerung]]", + "tag-visualeditor": "Visuell Ännerung", "tag-visualeditor-description": "Ännerung, déi mam [[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuellen Editeur]] gemaach gouf", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell änneren: Nokucken]]", + "tag-visualeditor-needcheck": "Visuell änneren: Nokucken", "tag-visualeditor-needcheck-description": "Ännerung déi mam [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editeur]] gemaach gouf a wou de System eventuell net gewollten Ännerunge gemaach huet.", "tag-visualeditor-wikitext": "2017-Quelltext-Ännerung", "tag-visualeditor-wikitext-description": "Ännerung déi mam Wikitext-Editeur-2017 gemaach gouf", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell Ännerung: Ëmgeschalt]]", + "tag-visualeditor-switched": "Visuell Ännerung: Ëmgeschalt", "tag-visualeditor-switched-description": "De Benotzer huet ugefaang mam visuellen Editeur z'änneren an huet duerno op de Wikitext-Editeur gewiesselt.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Feedback zu dëser Software ginn", diff --git a/i18n/ve-wmf/lbe.json b/i18n/ve-wmf/lbe.json index 7b8e4d9f24..3b009b6077 100644 --- a/i18n/ve-wmf/lbe.json +++ b/i18n/ve-wmf/lbe.json @@ -4,5 +4,5 @@ "Soul Train" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|чӀалачӀин даххана шаврил ярагъ]]" + "tag-visualeditor": "чӀалачӀин даххана шаврил ярагъ" } diff --git a/i18n/ve-wmf/lez.json b/i18n/ve-wmf/lez.json index 3f0806bdab..5399b1224d 100644 --- a/i18n/ve-wmf/lez.json +++ b/i18n/ve-wmf/lez.json @@ -4,5 +4,5 @@ "Soul Train" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|визуал редактор]]" + "tag-visualeditor": "визуал редактор" } diff --git a/i18n/ve-wmf/lfn.json b/i18n/ve-wmf/lfn.json index 35bbb8a7ec..868dc6833b 100644 --- a/i18n/ve-wmf/lfn.json +++ b/i18n/ve-wmf/lfn.json @@ -5,5 +5,5 @@ "Katxis" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editador vidal]]" + "tag-visualeditor": "Editador vidal" } diff --git a/i18n/ve-wmf/li.json b/i18n/ve-wmf/li.json index ef2bb99dae..205000da90 100644 --- a/i18n/ve-wmf/li.json +++ b/i18n/ve-wmf/li.json @@ -4,5 +4,5 @@ "Ooswesthoesbes" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuelen teksverwirker]]" + "tag-visualeditor": "Visuelen teksverwirker" } diff --git a/i18n/ve-wmf/lij.json b/i18n/ve-wmf/lij.json index 68ab5ac18d..35f7064f0b 100644 --- a/i18n/ve-wmf/lij.json +++ b/i18n/ve-wmf/lij.json @@ -4,13 +4,13 @@ "Giromin Cangiaxo" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modiffica visuale]]", + "tag-visualeditor": "Modiffica visuale", "tag-visualeditor-description": "Modiffica fæta dœuviando l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor vixoâ]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modiffica vixoâ: controlâ]]", + "tag-visualeditor-needcheck": "Modiffica vixoâ: controlâ", "tag-visualeditor-needcheck-description": "Modiffica fæta dœuviando l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor vixoâ]] donde-o scistema o l'ha rilevou de poscibbile modiffiche non vosciue into wikitesto.", "tag-visualeditor-wikitext": "Editor wikitesto 2017", "tag-visualeditor-wikitext-description": "Modiffica fæta dœuviando l'editor wikitesto 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modiffica vixoâ: Cangiou]]", + "tag-visualeditor-switched": "Modiffica vixoâ: Cangiou", "tag-visualeditor-switched-description": "L'utente o l'ha inçou e modiffiche dœuviando l'editor vixoâ, doppo o l'è passou a l'editor de wikitesto.", "visualeditor-feedback-link": "Project:VisualEditor/Commenti", "visualeditor-feedback-tool": "Scrivi un commento sciu questo software", diff --git a/i18n/ve-wmf/lki.json b/i18n/ve-wmf/lki.json index cf4c30d8cf..1509bf62ad 100644 --- a/i18n/ve-wmf/lki.json +++ b/i18n/ve-wmf/lki.json @@ -5,6 +5,6 @@ "Hosseinblue" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ویرایشگر دیداری]]", + "tag-visualeditor": "ویرایشگر دیداری", "visualeditor-welcomedialog-action": "ویرایش را آغاز کنید" } diff --git a/i18n/ve-wmf/lld.json b/i18n/ve-wmf/lld.json index 2eb5594b93..fd7786c964 100644 --- a/i18n/ve-wmf/lld.json +++ b/i18n/ve-wmf/lld.json @@ -4,5 +4,5 @@ "Asenoner" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Mudazion visuela]]" + "tag-visualeditor": "Mudazion visuela" } diff --git a/i18n/ve-wmf/lmo.json b/i18n/ve-wmf/lmo.json index 166a2de2ef..cb72d260e3 100644 --- a/i18n/ve-wmf/lmo.json +++ b/i18n/ve-wmf/lmo.json @@ -5,13 +5,13 @@ "Salvemm el lombard" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor Visual]]", + "tag-visualeditor": "Editor Visual", "tag-visualeditor-description": "Modifica fada cont el doprà l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modiffica vixoâ: controlà]]", + "tag-visualeditor-needcheck": "Modiffica vixoâ: controlà", "tag-visualeditor-needcheck-description": "Modifica eseguida cont el doprà l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] indove el sistema l'ha rilevad di possibil modifiche minga vorude in del wikitesto.", "tag-visualeditor-wikitext": "Editor wikitest 2017", "tag-visualeditor-wikitext-description": "Modifica efetuada cont el drovà l'editor wikitest 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modifica visual: cambiad]]", + "tag-visualeditor-switched": "Modifica visual: cambiad", "tag-visualeditor-switched-description": "L'utent l'hà tacà a modifegà cont el drovà l'editor visual, poeu l'è passà de noeuv a l'editor wikitest.", "visualeditor-feedback-link": "Project:VisualEditor/Comencc", "visualeditor-feedback-tool": "Dinn quell che te penset de quell programa informatich chì", diff --git a/i18n/ve-wmf/lo.json b/i18n/ve-wmf/lo.json index 8ac150df79..bfa65bbb8a 100644 --- a/i18n/ve-wmf/lo.json +++ b/i18n/ve-wmf/lo.json @@ -4,5 +4,5 @@ "Aefgh39622" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ການແກ້ໄຂແບບເຫັນພາບ]]" + "tag-visualeditor": "ການແກ້ໄຂແບບເຫັນພາບ" } diff --git a/i18n/ve-wmf/lrc.json b/i18n/ve-wmf/lrc.json index f50b6f08fc..2ded5a5669 100644 --- a/i18n/ve-wmf/lrc.json +++ b/i18n/ve-wmf/lrc.json @@ -5,5 +5,5 @@ "Mogoeilor" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ٱنجوما ڤیرایشکار]]" + "tag-visualeditor": "ٱنجوما ڤیرایشکار" } diff --git a/i18n/ve-wmf/lt.json b/i18n/ve-wmf/lt.json index aaa00c1758..da8d5ed93f 100644 --- a/i18n/ve-wmf/lt.json +++ b/i18n/ve-wmf/lt.json @@ -9,13 +9,13 @@ "Zygimantus" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizualus redagavimas]]", + "tag-visualeditor": "Vizualus redagavimas", "tag-visualeditor-description": "Redaguota su [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualiu redaktoriumi]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizualus redagavimas: Tikrinti]]", + "tag-visualeditor-needcheck": "Vizualus redagavimas: Tikrinti", "tag-visualeditor-needcheck-description": "Redaguota su [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualiu redaktoriumi]], kai sistema aptiko galimai nenorėtų vikiteksto pakeitimų.", "tag-visualeditor-wikitext": "2017 kodo redagavimas", "tag-visualeditor-wikitext-description": "Keitimas atliktas su 2017 vikiteksto redaktoriumi", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizualus redaktorius: Perjungta]]", + "tag-visualeditor-switched": "Vizualus redaktorius: Perjungta", "tag-visualeditor-switched-description": "Naudotojas pradėjo redaguoti su vizualiu redaktoriumi, po to persijungė į vikiteksto redaktorių.", "visualeditor-feedback-link": "Project:VisualEditor/Atsiliepimai", "visualeditor-feedback-tool": "Pateikti atsiliepimą apie šią programinę įrangą", diff --git a/i18n/ve-wmf/luz.json b/i18n/ve-wmf/luz.json index aca60e5c71..3d69f977c6 100644 --- a/i18n/ve-wmf/luz.json +++ b/i18n/ve-wmf/luz.json @@ -5,5 +5,5 @@ "علی ساکی لرستانی" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}| اصلاح کردن دیۮاری]]" + "tag-visualeditor": " اصلاح کردن دیۮاری" } diff --git a/i18n/ve-wmf/lv.json b/i18n/ve-wmf/lv.json index 885689da9a..c429bfd96f 100644 --- a/i18n/ve-wmf/lv.json +++ b/i18n/ve-wmf/lv.json @@ -12,13 +12,13 @@ }, "tag-editcheck-newreference-description": "Lapai tika pievienota atsauce", "tag-editcheck-references-activated-description": "EditCheck uzskata, ka varētu būt nepieciešama atsauce, un tika parādīts aicinājums lietotāja saskarnē", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuālā labošana]]", + "tag-visualeditor": "Vizuālā labošana", "tag-visualeditor-description": "Labots ar [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizuālo redaktoru]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuālais labojums: pārbaudiet]]", + "tag-visualeditor-needcheck": "Vizuālais labojums: pārbaudiet", "tag-visualeditor-needcheck-description": "Labojums veikts ar [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizuālo redaktoru]], un sistēma konstatēja iespējamas netīšas izmaiņas wikitext saturā.", "tag-visualeditor-wikitext": "2017. gada vikikoda redaktors", "tag-visualeditor-wikitext-description": "Labojums veikts ar 2017. gada vikikoda redaktoru", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuālais labojums: Pārslēdzās]]", + "tag-visualeditor-switched": "Vizuālais labojums: Pārslēdzās", "tag-visualeditor-switched-description": "Lietotājs sāka labot vizuālajā redaktorā un pārslēdzās uz vikiteksta redaktoru.", "visualeditor-feedback-link": "VizuālaisRedaktors/Atsauksmes", "visualeditor-feedback-tool": "Atstāt atsauksmi par šo programmatūru", diff --git a/i18n/ve-wmf/lzh.json b/i18n/ve-wmf/lzh.json index ed8ee3b3b8..c640346ab2 100644 --- a/i18n/ve-wmf/lzh.json +++ b/i18n/ve-wmf/lzh.json @@ -4,5 +4,5 @@ "SolidBlock" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|呈纂]]" + "tag-visualeditor": "呈纂" } diff --git a/i18n/ve-wmf/lzz.json b/i18n/ve-wmf/lzz.json deleted file mode 100644 index a36f5537a8..0000000000 --- a/i18n/ve-wmf/lzz.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Cem Rize" - ] - }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel Düzenleyici]]" -} diff --git a/i18n/ve-wmf/mad.json b/i18n/ve-wmf/mad.json index 8950b0775c..20d38f631b 100644 --- a/i18n/ve-wmf/mad.json +++ b/i18n/ve-wmf/mad.json @@ -4,5 +4,5 @@ "Boesenbergia" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]" + "tag-visualeditor": "VisualEditor" } diff --git a/i18n/ve-wmf/mag.json b/i18n/ve-wmf/mag.json index 794dcaec8c..a6a5141480 100644 --- a/i18n/ve-wmf/mag.json +++ b/i18n/ve-wmf/mag.json @@ -7,15 +7,15 @@ "tag-editcheck-newcontent-description": "EditCheck के मानना हे जे पन्नामे नया सामग्री जोड़ल गेल हे", "tag-editcheck-newreference-description": "पन्नामे एगो सन्दर्भ जोड़ल गेल", "tag-editcheck-references-description": "EditCheck के मानना हे जे एगो सन्दर्भके आवश्यकता हो सकहे", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|सम्पादन जाँच (सन्दर्भ) सक्रियकृत]]", + "tag-editcheck-references-activated": "सम्पादन जाँच (सन्दर्भ) सक्रियकृत", "tag-editcheck-references-activated-description": "EditCheck के मानना हे जे एगो सन्दर्भके आवश्यकता हो सकहे आउ UI देखावल गेलहल", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य सम्पादन]]", + "tag-visualeditor": "यथादृश्य सम्पादन", "tag-visualeditor-description": "सम्पादन [[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य सम्पादिका]]के प्रयोगसे कैल गेल", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य सम्पादिका: जाँची]]", + "tag-visualeditor-needcheck": "यथादृश्य सम्पादिका: जाँची", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य सम्पादिका]]से कैल गेल सम्पादन जेकरामे सिस्टम् पैलक हे कि विकिपाठमे अनपेक्षित बदलाव हो सकहे ।", "tag-visualeditor-wikitext": "२०१७ स्रोत सम्पादन", "tag-visualeditor-wikitext-description": "२०१७ विकिबाठ सम्पादिकासे कैल गेल सम्पादन", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य सम्पादन: बदलल]]", + "tag-visualeditor-switched": "दृश्य सम्पादन: बदलल", "tag-visualeditor-switched-description": "सदस्स दृश्य सम्पादिकाके सहायतासे सम्पादन काज आरम्भ कैलन आउ ओकर बाद स्रोत सम्पादित करेके बिकल्प चुनलन ।", "visualeditor-feedback-link": "Project:VisualEditor/प्रतिक्रिया", "visualeditor-feedback-tool": "ई सॉफ्टवेयरके बारेमे अपन सुझाव लिखी", diff --git a/i18n/ve-wmf/mai.json b/i18n/ve-wmf/mai.json index 9a16edada1..7c11917df0 100644 --- a/i18n/ve-wmf/mai.json +++ b/i18n/ve-wmf/mai.json @@ -4,6 +4,6 @@ "बिप्लब आनन्द" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|भिजुअल सम्पादक]]", + "tag-visualeditor": "भिजुअल सम्पादक", "visualeditor-welcomedialog-content-thanks": "सहायताक लेल धन्यवाद!" } diff --git a/i18n/ve-wmf/mg.json b/i18n/ve-wmf/mg.json index 04732fac10..97b503f9d3 100644 --- a/i18n/ve-wmf/mg.json +++ b/i18n/ve-wmf/mg.json @@ -4,13 +4,13 @@ "Jagwar" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Hanova araka ny hitan'ny maso]]", + "tag-visualeditor": "Hanova araka ny hitan'ny maso", "tag-visualeditor-description": "Fanovana natao tamin'ny alalan'i [[{{MediaWiki:visualeditor-descriptionpagelink}}|mpanova ara-maso]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|mpanova ara-maso: tokony homarinina]]", + "tag-visualeditor-needcheck": "mpanova ara-maso: tokony homarinina", "tag-visualeditor-needcheck-description": "Fanovàna natao tamin'ny alalan'i [[{{MediaWiki:visualeditor-descriptionpagelink}}|mpanova ara-maso]] izay nahitan'ny rafitra hadisoam-panovàna", "tag-visualeditor-wikitext": "mpanova fango 2017", "tag-visualeditor-wikitext-description": "Fiovana natao tamin'ny alalan'ny mpanova wikisoratra 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor:Nivadika]]", + "tag-visualeditor-switched": "VisualEditor:Nivadika", "tag-visualeditor-switched-description": "Nanomboka nampiasa mpanova ara-maso ity mpikambana ity ary nivadika tamin'ny mpanova wikisoratra izy.", "visualeditor-feedback-link": "Project:VisualEditor/Famoahan-kevitra", "visualeditor-feedback-tool": "Hametraka famoahan-kevitra momba ity rindrankajy ity", diff --git a/i18n/ve-wmf/min.json b/i18n/ve-wmf/min.json index d8f60e173e..d870f8a8cf 100644 --- a/i18n/ve-wmf/min.json +++ b/i18n/ve-wmf/min.json @@ -5,12 +5,12 @@ "Jagwar" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Suntiang visual]]", + "tag-visualeditor": "Suntiang visual", "tag-visualeditor-description": "Suntiangan manggunoan [[{{MediaWiki:visualeditor-descriptionpagelink}}|Panyuntiang visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VE: Pariso]]", + "tag-visualeditor-needcheck": "VE: Pariso", "tag-visualeditor-wikitext": "Suntiangan sumber 2017", "tag-visualeditor-wikitext-description": "Suntiangan manggunoan panyuntiang teks wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VE: Ganti]]", + "tag-visualeditor-switched": "VE: Ganti", "visualeditor-feedback-link": "Project:VisualEditor/Umpan baliak", "visualeditor-feedback-tool": "Tinggaan umpan baliak ka piranti lunak ko", "visualeditor-help-label": "Baco panduan pangguno", diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index 12b9705397..4fe914a165 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -11,15 +11,15 @@ "tag-editcheck-newcontent-description": "EditCheck мисли дека на страницата е додадена нова содржина", "tag-editcheck-newreference-description": "На страницата е додадена нова содржина", "tag-editcheck-references-description": "EditCheck мисли дека треба навод", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Вклучена проверката на уредувања (наводи)]]", + "tag-editcheck-references-activated": "Вклучена проверката на уредувања (наводи)", "tag-editcheck-references-activated-description": "Проверката на уредувања смета дека може да треба навод, и се покажа корисничкиот посредник", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Нагледно уредување]]", + "tag-visualeditor": "Нагледно уредување", "tag-visualeditor-description": "Уредување направено со [[{{MediaWiki:visualeditor-descriptionpagelink}}|нагледниот уредник]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Нагледен уредник: Проверка]]", + "tag-visualeditor-needcheck": "Нагледен уредник: Проверка", "tag-visualeditor-needcheck-description": "Уредување направено со [[{{MediaWiki:visualeditor-descriptionpagelink}}|нагледниот уредник]] при кое системот утврдил дека викитекстот може да има ненамерни измени.", "tag-visualeditor-wikitext": "Изворно уредување 2017", "tag-visualeditor-wikitext-description": "Уредувањето е направено со уредникот на викитекст од 2017 г.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Негледен уредник: Префрлено]]", + "tag-visualeditor-switched": "Негледен уредник: Префрлено", "tag-visualeditor-switched-description": "Корисникот почнал да уредува со нагледниот уредник, но потоа се префрлил на викитекстуалниот.", "visualeditor-feedback-link": "Project:VisualEditor/Мислења", "visualeditor-feedback-tool": "Дајте мислење за програмов", diff --git a/i18n/ve-wmf/ml.json b/i18n/ve-wmf/ml.json index a301d7c0fd..1345611ba4 100644 --- a/i18n/ve-wmf/ml.json +++ b/i18n/ve-wmf/ml.json @@ -7,13 +7,13 @@ "Vssun" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|കണ്ടുതിരുത്തൽ സൗകര്യം]]", + "tag-visualeditor": "കണ്ടുതിരുത്തൽ സൗകര്യം", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|കണ്ടുതിരുത്തൽ സൗകര്യമുപയോഗിച്ച്]] ചെയ്ത തിരുത്തൽ", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|കണ്ടുതിരുത്തൽ സൗകര്യം: പരിശോധിക്കുക]]", + "tag-visualeditor-needcheck": "കണ്ടുതിരുത്തൽ സൗകര്യം: പരിശോധിക്കുക", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|കണ്ടുതിരുത്തൽ സൗകര്യം]] ഉപയോഗിച്ച് തിരുത്തുമ്പോൾ വിക്കി എഴുത്ത് ഉൾപ്പെട്ടാൽ അപ്രതീക്ഷിത മാറ്റങ്ങൾ ഉണ്ടായേക്കാനിടയുണ്ട്.", "tag-visualeditor-wikitext": "2017 സ്രോതസ്സ് തിരുത്ത്", "tag-visualeditor-wikitext-description": "2017 സ്രോതസ്സ് തിരുത്തൽ സൗകര്യം ഉപയോഗിച്ച് ചെയ്ത തിരുത്ത്", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|കണ്ടുതിരുത്തൽ സൗകര്യം:മാറിയത്]]", + "tag-visualeditor-switched": "കണ്ടുതിരുത്തൽ സൗകര്യം:മാറിയത്", "tag-visualeditor-switched-description": "ഉപയോക്താവ് തിരുത്താൻ തുടങ്ങിയത് കണ്ടുതിരുത്തൽ സൗകര്യം ഉപയോഗിച്ചാണെങ്കിലും പിന്നീട് വിക്കിഎഴുത്ത് ഉപകരണത്തിലേക്ക് മാറി", "visualeditor-feedback-link": "Project:കണ്ടുതിരുത്തൽ സൗകര്യം/പ്രതികരണങ്ങൾ", "visualeditor-feedback-tool": "ഈ സോഫ്റ്റ്‌വേറിനെക്കുറിച്ചുള്ള പ്രതികരണം ചേർക്കുക", diff --git a/i18n/ve-wmf/mnc-mong.json b/i18n/ve-wmf/mnc-mong.json index 8b2af79179..62a96050fb 100644 --- a/i18n/ve-wmf/mnc-mong.json +++ b/i18n/ve-wmf/mnc-mong.json @@ -4,5 +4,5 @@ "Nikki" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ᡨᡠᠸᠠᡵᠠ ᠮᡠᡨᡝᡵᡝ ᡴᡡᠪᡠᠯᡳᠨ]]" + "tag-visualeditor": "ᡨᡠᠸᠠᡵᠠ ᠮᡠᡨᡝᡵᡝ ᡴᡡᠪᡠᠯᡳᠨ" } diff --git a/i18n/ve-wmf/mnc.json b/i18n/ve-wmf/mnc.json index e0e2ac27c1..4ac4139f30 100644 --- a/i18n/ve-wmf/mnc.json +++ b/i18n/ve-wmf/mnc.json @@ -4,5 +4,5 @@ "Chulsu463" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Tuwara mutere kvbulin]]" + "tag-visualeditor": "Tuwara mutere kvbulin" } diff --git a/i18n/ve-wmf/mni.json b/i18n/ve-wmf/mni.json index cccd7de41e..cf64c7d127 100644 --- a/i18n/ve-wmf/mni.json +++ b/i18n/ve-wmf/mni.json @@ -4,6 +4,6 @@ "Awangba Mangang" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ꯃꯤꯠꯅꯥ ꯎꯔꯒ ꯁꯦꯝꯒꯠꯄ]]", + "tag-visualeditor": "ꯃꯤꯠꯅꯥ ꯎꯔꯒ ꯁꯦꯝꯒꯠꯄ", "visualeditor-welcomedialog-action": "ꯁꯦꯝꯒꯠꯄ ꯍꯧꯔꯦ" } diff --git a/i18n/ve-wmf/mnw.json b/i18n/ve-wmf/mnw.json index 8b773a6e0a..abddff49cb 100644 --- a/i18n/ve-wmf/mnw.json +++ b/i18n/ve-wmf/mnw.json @@ -5,6 +5,6 @@ "咽頭べさ" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ပလေဝ်ဒါန် မညာတ်နမတ်]]", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|မပြၚ်လှာဲထောံ:ပလေဝ်ဒါန်ဗီုပြၚ်မဆဵုညာတ်]]" + "tag-visualeditor": "ပလေဝ်ဒါန် မညာတ်နမတ်", + "tag-visualeditor-switched": "မပြၚ်လှာဲထောံ:ပလေဝ်ဒါန်ဗီုပြၚ်မဆဵုညာတ်" } diff --git a/i18n/ve-wmf/mos.json b/i18n/ve-wmf/mos.json index 29bc465a28..7d472f2f31 100644 --- a/i18n/ve-wmf/mos.json +++ b/i18n/ve-wmf/mos.json @@ -7,15 +7,15 @@ "tag-editcheck-newcontent-description": "tek bãoonego gésgo o b pãas-ã bũmbu gʋlsga pugin", "tag-editcheck-newreference-description": "O b rɩka seb-tika m pãas sebrã pugin", "tag-editcheck-references-description": "tek bãoonego gés'gu tâgs tɩ o b pãas-ã seb-tika ning o b m boora", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Edit Check (references) activated]]", + "tag-editcheck-references-activated": "Edit Check (references) activated", "tag-editcheck-references-activated-description": "tek bãoonego gésgo tâag sê tɩ o b na tôog m boore sén tikɩ, la UI sẽn yé", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|gésgo tekrɩ]]", + "tag-visualeditor": "gésgo tekrɩ", "tag-visualeditor-description": "Tékra maane tɩ yaa [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Check]]", + "tag-visualeditor-needcheck": "Visual edit: Check", "tag-visualeditor-needcheck-description": "Tékra maane tɩ yaa [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] tɩ masĩni bâng tɩ yaa wikitext ninga n tari tekrɩ ning sẽn ka mè a tiiri.", "tag-visualeditor-wikitext": "Yʋʋm 2017 zii tékrɩ", "tag-visualeditor-wikitext-description": "Tékra maana yʋʋm 2017 tɩ yaa wikitext tekrɩ la rɩkɩ m mane na", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Switched]]", + "tag-visualeditor-switched": "Visual edit: Switched", "tag-visualeditor-switched-description": "Tʋʋmda soaba sɩnga tek bãoonego tɩ yaa gésgo tekrɩ la tek n kêng wikitext tekɩr", "visualeditor-feedback-link": "Tʋɩmda: gésgo tekrɩ/lébsé gomda", "visualeditor-feedback-tool": "Yélé fo sẽn yɛ ordinatêêra boo'nda to-to", diff --git a/i18n/ve-wmf/mr.json b/i18n/ve-wmf/mr.json index bccddf7072..ec76d8806c 100644 --- a/i18n/ve-wmf/mr.json +++ b/i18n/ve-wmf/mr.json @@ -11,13 +11,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य संपादन]]", + "tag-visualeditor": "दृश्य संपादन", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्यसंपादक]] वापरून केलेले संपादन", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्यसंपादन: तपासा]]", + "tag-visualeditor-needcheck": "दृश्यसंपादन: तपासा", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:Visualeditor-descriptionpagelink}}|यथादृश्यसंपादक]] वापरून केलेल्या संपादनात,अभिप्रेत नसलेला विकिमजकूर दिसल्याचे, प्रणालीने शोधले आहे.", "tag-visualeditor-wikitext": "२०१७ स्रोत संपादन", "tag-visualeditor-wikitext-description": "'विकिमजकूर संपादक' वापरुन केलेले संपादन", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृष्य संपादन: बदलले]]", + "tag-visualeditor-switched": "दृष्य संपादन: बदलले", "tag-visualeditor-switched-description": "सदस्याने सुरुवातीला यथादृश्यसंपादक वापरला परंतू नंतर तो विकीटेक्स्ट संपादकाकडे गेला.", "visualeditor-feedback-link": "Project:यथादृश्यसंपादक/प्रतिसाद", "visualeditor-feedback-tool": "या संचेतनाबद्दल प्रतिसाद द्या", diff --git a/i18n/ve-wmf/mrh.json b/i18n/ve-wmf/mrh.json index 4cbc39051f..beb8745cbb 100644 --- a/i18n/ve-wmf/mrh.json +++ b/i18n/ve-wmf/mrh.json @@ -5,13 +5,13 @@ "Teitei Para" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit]]", + "tag-visualeditor": "Visual edit", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|mona taopathina]] he hmâna chôta taopathina tao teh", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Mona taopathina: Pazâh]]", + "tag-visualeditor-needcheck": "Mona taopathina: Pazâh", "tag-visualeditor-needcheck-description": "Achhuah leipa wikichâ pathlainazy a y theipazy dâh ta a patupa [[{{MediaWiki:visualeditor-descriptionpagelink}}|mona taopathi0]] he hmâna chôta taopathina tao teh.", "tag-visualeditor-wikitext": "2017 hnawh taopathina", "tag-visualeditor-wikitext-description": "2017 wikichâ hmâna chôta taopathina tao teh", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Mona taopathina: Pathlai haw]]", + "tag-visualeditor-switched": "Mona taopathina: Pathlai haw", "tag-visualeditor-switched-description": "Hmâhtuhpa cha mona taopathina hmâna chôta taopathi'pa ta a pathao, khaitawh wikichâ taopathina lâ a pathlai.", "visualeditor-feedback-link": "Prawche; MonaTaopathina/Khokheina", "visualeditor-feedback-tool": "He software nah azaopa na pachâna so teh", diff --git a/i18n/ve-wmf/ms-arab.json b/i18n/ve-wmf/ms-arab.json index fa8e88187c..dc16baf577 100644 --- a/i18n/ve-wmf/ms-arab.json +++ b/i18n/ve-wmf/ms-arab.json @@ -4,5 +4,5 @@ "Tofeiku" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|سونتيڠ ۏيسوال]]" + "tag-visualeditor": "سونتيڠ ۏيسوال" } diff --git a/i18n/ve-wmf/ms.json b/i18n/ve-wmf/ms.json index 40af98c822..3285109bf7 100644 --- a/i18n/ve-wmf/ms.json +++ b/i18n/ve-wmf/ms.json @@ -13,13 +13,13 @@ "tag-editcheck-newcontent-description": "EditCheck berpendapat kandungan baharu telah ditambahkan pada halaman", "tag-editcheck-newreference-description": "Rujukan telah ditambahkan pada halaman", "tag-editcheck-references-description": "EditCheck berpendapat rujukan mungkin diperlukan", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Suntingan visual]]", + "tag-visualeditor": "Suntingan visual", "tag-visualeditor-description": "Disunting menggunakan [[{{MediaWiki:visualeditor-descriptionpagelink}}|alat sunting visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Suntingan visual: Semak]]", + "tag-visualeditor-needcheck": "Suntingan visual: Semak", "tag-visualeditor-needcheck-description": "Suntingan dilakukan dengan menggunakan [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] di mana sistem telah mengesan wikiteks yang mungkin mengalami perubahan yang tidak diingini.", "tag-visualeditor-wikitext": "Suntingan sumber 2017", "tag-visualeditor-wikitext-description": "Suntingan dibuat menggunakan alat sunting wikiteks 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Suntingan visual: Ditukar]]", + "tag-visualeditor-switched": "Suntingan visual: Ditukar", "tag-visualeditor-switched-description": "Pengguna mula-mula menyunting dengan VisualEditor, kemudian beralih kepada alat sunting wikiteks.", "visualeditor-feedback-link": "Project:VisualEditor/Maklum balas", "visualeditor-feedback-tool": "Berikan maklum balas mengenai perisian ini", diff --git a/i18n/ve-wmf/mt.json b/i18n/ve-wmf/mt.json index 4fcb99728d..8905d4fa65 100644 --- a/i18n/ve-wmf/mt.json +++ b/i18n/ve-wmf/mt.json @@ -4,11 +4,11 @@ "Chrisportelli" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Modifika magħmula permezz tal-[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Iċċekkja]]", + "tag-visualeditor-needcheck": "VisualEditor: Iċċekkja", "tag-visualeditor-needcheck-description": "Modifika li saret permezz tal-[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] fejn is-sistema indunat li t-test possibilment għandu bidliet mhux mixtieqa.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Qaleb]]", + "tag-visualeditor-switched": "VisualEditor: Qaleb", "tag-visualeditor-switched-description": "L-utent beda jimmodifika bil-VisualEditor, u wara qaleb għall-editur tat-test wiki.", "visualeditor-feedback-link": "Project:VisualEditor/Kummenti", "visualeditor-feedback-tool": "Ħalli kumment", diff --git a/i18n/ve-wmf/mui.json b/i18n/ve-wmf/mui.json index 3e2f4a4fc5..a8ce139f79 100644 --- a/i18n/ve-wmf/mui.json +++ b/i18n/ve-wmf/mui.json @@ -4,5 +4,5 @@ "Masjawad99" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Suntingan visual]]" + "tag-visualeditor": "Suntingan visual" } diff --git a/i18n/ve-wmf/mwl.json b/i18n/ve-wmf/mwl.json index 046aac47b5..02db39ba25 100644 --- a/i18n/ve-wmf/mwl.json +++ b/i18n/ve-wmf/mwl.json @@ -5,5 +5,5 @@ "MokaAkashiyaPT" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Eidiçon bisual]]" + "tag-visualeditor": "Eidiçon bisual" } diff --git a/i18n/ve-wmf/my.json b/i18n/ve-wmf/my.json index d5412728a4..e627f46f2c 100644 --- a/i18n/ve-wmf/my.json +++ b/i18n/ve-wmf/my.json @@ -5,9 +5,9 @@ "Ninjastrikers" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|မျက်မြင် တည်းဖြတ်]]", + "tag-visualeditor": "မျက်မြင် တည်းဖြတ်", "tag-visualeditor-wikitext": "၂၀၁၇ ရင်းမြစ်တည်းဖြတ်", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|အမြင် တည်းဖြတ်မှု- ပြောင်းထားသည်]]", + "tag-visualeditor-switched": "အမြင် တည်းဖြတ်မှု- ပြောင်းထားသည်", "visualeditor-feedback-tool": "ဤဆော့ဝဲလ်နှင့်ပတ်သက်၍ သုံးသပ်အကြံပြုချက်ကို မျှဝေရန်", "visualeditor-help-label": "အသုံးပြုသူလမ်းညွှန်ချက်ကို ဖတ်ရန်", "visualeditor-welcomedialog-action": "စတင်တည်းဖြတ်", diff --git a/i18n/ve-wmf/mzn.json b/i18n/ve-wmf/mzn.json index 5cab5ece3f..81b83f2b53 100644 --- a/i18n/ve-wmf/mzn.json +++ b/i18n/ve-wmf/mzn.json @@ -4,5 +4,5 @@ "محک" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|هارشی‌ینی دَچی‌ین]]" + "tag-visualeditor": "هارشی‌ینی دَچی‌ین" } diff --git a/i18n/ve-wmf/nan-latn-pehoeji.json b/i18n/ve-wmf/nan-latn-pehoeji.json index a44a34549b..c5731b4864 100644 --- a/i18n/ve-wmf/nan-latn-pehoeji.json +++ b/i18n/ve-wmf/nan-latn-pehoeji.json @@ -4,6 +4,6 @@ "Winston Sung" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visualeditor ê siu-kái]]", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor pian-chi̍p: Í-keng piàn-ōaⁿ]]" + "tag-visualeditor": "Visualeditor ê siu-kái", + "tag-visualeditor-switched": "VisualEditor pian-chi̍p: Í-keng piàn-ōaⁿ" } diff --git a/i18n/ve-wmf/nap.json b/i18n/ve-wmf/nap.json index 9ae0e89e5e..98dd577552 100644 --- a/i18n/ve-wmf/nap.json +++ b/i18n/ve-wmf/nap.json @@ -7,11 +7,11 @@ "PiRSquared17" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editore visuale]]", + "tag-visualeditor": "Editore visuale", "tag-visualeditor-description": "Càgnamiento fatto ausando [[{{MediaWiki:visualeditor-descriptionpagelink}}|Editore visuale]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editore visuale: cuntrolla]]", + "tag-visualeditor-needcheck": "Editore visuale: cuntrolla", "tag-visualeditor-needcheck-description": "Cagnamiento affettuato ausanno 'o [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] addò 'o sistema se ne è accuorto 'e cagnamiente ca putessero nun essere vulute dint' 'o wikitesto.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editore visuale: Scagnato]]", + "tag-visualeditor-switched": "Editore visuale: Scagnato", "tag-visualeditor-switched-description": "L'utente accumminciaje a cagnà ausanno l'editore visuale, po' è passato a ll'editore 'e wikitesto", "visualeditor-feedback-link": "Project:VisualEditor/Cummente", "visualeditor-feedback-tool": "Lascia 'nu cummento ncopp'a stu software", diff --git a/i18n/ve-wmf/nb.json b/i18n/ve-wmf/nb.json index 0a73cd2c06..188fd92b11 100644 --- a/i18n/ve-wmf/nb.json +++ b/i18n/ve-wmf/nb.json @@ -17,15 +17,15 @@ "tag-editcheck-newcontent-description": "EditCheck tror nytt innhold ble lagt til på siden", "tag-editcheck-newreference-description": "En referanse ble lagt til på siden", "tag-editcheck-references-description": "EditCheck tror en referanse kan ha vært nødvendig", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Redigeringssjekk (referanser) aktivert]]", + "tag-editcheck-references-activated": "Redigeringssjekk (referanser) aktivert", "tag-editcheck-references-activated-description": "Redigeringssjekk tror at en referanse kan ha vært nødvendig, og brukergrensesnittet for dette ble vist", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell redigering]]", + "tag-visualeditor": "Visuell redigering", "tag-visualeditor-description": "Redigering gjort med [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuell redigering]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell redigering: Sjekk]]", + "tag-visualeditor-needcheck": "Visuell redigering: Sjekk", "tag-visualeditor-needcheck-description": "Redigering gjort med [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] hvor systemet har detektert at utilsiktede endringer i wikiteksten kan ha inntruffet.", "tag-visualeditor-wikitext": "2017-kilderedigering", "tag-visualeditor-wikitext-description": "Redigering gjort med 2017-editoren", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell redigering: Byttet]]", + "tag-visualeditor-switched": "Visuell redigering: Byttet", "tag-visualeditor-switched-description": "Brukeren begynte redigeringen med VisualEditor og byttet deretter til wikitekst-redigering.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Gi tilbakemelding på programvaren", diff --git a/i18n/ve-wmf/nds-nl.json b/i18n/ve-wmf/nds-nl.json index 95ed4fb38f..f7a59eb23f 100644 --- a/i18n/ve-wmf/nds-nl.json +++ b/i18n/ve-wmf/nds-nl.json @@ -4,13 +4,13 @@ "Servien" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuele tekstverwarker]]", + "tag-visualeditor": "Visuele tekstverwarker", "tag-visualeditor-description": "Bewarking emaakt mit behulp van de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwarker]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuele tekstverwarker: naokieken]]", + "tag-visualeditor-needcheck": "Visuele tekstverwarker: naokieken", "tag-visualeditor-needcheck-description": "Bewarking edaon mit de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwarker]] waorbie t systeem op-emörken hef dat der in de wikitekste meugelik onbedoelde wiezigingen esleupen bin.", "tag-visualeditor-wikitext": "Bewarking mid nye wikitekstmodus", "tag-visualeditor-wikitext-description": "Bewarking dån mid de 2017-wikitekstbewarker", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuele tekstverwarker: ümmeskakeld]]", + "tag-visualeditor-switched": "Visuele tekstverwarker: ümmeskakeld", "visualeditor-feedback-link": "Project:Visuele tekstverwarker/Kommentaar", "visualeditor-feedback-tool": "Kommentaar geaven oaver de programmatuur", "visualeditor-help-label": "Leas et gebrukershandbook", diff --git a/i18n/ve-wmf/nds.json b/i18n/ve-wmf/nds.json index 3472343668..4e8c2ae3b9 100644 --- a/i18n/ve-wmf/nds.json +++ b/i18n/ve-wmf/nds.json @@ -6,9 +6,9 @@ "Zylbath" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Bearbeidt mit den [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: nakieken]]", + "tag-visualeditor-needcheck": "VisualEditor: nakieken", "tag-visualeditor-needcheck-description": "Mit den [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] bearbeidte Ännern, bi de dat Systeem wollmööglich Ännern in'n Wikitext opdeckt hett, de nich wüllt sünd.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Feedback achterlaten", diff --git a/i18n/ve-wmf/ne.json b/i18n/ve-wmf/ne.json index 6cc1d7e0f0..ad2ccdfeb1 100644 --- a/i18n/ve-wmf/ne.json +++ b/i18n/ve-wmf/ne.json @@ -11,15 +11,15 @@ "tag-editcheck-newcontent-description": "सम्पादन जाँचले पृष्ठमा नयाँ सामग्री थपिएको ठान्छ", "tag-editcheck-newreference-description": "पृष्ठमा एउटा सन्दर्भ थपियो", "tag-editcheck-references-description": "सम्पादन जाँचले एउटा सन्दर्भ आवश्यक भएको हुन सक्छ भन्ने सोच्छ", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|सम्पादन जाँच गर्नुहोस् (सन्दर्भहरू) सक्रिय]]", + "tag-editcheck-references-activated": "सम्पादन जाँच गर्नुहोस् (सन्दर्भहरू) सक्रिय", "tag-editcheck-references-activated-description": "सम्पादन जाँचले एउटा सन्दर्भ आवश्यक भएको हुन सक्छ भन्ने सोच्छ, र युआई देखाइएको छ", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य सम्पादक]]", + "tag-visualeditor": "दृश्य सम्पादक", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य सम्पादक]] प्रयोग गरेर सम्पादन गरिएको", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य सम्पादक: जाँच्नुहोस्]]", + "tag-visualeditor-needcheck": "दृश्य सम्पादक: जाँच्नुहोस्", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य सम्पादक]] प्रयोग गरेर सम्पादन गरिएको जहाँ प्रणालीले विकिपाठ संभवतः अनायास परिवर्तन भइरहेको पत्ता लगाइयो।", "tag-visualeditor-wikitext": "सन् २०१७ स्राेत सम्पादन", "tag-visualeditor-wikitext-description": "सन् २०१७ विकिपाठ सम्पादक प्रयोग गरेर सम्पादन गरियो", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|दृश्य सम्पादकमा: परिवर्तन गरिएको]]", + "tag-visualeditor-switched": "दृश्य सम्पादकमा: परिवर्तन गरिएको", "tag-visualeditor-switched-description": "प्रयोगकर्ताले दृश्य सम्पादक प्रयोग गरेर सम्पादन गर्न सुरु गरे त्यसपछि विकिपाठ सम्पादकमा परिवर्तन गरिएकाे।", "visualeditor-feedback-link": "परियोजना:दृश्य सम्पादक/पृष्ठपोषण", "visualeditor-feedback-tool": "यस सफ्टवेयरवारेका लागि सुझाव छोड्नुहोस्", diff --git a/i18n/ve-wmf/nia.json b/i18n/ve-wmf/nia.json index ec4cf92be1..709f00a644 100644 --- a/i18n/ve-wmf/nia.json +++ b/i18n/ve-wmf/nia.json @@ -5,5 +5,5 @@ "Slaia" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Famulö'ö faoma editor visual]]" + "tag-visualeditor": "Famulö'ö faoma editor visual" } diff --git a/i18n/ve-wmf/nl.json b/i18n/ve-wmf/nl.json index fec72e49fb..12e1e36af4 100644 --- a/i18n/ve-wmf/nl.json +++ b/i18n/ve-wmf/nl.json @@ -26,15 +26,15 @@ "tag-editcheck-newcontent-description": "EditCheck denkt dat er nieuwe inhoud aan de pagina is toegevoegd", "tag-editcheck-newreference-description": "Er is een referentie aan de pagina toegevoegd", "tag-editcheck-references-description": "EditCheck denkt dat er een referentie nodig kan zijn", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|EditCheck (referenties) geactiveerd]]", + "tag-editcheck-references-activated": "EditCheck (referenties) geactiveerd", "tag-editcheck-references-activated-description": "EditCheck denkt dat er een referentie nodig kan zijn, en de gebruikersinterface is weergegeven", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuele tekstverwerker]]", + "tag-visualeditor": "Visuele tekstverwerker", "tag-visualeditor-description": "Bewerking gedaan met de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwerker]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuele tekstverwerker: nakijken]]", + "tag-visualeditor-needcheck": "Visuele tekstverwerker: nakijken", "tag-visualeditor-needcheck-description": "Bewerking gedaan met de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwerker]], waarbij het systeem mogelijk onbedoelde veranderingen in de wikitekst heeft ontdekt.", "tag-visualeditor-wikitext": "bewerking met nieuwe wikitekstmodus", "tag-visualeditor-wikitext-description": "Bewerking gemaakt met de 2017 wikitekstbewerker", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuele tekstverwerker: omgeschakeld]]", + "tag-visualeditor-switched": "Visuele tekstverwerker: omgeschakeld", "tag-visualeditor-switched-description": "Gebruiker begon het bewerken met de visuele tekstbewerker, en ging daarna over op de wikitekstbewerker.", "visualeditor-feedback-link": "Project:Visuele tekstverwerker/Terugkoppeling", "visualeditor-feedback-tool": "Terugkoppeling achterlaten over deze software", diff --git a/i18n/ve-wmf/nn.json b/i18n/ve-wmf/nn.json index b4db587a9b..314152967f 100644 --- a/i18n/ve-wmf/nn.json +++ b/i18n/ve-wmf/nn.json @@ -9,15 +9,15 @@ "tag-editcheck-newcontent-description": "EditCheck trur at nytt innhald vart lagt til på sida", "tag-editcheck-newreference-description": "Ein referanse vart lagt til på sida", "tag-editcheck-references-description": "EditCheck trur at ein referanse kan ha vore naudsynt", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Endringssjekk (referansar) aktivert]]", + "tag-editcheck-references-activated": "Endringssjekk (referansar) aktivert", "tag-editcheck-references-activated-description": "EditCheck trur at ein referanse kan ha vore naudsynt, og brukargrensesnittet for dette vart vist", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell endring]]", + "tag-visualeditor": "Visuell endring", "tag-visualeditor-description": "Endring gjord med [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuell endring]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell endring: Kontroller]]", + "tag-visualeditor-needcheck": "Visuell endring: Kontroller", "tag-visualeditor-needcheck-description": "Endring gjord med [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuell endring]] der systemet fann at wikiteksten kan ha umeinte endringar.", "tag-visualeditor-wikitext": "2017-kjeldeendring", "tag-visualeditor-wikitext-description": "Endring gjord med 2017-tekstendraren", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell endring: Bytte]]", + "tag-visualeditor-switched": "Visuell endring: Bytte", "tag-visualeditor-switched-description": "Brukaren byrja endra med visuell endring, men bytte så til wikitekstendring.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Gje attendemelding på programvara", diff --git a/i18n/ve-wmf/nqo.json b/i18n/ve-wmf/nqo.json index 97613de5a4..acd459abd8 100644 --- a/i18n/ve-wmf/nqo.json +++ b/i18n/ve-wmf/nqo.json @@ -7,15 +7,15 @@ "tag-editcheck-newcontent-description": "EditCheck ߦߴߊ߬ ߖߌ߰ ߟߊ߫ ߞߏ߫ ߞߣߐߘߐ߫ ߞߎߘߊ߫ ߓߘߊ߫ ߞߊ߬ߝߏ߬ ߞߣߐߘߐ ߡߊ߬", "tag-editcheck-newreference-description": "ߦߟߌߡߊߛߙߋ ߘߏ߫ ߓߘߊ߫ ߝߙߊ߬ ߞߐߜߍ ߟߊ߫", "tag-editcheck-references-description": "EditCheck ߦߴߊ߬ ߖߊ߬ߕߋ߬ ߟߊ߫ ߟߋ߬ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߣߌ߲߬ ߘߐ߫", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}| ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߬ߟߌ (ߦߟߌߡߊߛߙߋ ߟߎ߬) ߓߘߊ߫ ߟߊߞߎߣߎ߲߫]]", + "tag-editcheck-references-activated": " ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߬ߟߌ (ߦߟߌߡߊߛߙߋ ߟߎ߬) ߓߘߊ߫ ߟߊߞߎߣߎ߲߫", "tag-editcheck-references-activated-description": "EdidCheck ߦߴߊ߬ ߖߌ߰ ߟߊ߫ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫، ߊ߬ ߘߏ߲߬ UI ߓߘߊ߫ ߦߌ߬ߘߊ߬.", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲]]", + "tag-visualeditor": "ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲", "tag-visualeditor-description": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߡߍ߲ ߠߎ߬ ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ [[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߗߏ߯ ߡߊߦߟߍߡߊ߲]] ߘߐ߫", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲:ߝߛߍ߬ߝߛߍ߬ߟߌ]]", + "tag-visualeditor-needcheck": "ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲:ߝߛߍ߬ߝߛߍ߬ߟߌ", "tag-visualeditor-needcheck-description": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ [[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲߬ߟߊ߲]] ߠߋ߬ ߘߐ߫ ߞߊ߲ߞߋ ߣߐ߬ ߦߋ߫ ߡߍ߲ ߠߊߞߏߟߐ߲߫ ߠߊ߫ ߥߞߌߞߟߏߘߋ߲ ߠߋ߬ ߘߌ߫ ߡߝߊ߬ߟߋ߲߬ߠߌ߲߬ ߘߐߞߐ߬ߣߐ߲߬ߓߊߟߌ ߟߎ߬ ߦߋ߫ ߡߍ߲ ߘߐ߫.", "tag-visualeditor-wikitext": "߂߀߁߇ ߓߐߛߎ߲߫ ߡߊߦߟߍߡߊ߲", "tag-visualeditor-wikitext-description": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߡߍ߲ ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ ߂߀߁߇ ߥߞߌߞߟߏߘߋ߲ ߡߊߦߟߍ߬ߡߊ߲ ߘߐ߫", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߗߏ߯ ߡߊߦߟߍߡߊ߲: ߟߕߊ߬ߡߌ߲߬ߒ߬ߡߊ߬ߟߌ]]", + "tag-visualeditor-switched": "ߦߋߗߏ߯ ߡߊߦߟߍߡߊ߲: ߟߕߊ߬ߡߌ߲߬ߒ߬ߡߊ߬ߟߌ", "tag-visualeditor-switched-description": "ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ ߡߍ߲ ߓߘߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߘߊߡߌ߬ߣߊ߫ ߞߵߊ߬ ߕߏ߫ ߦߋߢߊ߫ ߡߊߦߟߍߡߊ߲ ߠߊߓߊ߯ߙߊ ߞߊ߲߬߸ ߞߊ߬ ߓߊ߲߫ ߞߵߊ߬ ߡߊߝߊ߬ߟߋ߲߫ ߥߞߌߞߟߏߘߋ߲ ߡߊߦߟߍ߬ߡߊ߲ ߠߊ߫.", "visualeditor-feedback-link": "ߖߊ߬ߕߋ߬ߘߐ߬ߛߌ߮:ߦߋߢߊߡߊߦߟߍߡߊ߲\\ߡߙߌߣߊ߲߫ ߗߋ", "visualeditor-feedback-tool": "ߡߙߌߣߊ߲ ߘߏ߫ ߓߌ߬ߟߊ߬ ߛߎ߲ߝߘߍ ߣߌ߲߬ ߠߊߞߏߟߊ߫", diff --git a/i18n/ve-wmf/nys.json b/i18n/ve-wmf/nys.json index ef7579d73a..e03599dc50 100644 --- a/i18n/ve-wmf/nys.json +++ b/i18n/ve-wmf/nys.json @@ -4,5 +4,5 @@ "Gnangarra" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Djinang wallak]]" + "tag-visualeditor": "Djinang wallak" } diff --git a/i18n/ve-wmf/oc.json b/i18n/ve-wmf/oc.json index 6b1acba6fc..e2bd82804f 100644 --- a/i18n/ve-wmf/oc.json +++ b/i18n/ve-wmf/oc.json @@ -5,11 +5,11 @@ "Jfblanc" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual]]", + "tag-visualeditor": "Editor visual", "tag-visualeditor-description": "Modificacion efectuada amb l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual : de verificar]]", + "tag-visualeditor-needcheck": "Editor visual : de verificar", "tag-visualeditor-needcheck-description": "Modificacion faita en utilizant l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] dins la quala lo sistèma a detectat que lo wikicòdi conten benlèu de modificacions involontàrias.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor Visual : basculat]]", + "tag-visualeditor-switched": "Editor Visual : basculat", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Daissar un comentari sus l'Editor Visual", "visualeditor-help-label": "Legir lo manual de l'utilizaire", diff --git a/i18n/ve-wmf/ojb.json b/i18n/ve-wmf/ojb.json index a4da54518b..b68f4b7f54 100644 --- a/i18n/ve-wmf/ojb.json +++ b/i18n/ve-wmf/ojb.json @@ -4,5 +4,5 @@ "Aandeginini" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Waabam-aanji']]" + "tag-visualeditor": "Waabam-aanji'" } diff --git a/i18n/ve-wmf/olo.json b/i18n/ve-wmf/olo.json index 866d341eca..bc8fe3e17a 100644 --- a/i18n/ve-wmf/olo.json +++ b/i18n/ve-wmf/olo.json @@ -5,7 +5,7 @@ "Mashoi7" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual'noi kohendamine]]", + "tag-visualeditor": "Vizual'noi kohendamine", "tag-visualeditor-description": "Kohendettu [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizualizen editoranke]]", "visualeditor-feedback-link": "Project:Vizualine editoru/Työndö", "visualeditor-feedback-tool": "Anna työndyö täs programmas", diff --git a/i18n/ve-wmf/om.json b/i18n/ve-wmf/om.json index d37ec85bdc..52507cdc5e 100644 --- a/i18n/ve-wmf/om.json +++ b/i18n/ve-wmf/om.json @@ -10,9 +10,9 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Argaa gulaallii]]", + "tag-visualeditor": "Argaa gulaallii", "tag-visualeditor-description": "Gulaallii [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] fayyadamuun uummame", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Check]]", + "tag-visualeditor-needcheck": "Visual edit: Check", "tag-visualeditor-switched-description": "Fayyadamaan gulaala Viizyuwaal'Ediiteriidhan jalqabee achii booda gara Wiikiitekesti'Ediiteriitti jijjiire.", "visualeditor-feedback-link": "Project:Viizyuwaal'Ediiterii/Yaada", "visualeditor-feedback-tool": "Waa'ee mosaajjii kanaa yaada kenni", diff --git a/i18n/ve-wmf/or.json b/i18n/ve-wmf/or.json index 9c191b09c9..539b247691 100644 --- a/i18n/ve-wmf/or.json +++ b/i18n/ve-wmf/or.json @@ -6,6 +6,6 @@ "ଶିତିକଣ୍ଠ ଦାଶ" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ଭିଜୁଆଲ ସମ୍ପାଦନା]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: ପରଖନ୍ତୁ]]" + "tag-visualeditor": "ଭିଜୁଆଲ ସମ୍ପାଦନା", + "tag-visualeditor-needcheck": "VisualEditor: ପରଖନ୍ତୁ" } diff --git a/i18n/ve-wmf/pa.json b/i18n/ve-wmf/pa.json index 8a2207c6cd..b2452d8153 100644 --- a/i18n/ve-wmf/pa.json +++ b/i18n/ve-wmf/pa.json @@ -10,9 +10,9 @@ "Satdeep gill" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ਵਿਜ਼ੁਅਲ ਐਡਿਟ]]", + "tag-visualeditor": "ਵਿਜ਼ੁਅਲ ਐਡਿਟ", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸੋਧ ਕੀਤੀ ਗਈ", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Check]]", + "tag-visualeditor-needcheck": "Visual edit: Check", "tag-visualeditor-needcheck-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] where the system detected the wikitext possibly having unintended changes.", "visualeditor-feedback-link": "ਪਰੋਜੈਕਟ:ਵਿਜ਼ੂਅਲਐਡੀਟਰ/ਇਸ ਬਾਰੇ ਤੁਹਾਡੇ ਵਿਚਾਰ", "visualeditor-feedback-tool": "ਇਸ ਸਾਫ਼ਟਵੇਅਰ ਬਾਰੇ ਆਪਣੇ ਵਿਚਾਰ ਸਾਂਝੇ ਕਰੋ", diff --git a/i18n/ve-wmf/pap.json b/i18n/ve-wmf/pap.json index 68ae379944..20139ab98e 100644 --- a/i18n/ve-wmf/pap.json +++ b/i18n/ve-wmf/pap.json @@ -4,5 +4,5 @@ "ObaTango" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editamentu visual]]" + "tag-visualeditor": "Editamentu visual" } diff --git a/i18n/ve-wmf/pcd.json b/i18n/ve-wmf/pcd.json index 725a549f54..a22ac1891e 100644 --- a/i18n/ve-wmf/pcd.json +++ b/i18n/ve-wmf/pcd.json @@ -4,5 +4,5 @@ "Geoleplubo" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Éditeu visuel]]" + "tag-visualeditor": "Éditeu visuel" } diff --git a/i18n/ve-wmf/pfl.json b/i18n/ve-wmf/pfl.json index 937eecda11..c9560cad55 100644 --- a/i18n/ve-wmf/pfl.json +++ b/i18n/ve-wmf/pfl.json @@ -4,11 +4,11 @@ "Manuae" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Schaffe middm [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Iwwabriefe]]", + "tag-visualeditor-needcheck": "VisualEditor: Iwwabriefe", "tag-visualeditor-needcheck-description": "Middm [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] gmachde Ännarunge, wu meschlische uugwollde Ännarunge im Wikitegschd gfunne hodd.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Gwegseld]]", + "tag-visualeditor-switched": "VisualEditor: Gwegseld", "tag-visualeditor-switched-description": "Middawaida hodd ogfonge middm VisualEditor zu schaffe un hodd donn de Wikitext Editor gnumme.", "visualeditor-feedback-link": "Project:VisualEditor/Riggmeldunge", "visualeditor-feedback-tool": "Riggmeldung dolosse", diff --git a/i18n/ve-wmf/pl.json b/i18n/ve-wmf/pl.json index c0988f0fe5..d3e29914d1 100644 --- a/i18n/ve-wmf/pl.json +++ b/i18n/ve-wmf/pl.json @@ -24,15 +24,15 @@ "tag-editcheck-newcontent-description": "Automatyczny pomocnik uważa, że do strony została dodana nowa treść", "tag-editcheck-newreference-description": "Do strony dodano przypis", "tag-editcheck-references-description": "Automatyczny pomocnik stwierdził, że przydałby się przypis", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Aktywowano automatycznego pomocnika (przypisy)]]", + "tag-editcheck-references-activated": "Aktywowano automatycznego pomocnika (przypisy)", "tag-editcheck-references-activated-description": "Automatyczny pomocnik stwierdził, że przypis może być potrzebny i odpowiedni komunikat został wyświetlony", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Edycja z wykorzystaniem [[{{MediaWiki:visualeditor-descriptionpagelink}}|edytora wizualnego]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: do sprawdzenia]]", + "tag-visualeditor-needcheck": "VisualEditor: do sprawdzenia", "tag-visualeditor-needcheck-description": "Edycja wykonana z wykorzystaniem [[{{MediaWiki:visualeditor-descriptionpagelink}}|edytora wizualnego]], w której system wykrył prawdopodobnie niezamierzone uszkodzenie kodu źródłowego.", "tag-visualeditor-wikitext": "Edytor kodu źródłowego 2017", "tag-visualeditor-wikitext-description": "Edycja dokonana za pomocą edytora wikitekstu 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: przełączono]]", + "tag-visualeditor-switched": "VisualEditor: przełączono", "tag-visualeditor-switched-description": "Użytkownik rozpoczął edycję używając edytora wizualnego, a w jej trakcie przełączył się na edytor kodu źródłowego.", "visualeditor-feedback-link": "Project:VisualEditor/Opinie", "visualeditor-feedback-tool": "Prześlij opinię na temat tego oprogramowania", diff --git a/i18n/ve-wmf/pms.json b/i18n/ve-wmf/pms.json index 2669f7d51b..6a6eedba82 100644 --- a/i18n/ve-wmf/pms.json +++ b/i18n/ve-wmf/pms.json @@ -6,11 +6,11 @@ "පසිඳු කාවින්ද" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modìfica visual]]", + "tag-visualeditor": "Modìfica visual", "tag-visualeditor-description": "Modìfica fàita dovrand l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual: Da verifiché]]", + "tag-visualeditor-needcheck": "Editor visual: Da verifiché", "tag-visualeditor-needcheck-description": "Modìfica fàita an dovrand [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] andoa ël sistema a l'ha trovà che miraco ël wikitest a conten dle modìfiche nen vorsùe.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Scangià]]", + "tag-visualeditor-switched": "VisualEditor: Scangià", "tag-visualeditor-switched-description": "L'utent a l'ha ancaminà a modifiché dovrand VisualEditor peui a l'é passà a l'editor wikitest.", "visualeditor-feedback-link": "Project:Editor visual/Opinion", "visualeditor-feedback-tool": "Lassé n'opinion", diff --git a/i18n/ve-wmf/pnb.json b/i18n/ve-wmf/pnb.json index 56a87675b1..0a0caeade0 100644 --- a/i18n/ve-wmf/pnb.json +++ b/i18n/ve-wmf/pnb.json @@ -7,10 +7,10 @@ "Khalid Mahmood" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ویول ایڈیٹر]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ویژوئل ایڈیٹر: چیک]]", + "tag-visualeditor": "ویول ایڈیٹر", + "tag-visualeditor-needcheck": "ویژوئل ایڈیٹر: چیک", "tag-visualeditor-wikitext": "۲۰۱۷ء سروت توں سودھ", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ویژوئل ایڈیٹر:چالو]]", + "tag-visualeditor-switched": "ویژوئل ایڈیٹر:چالو", "visualeditor-help-label": "ورتوں دی گائیڈ پڑھیو", "visualeditor-welcomedialog-action": "سودھاں شروع کرو", "visualeditor-welcomedialog-switch": "سروت توں سودھو", diff --git a/i18n/ve-wmf/prg.json b/i18n/ve-wmf/prg.json index 7ff8de1707..2fb5f2acea 100644 --- a/i18n/ve-wmf/prg.json +++ b/i18n/ve-wmf/prg.json @@ -4,5 +4,5 @@ "Nērtiks Jōrgesuns" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Wizuāla redigisnā]]" + "tag-visualeditor": "Wizuāla redigisnā" } diff --git a/i18n/ve-wmf/ps.json b/i18n/ve-wmf/ps.json index fc3281ca3a..663c10297f 100644 --- a/i18n/ve-wmf/ps.json +++ b/i18n/ve-wmf/ps.json @@ -4,9 +4,9 @@ "Ahmed-Najib-Biabani-Ibrahimkhel" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ليدنيز سمون]]", + "tag-visualeditor": "ليدنيز سمون", "tag-visualeditor-description": "دا سمون د [[{{MediaWiki:visualeditor-descriptionpagelink}}|ليدنيز سمونگر]] په مرسته شوی", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ليدنيز سمون: کره کتنه]]", + "tag-visualeditor-needcheck": "ليدنيز سمون: کره کتنه", "visualeditor-feedback-link": "Project:ليدنيزسمونگر/ستاسې نظرونه", "visualeditor-feedback-tool": "د دې ساوترې اړونده نظر پرېښودل", "visualeditor-help-label": "کارن لارښود ولولئ", diff --git a/i18n/ve-wmf/pt-br.json b/i18n/ve-wmf/pt-br.json index 80db26470f..c7fc3a36b8 100644 --- a/i18n/ve-wmf/pt-br.json +++ b/i18n/ve-wmf/pt-br.json @@ -21,15 +21,15 @@ "tag-editcheck-newcontent-description": "O EditCheck acha que novo conteúdo foi adicionado à página", "tag-editcheck-newreference-description": "Uma referência foi adicionada à página", "tag-editcheck-references-description": "O EditCheck acha que uma referência pode ser necessária", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Verificação de Edição (referências) ativada]]", + "tag-editcheck-references-activated": "Verificação de Edição (referências) ativada", "tag-editcheck-references-activated-description": "O EditCheck acha que uma referência pode ser necessária e a IU foi exibida", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edição visual]]", + "tag-visualeditor": "Edição visual", "tag-visualeditor-description": "Edição feita utilizando o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edição visual: Verificar]]", + "tag-visualeditor-needcheck": "Edição visual: Verificar", "tag-visualeditor-needcheck-description": "Edição feita utilizando o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] em que o sistema detectou possíveis mudanças não-intencionais ao wikitexto.", "tag-visualeditor-wikitext": "editor de código 2017", "tag-visualeditor-wikitext-description": "Edição feita com o editor de texto wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Edição visual: Alternada]]", + "tag-visualeditor-switched": "Edição visual: Alternada", "tag-visualeditor-switched-description": "O(A) usuário(a) começou a editar usando o editor visual, e depois alternou para o editor de código-fonte.", "visualeditor-feedback-link": "Project:Editor Visual/Comentários", "visualeditor-feedback-tool": "Deixar comentários sobre este software", diff --git a/i18n/ve-wmf/pt.json b/i18n/ve-wmf/pt.json index 198699b8f8..ee3fd6043b 100644 --- a/i18n/ve-wmf/pt.json +++ b/i18n/ve-wmf/pt.json @@ -18,15 +18,15 @@ "tag-editcheck-newcontent-description": "A Verificação de Edições acha que foi adicionado conteúdo novo à página", "tag-editcheck-newreference-description": "Foi adicionada uma referência à página", "tag-editcheck-references-description": "A Verificação de Edições acha que podia ter sido necessária uma referência", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Verificação de Edições (referências) ativada]]", + "tag-editcheck-references-activated": "Verificação de Edições (referências) ativada", "tag-editcheck-references-activated-description": "A Verificação de Edições acha que podia ter sido necessária uma referência e foi mostrada a interface do utilizador", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor Visual]]", + "tag-visualeditor": "Editor Visual", "tag-visualeditor-description": "Edição realizada utilizando o [[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor Visual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor Visual: Verificar]]", + "tag-visualeditor-needcheck": "Editor Visual: Verificar", "tag-visualeditor-needcheck-description": "Edição feita com o [[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor Visual]] em que o sistema detetou que o código wiki possivelmente teve alterações não intencionais.", "tag-visualeditor-wikitext": "editor de código 2017", "tag-visualeditor-wikitext-description": "Edição feita com o editor de texto wiki 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor Visual: Trocado]]", + "tag-visualeditor-switched": "Editor Visual: Trocado", "tag-visualeditor-switched-description": "O utilizador iniciou a edição com o Editor Visual e depois mudou para o editor de texto wiki.", "visualeditor-feedback-link": "Project:Editor Visual/Comentários", "visualeditor-feedback-tool": "Deixar comentário sobre este programa", diff --git a/i18n/ve-wmf/pwn.json b/i18n/ve-wmf/pwn.json index df3c289c0a..4a2e092d46 100644 --- a/i18n/ve-wmf/pwn.json +++ b/i18n/ve-wmf/pwn.json @@ -4,5 +4,5 @@ "Akamycoco" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|pakatua sikiqeneqenetjan a semantaliduan a sirarudjan]]" + "tag-visualeditor": "pakatua sikiqeneqenetjan a semantaliduan a sirarudjan" } diff --git a/i18n/ve-wmf/qu.json b/i18n/ve-wmf/qu.json index fa1125d511..2b97401e54 100644 --- a/i18n/ve-wmf/qu.json +++ b/i18n/ve-wmf/qu.json @@ -5,9 +5,9 @@ "Jduranboger" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] nisqawan hukchasqa", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Llanchiy]]", + "tag-visualeditor-needcheck": "VisualEditor: Llanchiy", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] nisqawan hukchasqa, llamk'ay llika riqsiriptin wiki qillqapi mana munakusqa hukchasqakunatachá.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Llanchiy]]" + "tag-visualeditor-switched": "VisualEditor: Llanchiy" } diff --git a/i18n/ve-wmf/rmc.json b/i18n/ve-wmf/rmc.json index f9cce532f0..b17be2a3ab 100644 --- a/i18n/ve-wmf/rmc.json +++ b/i18n/ve-wmf/rmc.json @@ -4,5 +4,5 @@ "Adehertogh" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizualno editoris]]" + "tag-visualeditor": "Vizualno editoris" } diff --git a/i18n/ve-wmf/ro.json b/i18n/ve-wmf/ro.json index 82461b1e83..d4de601b83 100644 --- a/i18n/ve-wmf/ro.json +++ b/i18n/ve-wmf/ro.json @@ -11,13 +11,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editare vizuală]]", + "tag-visualeditor": "Editare vizuală", "tag-visualeditor-description": "Modificare efectuată cu [[{{MediaWiki:visualeditor-descriptionpagelink}}|editorul vizual]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor vizual: Verificare]]", + "tag-visualeditor-needcheck": "Editor vizual: Verificare", "tag-visualeditor-needcheck-description": "Modificare efectuată cu [[{{MediaWiki:visualeditor-descriptionpagelink}}|editorul vizual]], unde sistemul a detectat că textul wiki a suferit eventuale modificări nedorite.", "tag-visualeditor-wikitext": "Modificare sursă 2017", "tag-visualeditor-wikitext-description": "Modificare efectuată utilizând editorul de wikitext 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor vizual: Comutat]]", + "tag-visualeditor-switched": "Editor vizual: Comutat", "tag-visualeditor-switched-description": "Utilizatorul a început modificarea cu editorul vizual, după care a comutat la editorul de text wiki.", "visualeditor-feedback-link": "Project:EditorVizual/Feedback", "visualeditor-feedback-tool": "Lăsați feedback despre acest software", diff --git a/i18n/ve-wmf/roa-tara.json b/i18n/ve-wmf/roa-tara.json index 9920db3273..fb803ff6ec 100644 --- a/i18n/ve-wmf/roa-tara.json +++ b/i18n/ve-wmf/roa-tara.json @@ -6,13 +6,13 @@ "Muhammad Shuaib" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Cangiamende visuale]]", + "tag-visualeditor": "Cangiamende visuale", "tag-visualeditor-description": "Cangiamende fatte ausanne 'u [[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual editor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visua edit: Condrolle]]", + "tag-visualeditor-needcheck": "Visua edit: Condrolle", "tag-visualeditor-needcheck-description": "Cangiamende fatte ausanne 'u [[{{MediaWiki:visualeditor-descriptionpagelink}}|cangiatore visuale]] addò 'u sisteme ave acchiate uicchiteste ca pò essere ca ha state cangiate none indenzionalmende.", "tag-visualeditor-wikitext": "Editor de uicchiteste 2017", "tag-visualeditor-wikitext-description": "Cangiamende fatte ausanne l'editor de uicchiteste 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit: Scangiate]]", + "tag-visualeditor-switched": "Visual edit: Scangiate", "tag-visualeditor-switched-description": "L'utende ha accumenzate a cangià ausanne 'u cangiatore visuale e pò ha passate a 'u cangiatore uicchiteste.", "visualeditor-feedback-link": "Project:VisualEditor/Segnalazione", "visualeditor-feedback-tool": "Lasse 'na segnalazione sus a stu software", diff --git a/i18n/ve-wmf/rsk.json b/i18n/ve-wmf/rsk.json index 0e3cf3fe7a..dae92789d9 100644 --- a/i18n/ve-wmf/rsk.json +++ b/i18n/ve-wmf/rsk.json @@ -5,13 +5,13 @@ ] }, "tag-editcheck-references-description": "EditCheck трима же референца можебуц була потребна", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалне ушорйованє]]", + "tag-visualeditor": "визуалне ушорйованє", "tag-visualeditor-description": "Пременка направена зоз [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалним едитором]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуални едитор: превериц]]", + "tag-visualeditor-needcheck": "Визуални едитор: превериц", "tag-visualeditor-needcheck-description": "Пременка направена [[{{MediaWiki:visualeditor-descriptionpagelink}}|з визуалним едитором]] дзе систем детектовал викитекст з можлївима нєжаданима пременками.", "tag-visualeditor-wikitext": "ушорйованє жридла (2017)", "tag-visualeditor-wikitext-description": "Пременка направена з хаснованьом 2017 викитекст едитора", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуални едитор: зачерани]]", + "tag-visualeditor-switched": "Визуални едитор: зачерани", "tag-visualeditor-switched-description": "Хаснователь почал ушорйовац хаснуюци визуални едитор, а потим прешол на викитекст едитор.", "visualeditor-feedback-link": "Project:Визуални едитор/Повратна информация", "visualeditor-feedback-tool": "Охабце повратну информацию о тим софтверу", diff --git a/i18n/ve-wmf/ru.json b/i18n/ve-wmf/ru.json index 5aab5aace6..fe1509f53f 100644 --- a/i18n/ve-wmf/ru.json +++ b/i18n/ve-wmf/ru.json @@ -27,13 +27,13 @@ ] }, "tag-editcheck-newreference-description": "На страницу добавлена ссылка", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|через визуальный редактор]]", + "tag-visualeditor": "через визуальный редактор", "tag-visualeditor-description": "Правка, сделанная через [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуальный редактор]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|через визуальный редактор]]: проверить", + "tag-visualeditor-needcheck": "через визуальный редактор: проверить", "tag-visualeditor-needcheck-description": "Правка, сделанная через [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуальный редактор]], в которой система обнаружила вероятность непреднамеренного изменения вики-текста.", "tag-visualeditor-wikitext": "редактор вики-текста 2017", "tag-visualeditor-wikitext-description": "Правка сделана с помощью редактора вики-текста 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|визуальный редактор]] отключён", + "tag-visualeditor-switched": "визуальный редактор отключён", "tag-visualeditor-switched-description": "Участник начал редактировать с помощью визуального редактора, а затем переключился в редактор вики-текста.", "visualeditor-feedback-link": "Project:Визуальный редактор/Отзывы", "visualeditor-feedback-tool": "Оставить отзыв", diff --git a/i18n/ve-wmf/rue.json b/i18n/ve-wmf/rue.json index f3a9f420b9..7bd8a29a29 100644 --- a/i18n/ve-wmf/rue.json +++ b/i18n/ve-wmf/rue.json @@ -4,6 +4,6 @@ "Tkalyn" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуалне едітованя]]", + "tag-visualeditor": "Візуалне едітованя", "tag-visualeditor-description": "Едітованя выконане з помочов [[{{MediaWiki:visualeditor-descriptionpagelink}}|візуалного редактора]]" } diff --git a/i18n/ve-wmf/rw.json b/i18n/ve-wmf/rw.json index 4faee931bf..bd297ca5f4 100644 --- a/i18n/ve-wmf/rw.json +++ b/i18n/ve-wmf/rw.json @@ -5,13 +5,13 @@ "Rodrigue" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Guhindura amashusho]]", + "tag-visualeditor": "Guhindura amashusho", "tag-visualeditor-description": "Guhindura byakozwe ukoresheje [[{{MediaWiki:visualeditor-descriptionpagelink}}|umukosozi w'amashusho]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|guhundura amashusho: reba]]", + "tag-visualeditor-needcheck": "guhundura amashusho: reba", "tag-visualeditor-needcheck-description": "Guhindura byakozwe ukoresheje [[{{MediaWiki:visualeditor-descriptionpagelink}}|umugenzuzi w'amashusho]] aho sisitemu yamenye wikitext bishoboka ko ifite impinduka zitateganyijwe.", "tag-visualeditor-wikitext": "2017 gukosora inkomoko", "tag-visualeditor-wikitext-description": "Ikosora ryakozwe rikoresshejwe ikosora rya wikitext 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Guhindura amashusho:byahinduwe]]", + "tag-visualeditor-switched": "Guhindura amashusho:byahinduwe", "tag-visualeditor-switched-description": "Umukoresha yatangiye guhindura akoresheje mugenzuzi y'amashusho, hanyuma ahindurira kuri wikitext editor", "visualeditor-feedback-link": "Umushinga:mugenzuzi y'amashusho/ibitekerezo", "visualeditor-feedback-tool": "Siga ibitekerezo kuri iyi software", diff --git a/i18n/ve-wmf/ryu.json b/i18n/ve-wmf/ryu.json index 994465e699..a31cc6b5c1 100644 --- a/i18n/ve-wmf/ryu.json +++ b/i18n/ve-wmf/ryu.json @@ -4,5 +4,5 @@ "ChoiChong" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター]]" + "tag-visualeditor": "ビジュアルエディター" } diff --git a/i18n/ve-wmf/sa.json b/i18n/ve-wmf/sa.json index 94078cdf7c..39e63e9fac 100644 --- a/i18n/ve-wmf/sa.json +++ b/i18n/ve-wmf/sa.json @@ -4,5 +4,5 @@ "NehalDaveND" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्यसम्पादिका]]" + "tag-visualeditor": "यथादृश्यसम्पादिका" } diff --git a/i18n/ve-wmf/sah.json b/i18n/ve-wmf/sah.json index 4d483dc1f5..d85ed6f98a 100644 --- a/i18n/ve-wmf/sah.json +++ b/i18n/ve-wmf/sah.json @@ -5,11 +5,11 @@ "София" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Тута көрөн уларытыы]]", + "tag-visualeditor": "Тута көрөн уларытыы", "tag-visualeditor-description": "Көннөрүү [[{{MediaWiki:visualeditor-descriptionpagelink}}|Көрөн уларытааччы эрэдээктэр]] көмөтүнэн оҥоһуллубут", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Көрөн уларытар эрэдээктэр]]: тургут", + "tag-visualeditor-needcheck": "Көрөн уларытар эрэдээктэр: тургут", "tag-visualeditor-needcheck-description": "Көннөрүү[[{{MediaWiki:visualeditor-descriptionpagelink}}|көрөн уларытар эрэдээктэр көмөтүнэн]], систиэмэ бука алҕас уларытыллыбыт биики-разметканы булла.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Тута көрөн уларытыы]]", + "tag-visualeditor-switched": "Тута көрөн уларытыы", "tag-visualeditor-switched-description": "Бастаан Көрөн уларытар эрэдээктэр көмөтүнэн саҕалаабыт, онтон төрүт тиэкиһи уларытар эрэдээктэргэ көспүт.", "visualeditor-feedback-link": "Project:Көрөн уларытар эрэдээктэр/Дьон туох диирэ", "visualeditor-feedback-tool": "Бу баайым туһунан санааҕын эт", diff --git a/i18n/ve-wmf/sat.json b/i18n/ve-wmf/sat.json index c1f4cc0422..46cf7abcd4 100644 --- a/i18n/ve-wmf/sat.json +++ b/i18n/ve-wmf/sat.json @@ -10,5 +10,5 @@ "tag-editcheck-newreference-description": "ᱥᱟᱠᱟᱢ ᱨᱮ ᱢᱤᱫᱴᱟᱝ ᱛᱟᱹᱞᱤᱠᱟ ᱥᱮᱞᱮᱫ ᱦᱩᱭ ᱟᱠᱟᱱᱟ ᱾", "tag-editcheck-references-description": "ᱮ<unk> ᱪᱮᱠ ᱢᱚᱱᱮ ᱟᱠᱟᱫᱟ ᱡᱮ ᱢᱤᱫᱴᱟᱝ ᱨᱮᱯᱷᱟᱨᱮᱱᱥ ᱨᱮᱭᱟᱜ ᱞᱟᱹᱠᱛᱤ ᱦᱩᱭ ᱫᱟᱲᱮᱭᱟᱜᱼᱟ ᱾", "tag-editcheck-references-activated-description": "ᱮ<unk> ᱪᱮᱠ ᱢᱚᱱᱮ ᱟᱠᱟᱫᱟ ᱡᱮ ᱢᱤᱫᱴᱟᱝ ᱨᱮᱯᱷᱟᱨᱮᱱᱥ ᱨᱮᱭᱟᱜ ᱞᱟᱹᱠᱛᱤ ᱦᱩᱭ ᱫᱟᱲᱮᱭᱟᱜᱼᱟ ᱟᱨ ᱤᱭᱩ ᱟᱭ ᱩᱫᱩᱜ ᱦᱩᱭ ᱟᱠᱟᱱᱟ ᱾", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ᱧᱮᱞᱚᱜ ᱥᱟᱯᱲᱟᱣ]]" + "tag-visualeditor": "ᱧᱮᱞᱚᱜ ᱥᱟᱯᱲᱟᱣ" } diff --git a/i18n/ve-wmf/scn.json b/i18n/ve-wmf/scn.json index 58f15a9046..f4b6645ffd 100644 --- a/i18n/ve-wmf/scn.json +++ b/i18n/ve-wmf/scn.json @@ -10,12 +10,12 @@ ] }, "tag-editcheck-newreference-description": "Na rifirenza fu agghiunciuta â pàggina", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Canciamentu visuali]]", + "tag-visualeditor": "Canciamentu visuali", "tag-visualeditor-description": "Canciamentu fattu usannu [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: cuntrullari]]", + "tag-visualeditor-needcheck": "VisualEditor: cuntrullari", "tag-visualeditor-needcheck-description": "Canciamentu fattu usannu [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] unni lu sistema rilivau pussibbili canciamenti nun vulutu ntô wikitestu.", "tag-visualeditor-wikitext": "Editor wikitestu 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Canciamentu visuali: cummutatu]]", + "tag-visualeditor-switched": "Canciamentu visuali: cummutatu", "visualeditor-feedback-link": "Project:VisualEditor/Cummenta", "visualeditor-feedback-tool": "Lassa nu cummentu supra stu software", "visualeditor-help-label": "Si liggissi la guida utenti", diff --git a/i18n/ve-wmf/sco.json b/i18n/ve-wmf/sco.json index bb4c578482..12ee022b5a 100644 --- a/i18n/ve-wmf/sco.json +++ b/i18n/ve-wmf/sco.json @@ -7,11 +7,11 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Veesual eedit]]", + "tag-visualeditor": "Veesual eedit", "tag-visualeditor-description": "Eedit dun uisin the [[{{MediaWiki:visualeditor-descriptionpagelink}}|veesual eediter]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Veesual eedit: Check]]", + "tag-visualeditor-needcheck": "Veesual eedit: Check", "tag-visualeditor-needcheck-description": "Eedit dun uisin the [[{{MediaWiki:visualeditor-descriptionpagelink}}|VeesualEediter]] whaur the system detectit the wikitex possiblie haein on-ettled-fer chynges.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VeesualEiditer: Switched]]", + "tag-visualeditor-switched": "VeesualEiditer: Switched", "tag-visualeditor-switched-description": "Uiser stairted tae eidit uising VeesualEditer than chynged til the wikitex eiditer.", "visualeditor-feedback-link": "Project:VeesualEediter/Feedback", "visualeditor-feedback-tool": "Gie feedback aboot this softwar", diff --git a/i18n/ve-wmf/sd.json b/i18n/ve-wmf/sd.json index 2a354766e0..c5d2c61677 100644 --- a/i18n/ve-wmf/sd.json +++ b/i18n/ve-wmf/sd.json @@ -7,13 +7,13 @@ ] }, "tag-editcheck-references-description": "سنوارچڪاس سمجهي ٿي تہ ممڪن آھي تہ ڪو حوالو گهربل ھجي", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|وزيوئل سنوار]]", + "tag-visualeditor": "وزيوئل سنوار", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|وزيوئل سنوارگاھ]] استعمال ڪندي ڪيل سنوار", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|وزيوئل سنوار: چڪاس]]", + "tag-visualeditor-needcheck": "وزيوئل سنوار: چڪاس", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|وزيوئل سنوارگاھ]] استعمال ڪندي ڪيل سنوار جتي سسٽم غيرمتوقع تبديليون رکندڙ ممڪنہ وڪيٽيڪسٽ کي سڃاتو.", "tag-visualeditor-wikitext": "2017ع ذريعو سنوار", "tag-visualeditor-wikitext-description": "2017ع وڪي‌متن سنوارگاھ استعمال ڪندي ڪيل سنوار", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|وزيوئل‌سنوار:مٽايل]]", + "tag-visualeditor-switched": "وزيوئل‌سنوار:مٽايل", "tag-visualeditor-switched-description": "واپرائيندڙ وزيوئل سنوارگاھ استعمال ڪندي سنوارڻ شروع ڪيو، وري پوءِ وڪي-متن سنوارگاھ ڏانھن تبديلي ڪئي.", "visualeditor-feedback-link": "رٿا:وزيوئل_سنوارگاھ/موٽ", "visualeditor-feedback-tool": "ھن سافٽويئر بابت موٽ ڇڏيو", diff --git a/i18n/ve-wmf/sdc.json b/i18n/ve-wmf/sdc.json index 760e6ba2ca..fe86e189ba 100644 --- a/i18n/ve-wmf/sdc.json +++ b/i18n/ve-wmf/sdc.json @@ -4,6 +4,6 @@ "Jun Misugi" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modìfica visuari]]", + "tag-visualeditor": "Modìfica visuari", "visualeditor-help-label": "Leggi la ghia d'utenti" } diff --git a/i18n/ve-wmf/sdh.json b/i18n/ve-wmf/sdh.json index 9bb376f853..3e6143c0c6 100644 --- a/i18n/ve-wmf/sdh.json +++ b/i18n/ve-wmf/sdh.json @@ -4,5 +4,5 @@ "Paraw2" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|وێراشتەکردن دیداری]]" + "tag-visualeditor": "وێراشتەکردن دیداری" } diff --git a/i18n/ve-wmf/se.json b/i18n/ve-wmf/se.json index ce4328d2fe..7a12397a92 100644 --- a/i18n/ve-wmf/se.json +++ b/i18n/ve-wmf/se.json @@ -11,15 +11,15 @@ "tag-editcheck-newcontent-description": "EditCheck doaivu ahte ođđa sisdoallu lea lasihuvvon siidui", "tag-editcheck-newreference-description": "Siidui lasihuvvui gáldu", "tag-editcheck-references-description": "EditCheck doaivu ahte okta referánsa sáhttá leamáš dárbbašlaš", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Rievdadaniskkus (gáldut) biddjojuvvon johtui]]", + "tag-editcheck-references-activated": "Rievdadaniskkus (gáldut) biddjojuvvon johtui", "tag-editcheck-references-activated-description": "Rievdadandárkkisteapmi doaivu dan ahte gáldu soaitá leamaš dárbbašlaš, ja geavaheaddjelakta dása čájehuvvui", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Rievdaduvvon visuála rievdadanprográmmain]]", + "tag-visualeditor": "Rievdaduvvon visuála rievdadanprográmmain", "tag-visualeditor-description": "Rievdadus dahkkon [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuála rievdadanprográmmain]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Rievdaduvvon visuála rievdadanprográmmain: Dárkkis]]", + "tag-visualeditor-needcheck": "Rievdaduvvon visuála rievdadanprográmmain: Dárkkis", "tag-visualeditor-needcheck-description": "Rievdadeapmi lea dahkkojuvvon [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditorin]] mas vuogádat lea fuobmán ahte soitet šaddan muhtun rievdadusat wikitekstii mat eai lean galgat.", "tag-visualeditor-wikitext": "Rievdaduvvon jagi 2017 wikiteavstta rievdadanprográmmain", "tag-visualeditor-wikitext-description": "Rievdaduvvon jagi 2017 wikiteavstta rievdadanprográmmain", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Rievdaduvvon visuála rievdadanprográmmain: rievdadanprográmma lonuhuvvui]]", + "tag-visualeditor-switched": "Rievdaduvvon visuála rievdadanprográmmain: rievdadanprográmma lonuhuvvui", "tag-visualeditor-switched-description": "Geavaheaddji rievdadišgođii visuála rievdadanprográmmain, muhto das maŋŋá son lonuhii wikiteavstta rievdadanprográmmii.", "visualeditor-feedback-link": "Project:Visuála rievdadanprográmma/Máhcahat", "visualeditor-feedback-tool": "Atte máhcahaga dán prográmmadaga birra", diff --git a/i18n/ve-wmf/ses.json b/i18n/ve-wmf/ses.json index ceb5464b5a..cdfe4aebd1 100644 --- a/i18n/ve-wmf/ses.json +++ b/i18n/ve-wmf/ses.json @@ -4,5 +4,5 @@ "Songhay" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Diira fasalkaw]]" + "tag-visualeditor": "Diira fasalkaw" } diff --git a/i18n/ve-wmf/sgs.json b/i18n/ve-wmf/sgs.json index 58f28b2c4e..339beda025 100644 --- a/i18n/ve-wmf/sgs.json +++ b/i18n/ve-wmf/sgs.json @@ -4,5 +4,5 @@ "Hugo.arg" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vėzoalos pakeitėms]]" + "tag-visualeditor": "vėzoalos pakeitėms" } diff --git a/i18n/ve-wmf/sh-latn.json b/i18n/ve-wmf/sh-latn.json index e387068fc4..e59c4e4705 100644 --- a/i18n/ve-wmf/sh-latn.json +++ b/i18n/ve-wmf/sh-latn.json @@ -4,13 +4,13 @@ "Winston Sung" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno uređivanje]]", + "tag-visualeditor": "vizualno uređivanje", "tag-visualeditor-description": "Izmjena načinjena [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualnim uređivačem]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno uređivanje: potrebna provjera]]", + "tag-visualeditor-needcheck": "vizualno uređivanje: potrebna provjera", "tag-visualeditor-needcheck-description": "Izmjena načinjena [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualnim uređivačem]] gdje je sistem prepoznao vikitekst s mogućim neželjenim izmjenama.", "tag-visualeditor-wikitext": "uređivanje izvornog koda (2017)", "tag-visualeditor-wikitext-description": "Izmjena načinjena uređivačem vikiteksta iz 2017.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno uređivanje: prebačeno]]", + "tag-visualeditor-switched": "vizualno uređivanje: prebačeno", "tag-visualeditor-switched-description": "Korisnik je počeo uređivati vizualnim uređivačem pa se prebacio na uređivač vikiteksta.", "visualeditor-feedback-link": "Project:Vizualni uređivač/Povratne informacije", "visualeditor-feedback-tool": "Povratne informacije", diff --git a/i18n/ve-wmf/shi.json b/i18n/ve-wmf/shi.json index d524c47d94..51094a3da9 100644 --- a/i18n/ve-wmf/shi.json +++ b/i18n/ve-wmf/shi.json @@ -4,5 +4,5 @@ "Lhoussine AIT TAYFST" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|asnulfu ittyaẓran]]" + "tag-visualeditor": "asnulfu ittyaẓran" } diff --git a/i18n/ve-wmf/shn.json b/i18n/ve-wmf/shn.json index 92cfde129a..8c09a0af28 100644 --- a/i18n/ve-wmf/shn.json +++ b/i18n/ve-wmf/shn.json @@ -5,5 +5,5 @@ "Saosukham" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|တူဝ်ထတ်းတႃႁၼ်]]" + "tag-visualeditor": "တူဝ်ထတ်းတႃႁၼ်" } diff --git a/i18n/ve-wmf/shy-latn.json b/i18n/ve-wmf/shy-latn.json index 6ccfe135dd..4a1d3193e0 100644 --- a/i18n/ve-wmf/shy-latn.json +++ b/i18n/ve-wmf/shy-latn.json @@ -4,5 +4,5 @@ "Vikoula5" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Amaẓrag aẓrayan]]" + "tag-visualeditor": "Amaẓrag aẓrayan" } diff --git a/i18n/ve-wmf/si.json b/i18n/ve-wmf/si.json index fd0cfb8728..ce171a6164 100644 --- a/i18n/ve-wmf/si.json +++ b/i18n/ve-wmf/si.json @@ -7,7 +7,7 @@ "හරිත" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|විෂුවල් එඩිටර්]]", + "tag-visualeditor": "විෂුවල් එඩිටර්", "tag-visualeditor-description": "[[{{MediaWiki:Visualeditor-descriptionpagelink}}|විෂුවල්එඩිටර්]] භාවිතයෙන් කල සංස්කරණයකි.", "tag-visualeditor-needcheck-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] where the system detected the wikitext possibly having unintended changes.", "visualeditor-feedback-link": "ව්‍යාපෘතිය:විෂුවල්එඩිටර්/අදහස් සහ යොජනා", diff --git a/i18n/ve-wmf/sjd.json b/i18n/ve-wmf/sjd.json index 9d7ca0fa4c..ebb694588c 100644 --- a/i18n/ve-wmf/sjd.json +++ b/i18n/ve-wmf/sjd.json @@ -4,8 +4,8 @@ "Merrahtar" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|пэ̄йель визуальнэ редактэр воа̄йхэсс]]", + "tag-visualeditor": "пэ̄йель визуальнэ редактэр воа̄йхэсс", "tag-visualeditor-wikitext": "2017 викитекст редактэр", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|визуальнэ редактэр]] элля ключчья", + "tag-visualeditor-switched": "визуальнэ редактэр элля ключчья", "visualeditor-welcomedialog-title": "{{GENDER:$1|Пӯррь пуэдӓнт}} са̄ййта $2" } diff --git a/i18n/ve-wmf/sk.json b/i18n/ve-wmf/sk.json index 6a14220b84..0823315742 100644 --- a/i18n/ve-wmf/sk.json +++ b/i18n/ve-wmf/sk.json @@ -11,13 +11,13 @@ "TomášPolonec" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizuálny editor]]", + "tag-visualeditor": "vizuálny editor", "tag-visualeditor-description": "Úprava vykonaná pomocou [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuálneho editora]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizuálny editor: na kontrolu]]", + "tag-visualeditor-needcheck": "vizuálny editor: na kontrolu", "tag-visualeditor-needcheck-description": "Úprava pomocou [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuálneho editora]], pri ktorej systém odhalil možné nezamýšľané zmeny wikitextu.", "tag-visualeditor-wikitext": "editor wikitextu 2017", "tag-visualeditor-wikitext-description": "Úprava vykonaná pomocou editoru wikitextu 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizuálny editor: prepnuté]]", + "tag-visualeditor-switched": "vizuálny editor: prepnuté", "tag-visualeditor-switched-description": "Používateľ začal editovať pomocou VisualEditoru, potom sa prepol do režimu editácie wikitextu.", "visualeditor-feedback-link": "Project:Vizuálny editor/Názory", "visualeditor-feedback-tool": "Zanechať spätnú väzbu", diff --git a/i18n/ve-wmf/skr-arab.json b/i18n/ve-wmf/skr-arab.json index 0eed3c5d13..5fbda705f1 100644 --- a/i18n/ve-wmf/skr-arab.json +++ b/i18n/ve-wmf/skr-arab.json @@ -4,7 +4,7 @@ "Saraiki" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|دیدآلی تبدیلی]]", + "tag-visualeditor": "دیدآلی تبدیلی", "visualeditor-welcomedialog-action": "لکھݨ شروع کرو", "visualeditor-welcomedialog-switch": "ماخذ ایڈیٹر تے سوئچ کرو", "visualeditor-welcomedialog-switch-ve": "دیدآلی ایڈیٹر تے سوئچ کرو", diff --git a/i18n/ve-wmf/sl.json b/i18n/ve-wmf/sl.json index 1783655567..14b56cdeb0 100644 --- a/i18n/ve-wmf/sl.json +++ b/i18n/ve-wmf/sl.json @@ -11,15 +11,15 @@ "tag-editcheck-newcontent-description": "EditCheck meni, da je bila na stran dodana nova vsebina", "tag-editcheck-newreference-description": "Na stran je bil dodan sklic", "tag-editcheck-references-description": "EditCheck meni, da bi bil morda potreben sklic", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Preverjanje urejanja (sklici) aktivirano]]", + "tag-editcheck-references-activated": "Preverjanje urejanja (sklici) aktivirano", "tag-editcheck-references-activated-description": "EditCheck meni, da je bil morda potreben sklic, in prikazan je bil uporabniški vmesnik", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno urejanje]]", + "tag-visualeditor": "vizualno urejanje", "tag-visualeditor-description": "Urejanje, opravljeno z [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizualnim urejevalnikom]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno urejanje: preveri]]", + "tag-visualeditor-needcheck": "vizualno urejanje: preveri", "tag-visualeditor-needcheck-description": "Urejanje, opravljeno z [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizualnim urejevalnikom]], pri katerem je sistem zaznal, da vikibesedilo morda vsebuje neželene spremembe.", "tag-visualeditor-wikitext": "urejevalnik vikibesedila 2017", "tag-visualeditor-wikitext-description": "Urejanje, opravljeno z urejevalnikom vikibesedila 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizualno urejanje: preklopljeno]]", + "tag-visualeditor-switched": "vizualno urejanje: preklopljeno", "tag-visualeditor-switched-description": "Uporabnik je začel urejati z Vizualnim urejevalnikom, nato je preklopil na urejevalnik vikibesedila", "visualeditor-feedback-link": "Project:VisualEditor/Povratne informacije", "visualeditor-feedback-tool": "Pošljite povratno informacijo o programju", diff --git a/i18n/ve-wmf/sli.json b/i18n/ve-wmf/sli.json index 3f5eea5b04..5e3a6ff44e 100644 --- a/i18n/ve-wmf/sli.json +++ b/i18n/ve-wmf/sli.json @@ -4,5 +4,5 @@ "Äberlausitzer" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuelle Beorbeetung]]" + "tag-visualeditor": "Visuelle Beorbeetung" } diff --git a/i18n/ve-wmf/smn.json b/i18n/ve-wmf/smn.json index 9fc473e320..b8a70961db 100644 --- a/i18n/ve-wmf/smn.json +++ b/i18n/ve-wmf/smn.json @@ -6,13 +6,13 @@ "Trondtr" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaallâš hammim]]", + "tag-visualeditor": "Visuaallâš hammim", "tag-visualeditor-description": "Nubástus rahtui [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuaallâš editoráin]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaallâš hammim: Täärhist]]", + "tag-visualeditor-needcheck": "Visuaallâš hammim: Täärhist", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaallâš editoráin]] rahtum hammim, mast systeem huámmášij máhđulávt tátuhánnáá šoddâm nubástusâid wikiteevstâst.", "tag-visualeditor-wikitext": "2017 wikiteevstâ hammim", "tag-visualeditor-wikitext-description": "Hämmejum ive 2017 wikiteevstâ editoráin", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaallâš hammim: molsom]]", + "tag-visualeditor-switched": "Visuaallâš hammim: molsom", "tag-visualeditor-switched-description": "Kevttee hammiiškuođij visuaallâš editoráin, talle molsoi wikitekstâ editorân.", "visualeditor-feedback-link": "Project:Visuaallâš editor/Macâttâs", "visualeditor-feedback-tool": "Addel taan ohjelmist macâttâs", diff --git a/i18n/ve-wmf/so.json b/i18n/ve-wmf/so.json index e17549376e..d345684a54 100644 --- a/i18n/ve-wmf/so.json +++ b/i18n/ve-wmf/so.json @@ -5,7 +5,7 @@ "Abshirdheere" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|wax ka badalka muuqaalka ah]]", + "tag-visualeditor": "wax ka badalka muuqaalka ah", "visualeditor-welcomedialog-action": "Biloow bedelidda", "visualeditor-welcomedialog-content": "Qof kasta wuu ka qayb qaadan karaa, habayn kasta waa kaalmo.", "visualeditor-welcomedialog-content-thanks": "Waad ku mahadsantahay kaalmada aad adduunyada ku caawisay helitaan dheeraad ah!", diff --git a/i18n/ve-wmf/sq.json b/i18n/ve-wmf/sq.json index 6ba1983019..3ae4ffc512 100644 --- a/i18n/ve-wmf/sq.json +++ b/i18n/ve-wmf/sq.json @@ -8,13 +8,13 @@ "Liridon" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Përpunim pamor]]", + "tag-visualeditor": "Përpunim pamor", "tag-visualeditor-description": "Përpunim i bërë duke përdorur [[{{MediaWiki:visualeditor-descriptionpagelink}}|përpunuesin pamor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Përpunim pamor: Kontrollojeni]]", + "tag-visualeditor-needcheck": "Përpunim pamor: Kontrollojeni", "tag-visualeditor-needcheck-description": "Përpunim i bërë duke përdorur [[{{MediaWiki:visualeditor-descriptionpagelink}}|përpunuesin pamor]] kur sistemi pikasi tekst wiki sipas gjasash me ndryshime të pasynuara.", "tag-visualeditor-wikitext": "përpunim burimi 2017", "tag-visualeditor-wikitext-description": "Përpunim i bërë duke përdorur përpunues tekste wiki të 2017-s", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Përpunim pamor: I kaluar në të]]", + "tag-visualeditor-switched": "Përpunim pamor: I kaluar në të", "tag-visualeditor-switched-description": "Përdoruesi filloi ta përpunojë duke përdorur përpunuesin pamor, mandej kaloi te përpunues burimi.", "visualeditor-feedback-link": "Project:VisualEditor/Përshtypje", "visualeditor-feedback-tool": "Lini përshtypjet rreth këtij software-i", diff --git a/i18n/ve-wmf/sr-ec.json b/i18n/ve-wmf/sr-ec.json index bd98d64859..1efc3a734c 100644 --- a/i18n/ve-wmf/sr-ec.json +++ b/i18n/ve-wmf/sr-ec.json @@ -13,13 +13,13 @@ "tag-editcheck-newcontent-description": "EditCheck мисли да је нов садржај додат страници", "tag-editcheck-newreference-description": "Референца је додата на страницу", "tag-editcheck-references-description": "EditCheck мисли да је потребна референца", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуелно уређивање]]", + "tag-visualeditor": "Визуелно уређивање", "tag-visualeditor-description": "Измена начињена [[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуелним уређивачем]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуелни уређивач: проверити]]", + "tag-visualeditor-needcheck": "Визуелни уређивач: проверити", "tag-visualeditor-needcheck-description": "Измена начињена [[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуелним уређивачем]] где је систем детектовао викитекст с могућим нежељеним изменама.", "tag-visualeditor-wikitext": "уређивање извора (2017)", "tag-visualeditor-wikitext-description": "Измена направљена уређивачем викитекста (2017)", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуелни уређивач: пребачен]]", + "tag-visualeditor-switched": "Визуелни уређивач: пребачен", "tag-visualeditor-switched-description": "Корисник је почео уређивати користећи визуелни уређивач, па се пребацио на уређивач викитекста.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Повратне информације", diff --git a/i18n/ve-wmf/sr-el.json b/i18n/ve-wmf/sr-el.json index b8737c8201..034442fad9 100644 --- a/i18n/ve-wmf/sr-el.json +++ b/i18n/ve-wmf/sr-el.json @@ -5,13 +5,13 @@ "Сербијана" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vizuelno uređivanje]]", + "tag-visualeditor": "vizuelno uređivanje", "tag-visualeditor-description": "Izmena načinjena [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuelnim uređivačem]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuelni uređivač: proveriti]]", + "tag-visualeditor-needcheck": "Vizuelni uređivač: proveriti", "tag-visualeditor-needcheck-description": "Izmena načinjena [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuelnim uređivačem]] gde je sistem detektovao vikitekst s mogućim neželjenim izmenama.", "tag-visualeditor-wikitext": "uređivanje izvora (2017)", "tag-visualeditor-wikitext-description": "Izmena napravljena uređivačem vikiteksta (2017)", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuelni uređivač: prebačen]]", + "tag-visualeditor-switched": "Vizuelni uređivač: prebačen", "tag-visualeditor-switched-description": "Korisnik je počeo uređivati koristeći vizuelni uređivač, pa se prebacio na uređivač vikiteksta.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Povratne informacije", diff --git a/i18n/ve-wmf/sty.json b/i18n/ve-wmf/sty.json index 9a534011b7..c28baeb2a1 100644 --- a/i18n/ve-wmf/sty.json +++ b/i18n/ve-wmf/sty.json @@ -4,5 +4,5 @@ "Khanmarat" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|визуаль редактор]]" + "tag-visualeditor": "визуаль редактор" } diff --git a/i18n/ve-wmf/su.json b/i18n/ve-wmf/su.json index 68ba16e571..ae7d4bd92f 100644 --- a/i18n/ve-wmf/su.json +++ b/i18n/ve-wmf/su.json @@ -4,5 +4,5 @@ "Kandar" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Édit visual]]" + "tag-visualeditor": "Édit visual" } diff --git a/i18n/ve-wmf/sv.json b/i18n/ve-wmf/sv.json index 00fb7178f3..ad688e0476 100644 --- a/i18n/ve-wmf/sv.json +++ b/i18n/ve-wmf/sv.json @@ -21,13 +21,13 @@ }, "tag-editcheck-newreference-description": "En referens lades till i sidan", "tag-editcheck-references-description": "EditCheck tror att en referens kan ha behövts", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell redigering]]", + "tag-visualeditor": "Visuell redigering", "tag-visualeditor-description": "Redigering gjord med hjälp av [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuell redigering]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell redigering: Kontrollera]]", + "tag-visualeditor-needcheck": "Visuell redigering: Kontrollera", "tag-visualeditor-needcheck-description": "Redigering gjord med [[{{MediaWiki:visualeditor-descriptionpagelink}}|den visuella redigeraren]] där systemet upptäckte att wikitexten möjligen hade oavsiktliga ändringar.", "tag-visualeditor-wikitext": "2017-källredigering", "tag-visualeditor-wikitext-description": "Redigering som gjordes med wikitextredigeraren från 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuell redigering: Växlade]]", + "tag-visualeditor-switched": "Visuell redigering: Växlade", "tag-visualeditor-switched-description": "Användaren började redigera med den visuella redigeraren men växlade sedan till wikitext-läge.", "visualeditor-feedback-link": "Project:VisualEditor/Återkoppling", "visualeditor-feedback-tool": "Lämna återkoppling om denna programvara", diff --git a/i18n/ve-wmf/sw.json b/i18n/ve-wmf/sw.json index a717ee4c7d..c846f01560 100644 --- a/i18n/ve-wmf/sw.json +++ b/i18n/ve-wmf/sw.json @@ -8,10 +8,10 @@ "Stacy Lavuha" ] }, - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}]Angalia uhariri (marejeleo) imeamilishwa]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|KihaririOneshi]]", + "tag-editcheck-references-activated": "Angalia uhariri (marejeleo) imeamilishwa", + "tag-visualeditor": "KihaririOneshi", "tag-visualeditor-description": "Uhariri ulifanyika kwa kutumia [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]: Pitia", + "tag-visualeditor-needcheck": "VisualEditor: Pitia", "tag-visualeditor-needcheck-description": "Uhariri ulifanywa kwa kutumia [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] ambapo mitambo imeona huenda kukawa na mabadiliko yasiyotakiwa katika maandiki-ya-wiki.", "visualeditor-feedback-link": "Project:VisualEditor/Maoni", "visualeditor-feedback-tool": "Acha taarifa", diff --git a/i18n/ve-wmf/szl.json b/i18n/ve-wmf/szl.json index 463cb098c7..003e56c048 100644 --- a/i18n/ve-wmf/szl.json +++ b/i18n/ve-wmf/szl.json @@ -5,5 +5,5 @@ "Uostofchuodnego" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Wizualnŏ edycyjŏ]]" + "tag-visualeditor": "Wizualnŏ edycyjŏ" } diff --git a/i18n/ve-wmf/szy.json b/i18n/ve-wmf/szy.json index 07cd828f5e..037efa1317 100644 --- a/i18n/ve-wmf/szy.json +++ b/i18n/ve-wmf/szy.json @@ -5,13 +5,13 @@ "Bunukwiki" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|palakuliten ku aazihen mikawaway tu kalumyiti]]", + "tag-visualeditor": "palakuliten ku aazihen mikawaway tu kalumyiti", "tag-visualeditor-description": "misaungay [[{{MediaWiki:visualeditor-descriptionpagelink}}|palakuliten ku aazihen sakawaw-kalumyiti]] malaheciay a mikawaway-kalumyiti", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|palakuliten ku aazihen sakawaw-kalumyiti: maydih kinsa]]", + "tag-visualeditor-needcheck": "palakuliten ku aazihen sakawaw-kalumyiti: maydih kinsa", "tag-visualeditor-needcheck-description": "pisaungay [[{{MediaWiki:visualeditor-descriptionpagelink}}|palakuliten ku aazihen sakawaw-kalumyiti]] malaheci a mikawaway-kalumyiti. sisetyimo masedap WikiText hakay matahkal talibahalay a sumad.", "tag-visualeditor-wikitext": "2017 yuensma-kodo mikawaway-kalumyiti", "tag-visualeditor-wikitext-description": "nay 2017 wikitext sakawaw-kalumyiti nasangaan a mikawaway-kalumyiti", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|palakuliten ku aazihen sakawaw-kalumyiti: mabalic]]", + "tag-visualeditor-switched": "palakuliten ku aazihen sakawaw-kalumyiti: mabalic", "tag-visualeditor-switched-description": "misaungayay misaungay palakuliten ku aazihen sakawaw nu kalumyiti pasumad tatiku Wikitext sakawaw-kalumyiti.", "visualeditor-feedback-link": "Project:palakuliten ku aazihen sakawaw-kalumyiti-sakaluk/hwidubaku", "visualeditor-feedback-tool": "hwidubaku mahizaay tina zwanti a nabalucu’", diff --git a/i18n/ve-wmf/tay.json b/i18n/ve-wmf/tay.json index 6043fa5b2d..9e670027af 100644 --- a/i18n/ve-wmf/tay.json +++ b/i18n/ve-wmf/tay.json @@ -5,6 +5,6 @@ "Translatealcd" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}| Kblayun sa ktan na rawziq smr’zyut miru’ ]]", + "tag-visualeditor": " Kblayun sa ktan na rawziq smr’zyut miru’", "visualeditor-welcomedialog-action": "T’aring smr’zyut miru’" } diff --git a/i18n/ve-wmf/tcy.json b/i18n/ve-wmf/tcy.json index 5a3d595ccb..b3155dbe8b 100644 --- a/i18n/ve-wmf/tcy.json +++ b/i18n/ve-wmf/tcy.json @@ -6,5 +6,5 @@ "Vishwanatha Badikana" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ದೃಸ್ಯೊ ಸಂಪೊಲಿಕೆ ]]" + "tag-visualeditor": "ದೃಸ್ಯೊ ಸಂಪೊಲಿಕೆ" } diff --git a/i18n/ve-wmf/tdd.json b/i18n/ve-wmf/tdd.json index e087f6dc62..413caeb761 100644 --- a/i18n/ve-wmf/tdd.json +++ b/i18n/ve-wmf/tdd.json @@ -6,5 +6,5 @@ "咽頭べさ" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ᥖᥨᥝ ᥗᥖᥴ ᥖᥣ ᥞᥢᥴ]]" + "tag-visualeditor": "ᥖᥨᥝ ᥗᥖᥴ ᥖᥣ ᥞᥢᥴ" } diff --git a/i18n/ve-wmf/te.json b/i18n/ve-wmf/te.json index 1bba315698..73bca7660b 100644 --- a/i18n/ve-wmf/te.json +++ b/i18n/ve-wmf/te.json @@ -12,12 +12,12 @@ "రహ్మానుద్దీన్" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|విజువల్ ఎడిటర్ ద్వారా సవరణ]]", + "tag-visualeditor": "విజువల్ ఎడిటర్ ద్వారా సవరణ", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|విజువల్ ఎడిటర్]] వాడి చేసిన మార్పు", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|విజువల్ ఎడిటర్:తనిఖీ]]", + "tag-visualeditor-needcheck": "విజువల్ ఎడిటర్:తనిఖీ", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|విజువల్ ఎడిటరును]] వాడి చేసిన మార్పు - వికీటెక్స్టులో అనుకోని మార్పులు జరిగి ఉండవచ్చని వ్యవస్థ కనుగొన్న మార్పు", "tag-visualeditor-wikitext-description": "2017 వికీటెక్స్ట్ ఎడిటరును వాడి చేసిన దిద్దుబాటు", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|విజువల్ ఎడిట్: మార్చారు]]", + "tag-visualeditor-switched": "విజువల్ ఎడిట్: మార్చారు", "tag-visualeditor-switched-description": "వాడుకరి విజువల్ ఎడిటరుతో దిద్దుబాటు మొదలుపెట్టి, తరువాత వికీటెక్స్టు ఎడిటరుకు మారారు.", "visualeditor-feedback-link": "ప్రాజేక్ట్:విజువల్ ఎడిటర్/సూచనలు", "visualeditor-feedback-tool": "సూచనలివ్వండి", diff --git a/i18n/ve-wmf/tg-cyrl.json b/i18n/ve-wmf/tg-cyrl.json index 01a598c48e..129eacc2b5 100644 --- a/i18n/ve-wmf/tg-cyrl.json +++ b/i18n/ve-wmf/tg-cyrl.json @@ -5,6 +5,6 @@ "ToJack" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Вироиши визуалӣ]]", + "tag-visualeditor": "Вироиши визуалӣ", "visualeditor-welcomedialog-title": "Хуш омадед ба Википедиа" } diff --git a/i18n/ve-wmf/th.json b/i18n/ve-wmf/th.json index 0a62edb055..840a7e8931 100644 --- a/i18n/ve-wmf/th.json +++ b/i18n/ve-wmf/th.json @@ -11,13 +11,13 @@ "Taweetham" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|แก้ไขแบบเห็นภาพ]]", + "tag-visualeditor": "แก้ไขแบบเห็นภาพ", "tag-visualeditor-description": "การแก้ไขโดยใช้[[{{MediaWiki:visualeditor-descriptionpagelink}}|ตัวแก้ไขแบบเห็นภาพ]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|การแก้ไขแบบเห็นภาพ: ตรวจสอบ]]", + "tag-visualeditor-needcheck": "การแก้ไขแบบเห็นภาพ: ตรวจสอบ", "tag-visualeditor-needcheck-description": "การแก้ไขที่ใช้[[{{MediaWiki:visualeditor-descriptionpagelink}}|ตัวแก้ไขแบบเห็นภาพ]]ซึ่งระบบตรวจพบข้อความวิกิที่อาจถูกเปลี่ยนแปลงโดยไม่ได้ตั้งใจ", "tag-visualeditor-wikitext": "แก้ไขแบบต้นฉบับปี 2560", "tag-visualeditor-wikitext-description": "การแก้ไขที่ทำโดยใช้ตัวแก้ไขข้อความวิกิปี 2560", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|การแก้ไขแบบเห็นภาพ: สลับแล้ว]]", + "tag-visualeditor-switched": "การแก้ไขแบบเห็นภาพ: สลับแล้ว", "tag-visualeditor-switched-description": "ผู้ใช้เริ่มแก้ไขโดยใช้ตัวแก้ไขแบบเห็นภาพ จากนั้นจึงสลับเป็นตัวแก้ไขข้อความวิกิ", "visualeditor-feedback-link": "Project:VisualEditor/ข้อเสนอแนะ", "visualeditor-feedback-tool": "ฝากข้อเสนอแนะเกี่ยวกับซอฟต์แวร์นี้", diff --git a/i18n/ve-wmf/ti.json b/i18n/ve-wmf/ti.json index e880c3df5f..5c8b678186 100644 --- a/i18n/ve-wmf/ti.json +++ b/i18n/ve-wmf/ti.json @@ -4,9 +4,9 @@ "Joanmp17" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ርእየታዊ ኣርትዖት]]", + "tag-visualeditor": "ርእየታዊ ኣርትዖት", "tag-visualeditor-wikitext": "ኣርታዒ ኮድ 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ርእየታዊ ኣርትዖት፦ ተለዊጡ]]", + "tag-visualeditor-switched": "ርእየታዊ ኣርትዖት፦ ተለዊጡ", "visualeditor-welcomedialog-action": "ኣርትዖት ጀምር", "visualeditor-welcomedialog-content-thanks": "ዓለም ዝያዳ ክትረክብ ስለ ዝሓገዝካና የቐንየልና!", "visualeditor-welcomedialog-switch": "ናብ ኣርታዒ ኮድ ለውጥ", diff --git a/i18n/ve-wmf/tk.json b/i18n/ve-wmf/tk.json index f6052f0f88..0d62b45c4a 100644 --- a/i18n/ve-wmf/tk.json +++ b/i18n/ve-wmf/tk.json @@ -4,5 +4,5 @@ "C.Syde65" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Wizual düzetme]]" + "tag-visualeditor": "Wizual düzetme" } diff --git a/i18n/ve-wmf/tl.json b/i18n/ve-wmf/tl.json index ed04bef272..77ed62e3d3 100644 --- a/i18n/ve-wmf/tl.json +++ b/i18n/ve-wmf/tl.json @@ -8,11 +8,11 @@ "Sky Harbor" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Pagbabagong biswal]]", + "tag-visualeditor": "Pagbabagong biswal", "tag-visualeditor-description": "Pagbabagong ginawa gamit ang [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Tiyakin]]", + "tag-visualeditor-needcheck": "VisualEditor: Tiyakin", "tag-visualeditor-needcheck-description": "Pagbabagong isinagawa gamit ang [[{{MediaWiki:visualeditor-descriptionpagelink}}|bisuwal na editor]] kung saan natagpuan ng sistema ang wikisintaksis na maaaring magdulot ng 'di-inatasang pagbabago.", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: Naipalit]]", + "tag-visualeditor-switched": "VisualEditor: Naipalit", "tag-visualeditor-switched-description": "Nagsimulang mamatnugot ang tagagamit sa pamamagitan ng bisuwal na editor, at pagkatapos lumipat sa editor ng wikisintaksis.", "visualeditor-feedback-link": "Project:VisualEditor/Komentaryo", "visualeditor-feedback-tool": "Mag-iwan ng komentaryo tungkol sa software na ito.", diff --git a/i18n/ve-wmf/tly.json b/i18n/ve-wmf/tly.json index 55bab7fe9a..a7c043106d 100644 --- a/i18n/ve-wmf/tly.json +++ b/i18n/ve-wmf/tly.json @@ -7,13 +7,13 @@ "tag-editcheck-newcontent-description": "EditCheck hisob kardə ki bə səhifə nujə kontent əlovə kardə byə", "tag-editcheck-newreference-description": "Bə səhifə link əlovə kardə byə", "tag-editcheck-references-description": "EditCheck hisob kardə ki ijo link lozim bəbe", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vində redaktor]]", + "tag-visualeditor": "Vində redaktor", "tag-visualeditor-description": "Ovaxtə byə de [[{{MediaWiki:visualeditor-descriptionpagelink}}|vində redaktori]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vində redaktor]]: osə karde", + "tag-visualeditor-needcheck": "vində redaktor: osə karde", "tag-visualeditor-needcheck-description": "De [[{{MediaWiki:visualeditor-descriptionpagelink}}|vində redaktori]] dastəki ovaxtə byə, komədə sistem pəjdo kardyše ovaxtə byə viki-mətni, bəzne be ǧəsto ne.", "tag-visualeditor-wikitext": "2017 viki-mətni redaktor", "tag-visualeditor-wikitext-description": "De viki-mətni 2017 redaktori dastəki sərost kardə byə", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|vində redaktor]] okyštə byə", + "tag-visualeditor-switched": "vində redaktor okyštə byə", "tag-visualeditor-switched-description": "Okoədə bino kardyše sərost karde de vində redaktori ijən pešo ovašte bə viki-mətni redaktor.", "visualeditor-feedback-link": "Project:Vində redaktor/Raj", "visualeditor-feedback-tool": "Raj ogəte", diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index 6750797b9c..d58c90e820 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -24,15 +24,15 @@ "tag-editcheck-newcontent-description": "EditCheck sayfaya yeni içerik eklendiğini düşünüyor", "tag-editcheck-newreference-description": "Sayfaya bir kaynak eklendi", "tag-editcheck-references-description": "EditCheck bir kaynağın gerekli olabileceğini düşünüyor", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Düzenleme Denetimi (kaynakça) etkinleştirildi]]", + "tag-editcheck-references-activated": "Düzenleme Denetimi (kaynakça) etkinleştirildi", "tag-editcheck-references-activated-description": "EditCheck bir kaynağın gerekebileceğini düşünüyor ve kullanıcı arayüzü gösteriliyor", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleme]]", + "tag-visualeditor": "Görsel düzenleme", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleyiciyi]] kullanarak düzenleyin", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleme: Doğrula]]", + "tag-visualeditor-needcheck": "Görsel düzenleme: Doğrula", "tag-visualeditor-needcheck-description": "Sistem [[{{MediaWiki:visualeditor-descriptionpagelink}}|görsel düzenleyici]] ile düzenleyemeyeceğiniz, ancak kaynağı değiştir bağlantısıyla editör ile yapabileceğiniz değişiklik yaptığınızı tespit etti.", "tag-visualeditor-wikitext": "2017 kaynak düzenleyici", "tag-visualeditor-wikitext-description": "2017 vikimetin düzenleyicisi kullanılarak yapılan düzenleme", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleme: Değiştirildi]]", + "tag-visualeditor-switched": "Görsel düzenleme: Değiştirildi", "tag-visualeditor-switched-description": "Kullanıcı görsel düzenleyici ile düzenlemeye başladı, daha sonra kaynak düzenleyiciye geçti.", "visualeditor-feedback-link": "Project:Görsel Düzenleyici/Geri bildirim", "visualeditor-feedback-tool": "Bu yazılım hakkında geri bildirim bırakın", diff --git a/i18n/ve-wmf/trv.json b/i18n/ve-wmf/trv.json index 292e4d9282..e9d5a55916 100644 --- a/i18n/ve-wmf/trv.json +++ b/i18n/ve-wmf/trv.json @@ -4,5 +4,5 @@ "Iyuqciyang" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Qntaan smmalu patas]]" + "tag-visualeditor": "Qntaan smmalu patas" } diff --git a/i18n/ve-wmf/tt-cyrl.json b/i18n/ve-wmf/tt-cyrl.json index ddd154bff1..5a0fa23e20 100644 --- a/i18n/ve-wmf/tt-cyrl.json +++ b/i18n/ve-wmf/tt-cyrl.json @@ -7,13 +7,13 @@ "Ильнар" ] }, - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Үзгәртүне (сылтамалар) тикшерү активлаштырылды]]", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|күрсәтмәле төзәтмә]]", + "tag-editcheck-references-activated": "Үзгәртүне (сылтамалар) тикшерү активлаштырылды", + "tag-visualeditor": "күрсәтмәле төзәтмә", "tag-visualeditor-description": "Төзәтмә [[{{MediaWiki:visualeditor-descriptionpagelink}}|күренмәле төзәткеч]] ярдәмендә башкарылган", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Күрсәтмә төзәткеч: Тикшерү]]", + "tag-visualeditor-needcheck": "Күрсәтмә төзәткеч: Тикшерү", "tag-visualeditor-wikitext": "вики-текст мөхәррире 2017", "tag-visualeditor-wikitext-description": "Төзәтмә вики-текст мөхәррире 2017 ярдәмендә ясалган", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Күрсәтмә төзәткеч: Өзелгән]]", + "tag-visualeditor-switched": "Күрсәтмә төзәткеч: Өзелгән", "visualeditor-feedback-link": "Project:Күрсәтмә төзәткеч/Бәяләмә", "visualeditor-feedback-tool": "Программалы тәэмин ителешкә бәяләмә", "visualeditor-help-label": "Кулланманы укыгыз", diff --git a/i18n/ve-wmf/tt-latn.json b/i18n/ve-wmf/tt-latn.json index 48f80c4ed0..ebd3629cb8 100644 --- a/i18n/ve-wmf/tt-latn.json +++ b/i18n/ve-wmf/tt-latn.json @@ -4,5 +4,5 @@ "Frhdkazan" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual üzgärtü]]" + "tag-visualeditor": "Vizual üzgärtü" } diff --git a/i18n/ve-wmf/tum.json b/i18n/ve-wmf/tum.json index bc09bc65d8..50b581d70d 100644 --- a/i18n/ve-wmf/tum.json +++ b/i18n/ve-wmf/tum.json @@ -4,13 +4,13 @@ "Tumbuka Arch" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Lemba mwakuona]]", + "tag-visualeditor": "Lemba mwakuona", "tag-visualeditor-description": "Kulemba uku kukalembeka mwakugwiliska [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Kulemba mwakuona: Wonani]]", + "tag-visualeditor-needcheck": "Kulemba mwakuona: Wonani", "tag-visualeditor-needcheck-description": "Kulemba uku kwagwiliska [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]] uko sisitimu \n yaona malemba ghamu wikitext agho ghasintha mwambula chakulata.", "tag-visualeditor-wikitext": "2017 kulemba mwa source", "tag-visualeditor-wikitext-description": "Kulemba kwagwiliska ntchito milembelo ya 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Kulemba mwakuona: Mwakusinthaniska]]", + "tag-visualeditor-switched": "Kulemba mwakuona: Mwakusinthaniska", "tag-visualeditor-switched-description": "Mgwiliski wakayamba kulemba mwakuona,paumalilo nakuluta ku malembelo gha wikitext.", "visualeditor-feedback-link": "Project:VisualEditor/Vyakuyowoya", "visualeditor-feedback-tool": "Lembani zakukhwaskana na sofutiweya iyi", diff --git a/i18n/ve-wmf/tw.json b/i18n/ve-wmf/tw.json index 5e1f891cd1..454a95fc3d 100644 --- a/i18n/ve-wmf/tw.json +++ b/i18n/ve-wmf/tw.json @@ -6,12 +6,12 @@ "Robertjamal12" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual edit]]", + "tag-visualeditor": "Visual edit", "tag-visualeditor-description": "Nsea a wode [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor no ayɛ]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Nsesa a wode visual editor no ayɛ: Hwɛ no bio]]", + "tag-visualeditor-needcheck": "Nsesa a wode visual editor no ayɛ: Hwɛ no bio", "tag-visualeditor-wikitext": "2017 source edit", "tag-visualeditor-wikitext-description": "Nsesa a yɛ de 2017 wikitext editor no ayɛ", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Nsesa a wode visual editor no ayɛ: Asesa]]", + "tag-visualeditor-switched": "Nsesa a wode visual editor no ayɛ: Asesa", "tag-visualeditor-switched-description": "Nea ɔyɛ yɛ no di kan de visual editor na ɛyɛ yɛ, ɛna afei ɔsesa kɔ the wikitext editor.", "visualeditor-feedback-tool": "Gia wagyentre efa \"software\" wɛi hu", "visualeditor-help-label": "Kenkan akyerɛkyerɛ homa nu", diff --git a/i18n/ve-wmf/udm.json b/i18n/ve-wmf/udm.json index 27cc0128ca..0e14943778 100644 --- a/i18n/ve-wmf/udm.json +++ b/i18n/ve-wmf/udm.json @@ -4,6 +4,6 @@ "Kaganer" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Визуальной тупатон]]", + "tag-visualeditor": "Визуальной тупатон", "visualeditor-welcomedialog-action": "Тупатыны кутсконо" } diff --git a/i18n/ve-wmf/uk.json b/i18n/ve-wmf/uk.json index 232a4b9b84..70a5ca1cd9 100644 --- a/i18n/ve-wmf/uk.json +++ b/i18n/ve-wmf/uk.json @@ -23,15 +23,15 @@ "tag-editcheck-newcontent-description": "Звіряння редагування показало, що на сторінку додано новий вміст", "tag-editcheck-newreference-description": "На сторінку додано примітку", "tag-editcheck-references-description": "Звіряння редагування показало, що варто додати посилання на джерело", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|Звіряння редагувань (посилання на джерела) активовано]]", + "tag-editcheck-references-activated": "Звіряння редагувань (посилання на джерела) активовано", "tag-editcheck-references-activated-description": "Звіряння редагування показало, що варто додати посилання на джерело, і показано інтерфейс користувача для цього", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуальний редактор]]", + "tag-visualeditor": "Візуальний редактор", "tag-visualeditor-description": "Редагування виконано з використанням [[{{MediaWiki:visualeditor-descriptionpagelink}}|візуального редактора]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Візуальний редактор: Перевірити]]", + "tag-visualeditor-needcheck": "Візуальний редактор: Перевірити", "tag-visualeditor-needcheck-description": "Редагування з допомогою [[{{MediaWiki:visualeditor-descriptionpagelink}}|візуального редактора]], у якому система виявила, ймовірно, ненавмисно змінену вікірозмітку.", "tag-visualeditor-wikitext": "редагування коду 2017", "tag-visualeditor-wikitext-description": "Редагування зроблене з використанням редактора вікірозмітки 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Перемкнуто з візуального редактора]]", + "tag-visualeditor-switched": "Перемкнуто з візуального редактора", "tag-visualeditor-switched-description": "Користувач почав редагувати за допомогою візуального редактора, а потім перемкнувся на редактор вікірозмітки.", "visualeditor-feedback-link": "Project:Візуальний редактор/Відгуки", "visualeditor-feedback-tool": "Залишити відгук про це програмне забезпечення", diff --git a/i18n/ve-wmf/ur.json b/i18n/ve-wmf/ur.json index 551a4d6aaa..ab3a01bc50 100644 --- a/i18n/ve-wmf/ur.json +++ b/i18n/ve-wmf/ur.json @@ -8,7 +8,7 @@ "පසිඳු කාවින්ද" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|بصری ترمیم]]", + "tag-visualeditor": "بصری ترمیم", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|بصری خانہ ترمیم]] کے ذریعہ یہ تبدیلی کی گئی", "tag-visualeditor-wikitext": "ترمیم ماخذ 2017ء", "tag-visualeditor-wikitext-description": "ترمیم بذریعہ 2017ء ویکی متن ایڈیٹر", diff --git a/i18n/ve-wmf/uz.json b/i18n/ve-wmf/uz.json index 709df86b46..04179b5266 100644 --- a/i18n/ve-wmf/uz.json +++ b/i18n/ve-wmf/uz.json @@ -8,12 +8,12 @@ "පසිඳු කාවින්ද" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Koʻrib tahrirlagich]]", + "tag-visualeditor": "Koʻrib tahrirlagich", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Koʻrib tahrirlagich]] yordamida qilingan tahrir", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Koʻrib tahrirlagich: tekshirish]]", + "tag-visualeditor-needcheck": "Koʻrib tahrirlagich: tekshirish", "tag-visualeditor-wikitext": "vikimatn muharriri 2017", "tag-visualeditor-wikitext-description": "Vikimatn muharriri (2017) yordamida qilingan tahrir", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Koʻrib tahrirlagich: almashtirildi]]", + "tag-visualeditor-switched": "Koʻrib tahrirlagich: almashtirildi", "tag-visualeditor-switched-description": "Foydalanuvchi koʻrib tahrirlagichdan foydalanib tahrirlashni boshladi, keyin vikimatn tahrirlagichiga oʻzgartirdi.", "visualeditor-feedback-link": "Project:Koʻrib tahrirlagich/Fikrlar", "visualeditor-feedback-tool": "Bu dastur haqida fikr qoldirish", diff --git a/i18n/ve-wmf/vec.json b/i18n/ve-wmf/vec.json index 58a3cf0b8a..fb608b9925 100644 --- a/i18n/ve-wmf/vec.json +++ b/i18n/ve-wmf/vec.json @@ -6,12 +6,12 @@ "GatoSelvadego" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|modifega vixuałe]]", + "tag-visualeditor": "modifega vixuałe", "tag-visualeditor-description": "Canbiamento fato co [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: controłare]]", + "tag-visualeditor-needcheck": "VisualEditor: controłare", "tag-visualeditor-needcheck-description": "Canbiamento fato co [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] 'ndove el sistema el ga riłevà posibiłi canbiamenti no vołui inte'l wikitesto.", "tag-visualeditor-wikitext": "Editor de còdaxe 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Modifega vixuałe: Canbià]]", + "tag-visualeditor-switched": "Modifega vixuałe: Canbià", "visualeditor-feedback-link": "Project:VisualEditor/Comenti", "visualeditor-feedback-tool": "Łasa un comento", "visualeditor-help-label": "Lexi ła guida utente", diff --git a/i18n/ve-wmf/vep.json b/i18n/ve-wmf/vep.json index a0893040d1..6ebd496277 100644 --- a/i18n/ve-wmf/vep.json +++ b/i18n/ve-wmf/vep.json @@ -4,5 +4,5 @@ "Игорь Бродский" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizualine redaktiruind]]" + "tag-visualeditor": "Vizualine redaktiruind" } diff --git a/i18n/ve-wmf/vi.json b/i18n/ve-wmf/vi.json index 9591be180a..f0ab9d26ea 100644 --- a/i18n/ve-wmf/vi.json +++ b/i18n/ve-wmf/vi.json @@ -11,13 +11,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Soạn thảo trực quan]]", + "tag-visualeditor": "Soạn thảo trực quan", "tag-visualeditor-description": "Đã sửa đổi dùng [[{{MediaWiki:visualeditor-descriptionpagelink}}|Trình soạn thảo trực quan]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Qua trình soạn thảo trực quan: Cần kiểm tra]]", + "tag-visualeditor-needcheck": "Qua trình soạn thảo trực quan: Cần kiểm tra", "tag-visualeditor-needcheck-description": "Sửa đổi được thực hiện dùng [[{{MediaWiki:visualeditor-descriptionpagelink}}|Trình soạn thảo trực quan]] và hệ thống đã nhận ra những thay đổi trong mã wiki có thể ngoài ý muốn.", "tag-visualeditor-wikitext": "Trình soạn thảo mã nguồn 2017", "tag-visualeditor-wikitext-description": "Sửa đổi được thực hiện trong trình soạn thảo mã wiki năm 2017", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Qua trình soạn thảo trực quan: Đã chuyển]]", + "tag-visualeditor-switched": "Qua trình soạn thảo trực quan: Đã chuyển", "tag-visualeditor-switched-description": "Người dùng đã bắt đầu sửa đổi dùng Trình soạn thảo trực quan, sau đó đã chuyển qua chế độ sửa đổi mã wiki.", "visualeditor-feedback-link": "Project:Soạn thảo trực quan/Phản hồi", "visualeditor-feedback-tool": "Để lại phản hồi về phần mềm này", diff --git a/i18n/ve-wmf/vmw.json b/i18n/ve-wmf/vmw.json index 302d6d4de9..e174c33117 100644 --- a/i18n/ve-wmf/vmw.json +++ b/i18n/ve-wmf/vmw.json @@ -4,5 +4,5 @@ "Gildo Máquina" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ereerihelo enooneya ni maytho]]" + "tag-visualeditor": "ereerihelo enooneya ni maytho" } diff --git a/i18n/ve-wmf/vo.json b/i18n/ve-wmf/vo.json new file mode 100644 index 0000000000..32a0d2d444 --- /dev/null +++ b/i18n/ve-wmf/vo.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Malafaya" + ] + }, + "tag-visualeditor": "RedakanLogedik", + "tag-visualeditor-description": "Peredaköl me [[{{MediaWiki:visualeditor-descriptionpagelink}}|RedakanLogedik]]" +} diff --git a/i18n/ve-wmf/vro.json b/i18n/ve-wmf/vro.json index 66454f9444..40321c7c11 100644 --- a/i18n/ve-wmf/vro.json +++ b/i18n/ve-wmf/vro.json @@ -4,5 +4,5 @@ "Võrok" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visuaalmuudatus]]" + "tag-visualeditor": "Visuaalmuudatus" } diff --git a/i18n/ve-wmf/wa.json b/i18n/ve-wmf/wa.json index 3bd8a63ff2..206d0b1708 100644 --- a/i18n/ve-wmf/wa.json +++ b/i18n/ve-wmf/wa.json @@ -4,5 +4,5 @@ "Reptilien.19831209BE1" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Aspougneu veyåve]]" + "tag-visualeditor": "Aspougneu veyåve" } diff --git a/i18n/ve-wmf/wal.json b/i18n/ve-wmf/wal.json index dd02264a5a..eeed18baff 100644 --- a/i18n/ve-wmf/wal.json +++ b/i18n/ve-wmf/wal.json @@ -4,12 +4,12 @@ "Ella Lachow" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Beettiyaa giigissuwaa]]", + "tag-visualeditor": "Beettiyaa giigissuwaa", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|beettiyaa giigisissiyaagaa]] go'ettido giigissuwaa", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Beettiyaa giigissuwaa: Cheekka]]", + "tag-visualeditor-needcheck": "Beettiyaa giigissuwaa: Cheekka", "tag-visualeditor-wikitext": "2017 man\"iyaa giigissa", "tag-visualeditor-wikitext-description": "2017 wiikiixuufiyaan go'ettido giigissuwaa", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Beettiyaa giigissuwaa: Zaarettiis]]", + "tag-visualeditor-switched": "Beettiyaa giigissuwaa: Zaarettiis", "visualeditor-feedback-tool": "Ha softweeriya oosuwaa zaaruwaa yedda", "visualeditor-help-label": "Yaraa kaaletuwaa nabbaba", "visualeditor-welcomedialog-action": "Giigissuwaa doomma", diff --git a/i18n/ve-wmf/war.json b/i18n/ve-wmf/war.json index aba95173bf..0481d0e7af 100644 --- a/i18n/ve-wmf/war.json +++ b/i18n/ve-wmf/war.json @@ -5,5 +5,5 @@ "JinJian" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Visual nga pagliwat]]" + "tag-visualeditor": "Visual nga pagliwat" } diff --git a/i18n/ve-wmf/wls.json b/i18n/ve-wmf/wls.json index 94542092ab..886daf9665 100644 --- a/i18n/ve-wmf/wls.json +++ b/i18n/ve-wmf/wls.json @@ -4,5 +4,5 @@ "Lea.Fakauvea" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Fetogi o tana 'asi mai]]" + "tag-visualeditor": "Fetogi o tana 'asi mai" } diff --git a/i18n/ve-wmf/wo.json b/i18n/ve-wmf/wo.json index 185ccb680b..7c46fab660 100644 --- a/i18n/ve-wmf/wo.json +++ b/i18n/ve-wmf/wo.json @@ -4,5 +4,5 @@ "Ibou" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Soppikaay gu gisu]]" + "tag-visualeditor": "Soppikaay gu gisu" } diff --git a/i18n/ve-wmf/wuu-hans.json b/i18n/ve-wmf/wuu-hans.json index 81c4e6815d..308a71505c 100644 --- a/i18n/ve-wmf/wuu-hans.json +++ b/i18n/ve-wmf/wuu-hans.json @@ -4,7 +4,7 @@ "Winston Sung" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑]]", + "tag-visualeditor": "可视化编辑", "visualeditor-welcomedialog-action": "开始编辑", "visualeditor-welcomedialog-content": "每个人侪好编辑,每趟改进侪有帮助。", "visualeditor-welcomedialog-content-thanks": "感谢侬帮助世界发现更多!", diff --git a/i18n/ve-wmf/xmf.json b/i18n/ve-wmf/xmf.json index b123e157b6..6aca3eacdd 100644 --- a/i18n/ve-wmf/xmf.json +++ b/i18n/ve-wmf/xmf.json @@ -4,5 +4,5 @@ "Silovan" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ვიზუალური რედაქტირაფა]]" + "tag-visualeditor": "ვიზუალური რედაქტირაფა" } diff --git a/i18n/ve-wmf/xsy.json b/i18n/ve-wmf/xsy.json index 79e1c52027..94dd3fcb92 100644 --- a/i18n/ve-wmf/xsy.json +++ b/i18n/ve-wmf/xsy.json @@ -4,5 +4,5 @@ "Lalotahes" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}| Se’jyuehwa’ bienji ]]" + "tag-visualeditor": " Se’jyuehwa’ bienji" } diff --git a/i18n/ve-wmf/yi.json b/i18n/ve-wmf/yi.json index bf613b0056..953e5d6bf9 100644 --- a/i18n/ve-wmf/yi.json +++ b/i18n/ve-wmf/yi.json @@ -7,13 +7,13 @@ "아라" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|וויזועלער רעדאקטירונג]]", + "tag-visualeditor": "וויזועלער רעדאקטירונג", "tag-visualeditor-description": "רעדאקטירונג געמאכט מיטן [[{{MediaWiki:visualeditor-descriptionpagelink}}|וויזועלן רעדאקטירער]]", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|וויזועלער רעדאקטירונג: קאנטראלירן]]", + "tag-visualeditor-needcheck": "וויזועלער רעדאקטירונג: קאנטראלירן", "tag-visualeditor-needcheck-description": "רעדאקטירונג געמאכט מיטן [[{{MediaWiki:visualeditor-descriptionpagelink}}|וויזועלן רעדאַקטירער]] וואו די סיסטעם האט אנטדעקט אז דער וויקיטעקסט האט מעגלעך אומגעוואונטשטע ענדערונגען.", "tag-visualeditor-wikitext": "2017 קוואלטעקסט רעדאקטירונג", "tag-visualeditor-wikitext-description": "רעדאקטירונג אויסגעפֿירט מיטן 2017 וויקיטעקסט רעדאקטירער", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|וויזועלע רעדאקטירונג: געטוישט]]", + "tag-visualeditor-switched": "וויזועלע רעדאקטירונג: געטוישט", "tag-visualeditor-switched-description": "באניצער האט אנגעהויבן רעדאקטירן מיטן וויזועלן רעדאקטירער און איז ארבער צום וויקיטעקסט רעדאקטירער.", "visualeditor-feedback-link": "Project:VisualEditor/פֿידבעק", "visualeditor-feedback-tool": "איבערלאזאן פֿידבעק וועגן דעם דאזיגן ווייכווארג", diff --git a/i18n/ve-wmf/yo.json b/i18n/ve-wmf/yo.json index 929642863f..ac79d66e44 100644 --- a/i18n/ve-wmf/yo.json +++ b/i18n/ve-wmf/yo.json @@ -4,7 +4,7 @@ "Demmy" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", + "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Àtúnṣe jẹ́ ṣíṣe pẹ̀lú [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", "visualeditor-welcomedialog-title": "{{GENDER:$1|Kú àbò}} sí $2" } diff --git a/i18n/ve-wmf/yue-hant.json b/i18n/ve-wmf/yue-hant.json index 70d336bf1b..f3f681407c 100644 --- a/i18n/ve-wmf/yue-hant.json +++ b/i18n/ve-wmf/yue-hant.json @@ -4,13 +4,13 @@ "Winston Sung" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|可見修改]]", + "tag-visualeditor": "可見修改", "tag-visualeditor-description": "用[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]改嘅", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor: 請檢查]]", + "tag-visualeditor-needcheck": "VisualEditor: 請檢查", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]] 處理呢次修改嗰陣,可能喐咗啲意料之外嘅嘢。", "tag-visualeditor-wikitext": "2017年版原始碼編輯", "tag-visualeditor-wikitext-description": "用咗2017年版文字編輯器嘅編輯", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|即見編輯:轉咗]]", + "tag-visualeditor-switched": "即見編輯:轉咗", "tag-visualeditor-switched-description": "用家本來用緊 VisualEditor 嚟編輯,然後轉咗去改源碼。", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "畀意見", diff --git a/i18n/ve-wmf/zgh.json b/i18n/ve-wmf/zgh.json index 99ba701799..bfd327f6fe 100644 --- a/i18n/ve-wmf/zgh.json +++ b/i18n/ve-wmf/zgh.json @@ -4,5 +4,5 @@ "Mdb897" ] }, - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ⴰⵎⵥⵕⴰⴳ ⵉⵎⵥⵔⵉ]]" + "tag-visualeditor": "ⴰⵎⵥⵕⴰⴳ ⵉⵎⵥⵔⵉ" } diff --git a/i18n/ve-wmf/zh-hans.json b/i18n/ve-wmf/zh-hans.json index 6f88353f96..2acc3d2fa2 100644 --- a/i18n/ve-wmf/zh-hans.json +++ b/i18n/ve-wmf/zh-hans.json @@ -27,15 +27,15 @@ "tag-editcheck-newcontent-description": "EditCheck 发现页面中添加了新的内容", "tag-editcheck-newreference-description": "页面中添加了参考来源", "tag-editcheck-references-description": "EditCheck 认为可能需要参考来源", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|编辑检查(参考资料)已激活]]", + "tag-editcheck-references-activated": "编辑检查(参考资料)已激活", "tag-editcheck-references-activated-description": "EditCheck认为可能需要参考文献,且显示了UI", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑]]", + "tag-visualeditor": "可视化编辑", "tag-visualeditor-description": "使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑器]]进行的编辑", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑:需检查]]", + "tag-visualeditor-needcheck": "可视化编辑:需检查", "tag-visualeditor-needcheck-description": "系统检测到使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑器]]做出的编辑的wikitext可能有意外的更改。", "tag-visualeditor-wikitext": "2017年版源代码编辑", "tag-visualeditor-wikitext-description": "使用2017年版wikitext编辑器做出的编辑", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑:已切换]]", + "tag-visualeditor-switched": "可视化编辑:已切换", "tag-visualeditor-switched-description": "用户开始编辑时使用可视化编辑器,之后更换为wikitext编辑器。", "visualeditor-feedback-link": "Project:可视化编辑器/反馈", "visualeditor-feedback-tool": "留下有关此软件的反馈", diff --git a/i18n/ve-wmf/zh-hant.json b/i18n/ve-wmf/zh-hant.json index d3ed01bd91..47770befab 100644 --- a/i18n/ve-wmf/zh-hant.json +++ b/i18n/ve-wmf/zh-hant.json @@ -30,15 +30,15 @@ "tag-editcheck-newcontent-description": "EditCheck 發現頁面裡有新添加的內容", "tag-editcheck-newreference-description": "頁面中添加了參考來源", "tag-editcheck-references-description": "EditCheck 認為可能需要參考來源", - "tag-editcheck-references-activated": "[[{{MediaWiki:editcheck-falsepositives-link}}|編輯檢查(參考資料)已啟用]]", + "tag-editcheck-references-activated": "編輯檢查(參考資料)已啟用", "tag-editcheck-references-activated-description": "編輯檢查認為可能需要參考資料,並顯示了UI", - "tag-visualeditor": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|視覺化編輯]]", + "tag-visualeditor": "視覺化編輯", "tag-visualeditor-description": "使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|視覺化編輯器]]完成的編輯", - "tag-visualeditor-needcheck": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|視覺化編輯器:需要檢查]]", + "tag-visualeditor-needcheck": "視覺化編輯器:需要檢查", "tag-visualeditor-needcheck-description": "使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|視覺化編輯器]]完成的編輯。系統偵測到 WikiText 可能發生預期外的變更。", "tag-visualeditor-wikitext": "2017 原始碼編輯", "tag-visualeditor-wikitext-description": "用 2017 wikitext 編輯器做的編輯", - "tag-visualeditor-switched": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|視覺化編輯器:已切換]]", + "tag-visualeditor-switched": "視覺化編輯器:已切換", "tag-visualeditor-switched-description": "使用者使用視覺化編輯器後更改回 Wikitext 編輯器。", "visualeditor-feedback-link": "Project:VisualEditor/回饋", "visualeditor-feedback-tool": "回饋有關本軟體的意見", From e0b1d0fe7386c4dfd67746b36bf9f07490843b31 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 27 Nov 2024 08:22:14 +0100 Subject: [PATCH 059/730] Localisation updates from https://translatewiki.net. Change-Id: I88e81afac126ec30674c74225868eed3210e9e36 --- i18n/ve-mw/cop.json | 4 ++-- i18n/ve-mw/kk-cyrl.json | 1 + i18n/ve-mw/lb.json | 2 +- i18n/ve-mw/nl.json | 4 ++-- i18n/ve-mw/scn.json | 3 ++- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/i18n/ve-mw/cop.json b/i18n/ve-mw/cop.json index 1b8d868ee7..66f309c4a2 100644 --- a/i18n/ve-mw/cop.json +++ b/i18n/ve-mw/cop.json @@ -8,7 +8,7 @@ }, "tooltip-ca-ve-edit": "ⲫⲱⲛϩ ⲛ̀ⲧⲁⲓⲥⲉⲗⲓⲥ", "visualeditor-ca-createsource": "Ⲑⲁⲙⲓⲟ̀ ⲛ̀ⲟⲩⲁⲣⲭⲏ", - "visualeditor-ca-editsource": "ⲫⲱⲛϩ ⲛ̀ϯⲡⲏⲅⲏ", - "visualeditor-ca-editsource-section": "ⲫⲱⲛϩ ⲛ̀ϯⲡⲏⲅⲏ", + "visualeditor-ca-editsource": "Ϣⲉⲃⲓⲱ̀ ⲛ̀ϯⲁⲣⲭⲏ", + "visualeditor-ca-editsource-section": "ϣⲉⲃⲓⲱ̀ ⲛ̀ϯⲁⲣⲭⲏ", "visualeditor-descriptionpagelink": "Project:ⲣⲉϥϣⲓⲃϯ ⲛ̀ⲛⲁⲩ" } diff --git a/i18n/ve-mw/kk-cyrl.json b/i18n/ve-mw/kk-cyrl.json index 3f30be1af7..a3b0047a8b 100644 --- a/i18n/ve-mw/kk-cyrl.json +++ b/i18n/ve-mw/kk-cyrl.json @@ -150,6 +150,7 @@ "visualeditor-linkinspector-educationpopup-text": "Басқа уики мақалаларына немесе тіпті басқа сайттарға маңызды сөздерді сілтеңіз. Бұл оқырмандарға контекст түсінуге көмектеседі.", "visualeditor-linkinspector-educationpopup-title": "Сілтемелер", "visualeditor-linkinspector-illegal-title": "Жарамсыз бет атауы", + "visualeditor-linkinspector-invalid-external": "Толық URL енгізіңіз, мысалы https://example.org", "visualeditor-linknodeinspector-add-label": "Деңгей қосу", "visualeditor-linknodeinspector-title": "Мысал сілтеме", "visualeditor-magiclinknodeinspector-convert-link": "Қарапайым сілтемеге түрлендіру", diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index 0ea5d5fb5d..c6f46230a2 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -91,7 +91,7 @@ "visualeditor-dialog-meta-categories-defaultsort-label": "Dës Säit standardméisseg zortéiere mat", "visualeditor-dialog-meta-categories-hidden": "Dës Kategorie ass esou agestallt datt se net op Säite gewise gëtt op déi se dobäigesat gëtt.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Verstoppt Kategorien", - "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Kategorie déi dorop passen", + "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Kategorien, déi dorop passen", "visualeditor-dialog-meta-categories-input-movecategorylabel": "Dës Kategorie heihi réckelen", "visualeditor-dialog-meta-categories-input-newcategorylabel": "Nei Kategorie", "visualeditor-dialog-meta-categories-input-placeholder": "Eng Kategorie derbäisetzen", diff --git a/i18n/ve-mw/nl.json b/i18n/ve-mw/nl.json index 8eecce71bd..2e3f776639 100644 --- a/i18n/ve-mw/nl.json +++ b/i18n/ve-mw/nl.json @@ -223,7 +223,7 @@ "visualeditor-dialog-transclusion-filter-placeholder": "Veld zoeken", "visualeditor-dialog-transclusion-filter-show-all": "Toon alles", "visualeditor-dialog-transclusion-filter-title": "Parameter zoeken voor $1", - "visualeditor-dialog-transclusion-help-title": "Ondersteuning voor het bewerken van sjablonen", + "visualeditor-dialog-transclusion-help-title": "Sjabloonbewerkingshulp", "visualeditor-dialog-transclusion-help-message": "Sjablonen bieden opmaak voor inhoud. Deze tekstverwerker laat aan de linkerkant zien welke opties een sjabloon biedt en aan de rechterkant kunnen waarden worden toegevoegd.", "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates Hulp bij het bewerken van sjablonen]", "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts Sneltoetsen]", @@ -231,7 +231,7 @@ "visualeditor-dialog-transclusion-deprecated-parameter-description": "Veld is verouderd: $1", "visualeditor-dialog-transclusion-loading": "Bezig met laden…", "visualeditor-dialog-transclusion-multipart-message": "U bewerkt momenteel een sjabloon en een of meer daarmee [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content in verband staande onderdelen] (wikitekst en/of aanvullende sjablonen).", - "visualeditor-dialog-transclusion-no-template-data-description": "Dit sjabloon heeft geen [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] en de parameters zijn [//www.mediawiki.org/wiki/Special:MyLanguage/Help :VisualEditor/User_guide#Autogenerated_parameters automatisch gegenereerd]. Als gevolg hiervan ontbreken de beschrijvingen van het sjabloon en de parameters. Mogelijk staat er aanvullende informatie op de [[$1|sjabloonpagina]].", + "visualeditor-dialog-transclusion-no-template-data-description": "Dit sjabloon heeft geen [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] en de parameters zijn [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters automatisch gegenereerd]. Als gevolg hiervan ontbreken de beschrijvingen van het sjabloon en de parameters. Mogelijk staat er aanvullende informatie op de [[$1|sjabloonpagina]].", "visualeditor-dialog-transclusion-no-template-description": "Het sjabloon \"$1\" heeft nog geen beschrijving, maar mogelijk is er informatie op de [[$2|sjabloonpagina]].", "visualeditor-dialog-transclusion-no-template-parameters": "Voor dit sjabloon zijn geen parameters beschreven. Het is mogelijk bedoeld voor gebruik zonder parameters.", "visualeditor-dialog-transclusion-param-default": "Standaard: $1", diff --git a/i18n/ve-mw/scn.json b/i18n/ve-mw/scn.json index 0a485ad257..7fc7cfa2d6 100644 --- a/i18n/ve-mw/scn.json +++ b/i18n/ve-mw/scn.json @@ -5,6 +5,7 @@ "Elitre", "Elitre82", "Gazeb", + "GianAntonucci", "Gloria sah", "Gmelfi", "HalanTul", @@ -21,7 +22,7 @@ "visualeditor-ca-createlocaldescriptionsource": "Agghiunci na discrizzioni lucali tràmiti surgenti", "visualeditor-ca-createsource": "Crea surgenti", "visualeditor-ca-editsource": "Cancia surgenti", - "visualeditor-ca-editsource-section": "cancia la surgenti", + "visualeditor-ca-editsource-section": "cancia u wikitestu", "visualeditor-categories-tool": "Catigurìi", "visualeditor-desc": "Editor visivu pi MediaWiki", "visualeditor-descriptionpagelink": "Project:VisualEditor", From f539f436dca26c1e7a8e773036db693f99b9091d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20Harald=20S=C3=B8by?= Date: Wed, 27 Nov 2024 15:39:23 +0100 Subject: [PATCH 060/730] Fix styling for #catlinks:hover in Visual Editor Use the same color (transparent blue) as `.mw-references > li:hover` from `ve.ce.MWReferencesListNode.less`. Bug: T370609 Change-Id: I8d8339b4c75aa5bc51c61df870fd1684dea2b183 --- .../preinit/styles/ve.init.mw.DesktopArticleTarget.init.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less index 6954b96931..7fa03c61cd 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less @@ -91,7 +91,7 @@ &:hover { /* focusableNode highlight equivalent styling */ - background: #e9f2fd; + background: fade( #6da9f7, 15% ); } a { From e5aa682d10c552dc81b250bb795b9537b76411a6 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 28 Nov 2024 08:16:35 +0100 Subject: [PATCH 061/730] Localisation updates from https://translatewiki.net. Change-Id: I3dacb906e2e4c8772f1efee08061684117dd16c5 --- i18n/ve-mw/scn.json | 6 +++--- i18n/ve-wmf/bg.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/ve-mw/scn.json b/i18n/ve-mw/scn.json index 7fc7cfa2d6..2284bd495a 100644 --- a/i18n/ve-mw/scn.json +++ b/i18n/ve-mw/scn.json @@ -21,8 +21,8 @@ "visualeditor-autosave-modified-prompt-reject": "Ncigna nu canciamentu novu", "visualeditor-ca-createlocaldescriptionsource": "Agghiunci na discrizzioni lucali tràmiti surgenti", "visualeditor-ca-createsource": "Crea surgenti", - "visualeditor-ca-editsource": "Cancia surgenti", - "visualeditor-ca-editsource-section": "cancia u wikitestu", + "visualeditor-ca-editsource": "Cancia u còdici", + "visualeditor-ca-editsource-section": "cancia u còdici", "visualeditor-categories-tool": "Catigurìi", "visualeditor-desc": "Editor visivu pi MediaWiki", "visualeditor-descriptionpagelink": "Project:VisualEditor", @@ -131,7 +131,7 @@ "visualeditor-mwgallerydialog-search-button-label": "Agghiunci na NOVA mmàggini", "visualeditor-mwgallerydialog-show-filename-field-label": "Ammustra li nomi dî file", "visualeditor-mwgallerydialog-styles-field-label": "Stili CSS", - "visualeditor-mwgallerydialog-widths-field-label": "Larghizza dâ mmàggini", + "visualeditor-mwgallerydialog-widths-field-label": "Larichizza dâ mmàggini", "visualeditor-mwsignature-tool": "La tò firma", "visualeditor-rebase-client-import-name": "Tìtulu dâ pàggina", "visualeditor-savedialog-identify-anon": "Vuoi sarbari sta pàggina comu utilizzaturi anonimu? Lu tò nnirirzzu IP veni arriggistratu ntê crunuluggìa dâ pàggina.", diff --git a/i18n/ve-wmf/bg.json b/i18n/ve-wmf/bg.json index f0c409c419..59f27e0105 100644 --- a/i18n/ve-wmf/bg.json +++ b/i18n/ve-wmf/bg.json @@ -12,13 +12,13 @@ "පසිඳු කාවින්ද" ] }, - "tag-visualeditor": "Визуален редактор", + "tag-visualeditor": "Визуална редакция", "tag-visualeditor-description": "Редакция, направена с [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалния редактор]]", "tag-visualeditor-needcheck": "Визуална редакция за проверка", "tag-visualeditor-needcheck-description": "Редакция, направена с [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалния редактор]], за която системата откри възможно нежелани промени по уикикода.", "tag-visualeditor-wikitext": "Уикитекстов редактор – 2017", "tag-visualeditor-wikitext-description": "Редакцията е извършена чрез уикитекстов редактор – 2017", - "tag-visualeditor-switched": "Визуален редактор: превключен", + "tag-visualeditor-switched": "Визуална редакция: Превключено", "tag-visualeditor-switched-description": "Потребителят започва да редактира чрез визуалния редактор и след това преминава към уикитекст редактора.", "visualeditor-feedback-link": "Project:Визуален редактор/Мнения", "visualeditor-feedback-tool": "Оставете отзив за софтуера", From 942c33c1ec78135c7dbe4f192899e8ae6a7338d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 28 Nov 2024 18:31:36 +0100 Subject: [PATCH 062/730] Add help link to the "2017 source edit" tag I've noticed that it is already present as a message override on several Wikimedia wikis, seems like a good idea. Change-Id: I78a9fd64899d10b87dc23d0727722e40aae8cd93 --- i18n/ve-wmf/en.json | 1 + i18n/ve-wmf/qqq.json | 1 + 2 files changed, 2 insertions(+) diff --git a/i18n/ve-wmf/en.json b/i18n/ve-wmf/en.json index 68a111eac3..93e3f3d5a3 100644 --- a/i18n/ve-wmf/en.json +++ b/i18n/ve-wmf/en.json @@ -33,6 +33,7 @@ "tag-visualeditor-needcheck-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", "tag-visualeditor-wikitext": "2017 source edit", "tag-visualeditor-wikitext-description": "Edit made using the 2017 wikitext editor", + "tag-visualeditor-wikitext-helppage": "mediawikiwiki:Special:MyLanguage/2017 wikitext editor", "tag-visualeditor-switched": "Visual edit: Switched", "tag-visualeditor-switched-description": "User started to edit using the visual editor, then changed to the wikitext editor.", "tag-visualeditor-switched-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", diff --git a/i18n/ve-wmf/qqq.json b/i18n/ve-wmf/qqq.json index 784da72155..1d16ca0e74 100644 --- a/i18n/ve-wmf/qqq.json +++ b/i18n/ve-wmf/qqq.json @@ -42,6 +42,7 @@ "tag-visualeditor-needcheck-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor-needcheck}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", "tag-visualeditor-wikitext": "Short description of the visualeditor-wikitext tag.\n\nShown on lists of changes (history, recentchanges, etc.) for each edit made using VisualEditor in wikitext editor mode.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-wikitext-description}}\n{{Identical|Edit source}}", "tag-visualeditor-wikitext-description": "Long description of the visualeditor-wikitext tag ({{msg-mw|Tag-visualeditor-wikitext}}).\n\nShown on [[Special:Tags]].\n\nSee also:\n* {{msg-mw|Tag-visualeditor-wikitext}}\n* {{Related|tag-visualeditor-description}}", + "tag-visualeditor-wikitext-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor-wikitext}}", "tag-visualeditor-switched": "Short description of the visualeditor-switched tag.\n\nShown on lists of changes (history, recentchanges, etc.) for each edit which was started using VisualEditor and then was moved to the wikitext editor.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n{{Related|Tag-visualeditor}}", "tag-visualeditor-switched-description": "Long description of the visualeditor-switched tag ({{msg-mw|Tag-visualeditor-switched}}).\n\nShown on [[Special:Tags]].\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-description}}\n{{Related|Tag-visualeditor}}", "tag-visualeditor-switched-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor-switched}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", From 9f4f41354f5b046027c1b1aa4e713b819cc7cbe4 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 28 Nov 2024 17:43:28 +0000 Subject: [PATCH 063/730] Update VE core submodule to master (769863ca9) New changes: 0ae4ea579 Use OO.cloneObject in ve.dm.Change f23df511c Localisation updates from https://translatewiki.net. 3718bf204 build: Updating cross-spawn to 7.0.6 c2ed76cea Localisation updates from https://translatewiki.net. 769863ca9 Localisation updates from https://translatewiki.net. Change-Id: I44dad4e5162aca8a4a16f23e0ac355098d26b01d --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 09c2bd53d2..769863ca94 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 09c2bd53d293055282efb3b36973a40c492462c4 +Subproject commit 769863ca94f2c1bc65613048f67e96264e38f605 From 92688545e45952d52a9d15ff4bd0ce4605e3d0d6 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Fri, 29 Nov 2024 03:27:42 +0000 Subject: [PATCH 064/730] build: Updating jsdoc to 4.0.4 Change-Id: I5a5fcc983b8b06b669073fd15b278d6a59fbf898 --- package-lock.json | 78 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 529527a10d..4f5f594852 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "grunt-stylelint": "0.20.1", "grunt-tyops": "0.1.1", "jimp": "0.13.0", - "jsdoc": "4.0.3", + "jsdoc": "4.0.4", "jsdoc-wmf-theme": "1.1.0", "mocha": "5.2.0", "selenium-webdriver": "3.6.0", @@ -2346,9 +2346,9 @@ } }, "node_modules/bin-version/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, "dependencies": { "nice-try": "^1.0.4", @@ -3710,9 +3710,9 @@ } }, "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, "dependencies": { "path-key": "^3.1.0", @@ -5379,7 +5379,7 @@ "node_modules/execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "dependencies": { "cross-spawn": "^5.0.1", @@ -5397,7 +5397,7 @@ "node_modules/execa/node_modules/cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "dependencies": { "lru-cache": "^4.0.1", @@ -6253,9 +6253,9 @@ } }, "node_modules/gifsicle/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, "dependencies": { "nice-try": "^1.0.4", @@ -8190,9 +8190,9 @@ "dev": true }, "node_modules/jsdoc": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz", - "integrity": "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz", + "integrity": "sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==", "dev": true, "dependencies": { "@babel/parser": "^7.20.15", @@ -10384,9 +10384,9 @@ } }, "node_modules/pngquant-bin/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, "dependencies": { "nice-try": "^1.0.4", @@ -13979,7 +13979,7 @@ "node_modules/yarn-install": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha1-V/RQULgu/VcYKzlzxUqgXLXSUjA=", + "integrity": "sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==", "dev": true, "dependencies": { "cac": "^3.0.3", @@ -14031,7 +14031,7 @@ "node_modules/yarn-install/node_modules/cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", "dev": true, "dependencies": { "lru-cache": "^4.0.1", @@ -15910,9 +15910,9 @@ }, "dependencies": { "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", @@ -16976,9 +16976,9 @@ } }, "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", @@ -18250,7 +18250,7 @@ "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -18265,7 +18265,7 @@ "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -18916,9 +18916,9 @@ }, "dependencies": { "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", @@ -20365,9 +20365,9 @@ "dev": true }, "jsdoc": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz", - "integrity": "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz", + "integrity": "sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==", "dev": true, "requires": { "@babel/parser": "^7.20.15", @@ -22093,9 +22093,9 @@ }, "dependencies": { "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", @@ -24831,7 +24831,7 @@ "yarn-install": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha1-V/RQULgu/VcYKzlzxUqgXLXSUjA=", + "integrity": "sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==", "dev": true, "requires": { "cac": "^3.0.3", @@ -24867,7 +24867,7 @@ "cross-spawn": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", "dev": true, "requires": { "lru-cache": "^4.0.1", diff --git a/package.json b/package.json index 27fbb642f8..2b36e407a5 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "grunt-stylelint": "0.20.1", "grunt-tyops": "0.1.1", "jimp": "0.13.0", - "jsdoc": "4.0.3", + "jsdoc": "4.0.4", "jsdoc-wmf-theme": "1.1.0", "mocha": "5.2.0", "selenium-webdriver": "3.6.0", From b9d1106eb0363e2e9eced37390df6c42cc62cf96 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 29 Nov 2024 08:31:59 +0100 Subject: [PATCH 065/730] Localisation updates from https://translatewiki.net. Change-Id: Ib18d3d86f984bcaa2b9875f5b0409396584fe907 --- i18n/ve-wmf/hr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-wmf/hr.json b/i18n/ve-wmf/hr.json index 799fa83635..b6ff4e836c 100644 --- a/i18n/ve-wmf/hr.json +++ b/i18n/ve-wmf/hr.json @@ -12,7 +12,7 @@ "tag-editcheck-newcontent-description": "EditCheck pretpostavlja da je na stranicu dodan nov sadržaj", "tag-editcheck-newreference-description": "Na stranicu je dodana referencija", "tag-editcheck-references-description": "EditCheck pretpostavlja da je bila potrebna referencija", - "tag-editcheck-references-activated": "Edit Check pokrenut za referencije", + "tag-editcheck-references-activated": "EditCheck pokrenut za referencije", "tag-editcheck-references-activated-description": "EditCheck je pretpostavio da je bila potrebna referencija pa je prikazano korisničko sučelje", "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Uređivanje napravljeno [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditorom]]", From 2fb7b81cafddf47cd9dbd8a81dd1565d5b697f74 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 22 Nov 2024 14:46:11 +0000 Subject: [PATCH 066/730] ArticleTarget: Don't throw error on new heading node Change-Id: I4e0566de9ffa2112d99d9d574621ce57ce8b37f2 --- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 43c9044a5c..e7e92cb4ed 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -2114,7 +2114,7 @@ ve.init.mw.ArticleTarget.prototype.restoreEditSection = function () { dmDoc.getNodesByType( 'mwHeading' ).some( ( heading ) => { const domElements = heading.getOriginalDomElements( dmDoc.getStore() ); if ( - domElements && domElements[ 0 ].nodeType === Node.ELEMENT_NODE && + domElements && domElements.length && domElements[ 0 ].nodeType === Node.ELEMENT_NODE && domElements[ 0 ].getAttribute( 'data-mw-section-id' ) === section ) { headingModel = heading; From 6d4caef304f38189fc1282aee8bde2e22287617d Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 25 Nov 2024 14:04:28 +0000 Subject: [PATCH 067/730] CollabTarget: Set ve-activated on instead of This is what our other targets do. Change-Id: I2ffbee8d74612d112509065b1e5e45ebc3487e6f --- modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js b/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js index e2479dc44d..eb124ff63b 100644 --- a/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js +++ b/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js @@ -69,7 +69,7 @@ showForm( true ); } ); - $( 'body' ).addClass( 've-activated ve-active' ); + $( 'html' ).addClass( 've-activated ve-active' ); $targetContainer.prepend( target.$element ); @@ -219,7 +219,7 @@ target.restorePage(); target.destroy(); - $( 'body' ).removeClass( 've-activated ve-active' ); + $( 'html' ).removeClass( 've-activated ve-active' ); } setTitle( mw.msg( 'collabpad' ) ); From 3a2df21703ad08ef0e0945835850b13ca4962084 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 25 Nov 2024 14:08:36 +0000 Subject: [PATCH 068/730] Add an class for the current surface's mode Change-Id: I167a460e129969f1e25dde717df5f3cb4b67b34e --- .../ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index 3228048749..cf1cb0218f 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -424,7 +424,12 @@ ve.init.mw.DesktopArticleTarget.prototype.activate = function ( dataPromise ) { * Edit mode has finished activating */ ve.init.mw.DesktopArticleTarget.prototype.afterActivate = function () { - $( 'html' ).removeClass( 've-activating' ).addClass( 've-active' ); + // eslint-disable-next-line mediawiki/class-doc + $( 'html' ) + // Remove ve-activating when loading for the first time, + // and when switching remove previous mode's class. + .removeClass( 've-activating ve-active-visual ve-active-source' ) + .addClass( 've-active ve-active-' + this.getSurface().getMode() ); // Disable TemplateStyles in the original content // (We do this here because toggling 've-active' class above hides it) From 697b5729c85def261f64b0e894bdfd8e012a99b3 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 2 Dec 2024 08:23:16 +0100 Subject: [PATCH 069/730] Localisation updates from https://translatewiki.net. Change-Id: Ie42cd4e2cc60dea24910ab6939eaab8ad5fe7afc --- i18n/ve-mw/dz.json | 8 ++++++++ i18n/ve-mw/gom-latn.json | 38 ++++++++++++++++++++++++++++++++++++++ i18n/ve-wmf/gom-latn.json | 3 +++ 3 files changed, 49 insertions(+) create mode 100644 i18n/ve-mw/dz.json diff --git a/i18n/ve-mw/dz.json b/i18n/ve-mw/dz.json new file mode 100644 index 0000000000..9d595f1be6 --- /dev/null +++ b/i18n/ve-mw/dz.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Sonamdargay" + ] + }, + "visualeditor-ca-editsource-section": "འབྱུང་ཁུངས་ཞུན་དག་འབད།" +} diff --git a/i18n/ve-mw/gom-latn.json b/i18n/ve-mw/gom-latn.json index 1d9f1974cd..cd4ec0b891 100644 --- a/i18n/ve-mw/gom-latn.json +++ b/i18n/ve-mw/gom-latn.json @@ -1,10 +1,13 @@ { "@metadata": { "authors": [ + "QW90", "The Discoverer" ] }, + "collabpad-import-subtitle": "$1 savn aayat kelolem", "tooltip-ca-ve-edit": "Hem pan bodol", + "visualeditor-advancedsettings-tool": "Sudarit mandavoll", "visualeditor-backbutton-tooltip": "Fattim voch", "visualeditor-ca-createlocaldescriptionsource": "Thollavem vornonachem strot zod", "visualeditor-ca-createsource": "Strot roch", @@ -22,38 +25,73 @@ "visualeditor-dialog-media-save": "Samball", "visualeditor-dialog-media-search-tab-search": "Sod", "visualeditor-dialog-media-type-thumb": "Lhan-imaz", + "visualeditor-dialog-meta-advancedsettings-label": "Sudarit mandavoll", + "visualeditor-dialog-meta-advancedsettings-section": "Sudarit mandavoll", "visualeditor-dialog-meta-categories-category": "Vorg", "visualeditor-dialog-meta-categories-data-label": "Vorgam", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Lipoileleo vorgam", "visualeditor-dialog-meta-categories-input-newcategorylabel": "Novo vorg", + "visualeditor-dialog-meta-categories-options": "Poriai", "visualeditor-dialog-meta-categories-section": "Vorgam", "visualeditor-dialog-meta-languages-label": "Bhaso", "visualeditor-dialog-meta-languages-link-label": "Zodlelem pan", "visualeditor-dialog-meta-languages-name-label": "Bhas", "visualeditor-dialog-meta-languages-section": "Bhaso", + "visualeditor-dialog-meta-settings-displaytitle": "Prodorxit mathallo", "visualeditor-dialog-meta-settings-hiddencat-label": "Lipoilolo vorg", "visualeditor-dialog-meta-settings-index-disable": "Na", "visualeditor-dialog-meta-settings-index-force": "Hoi", + "visualeditor-dialog-meta-settings-label": "Panachi mandavoll", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Na", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Hoi", "visualeditor-dialog-meta-settings-redirect-label": "Hea panak punornirdexit kor", + "visualeditor-dialog-meta-settings-section": "Panachi mandavoll", "visualeditor-dialog-meta-settings-toc-default": "Goroz zalear", "visualeditor-dialog-meta-settings-toc-disable": "Kednach nhoi", "visualeditor-dialog-meta-settings-toc-force": "Sod'dam", + "visualeditor-dialog-meta-title": "Poriai", + "visualeditor-dialog-template-title": "Sancho", + "visualeditor-dialog-transclusion-template-title-nonexistent": "Ho sancho ostitvant na", + "visualeditor-dialog-transclusion-add-template": "Sancho zodd", + "visualeditor-dialog-transclusion-add-template-button": "Sancho zodd", + "visualeditor-dialog-transclusion-add-template-save": "Zodd", + "visualeditor-dialog-transclusion-collapse-options": "Poriai lipoi", + "visualeditor-dialog-transclusion-expand-options": "Poriai dakhoi", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Sancho sod", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Fattim voch", + "visualeditor-dialog-transclusion-title-insert-template": "Sancho zodd", + "visualeditor-dialog-transclusion-title-insert-known-template": "Ghal: $1", + "visualeditor-dialog-transclusion-title-edit-known-template": "Sompadon: $1", "visualeditor-dialogbutton-media-tooltip": "Chitram ani madheomam", + "visualeditor-dialogbutton-template-tooltip": "Sancho", + "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|kollovnni|kollovnnio}}", + "visualeditor-editnotices-tooltip": "Sompadon kollovnnio", "visualeditor-educationpopup-dismiss": "Borem asa, {{GENDER:|somzolom|somzolim|somzolom/somzolim}}", + "visualeditor-formatdropdown-format-mw-heading1": "Panacho mathallo", "visualeditor-formatdropdown-format-mw-heading2": "Mathallo", + "visualeditor-formatdropdown-format-mw-heading3": "Up-mathallo 1", + "visualeditor-formatdropdown-format-mw-heading4": "Up-mathallo 2", + "visualeditor-formatdropdown-format-mw-heading5": "Up-mathallo 3", + "visualeditor-formatdropdown-format-mw-heading6": "Up-mathallo 4", "visualeditor-languages-tool": "Bhaso", "visualeditor-linkinspector-button-link-external": "Bhaili sayt", "visualeditor-linkinspector-button-link-internal": "Bhitorle panam sod", "visualeditor-linkinspector-educationpopup-title": "Duve", + "visualeditor-linkinspector-illegal-title": "Ovoid panacho mathallo", "visualeditor-linknodeinspector-title": "Sadho duvo", + "visualeditor-meta-tool": "Poriai", + "visualeditor-mweditmode-tooltip": "Sompadok bodol", "visualeditor-mweditmodeve-showagain": "Ho sondex portun dakhoi nakai", + "visualeditor-mwgallerydialog-card-options": "Poriai", + "visualeditor-preference-visualeditor": "Dixtti sompadok sokxom kor", + "visualeditor-rebase-client-import-name": "Panacho mathallo", "visualeditor-redirect-description": "$1 ak punornirdexit", "visualeditor-savedialog-label-publish-short": "Uzvaddai", "visualeditor-savedialog-label-save-short": "Samball", "visualeditor-savedialog-title-save": "Tuje bodol samball", + "visualeditor-section-title-placeholder": "Vixoy", + "visualeditor-settings-tool": "Panachi mandavoll", "visualeditor-special-characters-group-other": "Zaite pautt upeog kel'le", + "visualeditor-templatesused-tool": "Vaporlele sanche", "visualeditor-version-label": "Avrutti" } diff --git a/i18n/ve-wmf/gom-latn.json b/i18n/ve-wmf/gom-latn.json index 6045a90250..280f82ce64 100644 --- a/i18n/ve-wmf/gom-latn.json +++ b/i18n/ve-wmf/gom-latn.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "QW90", "The Discoverer" ] }, @@ -12,5 +13,7 @@ "tag-visualeditor-wikitext-description": "2017 wikimozkur sompadoka vorvim kel'lem sompadon", "tag-visualeditor-switched-description": "Vaporpi dixtti sompadokacho vapor korun sompadon kortalo, uprant wikimozkur sompadok vaprunk laglo.", "visualeditor-welcomedialog-action": "Sompadon chalu kor", + "visualeditor-welcomedialog-switch": "Mull sompadokacher voch", + "visualeditor-welcomedialog-switch-ve": "Dixtti sompadokacher voch", "visualeditor-welcomedialog-title": "$2 -ant {{GENDER:$1|ievkar}}" } From 6a26905d878d6890deb1138b821328ea6f3027c6 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 2 Dec 2024 15:24:50 +0000 Subject: [PATCH 070/730] MWTransclusionDialog: Remove unnecessary empty label hack The blocking task was resolved 7 years ago... Change-Id: I4853af45f6ea210be9478fd1deac8efb13e47877 --- modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js index e8da793c03..a48bfa18c4 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js @@ -44,10 +44,8 @@ ve.ui.MWTransclusionDialog.static.actions = [ ...ve.ui.MWTemplateDialog.static.actions, { action: 'mode', - modes: [ 'edit', 'insert' ], - // HACK: Will be set later, but we want measurements to be accurate in the mean time, this - // will not be needed when T93290 is resolved - label: $( document.createTextNode( '\u00a0' ) ) + // label is set by updateModeActionState + modes: [ 'edit', 'insert' ] }, { action: 'back', From 03b557f1672f190826ae8fd7c1528a6a6070be18 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 29 Nov 2024 17:01:32 +0000 Subject: [PATCH 071/730] Dialogs: Go back or close when pressing escape Decide based on the currently available actions. Change-Id: Ida805efbf14071967bf2359788486028fb6c9a09 --- modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js | 11 +++++++++++ modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js | 11 +++++++++++ .../ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js index d619994e88..6a45cb0573 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js @@ -173,6 +173,17 @@ ve.ui.MWMediaDialog.static.getImportRules = function () { /* Methods */ +/** + * @inheritdoc + */ +ve.ui.MWMediaDialog.prototype.getEscapeAction = function () { + const backOrClose = this.actions.get( { flags: [ 'back', 'close' ], visible: true } ); + if ( backOrClose.length ) { + return backOrClose[ 0 ].getAction(); + } + return null; +}; + /** * @inheritdoc */ diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js index fa8c0df454..aaccdaa4d2 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js @@ -876,6 +876,17 @@ ve.ui.MWSaveDialog.prototype.getTeardownProcess = function ( data ) { } ); }; +/** + * @inheritdoc + */ +ve.ui.MWSaveDialog.prototype.getEscapeAction = function () { + const backOrClose = this.actions.get( { flags: [ 'back', 'close' ], visible: true } ); + if ( backOrClose.length ) { + return backOrClose[ 0 ].getAction(); + } + return null; +}; + /** * @inheritdoc */ diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js index a48bfa18c4..9344e56785 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js @@ -68,6 +68,17 @@ ve.ui.MWTransclusionDialog.static.isSmallScreen = function () { /* Methods */ +/** + * @inheritdoc + */ +ve.ui.MWTransclusionDialog.prototype.getEscapeAction = function () { + const backOrClose = this.actions.get( { flags: [ 'back', 'close' ], visible: true } ); + if ( backOrClose.length ) { + return backOrClose[ 0 ].getAction(); + } + return null; +}; + /** * Handle outline controls move events. * From 3a9c8f78ba8602e571317215462a156d55af37ea Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 2 Dec 2024 18:06:01 +0000 Subject: [PATCH 072/730] Replace x.slice(0,x.length-y) with x.slice(0,-y) Requires y to be non-zero. Change-Id: I033732cb78b5e3149ac26e19243bf21b143eb105 --- modules/ve-mw/ui/widgets/ve.ui.MWPreTextInputWidget.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWPreTextInputWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWPreTextInputWidget.js index c3d70d5ab9..ad047df96f 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWPreTextInputWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWPreTextInputWidget.js @@ -29,10 +29,14 @@ OO.inheritClass( ve.ui.MWPreTextInputWidget, ve.ui.WhitespacePreservingTextInput */ ve.ui.MWPreTextInputWidget.prototype.setValueAndWhitespace = function ( value ) { this.whitespace[ 0 ] = value.match( /^\n?/ )[ 0 ]; - value = value.slice( this.whitespace[ 0 ].length ); + if ( this.whitespace[ 0 ] ) { + value = value.slice( this.whitespace[ 0 ].length ); + } this.whitespace[ 1 ] = value.match( /\n?$/ )[ 0 ]; - value = value.slice( 0, value.length - this.whitespace[ 1 ].length ); + if ( this.whitespace[ 1 ] ) { + value = value.slice( 0, -this.whitespace[ 1 ].length ); + } this.setValue( value ); }; From 13a949e74dc7646266902bc3825c1454c6a697d1 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 5 Dec 2024 08:21:44 +0100 Subject: [PATCH 073/730] Localisation updates from https://translatewiki.net. Change-Id: I8e0d7948cc99652ebaafa5a9d501404054d2609a --- i18n/ve-mw/frs.json | 9 +++++++++ i18n/ve-mw/tw.json | 1 - i18n/ve-wmf/az.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 i18n/ve-mw/frs.json diff --git a/i18n/ve-mw/frs.json b/i18n/ve-mw/frs.json new file mode 100644 index 0000000000..9ab9300933 --- /dev/null +++ b/i18n/ve-mw/frs.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [] + }, + "tooltip-ca-ve-edit": "Bīräid disser sīd", + "visualeditor-ca-editsource": "Bīräiden kumof", + "visualeditor-ca-editsource-section": "Kumof bīräiden", + "visualeditor-descriptionpagelink": "Project:Fertööner" +} diff --git a/i18n/ve-mw/tw.json b/i18n/ve-mw/tw.json index fcab690321..e1dddee631 100644 --- a/i18n/ve-mw/tw.json +++ b/i18n/ve-mw/tw.json @@ -26,7 +26,6 @@ "visualeditor-autosave-recovered-text": "Wonsa atumi aka ɛnsesaɛ a w'anfa ansie no.", "visualeditor-autosave-recovered-title": "Yɛnsa aka nsesaeɛ no", "visualeditor-backbutton-tooltip": "Kɔ akyire", - "visualeditor-ca-createsource": "Create source", "visualeditor-ca-editsource": "Edit source", "visualeditor-ca-editsource-section": "edit source", "visualeditor-categories-tool": "Nkyekyemu", diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index 307af7d66e..cbb07e8beb 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -16,7 +16,7 @@ "tag-editcheck-references-description": "EditCheck hesab edir ki, istinad lazım ola bilər", "tag-editcheck-references-activated": "Redaktə Yoxlanışı (istinadlar) aktivləşdirilib", "tag-editcheck-references-activated-description": "EditCheck istinad lazım olduğunu düşünür və interfeys göstərilir", - "tag-visualeditor": "Vizual redaktor", + "tag-visualeditor": "Vizual redaktə", "tag-visualeditor-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktorun]] köməyi ilə edilib", "tag-visualeditor-needcheck": "Vizual redaktor: Yoxla", "tag-visualeditor-needcheck-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizual redaktor]] ilə edildi, sistem burada vikimətndə gözlənilməyən dəyişikliklər aşkar etdi.", From e62327efe09cbf45b03063efa712e80c571485c1 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 5 Dec 2024 12:10:28 +0000 Subject: [PATCH 074/730] EditCheck: Replace highlights/selection with fragments 'selection' is only used by AddReferenceEditCheck but this can be done in the act method. Provide a method for getting highlight selections from these 'affected fragments' that can be overridden. Change-Id: Ida661682efd8ae99d945f0e310ea3ce12efc8770 --- editcheck/modules/EditCheckAction.js | 15 +++++++++++---- editcheck/modules/EditCheckDialog.js | 4 ++-- editcheck/modules/EditCheckFactory.js | 2 +- .../modules/editchecks/AddReferenceEditCheck.js | 8 ++++---- .../editchecks/ConvertReferenceEditCheck.js | 3 +-- .../modules/editchecks/TextMatchEditCheck.js | 3 +-- editcheck/modules/init.js | 10 +++++----- 7 files changed, 25 insertions(+), 20 deletions(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 8d0bccfb87..5cfd6aaa12 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -3,14 +3,12 @@ * * @param {Object} config * @param {mw.editcheck.BaseEditCheck} check - * @param {ve.dm.SurfaceFragment[]} highlights Fragments to highlight - * @param {ve.dm.SurfaceFragment} selection Fragment to select when acting + * @param {ve.dm.SurfaceFragment[]} fragments Affected fragments * @param {jQuery|string|Function|OO.ui.HtmlSnippet} message Check message body */ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.check = config.check; - this.highlights = config.highlights; - this.selection = config.selection; + this.fragments = config.fragments; this.message = config.message; }; @@ -25,6 +23,15 @@ mw.editcheck.EditCheckAction.prototype.getChoices = function () { return this.check.getChoices( this ); }; +/** + * Get selections to highlight for this check + * + * @return {ve.dm.Selection[]} + */ +mw.editcheck.EditCheckAction.prototype.getHighlightSelections = function () { + return this.fragments.map( ( fragment ) => fragment.getSelection() ); +}; + /** * Get a description of the check * diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 874ee47c81..8af0141e63 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -60,8 +60,8 @@ ve.ui.EditCheckDialog.prototype.update = function () { label: check.message, framed: false } ).$element ); - check.highlights.forEach( ( highlight ) => { - selections.push( ve.ce.Selection.static.newFromModel( highlight.getSelection(), surfaceView ) ); + check.getHighlightSelections().forEach( ( selection ) => { + selections.push( ve.ce.Selection.static.newFromModel( selection, surfaceView ) ); } ); } ); surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', selections ); diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index 2094577a60..0487515075 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -78,7 +78,7 @@ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( listene } } ); newChecks.sort( - ( a, b ) => a.highlights[ 0 ].getSelection().getCoveringRange().start - b.highlights[ 0 ].getSelection().getCoveringRange().start + ( a, b ) => a.getHighlightSelections()[ 0 ].getCoveringRange().start - b.getHighlightSelections()[ 0 ].getCoveringRange().start ); return newChecks; }; diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index 4b8b522466..4f2d40470a 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -18,8 +18,7 @@ mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceMo return this.findAddedContent( surfaceModel.getDocument() ).map( ( range ) => { const fragment = surfaceModel.getLinearFragment( range ); return new mw.editcheck.EditCheckAction( { - highlights: [ fragment ], - selection: this.adjustForPunctuation( fragment.collapseToEnd() ), + fragments: [ fragment ], check: this } ); } ); @@ -60,7 +59,8 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, co switch ( choice ) { case 'accept': ve.track( 'activity.editCheckReferences', { action: 'edit-check-confirm' } ); - action.selection.select(); + + this.adjustForPunctuation( action.fragments[ 0 ].collapseToEnd() ).select(); return windowAction.open( 'citoid' ).then( ( instance ) => instance.closing ).then( ( citoidData ) => { const citoidOrCiteDataDeferred = ve.createDeferred(); @@ -95,7 +95,7 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, co return windowAction.open( 'editCheckReferencesInspector', { - fragment: action.highlights[ 0 ], + fragment: action.fragments[ 0 ], callback: contextItem.data.callback, saveProcessDeferred: contextItem.data.saveProcessDeferred } diff --git a/editcheck/modules/editchecks/ConvertReferenceEditCheck.js b/editcheck/modules/editchecks/ConvertReferenceEditCheck.js index d824d7329a..8a93fb112d 100644 --- a/editcheck/modules/editchecks/ConvertReferenceEditCheck.js +++ b/editcheck/modules/editchecks/ConvertReferenceEditCheck.js @@ -22,8 +22,7 @@ mw.editcheck.ConvertReferenceEditCheck.prototype.onDocumentChange = function ( s if ( href ) { const fragment = surfaceModel.getLinearFragment( node.getOuterRange() ); return new mw.editcheck.EditCheckAction( { - highlights: [ fragment ], - selection: fragment, + fragments: [ fragment ], message: ve.msg( 'citoid-referencecontextitem-convert-message' ), check: this } ); diff --git a/editcheck/modules/editchecks/TextMatchEditCheck.js b/editcheck/modules/editchecks/TextMatchEditCheck.js index 6d22a2f530..913eb34ba0 100644 --- a/editcheck/modules/editchecks/TextMatchEditCheck.js +++ b/editcheck/modules/editchecks/TextMatchEditCheck.js @@ -22,8 +22,7 @@ mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange = function ( surfaceM const fragment = surfaceModel.getLinearFragment( range ); actions.push( new mw.editcheck.EditCheckAction( { - highlights: [ fragment ], - selection: fragment, + fragments: [ fragment ], message: replacer.message, check: this } ) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index f7f1b1ebb6..df26a8847d 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -153,10 +153,10 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable const highlightNodes = []; const selections = []; checks.forEach( ( check ) => { - check.highlights.forEach( ( highlight ) => { - highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( highlight.getSelection().getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); - const selection = ve.ce.Selection.static.newFromModel( highlight.getSelection(), surfaceView ); - selections.push( selection ); + check.getHighlightSelections().forEach( ( selection ) => { + highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( selection.getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); + const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); + selections.push( selectionView ); } ); } ); // TODO: Make selections clickable when multicheck is enabled @@ -201,7 +201,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable // eslint-disable-next-line no-inner-declarations function showCheckContext( check ) { - const fragment = check.highlights[ 0 ]; + const fragment = check.fragments[ 0 ]; // Select the found content to correctly position the context on desktop fragment.select(); From dbf01a5e0792677252990af808a7a23c480ccaac Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 6 Dec 2024 08:18:02 +0100 Subject: [PATCH 075/730] Localisation updates from https://translatewiki.net. Change-Id: I8402bf0aff3dcf390377869ca62771521995a52d --- i18n/ve-mw/api/{cdo.json => cdo-hant.json} | 4 +-- i18n/ve-mw/cdo-hans.json | 8 +++++ i18n/ve-mw/{cdo.json => cdo-hant.json} | 40 ++++++++++++++++++---- i18n/ve-mw/cdo-latn.json | 11 ++++++ i18n/ve-mw/frs.json | 9 ----- 5 files changed, 54 insertions(+), 18 deletions(-) rename i18n/ve-mw/api/{cdo.json => cdo-hant.json} (97%) create mode 100644 i18n/ve-mw/cdo-hans.json rename i18n/ve-mw/{cdo.json => cdo-hant.json} (71%) create mode 100644 i18n/ve-mw/cdo-latn.json delete mode 100644 i18n/ve-mw/frs.json diff --git a/i18n/ve-mw/api/cdo.json b/i18n/ve-mw/api/cdo-hant.json similarity index 97% rename from i18n/ve-mw/api/cdo.json rename to i18n/ve-mw/api/cdo-hant.json index b52fcfe430..2bfccfae05 100644 --- a/i18n/ve-mw/api/cdo.json +++ b/i18n/ve-mw/api/cdo-hant.json @@ -1,9 +1,7 @@ { "@metadata": { "authors": [ - "Yejianfei", - "Ztl8702", - "唐吉訶德的侍從" + "Winston Sung" ] }, "apihelp-visualeditor-param-basetimestamp": "敆保存其辰候,起動汝共嚽設置成編輯茲萆修訂版本其時間戳。廮𡅏檢測編輯衝突。", diff --git a/i18n/ve-mw/cdo-hans.json b/i18n/ve-mw/cdo-hans.json new file mode 100644 index 0000000000..f9bc51d4bf --- /dev/null +++ b/i18n/ve-mw/cdo-hans.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Winston Sung" + ] + }, + "visualeditor-dialog-meta-languages-link-label": "链接遘其頁面" +} diff --git a/i18n/ve-mw/cdo.json b/i18n/ve-mw/cdo-hant.json similarity index 71% rename from i18n/ve-mw/cdo.json rename to i18n/ve-mw/cdo-hant.json index 06b9b5b1c9..f4c5aff307 100644 --- a/i18n/ve-mw/cdo.json +++ b/i18n/ve-mw/cdo-hant.json @@ -1,13 +1,42 @@ { "@metadata": { "authors": [ - "Davidzdh", - "GnuDoyng", - "Yejianfei", - "Ztl8702", - "唐吉訶德的侍從" + "Winston Sung" ] }, + "tooltip-ca-editsource": "編輯茲蜀頁其源代碼", + "tooltip-ca-createsource": "創建茲蜀頁其源代碼", + "visualeditor-advancedsettings-tool": "高級設置", + "visualeditor-backbutton-tooltip": "轉去", + "visualeditor-ca-createlocaldescriptionsource": "添加本地描述源代碼", + "visualeditor-ca-createsource": "創建源代碼", + "visualeditor-ca-editlocaldescriptionsource": "編輯本地描述源代碼", + "visualeditor-categories-tool": "類別", + "visualeditor-desc": "MediaWiki其可視化編輯器", + "visualeditor-dialog-media-alttext-section": "替代文本", + "visualeditor-dialog-media-alttext-section-help": "汝會使使嚽來為無法看遘項目其人寫蜀段文字描述。描述應該當著讓伊各儂有能耐理解媒體項目提供其目的共信息。嚽對青盲用戶共其他使屏幕閱讀器軟件或者純文本瀏覽器其人來講是嘢重要其。", + "visualeditor-dialog-media-change-image": "更改圖片", + "visualeditor-dialog-media-choose-image": "使者圖片", + "visualeditor-dialog-media-content-filename": "文件名", + "visualeditor-dialog-media-content-section": "圖片說明", + "visualeditor-dialog-media-content-section-help": "汝會使使嚽設媒體下底其標簽乞所有讀者看。啫嚽經常使來講明媒體共上下文其關係,著簡單明了。", + "visualeditor-dialog-media-goback": "轉去", + "visualeditor-dialog-media-info-artist": "由$1上傳", + "visualeditor-dialog-media-info-audiofile": "音頻文件", + "visualeditor-dialog-media-info-created": "創建著:$1", + "visualeditor-dialog-media-info-meta-artist": "藝術家:$1", + "visualeditor-dialog-media-info-moreinfo": "更価信息", + "visualeditor-dialog-media-info-readmore": "讀更価", + "visualeditor-dialog-media-info-uploaded": "上傳著:$1", + "visualeditor-dialog-media-page-advanced": "高級設置", + "visualeditor-dialog-media-page-general": "常規設置", + "visualeditor-dialog-media-position-checkbox": "讓文字內容環繞者對象", + "visualeditor-dialog-media-position-checkbox-help": "汝會使讓頁面裡勢其媒體使行内方式顯示,伓是浮動其方式。啫嚽汝應當盡量少使,因爲汝取消嚽方塊其勾會切斷文字。", + "visualeditor-dialog-media-position-section": "位置", + "visualeditor-dialog-media-position-section-help": "汝會使設置茲萆媒體項目出現著頁面上其位置。嚽有時乞當作拍破頁面蜀邊圖片其長直線。", + "visualeditor-dialog-media-save": "保存", + "visualeditor-dialog-media-search-tab-search": "尋討", + "visualeditor-dialog-media-search-tab-upload": "上傳", "visualeditor-dialog-media-size-section": "圖像尺寸", "visualeditor-dialog-media-title": "媒體文件設置", "visualeditor-dialog-media-type-border": "邊框", @@ -30,7 +59,6 @@ "visualeditor-dialog-meta-categories-section": "類別", "visualeditor-dialog-meta-languages-code-label": "語言代碼", "visualeditor-dialog-meta-languages-label": "語言", - "visualeditor-dialog-meta-languages-link-label": "链接遘其頁面", "visualeditor-dialog-meta-languages-name-label": "語言", "visualeditor-dialog-meta-languages-section": "語言", "visualeditor-dialog-meta-settings-displaytitle": "顯示其標題", diff --git a/i18n/ve-mw/cdo-latn.json b/i18n/ve-mw/cdo-latn.json new file mode 100644 index 0000000000..298bed6590 --- /dev/null +++ b/i18n/ve-mw/cdo-latn.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Winston Sung" + ] + }, + "tooltip-ca-ve-edit": "Siŭ-gāi cī hiĕk", + "visualeditor-ca-editsource": "Gāi nguòng-dâi-mā", + "visualeditor-ca-editsource-section": "gāi nguòng-dâi-mā", + "visualeditor-descriptionpagelink": "Project:Kō̤-sê-huá biĕng-cĭk-ké" +} diff --git a/i18n/ve-mw/frs.json b/i18n/ve-mw/frs.json deleted file mode 100644 index 9ab9300933..0000000000 --- a/i18n/ve-mw/frs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@metadata": { - "authors": [] - }, - "tooltip-ca-ve-edit": "Bīräid disser sīd", - "visualeditor-ca-editsource": "Bīräiden kumof", - "visualeditor-ca-editsource-section": "Kumof bīräiden", - "visualeditor-descriptionpagelink": "Project:Fertööner" -} From 905c251ab31fdcac11c2ead69e4fdf3656b58afb Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 9 Dec 2024 08:22:40 +0100 Subject: [PATCH 076/730] Localisation updates from https://translatewiki.net. Change-Id: I4d77579c7844a696da1835749bedf9ff78b0e7c8 --- i18n/ve-mw/ay.json | 3 ++- i18n/ve-mw/az.json | 6 +++--- i18n/ve-mw/cop.json | 1 + i18n/ve-mw/mad.json | 3 ++- i18n/ve-mw/pa.json | 1 + i18n/ve-mw/scn.json | 4 ++-- i18n/ve-mw/sr-ec.json | 20 ++++++++++---------- i18n/ve-mw/tl.json | 2 +- 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/i18n/ve-mw/ay.json b/i18n/ve-mw/ay.json index 45cd0610be..216361f7c7 100644 --- a/i18n/ve-mw/ay.json +++ b/i18n/ve-mw/ay.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "AleElDestructor", "Jduranboger", "Macofe", "Vikytinta" @@ -40,7 +41,7 @@ "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Katiyuriy imantatanaka", "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Niya kipka katiyuriyanaka", "visualeditor-dialog-meta-categories-input-movecategorylabel": "Aka ..aksar jittayaña", - "visualeditor-dialog-meta-categories-input-newcategorylabel": "Machaq katiyuria", + "visualeditor-dialog-meta-categories-input-newcategorylabel": "Machaqa katiyuria", "visualeditor-dialog-meta-categories-input-placeholder": "Katiyuriy yapxataña", "visualeditor-dialog-meta-categories-options": "Ajllinaka", "visualeditor-dialog-meta-categories-section": "Katiyuriyanaka", diff --git a/i18n/ve-mw/az.json b/i18n/ve-mw/az.json index b6b978c193..f74cdbc8ae 100644 --- a/i18n/ve-mw/az.json +++ b/i18n/ve-mw/az.json @@ -42,10 +42,10 @@ "visualeditor-autosave-recovered-title": "Dəyişikliklər bərpa edildi", "visualeditor-backbutton-tooltip": "Geri qayıt", "visualeditor-ca-createlocaldescriptionsource": "Lokal izah əlavə et", - "visualeditor-ca-createsource": "Mənbəni yarat", + "visualeditor-ca-createsource": "Mənbə kodunu yarat", "visualeditor-ca-editlocaldescriptionsource": "Lokal izah kodunu redaktə et", - "visualeditor-ca-editsource": "Mənbəni redaktə et", - "visualeditor-ca-editsource-section": "mənbəni redaktə et", + "visualeditor-ca-editsource": "Mənbə kodunu redaktə et", + "visualeditor-ca-editsource-section": "mənbə kodunu redaktə et", "visualeditor-ca-editsource-section-hint": "Bölmənin mənbə kodunu redaktə et: $1", "visualeditor-categories-tool": "Kateqoriyalar", "visualeditor-changedesc-mwcategory-sortkey-changed": "Sıralama açarı dəyişdirildi: $1 -> $2", diff --git a/i18n/ve-mw/cop.json b/i18n/ve-mw/cop.json index 66f309c4a2..63251ab880 100644 --- a/i18n/ve-mw/cop.json +++ b/i18n/ve-mw/cop.json @@ -7,6 +7,7 @@ ] }, "tooltip-ca-ve-edit": "ⲫⲱⲛϩ ⲛ̀ⲧⲁⲓⲥⲉⲗⲓⲥ", + "visualeditor-ca-createlocaldescriptionsource": "Ⲧⲟⲩϩⲟ ⲛ̀ⲟⲩⲡⲏⲅⲏ ⲛ̀ⲧⲉⲧⲥⲩⲅⲅⲣⲁⲫⲏ ⲙ̀ⲙⲁ", "visualeditor-ca-createsource": "Ⲑⲁⲙⲓⲟ̀ ⲛ̀ⲟⲩⲁⲣⲭⲏ", "visualeditor-ca-editsource": "Ϣⲉⲃⲓⲱ̀ ⲛ̀ϯⲁⲣⲭⲏ", "visualeditor-ca-editsource-section": "ϣⲉⲃⲓⲱ̀ ⲛ̀ϯⲁⲣⲭⲏ", diff --git a/i18n/ve-mw/mad.json b/i18n/ve-mw/mad.json index e7f0cdd538..f7fe985703 100644 --- a/i18n/ve-mw/mad.json +++ b/i18n/ve-mw/mad.json @@ -3,6 +3,7 @@ "authors": [ "Abdiafrizal", "Boesenbergia", + "Munajad.MH", "NoiX180" ] }, @@ -30,7 +31,7 @@ "visualeditor-categories-tool": "Bhângsa", "visualeditor-changedesc-mwlanguagevariant": "Markup varian bhâsa èyobâ", "visualeditor-changedesc-mwredirect": "Sekkèp pangallèyan aobâ ḍâri $1 dhâddhi $2", - "visualeditor-changedesc-mwtransclusion": "Paramèter cètha'an èyobâ", + "visualeditor-changedesc-mwtransclusion": "Paramèter cèṭa'an èyobâ", "visualeditor-desc": "Pameccè'an visual ka'angghuy MediaWiki", "visualeditor-descriptionpagelink": "Project:VisualEditor", "visualeditor-dialog-media-alttext-section": "Tèks alternatif", diff --git a/i18n/ve-mw/pa.json b/i18n/ve-mw/pa.json index 16e2ad40d3..969f72f190 100644 --- a/i18n/ve-mw/pa.json +++ b/i18n/ve-mw/pa.json @@ -122,6 +122,7 @@ "visualeditor-dialog-transclusion-loading": "ਲੱਦ ਰਿਹਾ ਹੈ...", "visualeditor-dialog-transclusion-param-default": "ਪੂਰਵ-ਨਿਰਧਾਰਤ: $1", "visualeditor-dialog-transclusion-param-example-long": "ਉਦਾਹਰਨ: $1", + "visualeditor-dialog-transclusion-param-selection-aria-label": "$1 ਵਿੱਚ ਮਾਪਦੰਡ", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "ਫਰਮਾ ਲੱਭੋ", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "ਪਿੱਛੇ ਜਾਉ", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "ਜਿਵੇਂ-ਕਿਵੇਂ ਜਾਰੀ ਰੱਖੋ", diff --git a/i18n/ve-mw/scn.json b/i18n/ve-mw/scn.json index 2284bd495a..fb72bb6469 100644 --- a/i18n/ve-mw/scn.json +++ b/i18n/ve-mw/scn.json @@ -21,8 +21,8 @@ "visualeditor-autosave-modified-prompt-reject": "Ncigna nu canciamentu novu", "visualeditor-ca-createlocaldescriptionsource": "Agghiunci na discrizzioni lucali tràmiti surgenti", "visualeditor-ca-createsource": "Crea surgenti", - "visualeditor-ca-editsource": "Cancia u còdici", - "visualeditor-ca-editsource-section": "cancia u còdici", + "visualeditor-ca-editsource": "Cancia lu còdici", + "visualeditor-ca-editsource-section": "cancia lu còdici", "visualeditor-categories-tool": "Catigurìi", "visualeditor-desc": "Editor visivu pi MediaWiki", "visualeditor-descriptionpagelink": "Project:VisualEditor", diff --git a/i18n/ve-mw/sr-ec.json b/i18n/ve-mw/sr-ec.json index 4c368e3c7c..579b7da11c 100644 --- a/i18n/ve-mw/sr-ec.json +++ b/i18n/ve-mw/sr-ec.json @@ -96,7 +96,7 @@ "visualeditor-dialog-meta-categories-addcategory-label": "Додајте категорију овој страници", "visualeditor-dialog-meta-categories-category": "Категорија", "visualeditor-dialog-meta-categories-data-label": "Категорије", - "visualeditor-dialog-meta-categories-defaultsort-help": "Можете да промените начин на који се ова страница сортира када се приказује унутар категорије постављањем другог индекса за сортирање. Ово се обично користи да би се странице о особама приказивале по презимену, али бити именоване својим именом које је приказано прво.", + "visualeditor-dialog-meta-categories-defaultsort-help": "Користи се за сортирање странице у оквиру категорија. Обично се користи код чланака о особама када се врши сортирање по презимену особе а не имену.", "visualeditor-dialog-meta-categories-defaultsort-label": "Подразумевано сортирај ову страницу као", "visualeditor-dialog-meta-categories-hidden": "Ова категорија је подешена да се не приказује на страницама на којима је додата.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Сакривене категорије", @@ -121,33 +121,33 @@ "visualeditor-dialog-meta-settings-index-default": "Подразумевано", "visualeditor-dialog-meta-settings-index-disable": "Не", "visualeditor-dialog-meta-settings-index-force": "Да", - "visualeditor-dialog-meta-settings-index-help": "Можете присилити претраживаче да наводе ову страницу у релевантним резултатима или их присилити да то не учине. Ова опција не утиче на претрагу овог сајта.", + "visualeditor-dialog-meta-settings-index-help": "Можете присилити претраживаче да наводе ову страницу у релевантним резултатима или их присилити да то не чине. Ова опција не утиче на претрагу овог сајта.", "visualeditor-dialog-meta-settings-index-label": "Допусти претраживачима да индексирају ову страницу", "visualeditor-dialog-meta-settings-label": "Подешавања странице", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Подразумевано", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Не", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Да", - "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Можете да наметнете приказ додатне картице поред картице „$1” на овој страници која ће олакшати додавање новог одељка или га наметнути да се не појави ако би иначе било другачије.", - "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Приказуј картицу за додавање новог одељка на овој страници", + "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Можете да наметнете приказ додатне картице поред картице „$1” она ће олакшати додавање новог одељка или наметнути да се не појави ако би иначе било другачије.", + "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Приказуј картицу за додавање новог одељка", "visualeditor-dialog-meta-settings-nocontentconvert-help": "Можете спречити да се садржај ове странице аутоматски пребацује у друга писма.", "visualeditor-dialog-meta-settings-nocontentconvert-label": "Не пребацуј садржај на друге варијанте језика", - "visualeditor-dialog-meta-settings-noeditsection-help": "Можете да зауставите појављивање линкова за уређивање поред појединачних одељака у неуобичајеном случају када је то прикладно.", + "visualeditor-dialog-meta-settings-noeditsection-help": "Можете онемогућити појављивање линка за уређивање поред одељака у неуобичајеном случају када је то прикладно.", "visualeditor-dialog-meta-settings-noeditsection-label": "Искључи линкове за уређивање поред појединачних наслова на овој страници", "visualeditor-dialog-meta-settings-nogallery-help": "Можете спречити да ова категорија приказује датотеке као галерију, ако је то неприкладно у овом случају.", "visualeditor-dialog-meta-settings-nogallery-label": "Искључи галерију", "visualeditor-dialog-meta-settings-notitleconvert-help": "Можете спречити да се наслов ове странице аутоматски пребацује у друга писма.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Не пребацуј наслов на друге варијанте језика", "visualeditor-dialog-meta-settings-redirect-help": "Можете од ове странице направити преусмерење, страницу која ће аутоматски водити читаоца до друге странице на овом викију. Ово је корисно за погрешно уписане појмове и алтернативна имена или појмове. Ако је направите, читаоци неће видети садржај ове странице.", - "visualeditor-dialog-meta-settings-redirect-label": "Преусмери ову страницу на", - "visualeditor-dialog-meta-settings-redirect-placeholder": "Одредишна страница за преусмерење", + "visualeditor-dialog-meta-settings-redirect-label": "Преусмери страницу на", + "visualeditor-dialog-meta-settings-redirect-placeholder": "Одредишна страница", "visualeditor-dialog-meta-settings-redirect-statichelp": "Можете спречити да се ово преусмерење аутоматски ажурира када се страница на коју оно води премести, у врло ретком случају када је то потребно.", "visualeditor-dialog-meta-settings-redirect-staticlabel": "Спречи ажурирање овог преусмеравања када се одредишна страница премести", "visualeditor-dialog-meta-settings-section": "Подешавања странице", "visualeditor-dialog-meta-settings-toc-default": "Ако је потребно", "visualeditor-dialog-meta-settings-toc-disable": "Никад", "visualeditor-dialog-meta-settings-toc-force": "Увек", - "visualeditor-dialog-meta-settings-toc-help": "Можете да наметнете да се садржај који наводи сваки наслов на страници појави на страницама са мање од четири наслова или да се уопште не појави. Подразумевано ће се појавити ако страница има четири или више наслова.", - "visualeditor-dialog-meta-settings-toc-label": "Приказуј садржај", + "visualeditor-dialog-meta-settings-toc-help": "Можете да наметнете да се садржај приказује на страницама са мање од четири наслова или да се уопште не приказује. Подразумевано ће се појавити ако страница има четири или више (под)наслова.", + "visualeditor-dialog-meta-settings-toc-label": "Приказ садржаја", "visualeditor-dialog-meta-templatesused-noresults": "Шаблони нису пронађени.", "visualeditor-dialog-meta-title": "Опције", "visualeditor-dialog-table-collapsed": "Првобитно скупљена", @@ -238,7 +238,7 @@ "visualeditor-linkinspector-educationpopup-title": "Линкови", "visualeditor-linkinspector-illegal-title": "Неважећи наслов странице", "visualeditor-linkinspector-invalid-blocked": "Уредници овог викија су блокирали овај веб-сајт. Молимо пробајте други веб-сајт.", - "visualeditor-linkinspector-invalid-external": "Унесите цели URL: нпр. https://example.org", + "visualeditor-linkinspector-invalid-external": "Унесите цели URL, нпр. https://example.org", "visualeditor-linknodeinspector-add-label": "Додај ознаку", "visualeditor-linknodeinspector-title": "Једноставан линк", "visualeditor-magiclinknodeinspector-convert-link": "Претвори у једноставан линк", diff --git a/i18n/ve-mw/tl.json b/i18n/ve-mw/tl.json index 47caeaca67..4e275bb312 100644 --- a/i18n/ve-mw/tl.json +++ b/i18n/ve-mw/tl.json @@ -112,7 +112,7 @@ "visualeditor-formatdropdown-format-mw-heading5": "Sub-pamuhatan 3", "visualeditor-formatdropdown-format-mw-heading6": "Sub-pamuhatan 4", "visualeditor-languages-tool": "Mga wika", - "visualeditor-linkinspector-button-link-external": "Kawing panlabas", + "visualeditor-linkinspector-button-link-external": "Panlabas na link", "visualeditor-linkinspector-button-link-internal": "Hanapin sa mga pahina", "visualeditor-linkinspector-illegal-title": "Walang-saysay na pamagat ng pahina", "visualeditor-linknodeinspector-add-label": "Magdagdag ng etiketa", From bad67da014dd8c493cee58e534d4c8e49ccff281 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 9 Dec 2024 16:54:06 +0000 Subject: [PATCH 077/730] Update VE core submodule to master (d210240a0) New changes: 89cbef3b0 Make sure InternalList sorting is stable both ways bc2195831 Remove a few misplaced @param docs 28cc3c2d3 Localisation updates from https://translatewiki.net. 1e5b58eab Simplify TransactionSquasher test code a bit 25b5b7af6 Fix incomplete comparison in TextState.getChunks 00fd3c99e Document defaults for optional parameters in JS code f188fd1a8 DiffElement: Fix typo in data slice f3d699066 build: Updating jsdoc to 4.0.4 14c23bc36 Localisation updates from https://translatewiki.net. 1d9fb6345 Update OOUI to v0.51.4 5e3405228 Localisation updates from https://translatewiki.net. d210240a0 Update languages after an automatic commit Change-Id: I4ec553779eb3bf797098f4e024eb196bb40498d5 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 769863ca94..d210240a07 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 769863ca94f2c1bc65613048f67e96264e38f605 +Subproject commit d210240a0761fe0c4fb4f4bb819564b3364503f8 From 607204384370161ace32a1253b9bae456be7c45d Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Tue, 10 Dec 2024 03:31:49 +0000 Subject: [PATCH 078/730] build: Updating mediawiki/mediawiki-phan-config to 0.15.0 Change-Id: Ib4454278d6a02db8a2eb2d83c8f84217d00e6170 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 617b94c84f..885a9fa83b 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "require-dev": { "mediawiki/mediawiki-codesniffer": "45.0.0", - "mediawiki/mediawiki-phan-config": "0.14.0", + "mediawiki/mediawiki-phan-config": "0.15.0", "mediawiki/minus-x": "1.1.3", "php-parallel-lint/php-console-highlighter": "1.0.0", "php-parallel-lint/php-parallel-lint": "1.4.0" From 42b7f17d589907e0dfefb8e6d97a90bb58058baa Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 10 Dec 2024 08:16:34 +0100 Subject: [PATCH 079/730] Localisation updates from https://translatewiki.net. Change-Id: I59f461bba27d73e1294afc71e190895e556765e2 --- i18n/ve-wmf/tcy.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i18n/ve-wmf/tcy.json b/i18n/ve-wmf/tcy.json index b3155dbe8b..857abb2dba 100644 --- a/i18n/ve-wmf/tcy.json +++ b/i18n/ve-wmf/tcy.json @@ -2,9 +2,10 @@ "@metadata": { "authors": [ "BHARATHESHA ALASANDEMAJALU", + "ChiK", "VASANTH S.N.", "Vishwanatha Badikana" ] }, - "tag-visualeditor": "ದೃಸ್ಯೊ ಸಂಪೊಲಿಕೆ" + "tag-visualeditor": "ದೃಸ್ಯೊ ಸಂಪೊಲಿಪು" } From 237f9afcbcf8eb26b1adcd4e30f5d394c00d88f8 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 11 Dec 2024 08:26:04 +0100 Subject: [PATCH 080/730] Localisation updates from https://translatewiki.net. Change-Id: Ie36fe3eeaab86b28d5b422e61af6ad1393f806e2 --- editcheck/i18n/fi.json | 22 +++++++++++++--------- editcheck/i18n/it.json | 10 ++++++++++ i18n/ve-mw/az.json | 12 ++++++------ i18n/ve-mw/fi.json | 6 +++--- 4 files changed, 32 insertions(+), 18 deletions(-) diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index b84b51de5b..0ff2199d26 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -8,18 +8,22 @@ }, "editcheck-dialog-action-no": "Ei", "editcheck-dialog-action-yes": "Kyllä", - "editcheck-dialog-addref-description": "Auta lukijoita ymmärtämään, mistä tämä tieto on peräisin lisäämällä viittaus.", - "editcheck-dialog-addref-reject-question": "Mikset lisää viittausta?", - "editcheck-dialog-addref-reject-description": "Muut muokkaajat arvostaisivat kuulla päätöksestäsi olla lisäämättä viittausta.", - "editcheck-dialog-addref-reject-irrelevant": "En usko, että viittaukset ovat tarpeen tekemässäni muokkauksessa", - "editcheck-dialog-addref-reject-common-knowledge": "Tieto, jota olen lisäämässä on yleistä tietoa", - "editcheck-dialog-addref-reject-uncertain": "En ole varma, minkä viittauksen lisäisin", + "editcheck-dialog-addref-description": "Auta lukijoita ymmärtämään, mistä tämä tieto on peräisin lisäämällä lähdeviite.", + "editcheck-dialog-addref-reject-question": "Mikset lisää lähdeviitettä?", + "editcheck-dialog-addref-reject-description": "Muut muokkaajat arvostaisivat kuulla päätöksestäsi olla lisäämättä lähdeviitettä.", + "editcheck-dialog-addref-reject-irrelevant": "En usko, että lähdeviitteet ovat tarpeen tekemässäni muokkauksessa", + "editcheck-dialog-addref-reject-common-knowledge": "Tieto, jota olen lisäämässä, on yleistä tietoa", + "editcheck-dialog-addref-reject-uncertain": "En ole varma, minkä lähdeviitteen lisäisin", "editcheck-dialog-addref-reject-other": "Muu", - "editcheck-dialog-addref-success-notify": "Kiitos viittauksen lisäämisestä!", - "editcheck-dialog-addref-title": "Lisää viittaus", + "editcheck-dialog-addref-success-notify": "Kiitos lähdeviitteen lisäämisestä!", + "editcheck-dialog-addref-title": "Lisää viite", "editcheck-dialog-title": "Ennen julkaisua", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", + "tag-editcheck-reference-decline-common-knowledge-description": "Muokkaustarkistimen ehdotus hylättiin, koska lisäys on yleistä tietoa", "tag-editcheck-reference-decline-irrelevant": "Muokkaustarkistin (lähteet) hylätty (epäolennaista)", + "tag-editcheck-reference-decline-irrelevant-description": "Muokkaustarkistimen ehdotus hylättiin, koska sitä pidettiin epäolennaisena", "tag-editcheck-reference-decline-other": "Muokkaustarkistin (lähteet) hylätty (muu syy)", - "tag-editcheck-reference-decline-uncertain": "Muokkaustarkistin (lähteet) hylätty (epävarma)" + "tag-editcheck-reference-decline-other-description": "Muokkaustarkistimen ehdotus hylättiin muusta syystä", + "tag-editcheck-reference-decline-uncertain": "Muokkaustarkistin (lähteet) hylätty (epävarma)", + "tag-editcheck-reference-decline-uncertain-description": "Muokkaustarkistimen ehdotus hylättiin, koska käyttäjä oli epävarma" } diff --git a/editcheck/i18n/it.json b/editcheck/i18n/it.json index fcb9e7832d..482cc40951 100644 --- a/editcheck/i18n/it.json +++ b/editcheck/i18n/it.json @@ -7,5 +7,15 @@ }, "editcheck-dialog-action-no": "No", "editcheck-dialog-action-yes": "Sì", + "editcheck-dialog-addref-description": "Aiuta i lettori a capire da dove provengono queste informazioni aggiungendo una fonte.", + "editcheck-dialog-addref-reject-question": "Perché non aggiungi una fonte?", + "editcheck-dialog-addref-reject-description": "Altri editori apprezzerebbero saperne di più sulla tua decisione di non inserire la fonte.", + "editcheck-dialog-addref-reject-irrelevant": "Non credo che le fonti siano rilevanti per la modifica che sto apportando", + "editcheck-dialog-addref-reject-common-knowledge": "Le informazioni che sto aggiungendo sono ampiamente conosciute.", + "editcheck-dialog-addref-reject-uncertain": "Non sono sicuro di quale fonte aggiungere", + "editcheck-dialog-addref-reject-other": "Altro", + "editcheck-dialog-addref-success-notify": "Grazie per aver aggiunto una fonte!", + "editcheck-dialog-addref-title": "Aggiungi una fonte", + "editcheck-dialog-title": "Prima della pubblicazione", "tag-editcheck-reference-decline-other": "Edit Check (citazioni) rifiutato (altro)" } diff --git a/i18n/ve-mw/az.json b/i18n/ve-mw/az.json index f74cdbc8ae..edb7d38547 100644 --- a/i18n/ve-mw/az.json +++ b/i18n/ve-mw/az.json @@ -23,9 +23,9 @@ "tooltip-ca-ve-edit-local": "Yerli təsvir səhifəsini redaktə et", "tooltip-ca-ve-create": "Bu səhifəni yarat", "tooltip-ca-ve-create-local": "Yerli təsvir səhifəsini yarat", - "tooltip-ca-editsource": "Səhifənin mənbə kodunu redaktə et", + "tooltip-ca-editsource": "Səhifənin vikimətnini redaktə et", "tooltip-ca-editsource-local": "Yerli təsvir səhifəsinin mənbə kodunu redaktə et", - "tooltip-ca-createsource": "Bu səhifənin mənbə kodunu yarat", + "tooltip-ca-createsource": "Bu səhifənin vikimətnini yarat", "tooltip-ca-createsource-local": "Yerli təsvir səhifəsinin mənbə kodunu yarat", "visualeditor-advancedsettings-tool": "Əlavə parametrlər", "visualeditor-annotations-default-description": "Səhifənin bu hissəsi annotasiya aralığının bir hissəsidir.", @@ -42,10 +42,10 @@ "visualeditor-autosave-recovered-title": "Dəyişikliklər bərpa edildi", "visualeditor-backbutton-tooltip": "Geri qayıt", "visualeditor-ca-createlocaldescriptionsource": "Lokal izah əlavə et", - "visualeditor-ca-createsource": "Mənbə kodunu yarat", + "visualeditor-ca-createsource": "Vikimətni yarat", "visualeditor-ca-editlocaldescriptionsource": "Lokal izah kodunu redaktə et", - "visualeditor-ca-editsource": "Mənbə kodunu redaktə et", - "visualeditor-ca-editsource-section": "mənbə kodunu redaktə et", + "visualeditor-ca-editsource": "Vikimətni redaktə et", + "visualeditor-ca-editsource-section": "vikimətni redaktə et", "visualeditor-ca-editsource-section-hint": "Bölmənin mənbə kodunu redaktə et: $1", "visualeditor-categories-tool": "Kateqoriyalar", "visualeditor-changedesc-mwcategory-sortkey-changed": "Sıralama açarı dəyişdirildi: $1 -> $2", @@ -363,7 +363,7 @@ "visualeditor-tooltip-non-breaking-space": "Qırılmayan boşluq", "visualeditor-version-label": "Versiya", "visualeditor-wikitext-progress": "Vikimətn yaradılır", - "visualeditor-wikitext-warning": "Vizual redaktor istifadə edirsiniz - [[{{MediaWiki:visualeditor-wikitext-warning-link}}|vikimətn]] burada işləmir. Dəyişikliklərinizi itirmədən istənilən vaxt mənbə redaktəsinə keçmək üçün dəyiş düyməsini basın.", + "visualeditor-wikitext-warning": "Siz vizual redaktor istifadə edirsiniz - [[{{MediaWiki:visualeditor-wikitext-warning-link}}|vikimətn]] burada işləmir. Dəyişikliklərinizi itirmədən istənilən vaxt mənbə redaktəsinə keçmək üçün dəyiş düyməsini basın.", "visualeditor-wikitext-warning-title": "Vikimətn aşkarlandı", "visualeditor-wikitextconvert-title": "Formatlaşdırmanı vikimətnə çevir?", "visualeditor-wikitextconvert-message": "Zəngin formatlı məzmun yapışdırdınız. Bu formatlaşdırmanı vikimətnə çevirmək istəyirsiniz?", diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index a6ebb46552..63b76a04e2 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -197,7 +197,7 @@ "visualeditor-dialog-transclusion-add-template-save": "Lisää", "visualeditor-dialog-transclusion-add-undocumented-param": "Lisää dokumentoimaton parametri", "visualeditor-dialog-transclusion-back-confirmation-prompt": "Palaa hakuun? Muutoksesi menetetään eikä tätä toimintoa voi kumota.", - "visualeditor-dialog-transclusion-close-confirmation-prompt": "Sulje mallinemuokkain? Muutoksesi menetetään eikä tätä voida kumota.", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "Sulje mallinemuokkain? Muutoksesi menetetään eikä tätä voi peruuttaa.", "visualeditor-dialog-transclusion-collapse-options": "Piilota valinnat", "visualeditor-dialog-transclusion-confirmation-discard": "Hylkää muutokset", "visualeditor-dialog-transclusion-confirmation-reject": "Jatka muokkaamista", @@ -217,8 +217,8 @@ "visualeditor-dialog-transclusion-deprecated-parameter-description": "Kenttä on vanhentunut. $1", "visualeditor-dialog-transclusion-loading": "Ladataan...", "visualeditor-dialog-transclusion-multipart-message": "Muokkaat nyt mallinetta ja yhtä tai useampaa siihen [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content yhdistettyä sisältöä] (wikitekstiä ja/tai muita mallineita).", - "visualeditor-dialog-transclusion-no-template-data-description": "Tästä mallineesta puuttuu [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData], joten sen parametrit on [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters automaattisesti generoitu]. Tämän vuoksi mallineelta ja sen parametreilta puuttuu kuvaukset. Lisätietoa saattaa olla [[$1|mallinesivulla]].", - "visualeditor-dialog-transclusion-no-template-description": "Mallineella ”$1” ei ole vielä kuvausta, mutta jotain tietoa saattaa olla [[$2|mallineen sivulla]].", + "visualeditor-dialog-transclusion-no-template-data-description": "Tästä mallineesta puuttuu [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData], joten sen parametrit on [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters luotu automaattisesti]. Tämän vuoksi mallineelta ja sen parametreilta puuttuu kuvaukset. Lisätietoa saattaa löytyä [[$1|mallineen sivulta]].", + "visualeditor-dialog-transclusion-no-template-description": "Mallineella ”$1” ei ole vielä kuvausta, mutta jotain tietoa saattaa löytyä [[$2|mallineen sivulta]].", "visualeditor-dialog-transclusion-no-template-parameters": "Tällä mallineella ei ole dokumentoituja parametreja, ja se voi olla tarkoitettu käytettäväksi ilman niitä.", "visualeditor-dialog-transclusion-param-default": "Oletusarvo: $1", "visualeditor-dialog-transclusion-param-example-long": "Esimerkki: $1", From dc9cf6624ab6485c8b2f8e6bcc56b025b603509b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Wed, 11 Dec 2024 11:12:48 +0000 Subject: [PATCH 081/730] Update VE core submodule to master (5c98d9b41) New changes: 5c98d9b41 Keep track of recently used symbols Added i18n keys: - visualeditor-specialcharacter-recentlyused Local changes: Register preference for SpecialCharacterDialog recently-used list Implement `canUseUserConfig` platform method Bug: T110722 Change-Id: Ie869ccd4292f87354222af6648d7ea0e5ae50387 --- extension.json | 1 + includes/Hooks.php | 1 + lib/ve | 2 +- modules/ve-mw/init/ve.init.mw.Platform.js | 5 +++++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/extension.json b/extension.json index 7a2e5db03e..83c1dc617b 100644 --- a/extension.json +++ b/extension.json @@ -1382,6 +1382,7 @@ "visualeditor-shortcuts-text-style", "visualeditor-slug-insert", "visualeditor-specialcharacter-button-tooltip", + "visualeditor-specialcharacter-recentlyused", "visualeditor-table-context-col", "visualeditor-table-context-row", "visualeditor-table-contextitem-properties", diff --git a/includes/Hooks.php b/includes/Hooks.php index c8561c24a1..f592a0dff5 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -1021,6 +1021,7 @@ public function onGetPreferences( $user, &$preferences ) { $preferences['visualeditor-findAndReplace-regex'] = $api; $preferences['visualeditor-findAndReplace-matchCase'] = $api; $preferences['visualeditor-findAndReplace-word'] = $api; + $preferences['visualeditor-symbolList-recentlyUsed-specialCharacters'] = $api; } /** diff --git a/lib/ve b/lib/ve index d210240a07..5c98d9b418 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit d210240a0761fe0c4fb4f4bb819564b3364503f8 +Subproject commit 5c98d9b418bb40352e40daae108424bb591f9f01 diff --git a/modules/ve-mw/init/ve.init.mw.Platform.js b/modules/ve-mw/init/ve.init.mw.Platform.js index 70ab00a23f..56b88fb5c9 100644 --- a/modules/ve-mw/init/ve.init.mw.Platform.js +++ b/modules/ve-mw/init/ve.init.mw.Platform.js @@ -177,6 +177,11 @@ ve.init.mw.Platform.prototype.setUserConfig = function ( keyOrValueMap, value ) } }; +/** + * @inheritdoc + */ +ve.init.mw.Platform.prototype.canUseUserConfig = mw.user.isNamed; + ve.init.mw.Platform.prototype.createLocalStorage = function () { return this.createConflictableStorage( mw.storage ); }; From 8fd07b527133bc59f517da0257cc69537a5323b4 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 11 Dec 2024 13:26:48 +0000 Subject: [PATCH 082/730] updateSubmodule.sh: Fix double hyphens in i18n lists Change-Id: I93275d8a39d614078c73b1b91001fb57e9f5b4f3 --- bin/updateSubmodule.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/updateSubmodule.sh b/bin/updateSubmodule.sh index 399864e9f7..2319922f00 100755 --- a/bin/updateSubmodule.sh +++ b/bin/updateSubmodule.sh @@ -56,8 +56,8 @@ DELETED_I18N_KEYS=$(git diff HEAD..$TARGET -- i18n/en.json | grep -E '^\-' | gre # Find common keys (modified keys) MODIFIED_KEYS=$(echo -e "$ADDED_I18N_KEYS\n$DELETED_I18N_KEYS" | sort | uniq -d) # Remove modified keys from the added and removed lists - ADDED_I18N_KEYS=$(echo "$ADDED_I18N_KEYS" | grep -vxF -f <(echo "$MODIFIED_KEYS") | sed 's/^/- /') -DELETED_I18N_KEYS=$(echo "$DELETED_I18N_KEYS" | grep -vxF -f <(echo "$MODIFIED_KEYS") | sed 's/^/- /') + ADDED_I18N_KEYS=$(echo "$ADDED_I18N_KEYS" | grep -vxF -f <(echo "$MODIFIED_KEYS")) +DELETED_I18N_KEYS=$(echo "$DELETED_I18N_KEYS" | grep -vxF -f <(echo "$MODIFIED_KEYS")) # Added/removed files ADDED_FILES=$(git diff HEAD..$TARGET --name-only --diff-filter=A | grep --color=never -E "\.(js|css|less)$" | sed 's/^/- /' || :) From 37627ad9ae4b9d4590abe6ffdcd5301e66e7b602 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 22 Jul 2024 09:55:55 -0500 Subject: [PATCH 083/730] EditCheck: move checks to a sidebar Bug: T341308 Bug: T379443 Change-Id: I66147d95fc23d0f72960ff93a76b3e5ba65ce44e --- editcheck/i18n/en.json | 1 + editcheck/i18n/qqq.json | 1 + editcheck/modules/BaseEditCheck.js | 24 +- editcheck/modules/EditCheck.less | 217 +++++++++++- editcheck/modules/EditCheckAction.js | 147 ++++++++- editcheck/modules/EditCheckDialog.js | 312 ++++++++++++++++-- editcheck/modules/EditCheckFactory.js | 6 +- editcheck/modules/EditCheckInspector.js | 1 - .../editchecks/AddReferenceEditCheck.js | 37 +-- .../modules/editchecks/TextMatchEditCheck.js | 6 + editcheck/modules/init.js | 180 +++------- extension.json | 9 +- includes/Hooks.php | 1 + 13 files changed, 766 insertions(+), 176 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index d45ae646c4..062b1d10ae 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -18,6 +18,7 @@ "editcheck-dialog-addref-success-notify": "Thank you for adding a citation!", "editcheck-dialog-addref-title": "Add a citation", "editcheck-dialog-title": "Before publishing", + "editcheck-review-title": "Review changes", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (references) declined (common knowledge)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck reference was declined as common knowledge", "tag-editcheck-reference-decline-irrelevant": "Edit Check (references) declined (irrelevant)", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index 036425a2a1..cd28cdbb1f 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -19,6 +19,7 @@ "editcheck-dialog-addref-success-notify": "Notification messages shown after a citation is added successfully.", "editcheck-dialog-addref-title": "Title for the edit check context asking user to add a citation.", "editcheck-dialog-title": "Title shown in the toolbar while the user is in the add a citation workflow.", + "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", "tag-editcheck-reference-decline-common-knowledge": "Short description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", "tag-editcheck-reference-decline-common-knowledge-description": "Long description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", "tag-editcheck-reference-decline-irrelevant": "Short description of the editcheck-reference-decline-irrelevant tag.\n\nTag added when a user declines to add a suggested reference and selects the \"irrelevant\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-irrelevant}}", diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index 6e130e02dd..0eb3246c34 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -26,8 +26,19 @@ mw.editcheck.BaseEditCheck.static.defaultConfig = { ignoreLeadSection: false }; +mw.editcheck.BaseEditCheck.static.title = ve.msg( 'editcheck-review-title' ); + mw.editcheck.BaseEditCheck.static.description = ve.msg( 'editcheck-dialog-addref-description' ); +/** + * Get the name of the check type + * + * @return {string} Check type name + */ +mw.editcheck.BaseEditCheck.prototype.getName = function () { + return this.constructor.static.name; +}; + /** * @param {ve.dm.Surface} surfaceModel * @return {mw.editcheck.EditCheckAction[]} @@ -43,7 +54,8 @@ mw.editcheck.BaseEditCheck.prototype.onDocumentChange = null; /** * @param {string} choice `action` key from static.choices * @param {mw.editcheck.EditCheckAction} action - * @param {ve.ui.EditCheckContextItem} contextItem + * @param {ve.ui.Surface} surface + * @return {jQuery.Promise} Promise which resolves when action is complete */ mw.editcheck.BaseEditCheck.prototype.act = null; @@ -55,6 +67,16 @@ mw.editcheck.BaseEditCheck.prototype.getChoices = function () { return this.constructor.static.choices; }; +/** + * Get the title of the check + * + * @param {mw.editcheck.EditCheckAction} action + * @return {jQuery|string|Function|OO.ui.HtmlSnippet} + */ +mw.editcheck.BaseEditCheck.prototype.getTitle = function () { + return this.constructor.static.title; +}; + /** * @param {mw.editcheck.EditCheckAction} action * @return {string} diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index ad1b7538b0..4d062af284 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -1,8 +1,29 @@ +@import '../../lib/codex-design-tokens/theme-wikimedia-ui.less'; + +@media ( max-width: 1492px ) { + /* Hides the Vector sidebar while an editcheck-enabled editing session is occurring. See T379443. */ + /* stylelint-disable selector-class-pattern */ + .ve-editcheck-available { + .mw-body .vector-column-end, + .vector-pinnable-header-pin-button { + display: none !important; /* stylelint-disable-line declaration-no-important */ + } + } + /* stylelint-enable selector-class-pattern */ +} + /* Toolbar */ .ve-ui-editCheck-toolbar { + font-size: 0.875rem; // ignore content scaling + + .mw-mf & { + font-size: inherit; + } + .oo-ui-toolbar-bar { display: flex; + flex-wrap: wrap; } .oo-ui-toolbar-tools { @@ -14,6 +35,12 @@ flex: 0; } + .oo-ui-toolbar-actions + div { + // There's a clear div that we need to enhance slightly + flex-basis: 100%; + height: 0; + } + &.ve-init-mw-mobileArticleTarget-toolbar .oo-ui-toolbar-tools.oo-ui-toolbar-after { display: none; } @@ -44,6 +71,162 @@ border-bottom-color: #fce7fe; } +/* Actions */ + +.ve-ui-editCheckDialog { + font-size: 0.875rem; // ignore content scaling + + .oo-ui-window-body { + padding-left: 12px; + } + + &-title { + display: block; + font-weight: bold; + padding: @spacing-50 0; + margin-bottom: @spacing-50; + border-bottom: 1px solid @border-color-base; + } + + &-footer { + display: flex; + justify-content: flex-end; + + > .oo-ui-labelWidget { + align-content: center; + } + } + + .ve-ui-editCheckActionWidget { + box-sizing: border-box; + border: @border-base; + margin: @spacing-100 0; + white-space: normal; // Minerva needs this + + &-head { + position: relative; + padding: @spacing-50 @spacing-75; + + > .oo-ui-labelElement-label { + display: block; + margin-left: 2em; + font-weight: @font-weight-semi-bold; + } + } + + &-body { + margin: @spacing-50 @spacing-75 @spacing-100; + } + + &-actions { + margin-top: @spacing-100; + } + + &.ve-ui-editCheckActionWidget-collapsed { + filter: grayscale( 1 ); + + > .ve-ui-editCheckActionWidget-body { + display: none; + } + } + + &.oo-ui-flaggedElement-warning { + border-color: @border-color-warning; + + > .ve-ui-editCheckActionWidget-head { + background-color: @background-color-warning-subtle; + } + } + + &.oo-ui-flaggedElement-error { + border-color: @border-color-error; + + > .ve-ui-editCheckActionWidget-head { + background-color: @background-color-error-subtle; + } + } + + &.oo-ui-flaggedElement-success { + border-color: @border-color-success; + + > .ve-ui-editCheckActionWidget-head { + background-color: @background-color-success-subtle; + } + } + + &.oo-ui-flaggedElement-notice { + border-color: @border-color-notice; + + > .ve-ui-editCheckActionWidget-head { + background-color: @background-color-notice-subtle; + } + } + } + + &.ve-ui-editCheckDialog-singleAction .ve-ui-editCheckActionWidget-collapsed { + display: none; + } + + .mw-mf & { + top: auto; + // See: .ve-ui-mobileContext, which this is closely mimicking + background-color: @background-color-interactive-subtle; + /* Match toolbar border & shadow */ + border-top: @border-subtle; + box-shadow: 0 -1px 1px 0 rgba( 0, 0, 0, 0.1 ); + /* Transition out faster, as keyboard may be coming up */ + transition: transform 100ms; + transform: translateY( 0% ); + max-width: 995px; + margin: 0 auto; + + &-title { + padding: @spacing-75 @spacing-100; + margin-bottom: 0; + } + + &-close { + position: absolute; + right: 0; + top: 2px; + } + + &-footer { + margin: 0 @spacing-100 @spacing-50; + } + + &.ve-ui-editCheckDialog-collapsed { + display: block; + transition: transform 250ms; + transform: translateY( calc( 100% - 2.5em ) ); + } + + .oo-ui-window-body { + padding: 0; + } + + .ve-ui-editCheckActionWidget { + margin: 0; + border-width: 0; + + &-head { + background-color: transparent !important; /* stylelint-disable-line declaration-no-important */ + } + + &-body { + padding-left: 2em; + margin-bottom: @spacing-75; + } + } + } +} + +.mw-mf .ve-ce-surface-reviewMode.ve-ce-surface-deactivated { + // Otherwise the content will be covered by the mobile context at the end + // of the document. (Upstream this?) + margin-bottom: 100%; +} + /* Selections */ .ve-ce-surface-reviewMode + .ve-ui-overlay .ve-ce-surface-selections-editCheck .ve-ce-surface-selection { @@ -68,9 +251,41 @@ mix-blend-mode: darken; // Adjust target colours to account for 50% opacity background: ( #fef6e7 - 0.8 * ( #fff ) ) / 0.2; - border: 1px solid ( ( #a66200 - 0.8 * ( #fff ) ) / 0.2 ); + // border: 1px solid ( ( #a66200 - 0.8 * ( #fff ) ) / 0.2 ); border-radius: 2px; padding: 2px; margin: -2px 0 0 -2px; } } + +.ve-ui-editCheck-gutter-highlight { + position: absolute; + left: 0; + width: 2px; + overflow: hidden; + background-color: @color-base; + + &-error { + background-color: @color-error; + } + + &-warning { + background-color: @color-warning; + } + + &-notice { + background-color: @color-notice; + } + + &-success { + background-color: @color-success; + } + + &-inactive { + background-color: @border-color-base; + } + + .mw-mf & { + left: -10px; + } +} diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 5cfd6aaa12..7cf980f97e 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -5,15 +5,28 @@ * @param {mw.editcheck.BaseEditCheck} check * @param {ve.dm.SurfaceFragment[]} fragments Affected fragments * @param {jQuery|string|Function|OO.ui.HtmlSnippet} message Check message body + * @param {jQuery|string|Function|OO.ui.HtmlSnippet} title Check title */ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.check = config.check; this.fragments = config.fragments; this.message = config.message; + this.title = config.title; + this.icon = config.icon; + this.type = config.type || 'warning'; }; OO.initClass( mw.editcheck.EditCheckAction ); +/** + * Get the action's title + * + * @return {jQuery|string|Function|OO.ui.HtmlSnippet} + */ +mw.editcheck.EditCheckAction.prototype.getTitle = function () { + return this.title || this.check.getTitle( this ); +}; + /** * Get the available choices * @@ -38,5 +51,137 @@ mw.editcheck.EditCheckAction.prototype.getHighlightSelections = function () { * @return {string} */ mw.editcheck.EditCheckAction.prototype.getDescription = function () { - return this.check.getDescription( this ); + return this.message || this.check.getDescription( this ); +}; + +mw.editcheck.EditCheckAction.prototype.getType = function () { + return this.type; +}; + +/** + * Get the name of the check type + * + * @return {string} Check type name + */ +mw.editcheck.EditCheckAction.prototype.getName = function () { + return this.check.getName(); +}; + +mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleAction, surface ) { + const widget = new mw.editcheck.EditCheckActionWidget( { + type: this.type, + icon: this.icon, + label: this.getTitle(), + message: this.getDescription(), + classes: collapsed ? [ 've-ui-editCheckActionWidget-collapsed' ] : '', + singleAction: singleAction + } ); + this.getChoices().forEach( ( choice ) => { + const button = new OO.ui.ButtonWidget( choice ); + button.connect( this, { + click: () => { + const promise = this.check.act( choice.action, this, surface ) || ve.createDeferred().resolve().promise(); + widget.emit( 'act', choice, choice.action, promise ); + } + } ); + widget.addAction( button ); + } ); + + return widget; +}; + +mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) { + // Configuration initialization + config = config || {}; + + this.singleAction = config.singleAction; + + this.actions = []; + + // Parent constructor + mw.editcheck.EditCheckActionWidget.super.call( this, config ); + + // Mixin constructors + OO.ui.mixin.IconElement.call( this, config ); + OO.ui.mixin.LabelElement.call( this, config ); + OO.ui.mixin.TitledElement.call( this, config ); + OO.ui.mixin.FlaggedElement.call( this, config ); + + this.setType( config.type ); + + if ( config.icon ) { + this.setIcon( config.icon ); + } + + this.message = new OO.ui.LabelWidget( { label: config.message } ); + this.$actions = $( '
' ).addClass( 've-ui-editCheckActionWidget-actions oo-ui-element-hidden' ); + + this.$head = $( '
' ) + .append( this.$icon, this.$label ) + .addClass( 've-ui-editCheckActionWidget-head' ) + .on( 'click', this.onHeadClick.bind( this ) ); + this.$body = $( '
' ) + .append( this.message.$element, this.$actions ) + .addClass( 've-ui-editCheckActionWidget-body' ); + + this.$element + .append( this.$head, this.$body ) + // .append( this.$icon, this.$label, this.closeButton && this.closeButton.$element ) + .addClass( 've-ui-editCheckActionWidget' ); +}; + +OO.inheritClass( mw.editcheck.EditCheckActionWidget, OO.ui.Widget ); +OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.IconElement ); +OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.LabelElement ); +OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.TitledElement ); +OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.FlaggedElement ); + +/** + * @inheritdoc + */ +mw.editcheck.EditCheckActionWidget.prototype.setDisabled = function ( disabled ) { + OO.ui.Widget.prototype.setDisabled.call( this, disabled ); + this.actions.forEach( ( action ) => { + action.setDisabled( disabled ); + } ); +}; + +mw.editcheck.EditCheckActionWidget.static.iconMap = { + notice: 'infoFilled', + error: 'error', + warning: 'alert' +}; + +mw.editcheck.EditCheckActionWidget.prototype.setType = function ( type ) { + if ( !this.constructor.static.iconMap[ type ] ) { + type = 'notice'; + } + if ( type !== this.type ) { + this.clearFlags(); + this.setFlags( type ); + + this.setIcon( this.constructor.static.iconMap[ type ] ); + } + this.type = type; +}; + +mw.editcheck.EditCheckActionWidget.prototype.getType = function () { + return this.type; +}; + +mw.editcheck.EditCheckActionWidget.prototype.addAction = function ( action ) { + this.actions.push( action ); + this.$actions.append( action.$element ).removeClass( 'oo-ui-element-hidden' ); +}; + +mw.editcheck.EditCheckActionWidget.prototype.onHeadClick = function ( e ) { + if ( this.singleAction ) { + return; + } + + e.preventDefault(); + // eslint-disable-next-line no-jquery/no-class-state + this.$element.toggleClass( 've-ui-editCheckActionWidget-collapsed' ); + // eslint-disable-next-line no-jquery/no-class-state + this.emit( 'togglecollapse', this.$element.hasClass( 've-ui-editCheckActionWidget-collapsed' ) ); }; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 8af0141e63..f3c5f0ac95 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -27,15 +27,14 @@ OO.inheritClass( ve.ui.EditCheckDialog, ve.ui.ToolbarDialog ); ve.ui.EditCheckDialog.static.name = 'editCheckDialog'; -ve.ui.EditCheckDialog.static.position = 'side'; +ve.ui.EditCheckDialog.static.position = OO.ui.isMobile() ? 'below' : 'side'; -ve.ui.EditCheckDialog.static.size = 'medium'; +ve.ui.EditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; ve.ui.EditCheckDialog.static.framed = false; -// // Invisible title for accessibility -// ve.ui.EditCheckDialog.static.title = -// OO.ui.deferMsg( 'visualeditor-find-and-replace-title' ); +// Invisible title for accessibility +ve.ui.EditCheckDialog.static.title = OO.ui.deferMsg( 'editcheck-review-title' ); /* Methods */ @@ -46,26 +45,190 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { // Parent method ve.ui.EditCheckDialog.super.prototype.initialize.call( this ); + this.title = new OO.ui.LabelWidget( { + label: this.constructor.static.title, + classes: [ 've-ui-editCheckDialog-title' ] + } ); + + // FIXME: click handlers are getting unbound when the window is closed + + this.closeButton = new OO.ui.ButtonWidget( { + classes: [ 've-ui-editCheckDialog-close' ], + framed: false, + label: ve.msg( 'visualeditor-contextitemwidget-label-close' ), + invisibleLabel: true, + icon: 'expand' + } ).connect( this, { + click: 'onCloseButtonClick' + } ); + + this.currentOffset = 0; + + this.footerLabel = new OO.ui.LabelWidget(); + this.previousButton = new OO.ui.ButtonWidget( { + icon: 'previous', + title: ve.msg( 'last' ), + invisibleLabel: true, + framed: false + } ).connect( this, { + click: 'onPreviousButtonClick' + } ); + this.nextButton = new OO.ui.ButtonWidget( { + icon: 'next', + title: ve.msg( 'next' ), + invisibleLabel: true, + framed: false + } ).connect( this, { + click: 'onNextButtonClick' + } ); + this.footer = new OO.ui.HorizontalLayout( { + classes: [ 've-ui-editCheckDialog-footer' ], + items: [ + this.footerLabel, + this.previousButton, + this.nextButton + ] + } ); + + this.$checks = $( '
' ); + this.$body.append( this.title.$element, this.closeButton.$element, this.$checks, this.footer.$element ); + + this.$highlights = $( '
' ); + this.updateDebounced = ve.debounce( this.update.bind( this ), 100 ); + this.positionDebounced = ve.debounce( this.position.bind( this ), 100 ); }; ve.ui.EditCheckDialog.prototype.update = function () { const surfaceView = this.surface.getView(); - const checks = mw.editcheck.editCheckFactory.createAllByListener( 'onDocumentChange', this.surface.getModel() ); - const $checks = $( '
' ); - const selections = []; - checks.forEach( ( check ) => { - $checks.append( new OO.ui.MessageWidget( { - type: 'warning', - label: check.message, - framed: false - } ).$element ); + // We only regenerate the checks on-change during the edit. If we're in + // the proofreading step, no new checks should appear based on changes: + if ( this.listener === 'onDocumentChange' || !this.currentChecks ) { + this.currentChecks = mw.editcheck.editCheckFactory.createAllByListener( this.listener, this.surface.getModel() ); + } + if ( this.listener === 'onBeforeSave' && this.currentChecks.length === 0 ) { + return this.close( 'complete' ); + } + const checks = this.currentChecks; + const newOffset = Math.min( this.currentOffset, checks.length - 1 ); + this.$checks.empty(); + this.$highlights.empty(); + + checks.forEach( ( check, index ) => { + const widget = check.render( index !== newOffset, this.listener === 'onBeforeSave', this.surface ); + widget.on( 'togglecollapse', this.onToggleCollapse, [ check, index ], this ); + widget.on( 'act', this.onAct, [ widget ], this ); + this.$checks.append( widget.$element ); + check.widget = widget; + } ); + + if ( this.reviewMode ) { + // Review mode grays out everything that's not highlighted: + const highlightNodes = []; + checks.forEach( ( check ) => { + check.getHighlightSelections().forEach( ( selection ) => { + highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( selection.getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); + } ); + } ); + surfaceView.setReviewMode( true, highlightNodes ); + } + + this.setCurrentOffset( newOffset ); +}; + +ve.ui.EditCheckDialog.prototype.position = function () { + this.drawHighlights(); + this.scrollCurrentCheckIntoView(); +}; + +ve.ui.EditCheckDialog.prototype.drawHighlights = function () { + const surfaceView = this.surface.getView(); + this.$highlights.empty(); + + this.currentChecks.forEach( ( check, index ) => { check.getHighlightSelections().forEach( ( selection ) => { - selections.push( ve.ce.Selection.static.newFromModel( selection, surfaceView ) ); + const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); + const rect = selectionView.getSelectionBoundingRect(); + // The following classes are used here: + // * ve-ui-editCheck-gutter-highlight-error + // * ve-ui-editCheck-gutter-highlight-warning + // * ve-ui-editCheck-gutter-highlight-notice + // * ve-ui-editCheck-gutter-highlight-success + // * ve-ui-editCheck-gutter-highlight-active + // * ve-ui-editCheck-gutter-highlight-inactive + this.$highlights.append( $( '
' ) + .addClass( 've-ui-editCheck-gutter-highlight' ) + .addClass( 've-ui-editCheck-gutter-highlight-' + check.getType() ) + .addClass( 've-ui-editCheck-gutter-highlight-' + ( index === this.currentOffset ? 'active' : 'inactive' ) ) + .css( { + top: rect.top - 2, + height: rect.height + 4 + } ) + ); } ); } ); - surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', selections ); - this.$body.empty().append( $checks ); + + surfaceView.appendHighlights( this.$highlights, false ); +}; + +/** + * Set the offset of the current check, within the list of all checks + * + * @param {number} offset + */ +ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset ) { + // TODO: work out how to tell the window to recalculate height here + this.currentOffset = Math.max( 0, offset ); + + this.$body.find( '.ve-ui-editCheckActionWidget' ).each( ( i, el ) => { + $( el ).toggleClass( 've-ui-editCheckActionWidget-collapsed', i !== this.currentOffset ); + } ); + + this.footerLabel.setLabel( + ve.msg( 'visualeditor-find-and-replace-results', + ve.init.platform.formatNumber( this.currentOffset + 1 ), + ve.init.platform.formatNumber( this.currentChecks.length ) + ) + ); + this.nextButton.setDisabled( this.currentOffset >= this.currentChecks.length - 1 ); + this.previousButton.setDisabled( this.currentOffset <= 0 ); + + this.updateSize(); + + const surfaceView = this.surface.getView(); + if ( this.currentChecks.length > 0 ) { + // The currently-focused check gets a selection: + // TODO: clicking the selection should activate the sidebar-action + surfaceView.getSelectionManager().drawSelections( + 'editCheckWarning', + this.currentChecks[ this.currentOffset ].getHighlightSelections().map( + ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) + ) + ); + + this.scrollCurrentCheckIntoView(); + } else { + surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); + } + + this.drawHighlights(); +}; + +ve.ui.EditCheckDialog.prototype.scrollCurrentCheckIntoView = function () { + const currentCheck = this.currentChecks[ this.currentOffset ]; + if ( currentCheck ) { + // scrollSelectionIntoView scrolls to the focus of a selection, but we + // want the very beginning to be in view, so collapse it: + const selection = currentCheck.getHighlightSelections()[ 0 ].collapseToStart(); + this.surface.scrollSelectionIntoView( selection, { + animate: true, + padding: { + top: ( OO.ui.isMobile() ? 80 : currentCheck.widget.$element[ 0 ].getBoundingClientRect().top ), + bottom: ( OO.ui.isMobile() ? this.getContentHeight() : 0 ) + 20 + }, + alignToTop: true + } ); + } }; /** @@ -74,8 +237,24 @@ ve.ui.EditCheckDialog.prototype.update = function () { ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getSetupProcess.call( this, data ) .first( () => { + this.currentOffset = 0; + this.listener = data.listener || 'onDocumentChange'; + this.reviewMode = data.reviewMode; this.surface = data.surface; + this.surface.getModel().on( 'undoStackChange', this.updateDebounced ); + this.surface.getView().on( 'position', this.positionDebounced ); + + this.closeButton.toggle( OO.ui.isMobile() ); + this.footer.toggle( + this.listener === 'onBeforeSave' && + !mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle + ); + + this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', this.listener === 'onBeforeSave' ); + + this.surface.context.hide(); + this.update(); }, this ); }; @@ -86,6 +265,12 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { ve.ui.EditCheckDialog.prototype.getReadyProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getReadyProcess.call( this, data ) .next( () => { + // The end of the ready process triggers a reflow after an + // animation, so we need to get past that to avoid the content + // being immediately scrolled away + setTimeout( () => { + this.scrollCurrentCheckIntoView(); + }, 500 ); }, this ); }; @@ -95,17 +280,105 @@ ve.ui.EditCheckDialog.prototype.getReadyProcess = function ( data ) { ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getTeardownProcess.call( this, data ) .next( () => { + this.surface.getView().setReviewMode( false ); + this.surface.getView().getSelectionManager().drawSelections( 'editCheckWarning', [] ); + this.surface.getView().off( 'position', this.positionDebounced ); this.surface.getModel().off( 'undoStackChange', this.updateDebounced ); + this.$highlights.remove().empty(); + this.$checks.empty(); }, this ); }; +/** + * Handle 'act' events from the mw.widget.EditCheckActionWidget + * + * @param {mw.editcheck.EditCheckActionWidget} widget + * @param {Object} choice Choice object (with 'reason', 'object', 'label') + * @param {string} actionChosen Choice action + * @param {jQuery.Promise} promise Promise which resolves when the action is complete + */ +ve.ui.EditCheckDialog.prototype.onAct = function ( widget, choice, actionChosen, promise ) { + widget.setDisabled( true ); + this.nextButton.setDisabled( true ); + this.previousButton.setDisabled( true ); + promise.then( ( data ) => { + widget.setDisabled( false ); + this.nextButton.setDisabled( false ); + this.previousButton.setDisabled( false ); + this.surface.getModel().setNullSelection(); + if ( OO.ui.isMobile() ) { + // Delay on mobile means we need to rehide this + setTimeout( () => this.surface.getModel().setNullSelection(), 300 ); + } + + if ( !data ) { + // Nothing happened, just fall back and leave the check + return; + } + + if ( this.listener === 'onBeforeSave' ) { + // We must have been acting on the currentOffset + setTimeout( () => { + // We want to linger for a brief moment before moving away + this.currentChecks.splice( this.currentOffset, 1 ); + this.currentOffset = Math.max( 0, this.currentOffset - 1 ); + this.update(); + }, 500 ); + } + } ); +}; + +/** + * Handle 'togglecollapse' events from the mw.widget.EditCheckActionWidget + * + * @param {mw.editcheck.EditCheckAction} check + * @param {number} index + * @param {boolean} collapsed + */ +ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( check, index, collapsed ) { + if ( !collapsed ) { + // expanded one + this.setCurrentOffset( this.currentChecks.indexOf( check ) ); + } +}; + +/** + * Handle click events from the close button + */ +ve.ui.EditCheckDialog.prototype.onCloseButtonClick = function () { + // eslint-disable-next-line no-jquery/no-class-state + const collapse = !this.$element.hasClass( 've-ui-editCheckDialog-collapsed' ); + this.$element.toggleClass( 've-ui-editCheckDialog-collapsed', collapse ); + this.closeButton.setIcon( collapse ? 'collapse' : 'expand' ); +}; + +/** + * Handle click events from the next button + */ +ve.ui.EditCheckDialog.prototype.onNextButtonClick = function () { + this.setCurrentOffset( this.currentOffset + 1 ); +}; + +/** + * Handle click events from the previous button + */ +ve.ui.EditCheckDialog.prototype.onPreviousButtonClick = function () { + this.setCurrentOffset( this.currentOffset - 1 ); +}; + /* Registration */ ve.ui.windowFactory.register( ve.ui.EditCheckDialog ); ve.ui.commandRegistry.register( new ve.ui.Command( - 'editCheckDialog', 'window', 'toggle', { args: [ 'editCheckDialog' ] } + 'editCheckDialogInProcess', 'window', 'toggle', { args: [ 'editCheckDialog', { listener: 'onDocumentChange' } ] } + ) +); + +ve.ui.commandRegistry.register( + new ve.ui.Command( + 'editCheckDialogBeforeSave', 'window', 'toggle', { args: [ 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true } ] } ) ); @@ -125,7 +398,8 @@ ve.ui.EditCheckDialogTool.static.group = 'notices'; ve.ui.EditCheckDialogTool.static.icon = 'robot'; ve.ui.EditCheckDialogTool.static.title = 'Edit check'; // OO.ui.deferMsg( 'visualeditor-dialog-command-help-title' ); ve.ui.EditCheckDialogTool.static.autoAddToCatchall = false; -ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialog'; +ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialogInProcess'; +// ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialogBeforeSave'; // Demo button for opening edit check sidebar // ve.ui.toolFactory.register( ve.ui.EditCheckDialogTool ); diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index 0487515075..b514d937a6 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -66,7 +66,7 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener * @return {mw.editcheck.EditCheckActions[]} Actions, sorted by range */ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( listener, surfaceModel ) { - const newChecks = []; + let newChecks = []; this.getNamesByListener( listener ).forEach( ( checkName ) => { const check = this.create( checkName, mw.editcheck.config[ checkName ] ); if ( !check.canBeShown() ) { @@ -80,6 +80,10 @@ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( listene newChecks.sort( ( a, b ) => a.getHighlightSelections()[ 0 ].getCoveringRange().start - b.getHighlightSelections()[ 0 ].getCoveringRange().start ); + if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle && listener === 'onBeforeSave' ) { + newChecks = newChecks.filter( ( action ) => action.getName() === 'addReference' ); + newChecks.splice( 1 ); + } return newChecks; }; diff --git a/editcheck/modules/EditCheckInspector.js b/editcheck/modules/EditCheckInspector.js index 8cb23dc3d7..0021dc1fd6 100644 --- a/editcheck/modules/EditCheckInspector.js +++ b/editcheck/modules/EditCheckInspector.js @@ -119,7 +119,6 @@ ve.ui.EditCheckInspector.prototype.getSetupProcess = function ( data ) { return ve.ui.EditCheckInspector.super.prototype.getSetupProcess.call( this, data ) .first( function () { this.surface = data.surface; - this.saveProcessDeferred = data.saveProcessDeferred; this.answerRadioSelect.selectItem( null ); }, this ); }; diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index 4f2d40470a..c66f7da5e2 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -7,6 +7,8 @@ OO.inheritClass( mw.editcheck.AddReferenceEditCheck, mw.editcheck.BaseEditCheck mw.editcheck.AddReferenceEditCheck.static.name = 'addReference'; +mw.editcheck.AddReferenceEditCheck.static.title = ve.msg( 'editcheck-dialog-addref-title' ); + mw.editcheck.AddReferenceEditCheck.static.description = ve.msg( 'editcheck-dialog-addref-description' ); mw.editcheck.AddReferenceEditCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.BaseEditCheck.static.defaultConfig, { @@ -20,9 +22,11 @@ mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceMo return new mw.editcheck.EditCheckAction( { fragments: [ fragment ], check: this + // icon: 'quotes', } ); } ); }; +mw.editcheck.AddReferenceEditCheck.prototype.onDocumentChange = mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave; /** * Find content ranges which have been inserted @@ -53,9 +57,9 @@ mw.editcheck.AddReferenceEditCheck.prototype.findAddedContent = function ( docum return ranges; }; -mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, contextItem ) { +mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, surface ) { // The complex citoid workflow means that we can't just count on a single "windowAction" here... - const windowAction = ve.ui.actionFactory.create( 'window', contextItem.context.getSurface(), 'check' ); + const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); switch ( choice ) { case 'accept': ve.track( 'activity.editCheckReferences', { action: 'edit-check-confirm' } ); @@ -67,7 +71,7 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, co if ( citoidData && citoidData.action === 'manual-choose' ) { // The plain reference dialog has been launched. Wait for the data from // the basic Cite closing promise instead. - contextItem.context.getSurface().getDialogs().once( 'closing', ( win, closed, citeData ) => { + surface.getDialogs().once( 'closing', ( win, closed, citeData ) => { citoidOrCiteDataDeferred.resolve( citeData ); } ); } else { @@ -75,18 +79,11 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, co // use the data form the Citoid closing promise. citoidOrCiteDataDeferred.resolve( citoidData ); } - citoidOrCiteDataDeferred.promise().then( ( data ) => { - if ( !data ) { - // Reference was not inserted - re-open this context - setTimeout( () => { - // Deactivate again for mobile after teardown has modified selections - contextItem.context.getSurface().getView().deactivate(); - contextItem.context.afterContextChange(); - }, 500 ); - } else { + return citoidOrCiteDataDeferred.promise().done( ( data ) => { + if ( data ) { // Edit check inspector is already closed by this point, but // we need to end the workflow. - contextItem.close( citoidData ); + mw.notify( ve.msg( 'editcheck-dialog-addref-success-notify' ), { type: 'success' } ); } } ); } ); @@ -95,20 +92,14 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, co return windowAction.open( 'editCheckReferencesInspector', { - fragment: action.fragments[ 0 ], - callback: contextItem.data.callback, - saveProcessDeferred: contextItem.data.saveProcessDeferred + fragment: action.fragments[ 0 ] } // eslint-disable-next-line arrow-body-style ).then( ( instance ) => { - // contextItem.openingCitoid = false; return instance.closing; - } ).then( ( data ) => { - if ( !data ) { - // Form was closed, re-open this context - contextItem.context.afterContextChange(); - } else { - contextItem.close( data ); + } ).done( ( data ) => { + if ( data && data.action === 'reject' && data.reason ) { + mw.editcheck.rejections.push( data.reason ); } } ); } diff --git a/editcheck/modules/editchecks/TextMatchEditCheck.js b/editcheck/modules/editchecks/TextMatchEditCheck.js index 913eb34ba0..4da3fd3bae 100644 --- a/editcheck/modules/editchecks/TextMatchEditCheck.js +++ b/editcheck/modules/editchecks/TextMatchEditCheck.js @@ -7,10 +7,13 @@ OO.inheritClass( mw.editcheck.TextMatchEditCheck, mw.editcheck.BaseEditCheck ); mw.editcheck.TextMatchEditCheck.static.name = 'textMatch'; +mw.editcheck.TextMatchEditCheck.static.choices = []; + mw.editcheck.TextMatchEditCheck.static.replacers = [ // TODO: Load text replacement rules from community config { query: 'unfortunately', + title: 'Adverb usage', message: new OO.ui.HtmlSnippet( 'Use of adverbs such as "unfortunately" should usually be avoided so as to maintain an impartial tone. Read more.' ) } ]; @@ -23,6 +26,7 @@ mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange = function ( surfaceM actions.push( new mw.editcheck.EditCheckAction( { fragments: [ fragment ], + title: replacer.title, message: replacer.message, check: this } ) @@ -32,4 +36,6 @@ mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange = function ( surfaceM return actions; }; +// mw.editcheck.TextMatchEditCheck.prototype.onBeforeSave = mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange; + mw.editcheck.editCheckFactory.register( mw.editcheck.TextMatchEditCheck ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index df26a8847d..e21e7cc605 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -83,8 +83,12 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { } if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable ) { - let saveProcessDeferred; - + mw.hook( 've.activationStart' ).add( () => { + document.documentElement.classList.add( 've-editcheck-available' ); + } ); + mw.hook( 've.deactivationComplete' ).add( () => { + document.documentElement.classList.remove( 've-editcheck-available' ); + } ); mw.hook( 've.preSaveProcess' ).add( ( saveProcess, target ) => { const surface = target.getSurface(); @@ -101,12 +105,11 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable // clear rejection-reasons between runs of the save process, so only the last one counts mw.editcheck.rejections.length = 0; - let checks = mw.editcheck.editCheckFactory.createAllByListener( 'onBeforeSave', surface.getModel() ); + const checks = mw.editcheck.editCheckFactory.createAllByListener( 'onBeforeSave', surface.getModel() ); if ( checks.length ) { ve.track( 'counter.editcheck.preSaveChecksShown' ); mw.editcheck.refCheckShown = true; - const surfaceView = surface.getView(); const toolbar = target.getToolbar(); const reviewToolbar = new ve.ui.PositionedTargetToolbar( target, target.toolbarConfig ); reviewToolbar.setup( [ @@ -142,122 +145,51 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable target.toolbar.$element.before( reviewToolbar.$element ); target.toolbar = reviewToolbar; - saveProcessDeferred = ve.createDeferred(); - const context = surface.getContext(); - - // TODO: Allow multiple checks to be shown when multicheck is enabled - checks = checks.slice( 0, 1 ); - - // eslint-disable-next-line no-shadow - const drawSelections = ( checks ) => { - const highlightNodes = []; - const selections = []; - checks.forEach( ( check ) => { - check.getHighlightSelections().forEach( ( selection ) => { - highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( selection.getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); - const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); - selections.push( selectionView ); - } ); - } ); - // TODO: Make selections clickable when multicheck is enabled - surfaceView.getSelectionManager().drawSelections( - 'editCheck', - selections - ); - surfaceView.setReviewMode( true, highlightNodes ); - }; - - const contextDone = ( responseData, contextData ) => { - if ( !responseData ) { - // this is the back button - return saveProcessDeferred.resolve(); - } - const selectionIndex = checks.indexOf( contextData.action ); - - if ( responseData.action !== 'reject' ) { - mw.notify( ve.msg( 'editcheck-dialog-addref-success-notify' ), { type: 'success' } ); - } else if ( responseData.reason ) { - mw.editcheck.rejections.push( responseData.reason ); - } - // TODO: Move on to the next issue, when multicheck is enabled - // checks = mw.editcheck.editCheckFactory.createAllByListener( 'onBeforeSave', surface.getModel() ); - checks = []; - - if ( checks.length ) { - context.removePersistentSource( 'editCheckReferences' ); - setTimeout( () => { - // timeout needed to wait out the newly added content being focused - surface.getModel().setNullSelection(); - drawSelections( checks ); - setTimeout( () => { - // timeout needed to allow the context to reposition - showCheckContext( checks[ Math.min( selectionIndex, checks.length - 1 ) ] ); - } ); - }, 500 ); - } else { - saveProcessDeferred.resolve( true ); - } - }; - - // eslint-disable-next-line no-inner-declarations - function showCheckContext( check ) { - const fragment = check.fragments[ 0 ]; - - // Select the found content to correctly position the context on desktop - fragment.select(); - - context.addPersistentSource( { - embeddable: false, - data: { - action: check, - fragment: fragment, - callback: contextDone, - saveProcessDeferred: saveProcessDeferred - }, - name: 'editCheckReferences' - } ); - - // Deactivate to prevent selection suppressing mobile context - surface.getView().deactivate(); - - // Once the context is positioned, clear the selection - setTimeout( () => { - surface.getModel().setNullSelection(); - } ); + let $contextContainer, contextPadding; + if ( surface.context.popup ) { + contextPadding = surface.context.popup.containerPadding; + $contextContainer = surface.context.popup.$container; + surface.context.popup.$container = surface.$element; + surface.context.popup.containerPadding = 20; } - drawSelections( checks ); - toolbar.toggle( false ); - target.onContainerScroll(); - saveProcess.next( () => { - showCheckContext( checks[ 0 ] ); - - return saveProcessDeferred.promise().then( ( data ) => { - context.removePersistentSource( 'editCheckReferences' ); - - surfaceView.getSelectionManager().drawSelections( 'editCheck', [] ); - surfaceView.setReviewMode( false ); - - reviewToolbar.$element.remove(); - toolbar.toggle( true ); - target.toolbar = toolbar; - target.onContainerScroll(); - - // Check the user inserted a citation - if ( data ) { - const delay = ve.createDeferred(); - // If they inserted, wait 2 seconds on desktop before showing save dialog - setTimeout( () => { - ve.track( 'counter.editcheck.preSaveChecksCompleted' ); - delay.resolve(); - }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); - return delay.promise(); - } else { - ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); - return ve.createDeferred().reject().promise(); - } - } ); + toolbar.toggle( false ); + target.onContainerScroll(); + // surface.executeCommand( 'editCheckDialogBeforeSave' ); + const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); + return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true } ) + .then( ( instance ) => instance.closing ) + .then( ( data ) => { + reviewToolbar.$element.remove(); + toolbar.toggle( true ); + target.toolbar = toolbar; + if ( $contextContainer ) { + surface.context.popup.$container = $contextContainer; + surface.context.popup.containerPadding = contextPadding; + } + // Creating a new PositionedTargetToolbar stole the + // toolbar windowmanagers, so we need to make the + // original toolbar reclaim them: + toolbar.disconnect( target ); + target.setupToolbar( surface ); + target.onContainerScroll(); + + if ( data ) { + const delay = ve.createDeferred(); + // If they inserted, wait 2 seconds on desktop + // before showing save dialog to make sure insertions are finialized + setTimeout( () => { + ve.track( 'counter.editcheck.preSaveChecksCompleted' ); + delay.resolve(); + }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); + return delay.promise(); + } else { + // closed via "back" or otherwise + ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); + return ve.createDeferred().reject().promise(); + } + } ); } ); } else { // Counterpart to earlier preSaveChecksShown, for use in tracking @@ -265,11 +197,6 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable ve.track( 'counter.editcheck.preSaveChecksNotShown' ); } } ); - mw.hook( 've.deactivationComplete' ).add( () => { - if ( saveProcessDeferred ) { - saveProcessDeferred.reject(); - } - } ); } ve.ui.EditCheckBack = function VeUiEditCheckBack() { @@ -286,12 +213,9 @@ ve.ui.EditCheckBack.static.autoAddToGroup = false; ve.ui.EditCheckBack.static.title = OO.ui.deferMsg( 'visualeditor-backbutton-tooltip' ); ve.ui.EditCheckBack.prototype.onSelect = function () { - const context = this.toolbar.getSurface().getContext(); - if ( context.inspector ) { - context.inspector.close(); - } else { - context.items[ 0 ].close(); - } + const surface = this.toolbar.getSurface(); + surface.getContext().hide(); + surface.execute( 'window', 'close', 'editCheckDialog' ); this.setActive( false ); }; ve.ui.EditCheckBack.prototype.onUpdateState = function () { diff --git a/extension.json b/extension.json index 83c1dc617b..3d0e942c9a 100644 --- a/extension.json +++ b/extension.json @@ -136,6 +136,10 @@ "value": false, "description": "Enable experimental Edit Check feature. Can also be enabled using ?ecenable=1." }, + "VisualEditorEditCheckSingleCheckMode": { + "value": true, + "description": "Only allow a single edit check to be surfaced" + }, "VisualEditorEditCheckABTest": { "value": false, "description": "A/B test Edit Check for all users. A/B bucket status will override VisualEditorEditCheck." @@ -647,7 +651,10 @@ "editcheck-dialog-addref-success-notify", "editcheck-dialog-addref-title", "editcheck-dialog-title", - "visualeditor-backbutton-tooltip" + "editcheck-review-title", + "visualeditor-backbutton-tooltip", + "next", + "last" ] }, "ext.visualEditor.core.utils": { diff --git a/includes/Hooks.php b/includes/Hooks.php index f592a0dff5..f335cf7325 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -1159,6 +1159,7 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf 'useChangeTagging' => $veConfig->get( 'VisualEditorUseChangeTagging' ), 'editCheckTagging' => $veConfig->get( 'VisualEditorEditCheckTagging' ), 'editCheck' => $veConfig->get( 'VisualEditorEditCheck' ), + 'editCheckSingle' => $veConfig->get( 'VisualEditorEditCheckSingleCheckMode' ), 'editCheckABTest' => $veConfig->get( 'VisualEditorEditCheckABTest' ), 'editCheckReliabilityAvailable' => ApiEditCheckReferenceUrl::isAvailable(), 'namespacesWithSubpages' => $namespacesWithSubpagesEnabled, From 32a626f9f56434cfc8d8770c0391cd2d8804420a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 12 Dec 2024 08:17:12 +0100 Subject: [PATCH 084/730] Localisation updates from https://translatewiki.net. Change-Id: I1f203a0029e6975ce424f4f8163d08d43f06f241 --- i18n/ve-mw/bg.json | 2 +- i18n/ve-mw/pa.json | 2 +- i18n/ve-wmf/bg.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/ve-mw/bg.json b/i18n/ve-mw/bg.json index ff629b7174..166051fdb1 100644 --- a/i18n/ve-mw/bg.json +++ b/i18n/ve-mw/bg.json @@ -187,7 +187,7 @@ "visualeditor-mweditmodeve-popup-title": "Превключили сте на режим редактиране на кода", "visualeditor-mweditmodeve-progress": "Преминаване към визуално редактиране...", "visualeditor-mweditmodeve-showagain": "Не искам това съобщение да се показва отново", - "visualeditor-mweditmodeve-tool-current": "Визуален редактор", + "visualeditor-mweditmodeve-tool-current": "Визуално редактиране", "visualeditor-mweditmodeve-tool-unavailable": "Визуалното редактиране не е достъпно тук", "visualeditor-mweditmodewt-popup-body": "Можете във всеки момент да се върнете отново към редактиране на кода, като щракнете на тази икона.", "visualeditor-mweditmodewt-popup-title": "Превключили сте на режим визуално редактиране", diff --git a/i18n/ve-mw/pa.json b/i18n/ve-mw/pa.json index 969f72f190..62a608041e 100644 --- a/i18n/ve-mw/pa.json +++ b/i18n/ve-mw/pa.json @@ -177,7 +177,7 @@ "visualeditor-savedialog-label-resume-editing": "ਸੋਧਣਾ ਜਾਰੀ ਰੱਖੋ", "visualeditor-savedialog-label-review": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਦੀ ਪਰਖ ਕਰੋ", "visualeditor-savedialog-label-save-short": "ਸਾਂਭੋ", - "visualeditor-savedialog-label-save-short-start": "ਸੁਰੱਖਿਅਤ ਕਰੋ...", + "visualeditor-savedialog-label-save-short-start": "ਸੰਭਾਲੋ...", "visualeditor-savedialog-review-nosummary": "ਕੋਈ ਸੋਧ ਸਾਰ ਨਹੀਂ", "visualeditor-savedialog-review-visual": "ਵਿਜ਼ੂਅਲ", "visualeditor-savedialog-review-wikitext": "ਵਿਕੀਲਿਖਤ", diff --git a/i18n/ve-wmf/bg.json b/i18n/ve-wmf/bg.json index 59f27e0105..a7c0e95987 100644 --- a/i18n/ve-wmf/bg.json +++ b/i18n/ve-wmf/bg.json @@ -14,7 +14,7 @@ }, "tag-visualeditor": "Визуална редакция", "tag-visualeditor-description": "Редакция, направена с [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалния редактор]]", - "tag-visualeditor-needcheck": "Визуална редакция за проверка", + "tag-visualeditor-needcheck": "Визуална редакция: Проверете", "tag-visualeditor-needcheck-description": "Редакция, направена с [[{{MediaWiki:visualeditor-descriptionpagelink}}|визуалния редактор]], за която системата откри възможно нежелани промени по уикикода.", "tag-visualeditor-wikitext": "Уикитекстов редактор – 2017", "tag-visualeditor-wikitext-description": "Редакцията е извършена чрез уикитекстов редактор – 2017", From 81197ac662b7f1df96eddab1e8aa428c28a2dfbc Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Dec 2024 12:38:37 +0000 Subject: [PATCH 085/730] Improve timing of sidebar opening and scrolling selection into view * Don't try to draw the selections/highlights while the sidebar is opening. * Only make the scroll call once (after the sidebar is open) to keep the animation smooth. Change-Id: I1c1d23b0dad07aa44a2bd10ebb32149e796d6738 --- editcheck/modules/EditCheckDialog.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index f3c5f0ac95..8097c5644c 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -17,6 +17,9 @@ ve.ui.EditCheckDialog = function VeUiEditCheckDialog( config ) { // Parent constructor ve.ui.EditCheckDialog.super.call( this, config ); + // Don't run a scroll if the previous animation is still running (which is jQuery 'fast' === 200ms) + this.scrollCurrentCheckIntoViewDebounced = ve.debounce( this.scrollCurrentCheckIntoView.bind( this ), 200, true ); + // Pre-initialization this.$element.addClass( 've-ui-editCheckDialog' ); }; @@ -138,7 +141,7 @@ ve.ui.EditCheckDialog.prototype.update = function () { ve.ui.EditCheckDialog.prototype.position = function () { this.drawHighlights(); - this.scrollCurrentCheckIntoView(); + this.scrollCurrentCheckIntoViewDebounced(); }; ve.ui.EditCheckDialog.prototype.drawHighlights = function () { @@ -195,6 +198,10 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset ) { this.updateSize(); + if ( this.isOpening() ) { + return; + } + const surfaceView = this.surface.getView(); if ( this.currentChecks.length > 0 ) { // The currently-focused check gets a selection: @@ -206,7 +213,7 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset ) { ) ); - this.scrollCurrentCheckIntoView(); + this.scrollCurrentCheckIntoViewDebounced(); } else { surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); } @@ -265,12 +272,11 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { ve.ui.EditCheckDialog.prototype.getReadyProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getReadyProcess.call( this, data ) .next( () => { - // The end of the ready process triggers a reflow after an - // animation, so we need to get past that to avoid the content - // being immediately scrolled away + // Call update again after the dialog has transitioned open, as the first + // call of update will not have drawn any selections. setTimeout( () => { - this.scrollCurrentCheckIntoView(); - }, 500 ); + this.update(); + }, OO.ui.theme.getDialogTransitionDuration() ); }, this ); }; From fccb2472853ee3d4543c1c1234b25011d089566b Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Dec 2024 12:54:57 +0000 Subject: [PATCH 086/730] EditCheck: Only pause if check is not rejected The pause is to show the user the result of their action (sepcifically it was designed for AddReferenceEditCheck to let them see the reference in the page). If they reject, there is no need to pause. This applies to mulit-check too where it would cause a pause before moving on to the next check. Change-Id: I57f881b37051cc2e5ea6bda23fea66a2de2b342d --- editcheck/modules/EditCheckDialog.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 8097c5644c..dcd5cb2cd4 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -323,13 +323,17 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( widget, choice, actionChosen, } if ( this.listener === 'onBeforeSave' ) { - // We must have been acting on the currentOffset + // If an action has been taken, we want to linger for a brief moment + // to show the result of the action before moving away + // TODO: This was written for AddReferenceEditCheck but should be + // more generic + const pause = data.action !== 'reject' ? 500 : 0; setTimeout( () => { - // We want to linger for a brief moment before moving away + // We must have been acting on the currentOffset this.currentChecks.splice( this.currentOffset, 1 ); this.currentOffset = Math.max( 0, this.currentOffset - 1 ); this.update(); - }, 500 ); + }, pause ); } } ); }; From 21356a4fcce34298b26f685f218e5473206bcf76 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 13 Dec 2024 08:35:59 +0100 Subject: [PATCH 087/730] Localisation updates from https://translatewiki.net. Change-Id: Ifd7eb0f2983dc4fccf6635307bcddcf5a7fbd070 --- editcheck/i18n/az.json | 1 + editcheck/i18n/de.json | 1 + editcheck/i18n/fi.json | 1 + editcheck/i18n/fr.json | 4 +++- editcheck/i18n/he.json | 1 + editcheck/i18n/lb.json | 3 ++- editcheck/i18n/pa.json | 8 ++++++++ i18n/ve-wmf/syl.json | 9 ++++++++- 8 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 editcheck/i18n/pa.json diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index 9572629086..e5d880aef2 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -17,6 +17,7 @@ "editcheck-dialog-addref-success-notify": "İstinad əlavə etdiyiniz üçün təşəkkür edirik!", "editcheck-dialog-addref-title": "İstinad əlavə et", "editcheck-dialog-title": "Yayımlamadan əvvəl", + "editcheck-review-title": "Dəyişiklikləri yoxla", "tag-editcheck-reference-decline-common-knowledge": "Redaktə Yoxlanışı (istinadlar) rədd edildi (hamının bildiyi)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck istinadı hamının bildiyi məlumat kimi rədd edildi", "tag-editcheck-reference-decline-irrelevant": "Redaktə yoxlanışı (istinadlar) rədd edildi (aidiyyatsız)", diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index c36c0dee6d..3f4ebf0b44 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -14,6 +14,7 @@ "editcheck-dialog-addref-success-notify": "Vielen Dank für das Hinzufügen eines Belegs!", "editcheck-dialog-addref-title": "Einen Beleg hinzufügen", "editcheck-dialog-title": "Vor der Veröffentlichung", + "editcheck-review-title": "Änderungen überprüfen", "tag-editcheck-reference-decline-common-knowledge": "Bearbeitungsprüfung (Belege) abgelehnt (Allgemeinwissen)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck: Beleg wurde als allgemein bekannt abgelehnt", "tag-editcheck-reference-decline-irrelevant": "Bearbeitungsprüfung (Belege) abgelehnt (irrelevant)", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 0ff2199d26..9c57563682 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -18,6 +18,7 @@ "editcheck-dialog-addref-success-notify": "Kiitos lähdeviitteen lisäämisestä!", "editcheck-dialog-addref-title": "Lisää viite", "editcheck-dialog-title": "Ennen julkaisua", + "editcheck-review-title": "Arvioi muutoksia", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", "tag-editcheck-reference-decline-common-knowledge-description": "Muokkaustarkistimen ehdotus hylättiin, koska lisäys on yleistä tietoa", "tag-editcheck-reference-decline-irrelevant": "Muokkaustarkistin (lähteet) hylätty (epäolennaista)", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index cb9ecf4e51..43303e4864 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Gomoko" + "Gomoko", + "Mahabarata" ] }, "editcheck-dialog-action-no": "Non", @@ -16,6 +17,7 @@ "editcheck-dialog-addref-success-notify": "Merci d'avoir ajouté une source !", "editcheck-dialog-addref-title": "Ajouter une source", "editcheck-dialog-title": "Avant de publier", + "editcheck-review-title": "Relire les modifications", "tag-editcheck-reference-decline-common-knowledge": "Vérification de modification (références) refusée (savoir commun)", "tag-editcheck-reference-decline-common-knowledge-description": "La référence EditCheck a été refusée comme étant un savoir commun", "tag-editcheck-reference-decline-irrelevant": "Vérification de modification (références) refusée (non pertinent)", diff --git a/editcheck/i18n/he.json b/editcheck/i18n/he.json index 7c485c8b61..dd42b6eebb 100644 --- a/editcheck/i18n/he.json +++ b/editcheck/i18n/he.json @@ -17,6 +17,7 @@ "editcheck-dialog-addref-success-notify": "תודה על הוספת הערת שוליים!", "editcheck-dialog-addref-title": "הוספת הערת שוליים", "editcheck-dialog-title": "לפני הפרסום", + "editcheck-review-title": "סקירת שינויים", "tag-editcheck-reference-decline-common-knowledge": "מערכת בדיקת עריכה (הערות שוליים) – נדחה (ידוע לכול)", "tag-editcheck-reference-decline-common-knowledge-description": "הערת שוליים שהוצעה דרך מערכת בדיקת עריכה נדחתה בשל היותה ידועה לכול", "tag-editcheck-reference-decline-irrelevant": "מערכת בדיקת עריכה (הערות שוליים) – נדחה (לא רלוונטי)", diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index ec43be2c3e..2a727f1d64 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -5,5 +5,6 @@ ] }, "editcheck-dialog-action-no": "Neen", - "editcheck-dialog-action-yes": "Jo" + "editcheck-dialog-action-yes": "Jo", + "editcheck-review-title": "Ännerungen nokucken" } diff --git a/editcheck/i18n/pa.json b/editcheck/i18n/pa.json new file mode 100644 index 0000000000..30fcf666ab --- /dev/null +++ b/editcheck/i18n/pa.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Cabal" + ] + }, + "editcheck-review-title": "ਤਬਦੀਲੀਆਂ ਪਰਖੋ" +} diff --git a/i18n/ve-wmf/syl.json b/i18n/ve-wmf/syl.json index 6724c48f5b..8e718f3643 100644 --- a/i18n/ve-wmf/syl.json +++ b/i18n/ve-wmf/syl.json @@ -4,5 +4,12 @@ "ꠢꠣꠍꠘ ꠞꠣꠎꠣ" ] }, - "visualeditor-welcomedialog-action": "ꠟꠦꠈꠣ ꠡꠥꠞꠥ ꠇꠞꠂꠘ" + "tag-visualeditor": "ꠛꠣꠇ ꠇꠞꠣꠔꠣ ꠖꠦꠈꠂꠘ", + "tag-visualeditor-needcheck": "ꠖꠦꠈꠤ ꠖꠦꠈꠤꠛꠣꠇ ꠇꠞꠣ ꠪ ꠌꠦꠇ", + "tag-visualeditor-wikitext": "2017 ꠎꠠꠞ ꠛꠣꠇ ꠇꠞꠣꠔꠣ", + "visualeditor-help-label": "ꠛꠦꠛꠀꠞꠇꠞ꠆ꠞꠣꠞ ꠉꠣꠁꠒ ꠙꠠꠃꠇ꠆ꠇꠣ", + "visualeditor-welcomedialog-action": "ꠟꠦꠈꠣ ꠡꠥꠞꠥ ꠇꠞꠂꠘ", + "visualeditor-welcomedialog-switch": "ꠎꠠ ꠛꠣꠇ ꠇꠞꠃꠇ꠆ꠇꠣ", + "visualeditor-welcomedialog-switch-ve": "ꠖꠦꠈꠤ ꠖꠦꠈꠤ ꠛꠣꠇ ꠇꠞꠃꠇ꠆ꠇꠣ", + "visualeditor-welcomedialog-title": "$2 ꠅ {{GENDER:$1|ꠀꠃꠇ꠆ꠇꠣ}}" } From e3792be22451397c1d2d9b4ea56d67e75a2a7ed5 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Sat, 14 Dec 2024 03:51:58 +0000 Subject: [PATCH 088/730] build: Updating @wdio/mocha-framework to 7.33.0 Change-Id: I015b74927b1587360863771af91f5b8adbaa9ef5 --- package-lock.json | 478 +++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 300 insertions(+), 180 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4f5f594852..1356a7f245 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@wdio/cli": "7.16.13", "@wdio/junit-reporter": "7.16.13", "@wdio/local-runner": "7.16.13", - "@wdio/mocha-framework": "7.16.13", + "@wdio/mocha-framework": "7.33.0", "@wdio/spec-reporter": "7.16.13", "api-testing": "1.6.0", "eslint-config-wikimedia": "0.28.2", @@ -1170,9 +1170,9 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", "dev": true }, "node_modules/@types/node": { @@ -1417,12 +1417,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -1544,29 +1538,97 @@ } }, "node_modules/@wdio/mocha-framework": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.16.13.tgz", - "integrity": "sha512-yaLxEF5evXACGqxkch/IoJz8JGoQmcV+X635JBiMF6tl0+HSTYrL1ZPk1cED+9OI4jIPtmlhbgzne9IhoKCbpg==", + "version": "7.33.0", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.33.0.tgz", + "integrity": "sha512-y6+iBF+QrqeiXC+mNwW/o0vRsB+qaRznxoh+ds6Xz9V0tui55cn4kl2gYkBu3oHX8h+9R52ykLyaY9wv+r2aeg==", "dev": true, "dependencies": { - "@types/mocha": "^9.0.0", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@types/mocha": "^10.0.0", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.33.0", + "@wdio/utils": "7.33.0", "expect-webdriverio": "^3.0.0", - "mocha": "^9.0.0" + "mocha": "^10.0.0" }, "engines": { "node": ">=12.0.0" } }, + "node_modules/@wdio/mocha-framework/node_modules/@types/node": { + "version": "18.19.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", + "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@wdio/mocha-framework/node_modules/@wdio/logger": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz", + "integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wdio/mocha-framework/node_modules/@wdio/types": { + "version": "7.33.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.33.0.tgz", + "integrity": "sha512-tNcuN5Kl+i5CffaeTYV1omzAo4rVjiI1m9raIA8ph6iVteWdCzYv2/ImpGgFiBPb7Mf6VokU3+q9Slh5Jitaww==", + "dev": true, + "dependencies": { + "@types/node": "^18.0.0", + "got": "^11.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "^4.6.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": { + "version": "7.33.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.33.0.tgz", + "integrity": "sha512-4kQQ86EvEN6fBY5+u7M08cT6LfJtpk1rHd203xyxmbmV9lpNv/OCl4CsC+SD0jGT0aZZqYSIJ/Pil07pAh5K0g==", + "dev": true, + "dependencies": { + "@wdio/logger": "7.26.0", + "@wdio/types": "7.33.0", + "p-iteration": "^1.1.8" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1577,6 +1639,26 @@ } } }, + "node_modules/@wdio/mocha-framework/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@wdio/mocha-framework/node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -1587,78 +1669,58 @@ } }, "node_modules/@wdio/mocha-framework/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, "node_modules/@wdio/mocha-framework/node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", "dev": true, "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node": ">= 14.0.0" } }, - "node_modules/@wdio/mocha-framework/node_modules/mocha/node_modules/ms": { + "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/@wdio/mocha-framework/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -1678,9 +1740,9 @@ } }, "node_modules/@wdio/mocha-framework/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "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" @@ -1860,9 +1922,9 @@ } }, "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==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "engines": { "node": ">=6" @@ -4238,9 +4300,9 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -9474,9 +9536,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -11665,9 +11727,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -13265,9 +13327,9 @@ } }, "node_modules/typescript": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", - "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "peer": true, "bin": { @@ -13275,7 +13337,7 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=4.2.0" } }, "node_modules/ua-parser-js": { @@ -13356,6 +13418,12 @@ "node": "*" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -13702,9 +13770,9 @@ } }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, "node_modules/wrap-ansi": { @@ -15020,9 +15088,9 @@ "dev": true }, "@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", "dev": true }, "@types/node": { @@ -15220,12 +15288,6 @@ "eslint-visitor-keys": "^3.4.3" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -15323,26 +15385,90 @@ } }, "@wdio/mocha-framework": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.16.13.tgz", - "integrity": "sha512-yaLxEF5evXACGqxkch/IoJz8JGoQmcV+X635JBiMF6tl0+HSTYrL1ZPk1cED+9OI4jIPtmlhbgzne9IhoKCbpg==", + "version": "7.33.0", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.33.0.tgz", + "integrity": "sha512-y6+iBF+QrqeiXC+mNwW/o0vRsB+qaRznxoh+ds6Xz9V0tui55cn4kl2gYkBu3oHX8h+9R52ykLyaY9wv+r2aeg==", "dev": true, "requires": { - "@types/mocha": "^9.0.0", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@types/mocha": "^10.0.0", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.33.0", + "@wdio/utils": "7.33.0", "expect-webdriverio": "^3.0.0", - "mocha": "^9.0.0" + "mocha": "^10.0.0" }, "dependencies": { + "@types/node": { + "version": "18.19.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", + "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@wdio/logger": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz", + "integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^6.0.0" + } + }, + "@wdio/types": { + "version": "7.33.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.33.0.tgz", + "integrity": "sha512-tNcuN5Kl+i5CffaeTYV1omzAo4rVjiI1m9raIA8ph6iVteWdCzYv2/ImpGgFiBPb7Mf6VokU3+q9Slh5Jitaww==", + "dev": true, + "requires": { + "@types/node": "^18.0.0", + "got": "^11.8.1" + } + }, + "@wdio/utils": { + "version": "7.33.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.33.0.tgz", + "integrity": "sha512-4kQQ86EvEN6fBY5+u7M08cT6LfJtpk1rHd203xyxmbmV9lpNv/OCl4CsC+SD0jGT0aZZqYSIJ/Pil07pAh5K0g==", + "dev": true, + "requires": { + "@wdio/logger": "7.26.0", + "@wdio/types": "7.33.0", + "p-iteration": "^1.1.8" + } + }, + "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.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { - "ms": "2.1.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" } }, "he": { @@ -15352,58 +15478,46 @@ "dev": true }, "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" } }, "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", "dev": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.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 - } + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" } }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "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 }, "yargs": { @@ -15422,9 +15536,9 @@ } }, "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "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 } } @@ -15560,9 +15674,9 @@ } }, "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==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true }, "ansi-escapes": { @@ -17397,9 +17511,9 @@ "dev": true }, "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true }, "diff-sequences": { @@ -21426,9 +21540,9 @@ } }, "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true }, "natural-compare": { @@ -23061,9 +23175,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -24307,9 +24421,9 @@ "dev": true }, "typescript": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", - "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "peer": true }, @@ -24369,6 +24483,12 @@ "util-deprecate": "^1.0.2" } }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -24632,9 +24752,9 @@ } }, "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, "wrap-ansi": { diff --git a/package.json b/package.json index 2b36e407a5..80c0ff2d67 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@wdio/cli": "7.16.13", "@wdio/junit-reporter": "7.16.13", "@wdio/local-runner": "7.16.13", - "@wdio/mocha-framework": "7.16.13", + "@wdio/mocha-framework": "7.33.0", "@wdio/spec-reporter": "7.16.13", "api-testing": "1.6.0", "eslint-config-wikimedia": "0.28.2", From ebb99fc888b3cc7f04a60efdcae6987ced1035f4 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 16 Dec 2024 08:24:25 +0100 Subject: [PATCH 089/730] Localisation updates from https://translatewiki.net. Change-Id: I546e4315251ab7b453d11419fb34df13d9d57799 --- editcheck/i18n/ar.json | 4 +++- editcheck/i18n/it.json | 1 + editcheck/i18n/ko.json | 1 + editcheck/i18n/mk.json | 1 + editcheck/i18n/sr-ec.json | 3 ++- editcheck/i18n/zh-hant.json | 1 + i18n/ve-mw/api/gl.json | 2 +- i18n/ve-mw/mad.json | 4 ++-- i18n/ve-mw/zmi.json | 3 ++- i18n/ve-wmf/se.json | 5 +++-- 10 files changed, 17 insertions(+), 8 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index 506cfc6c5e..da52402ba4 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Dyolf77 (WMF)" + "Dyolf77 (WMF)", + "Meno25" ] }, "editcheck-dialog-action-no": "لا", @@ -16,6 +17,7 @@ "editcheck-dialog-addref-success-notify": "شكرًا لكم على إضافة استشهاد!", "editcheck-dialog-addref-title": "إضافة استشهاد", "editcheck-dialog-title": "قبل النشر", + "editcheck-review-title": "مراجعة التغييرات", "tag-editcheck-reference-decline-common-knowledge": "تم رفض (ثقافة عامة) التحقّق من التحرير (مراجع)", "tag-editcheck-reference-decline-common-knowledge-description": "تم رفض مرجع EditCheck (أداة التحقّق) باعتباره ثقافةً عامة", "tag-editcheck-reference-decline-irrelevant": "تم رفض (غير ذي صلة) التحقّق من التحرير (مراجع)", diff --git a/editcheck/i18n/it.json b/editcheck/i18n/it.json index 482cc40951..428fd193dc 100644 --- a/editcheck/i18n/it.json +++ b/editcheck/i18n/it.json @@ -17,5 +17,6 @@ "editcheck-dialog-addref-success-notify": "Grazie per aver aggiunto una fonte!", "editcheck-dialog-addref-title": "Aggiungi una fonte", "editcheck-dialog-title": "Prima della pubblicazione", + "editcheck-review-title": "Rivedi modifiche", "tag-editcheck-reference-decline-other": "Edit Check (citazioni) rifiutato (altro)" } diff --git a/editcheck/i18n/ko.json b/editcheck/i18n/ko.json index 94e2a0d633..b503dec994 100644 --- a/editcheck/i18n/ko.json +++ b/editcheck/i18n/ko.json @@ -14,6 +14,7 @@ "editcheck-dialog-addref-reject-other": "그 외", "editcheck-dialog-addref-success-notify": "인용 추가해주셔서 감사합니다!", "editcheck-dialog-addref-title": "인용 추가", + "editcheck-review-title": "변경사항 검토", "tag-editcheck-reference-decline-common-knowledge": "편집 검사(출처)를 거부함 (상식)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck 출처가 상식을 이유로 거부되었습니다", "tag-editcheck-reference-decline-irrelevant": "편집 검사(출처)를 거부함 (부적절)", diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index ecdb64334c..b05f7ce1fd 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -16,6 +16,7 @@ "editcheck-dialog-addref-success-notify": "Ви благодариме што ставивте навод!", "editcheck-dialog-addref-title": "Додај навод", "editcheck-dialog-title": "Пред да објавите", + "editcheck-review-title": "Прегледај промени", "tag-editcheck-reference-decline-common-knowledge": "Проверката на уредувањето (наводи) е одбиена (општопознато)", "tag-editcheck-reference-decline-common-knowledge-description": "Наводот со EditCheck е одбиен како општопознат", "tag-editcheck-reference-decline-irrelevant": "Проверката на уредувањето (наводи) е одбиена (нерелевантно)", diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index a470cd89ea..9f5f436ccb 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -6,5 +6,6 @@ }, "editcheck-dialog-action-no": "Не", "editcheck-dialog-action-yes": "Да", - "editcheck-dialog-addref-reject-other": "Друго" + "editcheck-dialog-addref-reject-other": "Друго", + "editcheck-review-title": "Преглед измена" } diff --git a/editcheck/i18n/zh-hant.json b/editcheck/i18n/zh-hant.json index 23410f5a67..5b43832ec8 100644 --- a/editcheck/i18n/zh-hant.json +++ b/editcheck/i18n/zh-hant.json @@ -18,6 +18,7 @@ "editcheck-dialog-addref-success-notify": "感謝您新增引註!", "editcheck-dialog-addref-title": "新增引註", "editcheck-dialog-title": "發布前", + "editcheck-review-title": "審核變更", "tag-editcheck-reference-decline-common-knowledge": "編輯檢查(參考資料)遭拒(常識)", "tag-editcheck-reference-decline-common-knowledge-description": "編輯檢查參考文獻功能因「常識」而被拒絕", "tag-editcheck-reference-decline-irrelevant": "編輯檢查(參考資料)遭拒(無關)", diff --git a/i18n/ve-mw/api/gl.json b/i18n/ve-mw/api/gl.json index 616520c23c..616d30d680 100644 --- a/i18n/ve-mw/api/gl.json +++ b/i18n/ve-mw/api/gl.json @@ -31,7 +31,7 @@ "apihelp-visualeditoredit-param-basetimestamp": "Ao gardar, definir coa data e hora da revisión que foi editada. Úsase para detectar conflitos de edición.", "apihelp-visualeditoredit-param-cachekey": "Utilícese o resultado dunha petición serializeforcache anterior con esta clave. Invalida $1html.", "apihelp-visualeditoredit-param-captchaid": "Identificador do captcha (ao gardar cunha resposta do captcha).", - "apihelp-visualeditoredit-param-captchaword": "Resposta ao captcha (ao gardar cunha resposta do captcha).", + "apihelp-visualeditoredit-param-captchaword": "Resposta ao captcha (ao gardar cunha resposta ao captcha).", "apihelp-visualeditoredit-param-nocontent": "Omitir o contido HTML da nova revisión na resposta.", "apihelp-visualeditoredit-param-plugins": "Complementos asociados á solicitude da API.", "apihelp-visualeditoredit-param-data-{plugin}": "Datos arbitrarios enviados por un complemento coa solicitude da API.", diff --git a/i18n/ve-mw/mad.json b/i18n/ve-mw/mad.json index f7fe985703..f0c82b9e67 100644 --- a/i18n/ve-mw/mad.json +++ b/i18n/ve-mw/mad.json @@ -23,9 +23,9 @@ "visualeditor-autosave-recovered-text": "Obâ'ânna dhika sè ghi' ta' èsèmpen ella otomatis èpabali.", "visualeditor-autosave-recovered-title": "Obâ'ân èpabâli", "visualeditor-backbutton-tooltip": "Abâli", - "visualeditor-ca-createlocaldescriptionsource": "Tambâ'aghi jhâjhârbâ'ân lokal", + "visualeditor-ca-createlocaldescriptionsource": "Tambâ sombher jhâjhârbâ'ân lokal", "visualeditor-ca-createsource": "Ghâbây sombher", - "visualeditor-ca-editlocaldescriptionsource": "Beccè' sombher ḍèskripsi lokal", + "visualeditor-ca-editlocaldescriptionsource": "Beccè' sombher jhâjhârbâ'ân lokal", "visualeditor-ca-editsource": "Beccè' sombher", "visualeditor-ca-editsource-section": "beccè' sombher", "visualeditor-categories-tool": "Bhângsa", diff --git a/i18n/ve-mw/zmi.json b/i18n/ve-mw/zmi.json index e11e29ebb1..6b3bc895cb 100644 --- a/i18n/ve-mw/zmi.json +++ b/i18n/ve-mw/zmi.json @@ -4,5 +4,6 @@ "Zahirulnukman" ] }, - "visualeditor-ca-createsource": "Buek akar" + "visualeditor-ca-createsource": "Buek akar", + "visualeditor-ca-editsource-section": "sunting sumber" } diff --git a/i18n/ve-wmf/se.json b/i18n/ve-wmf/se.json index 7a12397a92..eda14b27d8 100644 --- a/i18n/ve-wmf/se.json +++ b/i18n/ve-wmf/se.json @@ -5,14 +5,15 @@ "Ed g2s", "Kimberli Mäkäräinen (WMNO)", "Lea-Christine Sara", - "WMNO sámeprošeakta" + "WMNO sámeprošeakta", + "Yupik" ] }, "tag-editcheck-newcontent-description": "EditCheck doaivu ahte ođđa sisdoallu lea lasihuvvon siidui", "tag-editcheck-newreference-description": "Siidui lasihuvvui gáldu", "tag-editcheck-references-description": "EditCheck doaivu ahte okta referánsa sáhttá leamáš dárbbašlaš", "tag-editcheck-references-activated": "Rievdadaniskkus (gáldut) biddjojuvvon johtui", - "tag-editcheck-references-activated-description": "Rievdadandárkkisteapmi doaivu dan ahte gáldu soaitá leamaš dárbbašlaš, ja geavaheaddjelakta dása čájehuvvui", + "tag-editcheck-references-activated-description": "Rievdadandárkkisteami mielde gáldu soaittášii leamaš dárbbašlaš, manin geavahanlakta čájehuvvui", "tag-visualeditor": "Rievdaduvvon visuála rievdadanprográmmain", "tag-visualeditor-description": "Rievdadus dahkkon [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuála rievdadanprográmmain]]", "tag-visualeditor-needcheck": "Rievdaduvvon visuála rievdadanprográmmain: Dárkkis", From f997f91c21fd160003e8c3b9d59206060a7d01bf Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 17 Dec 2024 08:18:21 +0100 Subject: [PATCH 090/730] Localisation updates from https://translatewiki.net. Change-Id: Ie42b227765c32fbe4a60a4a11a546767c8fd9bcb --- editcheck/i18n/nl.json | 1 + i18n/ve-mw/maw.json | 1 + i18n/ve-wmf/ar.json | 3 +++ 3 files changed, 5 insertions(+) diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index 6ed991db07..aa63166754 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -18,6 +18,7 @@ "editcheck-dialog-addref-success-notify": "Bedankt voor het toevoegen van een referentie!", "editcheck-dialog-addref-title": "Referentie toevoegen", "editcheck-dialog-title": "Voordat u dit publiceert", + "editcheck-review-title": "Wijzigingen beoordelen", "tag-editcheck-reference-decline-common-knowledge": "EditCheck (referenties) afgewezen (algemene kennis)", "tag-editcheck-reference-decline-common-knowledge-description": "De EditCheck-referentie is afgewezen als algemeen bekend", "tag-editcheck-reference-decline-irrelevant": "Edit Check (referenties) afgewezen (irrelevant)", diff --git a/i18n/ve-mw/maw.json b/i18n/ve-mw/maw.json index f89ae12bbe..f52e9aa573 100644 --- a/i18n/ve-mw/maw.json +++ b/i18n/ve-mw/maw.json @@ -4,6 +4,7 @@ "Christian Yakubu" ] }, + "visualeditor-ca-createsource": "Nami din yi sheli na", "visualeditor-ca-editsource": "Malinniŋ din yi sheeli na", "visualeditor-ca-editsource-section": "Malinniŋ din yi sheeli na" } diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index f8e6ebc897..f06fa9b83b 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -20,8 +20,11 @@ "아라" ] }, + "tag-editcheck-newcontent-description": "يعتقد EditCheck أنه تمت إضافة محتوى جديد إلى الصفحة", + "tag-editcheck-newreference-description": "تمت إضافة مرجع إلى الصفحة", "tag-editcheck-references-description": "يعتقد (إديت تشيك) أنّه قد يكون هناك حاجة إلى مرجع", "tag-editcheck-references-activated": "فحص التحرير (أداة التحقق) مفعلّة", + "tag-editcheck-references-activated-description": "يعتقد EditCheck أنه ربما كان هناك حاجة إلى مرجع، وتم عرض واجهة المستخدم", "tag-visualeditor": "تحرير مرئي", "tag-visualeditor-description": "تم التعديل باستخدام [[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", "tag-visualeditor-needcheck": "المحرر المرئي: تحقق", From 04264c6b6ea862a0289403d98b40bbcfc18ce916 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 18 Dec 2024 08:23:45 +0100 Subject: [PATCH 091/730] Localisation updates from https://translatewiki.net. Change-Id: I1c51e73a9414ce9ee8b508501e536795131163de --- editcheck/i18n/fa.json | 8 ++++++++ i18n/ve-mw/ar.json | 26 ++++++++++++++++++++++++++ i18n/ve-mw/hu.json | 3 +++ i18n/ve-mw/mns.json | 27 +++++++++++++++++++++++++++ i18n/ve-wmf/ur.json | 1 + 5 files changed, 65 insertions(+) create mode 100644 editcheck/i18n/fa.json create mode 100644 i18n/ve-mw/mns.json diff --git a/editcheck/i18n/fa.json b/editcheck/i18n/fa.json new file mode 100644 index 0000000000..9ee05300f3 --- /dev/null +++ b/editcheck/i18n/fa.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Jeeputer" + ] + }, + "editcheck-review-title": "بازبینی تغییرات" +} diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index 28ac776443..41374072a0 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -44,12 +44,17 @@ "collabpad-import-subtitle": "مستورد من $1", "collabpad": "كولاب باد", "tooltip-ca-ve-edit": "عدل هذه الصفحة", + "tooltip-ca-ve-edit-local": "تعديل صفحة الوصف المحلية", "tooltip-ca-ve-create": "أنشئ صفحة بهذا العنوان", "tooltip-ca-ve-create-local": "أنشئ صفحة الوصف المحلية", "tooltip-ca-editsource": "عدل الكود المصدري لهذه الصفحة", + "tooltip-ca-editsource-local": "تعديل الكود المصدر لصفحة الوصف المحلية", "tooltip-ca-createsource": "إنشاء الكود المصدري لهذه الصفحة", + "tooltip-ca-createsource-local": "إنشاء الكود المصدر لصفحة الوصف المحلية", "visualeditor-advancedsettings-tool": "إعدادات متقدمة", "visualeditor-annotations-default-description": "هذا الجزء من الصفحة هو جزء من نطاق التعليقات التوضيحية.", + "visualeditor-annotations-default-end": "نهاية النطاق الموضح", + "visualeditor-annotations-default-start": "بداية النطاق الموضح", "visualeditor-autosave-modified-prompt-accept": "استئناف التحرير", "visualeditor-autosave-modified-prompt-message": "تم تحرير هذه الصفحة منذ آخر تحميل لها. هل ترغب {{GENDER:|أنت}} في استئناف {{GENDER:|تعديلك}} للمراجعة القديمة، أو بدء تعديل جديد للمراجعة الأحدث؟", "visualeditor-autosave-modified-prompt-reject": "بدء تعديل جديد", @@ -64,6 +69,7 @@ "visualeditor-ca-editlocaldescriptionsource": "تعديل مصدر الوصف المحلي", "visualeditor-ca-editsource": "عدل المصدر", "visualeditor-ca-editsource-section": "عدل المصدر", + "visualeditor-ca-editsource-section-hint": "تعديل كود المصدر للقسم: $1", "visualeditor-categories-tool": "التصنيفات", "visualeditor-changedesc-mwcategory-sortkey-changed": "تم تغيير مفتاح التصنيف من $1 إلى $2", "visualeditor-changedesc-mwcategory-sortkey-set": "تم تعيين مفتاح الفرز على $1", @@ -73,6 +79,8 @@ "visualeditor-changedesc-mwtransclusion": "محددات القالب تغيرت", "visualeditor-desc": "المحرر المرئي لميدياويكي", "visualeditor-descriptionpagelink": "Project:المحرر المرئي", + "visualeditor-dialog-extension-abandonedit": "هل أنت متأكد أنك تريد إغلاق هذا الحوار دون تطبيق التغييرات الخاصة بك؟", + "visualeditor-dialog-media-alttext-checkbox": "استخدم التسمية التوضيحية كنص بديل", "visualeditor-dialog-media-alttext-section": "نص بديل", "visualeditor-dialog-media-alttext-section-help": "يمكنك استخدام هذا الحقل لإضافة وصف نصي للأشخاص الذين لا يستطيعون رؤية الملف. يجب أن يكون الوصف كافيًا لفهم الهدف والمعلومات التي يقدمها ملف الوسائط. وهذا حيوي للمستخدمين المكفوفين والأشخاص الذين يستخدمون برامج قراءة الشاشة أو المتصفحات النصية فقط.", "visualeditor-dialog-media-change-image": "غير الصورة", @@ -177,7 +185,12 @@ "visualeditor-dialog-template-title": "قالب", "visualeditor-dialog-transclusion-action-save": "احفظ", "visualeditor-dialog-transclusion-template-title-nonexistent": "هذا القالب غير موجود.", + "visualeditor-dialog-transclusion-template-widget-aria": "اضغط على مفتاح المسافة لتحديد القالب.", + "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "اضغط على Ctrl+Del لحذف القالب ومعامِلاته وقيمها.", "visualeditor-dialog-transclusion-add-wikitext": "أضف نص ويكي", + "visualeditor-dialog-transclusion-add-param-error-exists-selected": "لا يمكن إضافة المعلمة \"$2\" مرتين.", + "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "المعلمة \"$2\" متاحة للاستخدام بالفعل. يرجى التحقق من الخيارات في الشريط الجانبي.", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 هو حرف محظور. يرجى إزالته لإضافة المعلمة.", "visualeditor-dialog-transclusion-add-param-help": "أدخل أسماء [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters الوسائط غير الموثقة] إذا كنت تعرفها. انتبه إلى أن الوسائط المُعرّفة في القالب فقط هي التي سيكون لها تأثير. رُبما تجد معلوماتٍ إضافية عن الوسائط الموجودة في [[$1|صفحة القالب]].", "visualeditor-dialog-transclusion-add-param-placeholder": "اسم الوسيط", "visualeditor-dialog-transclusion-add-param-save": "أضف", @@ -197,6 +210,7 @@ "visualeditor-dialog-transclusion-filter-no-match": "لم يُعثر على تطابق", "visualeditor-dialog-transclusion-filter-placeholder": "جِد حقلًا", "visualeditor-dialog-transclusion-filter-show-all": "أظهر الكل", + "visualeditor-dialog-transclusion-filter-title": "البحث عن المعلمة لـ $1", "visualeditor-dialog-transclusion-help-title": "مساعدة تحرير القوالب", "visualeditor-dialog-transclusion-help-message": "توفّر القوالب تنسيقاتٍ للمحتوى. هذا المحرر يعرض أيّ خياراتٍ يوفرها القالب يمينًا والقيم التي يُمكن إضافتها لهذه الخيارات يسارًا.", "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates مساعدة عن تعديل القوالب]", @@ -210,6 +224,7 @@ "visualeditor-dialog-transclusion-no-template-parameters": "ليس لهذا القالب وسائط موثّقة وقد يكون الغرض منه استخدامه بدون وسائط.", "visualeditor-dialog-transclusion-param-default": "القيمة الافتراضية: $1", "visualeditor-dialog-transclusion-param-example-long": "مثال: $1", + "visualeditor-dialog-transclusion-param-selection-aria-description": "اضغط على مفتاح المسافة لإضافة أو إزالة المعلمات. اضغط على مفتاح الإدخال لإضافة معلمة وتحرير قيمتها على الفور. عندما يتم تحديد معلمة بالفعل، اضغط على مفتاح الإدخال لتحرير القيمة.", "visualeditor-dialog-transclusion-param-selection-aria-label": "الوسائط في $1", "visualeditor-dialog-transclusion-param-undocumented": "(وسيط غير موثّق)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "ابحث عن قالب", @@ -227,6 +242,9 @@ "visualeditor-dialog-transclusion-template-search": "البحث عن قالب", "visualeditor-dialog-transclusion-template-search-help": "جِد القالب الذي تودّ إضافته بالبحث عبر كلماتٍ مفتاحيّة. من المرجح أن تعمل القوالب التي لها وصوف بشكلٍ جيّدٍ مع المحرر المرئي.", "visualeditor-dialog-transclusion-wikitext": "نص ويكي", + "visualeditor-dialog-transclusion-wikitext-widget-aria": "اضغط على مفتاح المسافة لتحديد عنصر wikitext. اضغط على مفتاح الإدخال لتحديد وتحرير wikitext.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "اضغط على Ctrl+Del لحذف عنصر wikitext. اضغط على Ctrl+Shift+Arrows لتحريك العنصر لأعلى أو لأسفل.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "اضغط على Ctrl+Del لحذف عنصر wikitext.", "visualeditor-dialogbutton-media-tooltip": "الصور والوسائط", "visualeditor-dialogbutton-template-tooltip": "قالب", "visualeditor-editconflict": "تعذر حفظ التغييرات الخاصة لوجود تضارب تحرير. أتود{{GENDER:||ين}} تصويب التضارب يدويا؟", @@ -248,6 +266,11 @@ "visualeditor-formatdropdown-format-mw-heading5": "عنوان فرعي 3", "visualeditor-formatdropdown-format-mw-heading6": "عنوان فرعي 4", "visualeditor-generating-wikitext-progress": "توليد نص الويكي", + "visualeditor-includes-noinclude-start": "بداية المحتوى المستبعد من المقتطفات", + "visualeditor-includes-noinclude-end": "نهاية المحتوى المستبعد من المقتطفات", + "visualeditor-includes-onlyinclude-start": "بداية المحتوى المسموح به في المقتطفات", + "visualeditor-includes-onlyinclude-end": "نهاية المحتوى المسموح به في المقتطفات", + "visualeditor-includes-includeonly": "المحتوى للمقتطفات فقط", "visualeditor-includes-noinclude-description": "عندما يتم استخدام محتوى من هذه الصفحة بواسطة صفحة أخرى ، لن يتم تضمين المحتوى من هنا حتى علامة النهاية المطابقة. كن حذرًا عند تحرير المحتوى خارج هذه العلامات ، حيث قد تستخدمه الصفحات الأخرى.", "visualeditor-includes-onlyinclude-description": "عندما يتم استخدام محتوى من هذه الصفحة بواسطة صفحة أخرى ، سيتم تضمين المحتوى فقط من هنا حتى علامة النهاية المطابقة. كن حذرًا عند تحرير المحتوى بين هذه العلامات ، حيث قد تستخدمه الصفحات الأخرى.", "visualeditor-includes-includeonly-description": "عندما يتم استخدام محتوى من هذه الصفحة بواسطة صفحة أخرى ، سيتم تضمين المحتوى الإضافي التالي هنا:", @@ -261,6 +284,7 @@ "visualeditor-linkinspector-educationpopup-text": "اربط الكلمات المهمة بمقالاتٍ أخرى في ويكيبيديا أو حتى بموقع آخر، لتمكين القارئ من فهم مرادها.", "visualeditor-linkinspector-educationpopup-title": "وصلات", "visualeditor-linkinspector-illegal-title": "عنوان الصفحة غير صحيح", + "visualeditor-linkinspector-invalid-blocked": "قرر القائمون على هذا الموقع حجب الروابط المؤدية إلى هذا الموقع. يرجى تجربة رابط آخر.", "visualeditor-linkinspector-invalid-external": "أدخل المسار كاملا، على سبيل المثال https://example.org", "visualeditor-linknodeinspector-add-label": "إضافة تسمية", "visualeditor-linknodeinspector-title": "وصلة بسيطة", @@ -320,6 +344,8 @@ "visualeditor-preference-tabs-prefer-ve": "أظهر المحرر المرئي كلما أمكن", "visualeditor-preference-tabs-prefer-wt": "أعطني محرر المصدر دائما", "visualeditor-preference-tabs-remember-last": "تذكر آخر محرر عدلت به", + "visualeditor-preference-collab-label": "التحرير التعاوني", + "visualeditor-preference-collab-description": "قم بدعوة مستخدمين آخرين للانضمام إلى جلسة التحرير الخاصة بك في المحرر المرئي.", "visualeditor-rebase-client-export": "تصدير", "visualeditor-rebase-client-export-start": "تصدير", "visualeditor-rebase-client-import": "استورد", diff --git a/i18n/ve-mw/hu.json b/i18n/ve-mw/hu.json index e68eafcf15..2557cedc64 100644 --- a/i18n/ve-mw/hu.json +++ b/i18n/ve-mw/hu.json @@ -30,6 +30,9 @@ "tooltip-ca-createsource": "Az oldal forráskódjának létrehozása", "tooltip-ca-createsource-local": "A helyi leírólap forráskódjának létrehozása", "visualeditor-advancedsettings-tool": "Haladó beállítások", + "visualeditor-annotations-default-description": "Ez a lap hozzátartozik egy jegyzeti tartományhoz.", + "visualeditor-annotations-default-end": "A jegyzett tartomány vége", + "visualeditor-annotations-default-start": "A jegyzett tartomány kezdése", "visualeditor-autosave-modified-prompt-accept": "Szerkesztés folytatása", "visualeditor-autosave-modified-prompt-message": "Valaki megváltoztatta a lapot, mióta elkezdted szerkeszteni. Szeretnéd folytatni a régi változat szerkesztését, vagy szeretnél új szerkesztést kezdeni a legújabb változat alapján?", "visualeditor-autosave-modified-prompt-reject": "Új szerkesztés kezdése", diff --git a/i18n/ve-mw/mns.json b/i18n/ve-mw/mns.json new file mode 100644 index 0000000000..e041963b33 --- /dev/null +++ b/i18n/ve-mw/mns.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Ewithu" + ] + }, + "visualeditor-dialog-media-content-filename": "файл нам", + "visualeditor-dialog-media-content-section": "Ёл ловинтап", + "visualeditor-dialog-media-search-tab-search": "Кисхатыл", + "visualeditor-dialog-meta-categories-category": "Категория", + "visualeditor-dialog-meta-categories-data-label": "Категорият", + "visualeditor-dialog-meta-categories-input-newcategorylabel": "Йильпи категория", + "visualeditor-dialog-meta-categories-section": "Категорият", + "visualeditor-dialog-meta-languages-code-label": "Ла̄тыӈ ко̄д", + "visualeditor-dialog-meta-languages-label": "Ла̄тӈыт", + "visualeditor-dialog-meta-languages-name-label": "Ла̄тыӈ", + "visualeditor-dialog-meta-languages-section": "Ла̄тӈыт", + "visualeditor-dialog-meta-settings-index-disable": "А̄ти", + "visualeditor-dialog-meta-settings-index-force": "А-а", + "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "А̄ти", + "visualeditor-dialog-meta-settings-newsectioneditlink-force": "А-а", + "visualeditor-expandable-less": "Мосьнув", + "visualeditor-expandable-more": "Са̄внув", + "visualeditor-languages-tool": "Ла̄тӈыт", + "visualeditor-media-title-image": "Хури", + "visualeditor-media-title-video": "Видео" +} diff --git a/i18n/ve-wmf/ur.json b/i18n/ve-wmf/ur.json index ab3a01bc50..e67b977c03 100644 --- a/i18n/ve-wmf/ur.json +++ b/i18n/ve-wmf/ur.json @@ -8,6 +8,7 @@ "පසිඳු කාවින්ද" ] }, + "tag-editcheck-references-activated": "ترمیم پڑتالگر (حوالہ جات) کا ٹیگ متحرک ہوا", "tag-visualeditor": "بصری ترمیم", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|بصری خانہ ترمیم]] کے ذریعہ یہ تبدیلی کی گئی", "tag-visualeditor-wikitext": "ترمیم ماخذ 2017ء", From a26c145574e2bbf667680e2b723cf1052d782edf Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 19 Nov 2024 13:13:06 +0000 Subject: [PATCH 092/730] Allow checks to be dismissed by fragment or ID Bug: T379804 Change-Id: I8c275a560971b95e3bbcf4921633e17c0078511f --- editcheck/modules/BaseEditCheck.js | 42 +++++++++++++++++++ editcheck/modules/EditCheckAction.js | 1 + editcheck/modules/EditCheckDialog.js | 9 ++-- .../editchecks/AddReferenceEditCheck.js | 16 +++---- editcheck/modules/init.js | 4 +- 5 files changed, 57 insertions(+), 15 deletions(-) diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index 0eb3246c34..33fc9e995a 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -274,3 +274,45 @@ mw.editcheck.BaseEditCheck.prototype.isRangeInValidSection = function ( range, d // If the heading text matches any of ignoreSections, return false. return !ignoreSections.some( ( section ) => compare( headingText, section ) === 0 ); }; + +/** + * Dismiss a check action + * + * @param {mw.editCheck.EditCheckAction} action + */ +mw.editcheck.BaseEditCheck.prototype.dismiss = function ( action ) { + const name = this.constructor.static.name; + if ( action.id ) { + const dismissedIds = mw.editcheck.dismissedIds; + dismissedIds[ name ] = dismissedIds[ name ] || []; + dismissedIds[ name ].push( action.id ); + } else { + const dismissedFragments = mw.editcheck.dismissedFragments; + dismissedFragments[ name ] = dismissedFragments[ name ] || []; + dismissedFragments[ name ].push( ...action.fragments ); + } +}; + +/** + * Check if this type of check has been dismissed covering a specific range + * + * @param {ve.Range} range + * @return {boolean} + */ +mw.editcheck.BaseEditCheck.prototype.isDismissedRange = function ( range ) { + const fragments = mw.editcheck.dismissedFragments[ this.constructor.static.name ]; + return !!fragments && fragments.some( + ( fragment ) => fragment.getSelection().getCoveringRange().containsRange( range ) + ); +}; + +/** + * Check if an action with a given ID has been dismissed + * + * @param {string} id + * @return {boolean} + */ +mw.editcheck.BaseEditCheck.prototype.isDismissedId = function ( id ) { + const ids = mw.editcheck.dismissedIds[ this.constructor.static.name ]; + return ids && ids.indexOf( id ) !== -1; +}; diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 7cf980f97e..5881e6ea90 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -11,6 +11,7 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.check = config.check; this.fragments = config.fragments; this.message = config.message; + this.id = config.id; this.title = config.title; this.icon = config.icon; this.type = config.type || 'warning'; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index dcd5cb2cd4..34766a7905 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -317,12 +317,7 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( widget, choice, actionChosen, setTimeout( () => this.surface.getModel().setNullSelection(), 300 ); } - if ( !data ) { - // Nothing happened, just fall back and leave the check - return; - } - - if ( this.listener === 'onBeforeSave' ) { + if ( data && this.listener === 'onBeforeSave' ) { // If an action has been taken, we want to linger for a brief moment // to show the result of the action before moving away // TODO: This was written for AddReferenceEditCheck but should be @@ -334,6 +329,8 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( widget, choice, actionChosen, this.currentOffset = Math.max( 0, this.currentOffset - 1 ); this.update(); }, pause ); + } else { + this.updateDebounced(); } } ); }; diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index c66f7da5e2..b4090d915f 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -17,14 +17,13 @@ mw.editcheck.AddReferenceEditCheck.static.defaultConfig = ve.extendObject( {}, m } ); mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceModel ) { - return this.findAddedContent( surfaceModel.getDocument() ).map( ( range ) => { - const fragment = surfaceModel.getLinearFragment( range ); - return new mw.editcheck.EditCheckAction( { - fragments: [ fragment ], - check: this - // icon: 'quotes', - } ); - } ); + return this.findAddedContent( surfaceModel.getDocument() ).filter( ( range ) => !this.isDismissedRange( range ) ) + .map( + ( range ) => new mw.editcheck.EditCheckAction( { + fragments: [ surfaceModel.getLinearFragment( range ) ], + check: this + } ) + ); }; mw.editcheck.AddReferenceEditCheck.prototype.onDocumentChange = mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave; @@ -100,6 +99,7 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, su } ).done( ( data ) => { if ( data && data.action === 'reject' && data.reason ) { mw.editcheck.rejections.push( data.reason ); + this.dismiss( action ); } } ); } diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index e21e7cc605..164daba9f3 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -1,6 +1,8 @@ mw.editcheck = { config: require( './config.json' ), - ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ) + ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ), + dismissedFragments: {}, + dismissedIds: {} }; require( './EditCheckContextItem.js' ); From 79adf3f934c66d34367d448ee977884ed2f213b9 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Dec 2024 13:06:23 +0000 Subject: [PATCH 093/730] EditCheck: Only show add-reference in before save workflow (for now) Change-Id: I6131af12fe4e9a85d9beaf4ca25cea1802461d26 --- editcheck/modules/editchecks/AddReferenceEditCheck.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index b4090d915f..58b5caa7a3 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -25,7 +25,8 @@ mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceMo } ) ); }; -mw.editcheck.AddReferenceEditCheck.prototype.onDocumentChange = mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave; +// Only show these before save (for now) +// mw.editcheck.AddReferenceEditCheck.prototype.onDocumentChange = mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave; /** * Find content ranges which have been inserted From e9c7503c728bf18304c1b0ef2a48535c8380c260 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Dec 2024 14:11:38 +0000 Subject: [PATCH 094/730] EditCheckDialog: Reset currentChecks on setup Change-Id: Iaf0fb4122f5c7168f55e73beaf9c69add1912ae3 --- editcheck/modules/EditCheckDialog.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 34766a7905..4c8fe52121 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -66,6 +66,7 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { } ); this.currentOffset = 0; + this.currentChecks = null; this.footerLabel = new OO.ui.LabelWidget(); this.previousButton = new OO.ui.ButtonWidget( { @@ -245,6 +246,7 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getSetupProcess.call( this, data ) .first( () => { this.currentOffset = 0; + this.currentChecks = null; this.listener = data.listener || 'onDocumentChange'; this.reviewMode = data.reviewMode; this.surface = data.surface; From 414e5d29ed8b796ec6e8eea63b672bff4e3546a5 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Dec 2024 14:12:03 +0000 Subject: [PATCH 095/730] EditCheck: Close any existing edit check dialog before opening onBeforeSave list Depends-On: Ib58b05fab39bcdc7d68b84ae235cfff775d7712c Change-Id: I04e6b209935756d6e56d479ec09f341463622acb --- editcheck/modules/init.js | 73 ++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 164daba9f3..551cf1a0b0 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -156,42 +156,45 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable } saveProcess.next( () => { - toolbar.toggle( false ); - target.onContainerScroll(); - // surface.executeCommand( 'editCheckDialogBeforeSave' ); const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); - return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true } ) - .then( ( instance ) => instance.closing ) - .then( ( data ) => { - reviewToolbar.$element.remove(); - toolbar.toggle( true ); - target.toolbar = toolbar; - if ( $contextContainer ) { - surface.context.popup.$container = $contextContainer; - surface.context.popup.containerPadding = contextPadding; - } - // Creating a new PositionedTargetToolbar stole the - // toolbar windowmanagers, so we need to make the - // original toolbar reclaim them: - toolbar.disconnect( target ); - target.setupToolbar( surface ); - target.onContainerScroll(); - - if ( data ) { - const delay = ve.createDeferred(); - // If they inserted, wait 2 seconds on desktop - // before showing save dialog to make sure insertions are finialized - setTimeout( () => { - ve.track( 'counter.editcheck.preSaveChecksCompleted' ); - delay.resolve(); - }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); - return delay.promise(); - } else { - // closed via "back" or otherwise - ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); - return ve.createDeferred().reject().promise(); - } - } ); + // .always is not chainable + return windowAction.close( 'editCheckDialog' ).closed.then( () => {}, () => {} ).then( () => { + toolbar.toggle( false ); + target.onContainerScroll(); + // surface.executeCommand( 'editCheckDialogBeforeSave' ); + return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true } ) + .then( ( instance ) => instance.closing ) + .then( ( data ) => { + reviewToolbar.$element.remove(); + toolbar.toggle( true ); + target.toolbar = toolbar; + if ( $contextContainer ) { + surface.context.popup.$container = $contextContainer; + surface.context.popup.containerPadding = contextPadding; + } + // Creating a new PositionedTargetToolbar stole the + // toolbar windowmanagers, so we need to make the + // original toolbar reclaim them: + toolbar.disconnect( target ); + target.setupToolbar( surface ); + target.onContainerScroll(); + + if ( data ) { + const delay = ve.createDeferred(); + // If they inserted, wait 2 seconds on desktop + // before showing save dialog to make sure insertions are finialized + setTimeout( () => { + ve.track( 'counter.editcheck.preSaveChecksCompleted' ); + delay.resolve(); + }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); + return delay.promise(); + } else { + // closed via "back" or otherwise + ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); + return ve.createDeferred().reject().promise(); + } + } ); + } ); } ); } else { // Counterpart to earlier preSaveChecksShown, for use in tracking From de84364ae8d0dcec6ab207d23c7e98cb841f8c5f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Dec 2024 16:24:49 +0000 Subject: [PATCH 096/730] EditCheck: Don't scroll in mid-edit checks except on user interaction with EditCheck Change-Id: Ic8268a87eb010ddac480f0375ad794dc2682e1f6 --- editcheck/modules/EditCheckDialog.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 4c8fe52121..a4583007f7 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -36,6 +36,8 @@ ve.ui.EditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; ve.ui.EditCheckDialog.static.framed = false; +ve.ui.EditCheckDialog.static.activeSurface = true; + // Invisible title for accessibility ve.ui.EditCheckDialog.static.title = OO.ui.deferMsg( 'editcheck-review-title' ); @@ -103,7 +105,7 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { this.positionDebounced = ve.debounce( this.position.bind( this ), 100 ); }; -ve.ui.EditCheckDialog.prototype.update = function () { +ve.ui.EditCheckDialog.prototype.update = function ( fromUserAction ) { const surfaceView = this.surface.getView(); // We only regenerate the checks on-change during the edit. If we're in // the proofreading step, no new checks should appear based on changes: @@ -137,12 +139,14 @@ ve.ui.EditCheckDialog.prototype.update = function () { surfaceView.setReviewMode( true, highlightNodes ); } - this.setCurrentOffset( newOffset ); + this.setCurrentOffset( newOffset, fromUserAction ); }; ve.ui.EditCheckDialog.prototype.position = function () { this.drawHighlights(); - this.scrollCurrentCheckIntoViewDebounced(); + if ( this.reviewMode ) { + this.scrollCurrentCheckIntoViewDebounced(); + } }; ve.ui.EditCheckDialog.prototype.drawHighlights = function () { @@ -179,8 +183,9 @@ ve.ui.EditCheckDialog.prototype.drawHighlights = function () { * Set the offset of the current check, within the list of all checks * * @param {number} offset + * @param {boolean} fromUserAction */ -ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset ) { +ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAction ) { // TODO: work out how to tell the window to recalculate height here this.currentOffset = Math.max( 0, offset ); @@ -214,7 +219,9 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset ) { ) ); - this.scrollCurrentCheckIntoViewDebounced(); + if ( fromUserAction || this.reviewMode ) { + this.scrollCurrentCheckIntoViewDebounced(); + } } else { surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); } @@ -332,7 +339,7 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( widget, choice, actionChosen, this.update(); }, pause ); } else { - this.updateDebounced(); + this.updateDebounced( true ); } } ); }; @@ -347,7 +354,7 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( widget, choice, actionChosen, ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( check, index, collapsed ) { if ( !collapsed ) { // expanded one - this.setCurrentOffset( this.currentChecks.indexOf( check ) ); + this.setCurrentOffset( this.currentChecks.indexOf( check ), true ); } }; @@ -365,14 +372,14 @@ ve.ui.EditCheckDialog.prototype.onCloseButtonClick = function () { * Handle click events from the next button */ ve.ui.EditCheckDialog.prototype.onNextButtonClick = function () { - this.setCurrentOffset( this.currentOffset + 1 ); + this.setCurrentOffset( this.currentOffset + 1, true ); }; /** * Handle click events from the previous button */ ve.ui.EditCheckDialog.prototype.onPreviousButtonClick = function () { - this.setCurrentOffset( this.currentOffset - 1 ); + this.setCurrentOffset( this.currentOffset - 1, true ); }; /* Registration */ From 80ab08a1cd19cee29cb6e7f65b456989905691fa Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 17 Dec 2024 15:40:26 +0000 Subject: [PATCH 097/730] EditCheck: Only preserve native selection on desktop On mobile, we need to deactivate the surface so that the checks are visible where the virtual keyboard would be. Change-Id: Ib108f8a0abb6fe9b503ac394188d3468f9a316cb --- editcheck/modules/EditCheckDialog.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index a4583007f7..59698ac8b2 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -36,7 +36,8 @@ ve.ui.EditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; ve.ui.EditCheckDialog.static.framed = false; -ve.ui.EditCheckDialog.static.activeSurface = true; +// TODO: Keep surface active on mobile for some checks? +ve.ui.EditCheckDialog.static.activeSurface = !OO.ui.isMobile(); // Invisible title for accessibility ve.ui.EditCheckDialog.static.title = OO.ui.deferMsg( 'editcheck-review-title' ); From aea69c3c22e1616a7839c201abb51c1260f5380c Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 19 Dec 2024 08:23:29 +0100 Subject: [PATCH 098/730] Localisation updates from https://translatewiki.net. Change-Id: Iea06b5dfeb12c015bdfb8311b792d0206468e3c6 --- editcheck/i18n/fa.json | 22 +++++++++++++++++++++- i18n/ve-mw/ang.json | 7 ++++--- i18n/ve-mw/fi.json | 2 +- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/editcheck/i18n/fa.json b/editcheck/i18n/fa.json index 9ee05300f3..dd7a5cba5d 100644 --- a/editcheck/i18n/fa.json +++ b/editcheck/i18n/fa.json @@ -4,5 +4,25 @@ "Jeeputer" ] }, - "editcheck-review-title": "بازبینی تغییرات" + "editcheck-dialog-action-no": "خیر", + "editcheck-dialog-action-yes": "بله", + "editcheck-dialog-addref-description": "با افزودن یک یادکرد، به مخاطبان در یافتن مبدأ این اطلاعات کمک کنید.", + "editcheck-dialog-addref-reject-question": "چرا نمی‌خواهید یادکرد اضافه کنید؟", + "editcheck-dialog-addref-reject-description": "سایر ویرایشگران ممکن است بخواهند از دلیل تصمیم شما برای رد کردن یادکرد آگاه شوند.", + "editcheck-dialog-addref-reject-irrelevant": "معتقدم یادکردها با تغییراتی که اعمال کرده‌ام مرتبط نیستند", + "editcheck-dialog-addref-reject-common-knowledge": "اطلاعاتی که اضافه کرده‌ام به‌طور گسترده‌ای محرز است", + "editcheck-dialog-addref-reject-uncertain": "از این که چه یادکردی باید اضافه کنم، مطمئن نیستم", + "editcheck-dialog-addref-reject-other": "سایر", + "editcheck-dialog-addref-success-notify": "بابت افزودن یادکرد از شما ممنونیم!", + "editcheck-dialog-addref-title": "افزودن یک یادکرد", + "editcheck-dialog-title": "پیش از انتشار", + "editcheck-review-title": "بازبینی تغییرات", + "tag-editcheck-reference-decline-common-knowledge": "بررسی ویرایش (ارجاعات) رد شد (دانش عمومی)", + "tag-editcheck-reference-decline-common-knowledge-description": "ارجاع بررسی ویرایش تحت عنوان دانش عمومی رد شد", + "tag-editcheck-reference-decline-irrelevant": "بررسی ویرایش (ارجاعات) رد شد (نامرتبط)", + "tag-editcheck-reference-decline-irrelevant-description": "ارجاع بررسی ویرایش تحت عنوان نامرتبط رد شد", + "tag-editcheck-reference-decline-other": "بررسی ویرایش (ارجاعات) رد شد (سایر)", + "tag-editcheck-reference-decline-other-description": "ارجاع بررسی ویرایش به دلیل که در فهرست موجود نیست، رد شد", + "tag-editcheck-reference-decline-uncertain": "بررسی ویرایش (ارجاعات) رد شد (نامطمئن)", + "tag-editcheck-reference-decline-uncertain-description": "ارجاع بررسی ویرایش تحت عنوان مطمئن نبودن رد شد" } diff --git a/i18n/ve-mw/ang.json b/i18n/ve-mw/ang.json index f42a1481c2..ed36bdbc71 100644 --- a/i18n/ve-mw/ang.json +++ b/i18n/ve-mw/ang.json @@ -4,14 +4,15 @@ "Gott wisst", "Heahwrita", "Hogweard", - "JJohnson1701" + "JJohnson1701", + "Rocioun" ] }, - "tooltip-ca-ve-edit": "Adiht þisne tramet", + "tooltip-ca-ve-edit": "Adihtan þisne tramet", "visualeditor-ca-createlocaldescriptionsource": "Besete stowlicre gemearcunge fruman", "visualeditor-ca-createsource": "Scippan fruman", "visualeditor-ca-editsource": "Adiht fruman", - "visualeditor-ca-editsource-section": "adiht fruman", + "visualeditor-ca-editsource-section": "adihtan fruman", "visualeditor-descriptionpagelink": "Project:VisualEditor", "visualeditor-linkinspector-convert-link-isbn": "Onwendaþ to ISBN hlenc", "visualeditor-magiclinknodeinspector-title-isbn": "ISBN hlenc" diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 63b76a04e2..6dbd40746d 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -101,7 +101,7 @@ "visualeditor-dialog-media-position-section": "Sijainti", "visualeditor-dialog-media-position-section-help": "Voit asettaa, missä tämä mediakohde näkyy sivulla. Toiminnolla voi katkaista pitkät, kuvista koostuvat rivit sivun toisessa reunassa.", "visualeditor-dialog-media-save": "Tallenna", - "visualeditor-dialog-media-search-tab-search": "Etsi", + "visualeditor-dialog-media-search-tab-search": "Haku", "visualeditor-dialog-media-search-tab-upload": "Tallenna", "visualeditor-dialog-media-size-section": "Kuvan koko", "visualeditor-dialog-media-size-section-help": "Valitse, minkäkokoisena kuva näkyy sivulla. Tämä olisi lähes aina olla normaali koko: mukautettu koko häiritsee sivun asettelua ja tekee niistä epäjohdonmukaisia.", From ad0041f6c7a33758860d9db63f70378a0f60bac6 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 20 Dec 2024 08:35:12 +0100 Subject: [PATCH 099/730] Localisation updates from https://translatewiki.net. Change-Id: I8a16c60a4e567cacad401010b56912e4700cde7e --- editcheck/i18n/io.json | 12 ++++++++++++ i18n/ve-mw/mui.json | 6 +++--- i18n/ve-wmf/io.json | 1 + 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 editcheck/i18n/io.json diff --git a/editcheck/i18n/io.json b/editcheck/i18n/io.json new file mode 100644 index 0000000000..4cb3df5333 --- /dev/null +++ b/editcheck/i18n/io.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Joao Xavier" + ] + }, + "editcheck-dialog-addref-reject-common-knowledge": "L'informo quan me adjuntes esas ample konocata", + "tag-editcheck-reference-decline-common-knowledge": "Kontrolo di redakturi (referi) refuzita (ordinara konoco)", + "tag-editcheck-reference-decline-irrelevant": "Kontrolo di redakturi (referi) refuzita (senimporta)", + "tag-editcheck-reference-decline-other": "Kontrolo di redakturi (referi) refuzita (altra motivo)", + "tag-editcheck-reference-decline-uncertain": "Kontrolo di redakturi (referi) refuzita (necerta)" +} diff --git a/i18n/ve-mw/mui.json b/i18n/ve-mw/mui.json index f8e3531f54..9cc7fc5b21 100644 --- a/i18n/ve-mw/mui.json +++ b/i18n/ve-mw/mui.json @@ -7,8 +7,8 @@ }, "tooltip-ca-ve-edit": "Robah laman ni", "visualeditor-ca-createlocaldescriptionsource": "Tamba sumber keterangan sinila", - "visualeditor-ca-createsource": "Gawé' sumber", - "visualeditor-ca-editsource": "Dandani sumber", - "visualeditor-ca-editsource-section": "dandani sumber", + "visualeditor-ca-createsource": "Gawé' kodenyo", + "visualeditor-ca-editsource": "Dandani kodenyo", + "visualeditor-ca-editsource-section": "dandani kodenyo", "visualeditor-descriptionpagelink": "Project:VisualEditor" } diff --git a/i18n/ve-wmf/io.json b/i18n/ve-wmf/io.json index b239c21954..bcd849ef91 100644 --- a/i18n/ve-wmf/io.json +++ b/i18n/ve-wmf/io.json @@ -6,6 +6,7 @@ ] }, "tag-editcheck-newcontent-description": "Redakto-kontrolo (''EditCheck'') kredas ke nova kontenajo adjuntesis a la pagino", + "tag-editcheck-references-activated": "Kontrolo di redakti (referi) pronta", "tag-visualeditor": "Redakto per VisualEditor", "tag-visualeditor-description": "Redaktita per la [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]", "tag-visualeditor-needcheck": "Redakto per VisualEditor: Kontrolar", From 3b6c81d22403712759a74b16578df3712f4e4074 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 20 Dec 2024 13:12:04 +0000 Subject: [PATCH 100/730] Follow-up I93275d8a: Fix updateSubmodule.sh when i18n lists empty We need to allow for the grep commands to return empty strings like we do in the lines above. This error was previously suppressed because we incorrectly prepending "- " unconditionally. Change-Id: I3a80e8790d879cbce021bf06eeb6746862bfdd1a --- bin/updateSubmodule.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bin/updateSubmodule.sh b/bin/updateSubmodule.sh index 2319922f00..1d2818b200 100755 --- a/bin/updateSubmodule.sh +++ b/bin/updateSubmodule.sh @@ -50,14 +50,16 @@ TASKS=$(git log ..$TARGET --no-merges --format=format:%B | grep "Bug: T" | sort # Ensure script continues if grep "fails" (returns nothing) with || : (due to -e flag in bash) -# Addede/removed i18n keys +# Added/removed i18n keys ADDED_I18N_KEYS=$(git diff HEAD..$TARGET -- i18n/en.json | grep -E '^\+' | grep --color=never -vE '^\+\+\+' | sed -E 's/^\+\s*"([^"]+)":.*/\1/' | sed 's/^/- /' || :) DELETED_I18N_KEYS=$(git diff HEAD..$TARGET -- i18n/en.json | grep -E '^\-' | grep --color=never -vE '^\-\-\-' | sed -E 's/^\-\s*"([^"]+)":.*/\1/' | sed 's/^/- /' || :) + # Find common keys (modified keys) MODIFIED_KEYS=$(echo -e "$ADDED_I18N_KEYS\n$DELETED_I18N_KEYS" | sort | uniq -d) + # Remove modified keys from the added and removed lists - ADDED_I18N_KEYS=$(echo "$ADDED_I18N_KEYS" | grep -vxF -f <(echo "$MODIFIED_KEYS")) -DELETED_I18N_KEYS=$(echo "$DELETED_I18N_KEYS" | grep -vxF -f <(echo "$MODIFIED_KEYS")) + ADDED_I18N_KEYS=$(echo "$ADDED_I18N_KEYS" | grep -vxF -f <(echo "$MODIFIED_KEYS") || :) +DELETED_I18N_KEYS=$(echo "$DELETED_I18N_KEYS" | grep -vxF -f <(echo "$MODIFIED_KEYS") || :) # Added/removed files ADDED_FILES=$(git diff HEAD..$TARGET --name-only --diff-filter=A | grep --color=never -E "\.(js|css|less)$" | sed 's/^/- /' || :) From a75b1099f3ccd6c4c61fb9b8f8c3d36ade820473 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 20 Dec 2024 13:11:22 +0000 Subject: [PATCH 101/730] Update VE core submodule to master (dfb712599) New changes: f2ee08671 Replace x.slice(0,x.length-y) with x.slice(0,-y) 3640b5838 Localisation updates from https://translatewiki.net. 7354e18f6 build: Updating nanoid to 3.3.8 87328d996 Don't fire 'position' event before sidebar opens 0caebbe37 WindowAction: Return promises from close & toggle 915ab3dbe Move focus-preserving fix from SpecialCharacterDialog to WindowAction aecb5307c Localisation updates from https://translatewiki.net. 981885dda Localisation updates from https://translatewiki.net. 4cb78622d Set interactive-widget=resizes-content on mobile targets Bug: T379780 Change-Id: I51d1754d9eeeb294205813fd5510d6a253495585 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 5c98d9b418..dfb712599d 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 5c98d9b418bb40352e40daae108424bb591f9f01 +Subproject commit dfb712599d4e4c59dff56836529f9b99c1ac526e From 6c2fb78c12c924e3e3778d81424e1411ab801201 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 23 Dec 2024 08:26:01 +0100 Subject: [PATCH 102/730] Localisation updates from https://translatewiki.net. Change-Id: I3272deead3b450c5d55ac76dbcb023d4e27b660c --- i18n/ve-mw/ar.json | 2 ++ i18n/ve-mw/blk.json | 5 +++-- i18n/ve-mw/hu.json | 6 +++--- i18n/ve-mw/pa.json | 2 +- i18n/ve-wmf/nqo.json | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index 41374072a0..6fa6248bbe 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -55,6 +55,7 @@ "visualeditor-annotations-default-description": "هذا الجزء من الصفحة هو جزء من نطاق التعليقات التوضيحية.", "visualeditor-annotations-default-end": "نهاية النطاق الموضح", "visualeditor-annotations-default-start": "بداية النطاق الموضح", + "visualeditor-annotations-extended-documentation": "تم توسيع نطاق التعليقات التوضيحية هذا لأن المحتوى الذي يتضمنه لم يكن متداخلاً بشكل جيد. يوصى بالتأكد من أن المحتوى المتضمن تعليقات توضيحية متداخل بشكل جيد قبل تحريره؛ وإلا، فقد يتم إضافة تعليقات توضيحية إلى نطاق أكبر من المتوقع.", "visualeditor-autosave-modified-prompt-accept": "استئناف التحرير", "visualeditor-autosave-modified-prompt-message": "تم تحرير هذه الصفحة منذ آخر تحميل لها. هل ترغب {{GENDER:|أنت}} في استئناف {{GENDER:|تعديلك}} للمراجعة القديمة، أو بدء تعديل جديد للمراجعة الأحدث؟", "visualeditor-autosave-modified-prompt-reject": "بدء تعديل جديد", @@ -188,6 +189,7 @@ "visualeditor-dialog-transclusion-template-widget-aria": "اضغط على مفتاح المسافة لتحديد القالب.", "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "اضغط على Ctrl+Del لحذف القالب ومعامِلاته وقيمها.", "visualeditor-dialog-transclusion-add-wikitext": "أضف نص ويكي", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "لا يمكن إضافة \"$1\" لأن المعلمة تم وضع علامة عليها كـ [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated deprecated].", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "لا يمكن إضافة المعلمة \"$2\" مرتين.", "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "المعلمة \"$2\" متاحة للاستخدام بالفعل. يرجى التحقق من الخيارات في الشريط الجانبي.", "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 هو حرف محظور. يرجى إزالته لإضافة المعلمة.", diff --git a/i18n/ve-mw/blk.json b/i18n/ve-mw/blk.json index 793408b362..e20bac7426 100644 --- a/i18n/ve-mw/blk.json +++ b/i18n/ve-mw/blk.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Khun Kt", + "Matma Rex", "Ninjastrikers", "လွိုင်ႏအာထင်ႏထိုထဲင်း", "咽頭べさ" @@ -131,8 +132,8 @@ "visualeditor-mwsignature-tool": "နာꩻစူမုဲင်", "visualeditor-preference-tabs": "ခြပ်ချော်ꩻမုꩻ အနယ်ꩻ:", "visualeditor-preference-tabs-multi-tab": "အွောန်ႏနယ် မွဉ်းဖျင်စနိစ်နီဗာႏလွုမ်း", - "visualeditor-preference-tabs-prefer-ve": "မိဉ်ႏထွာနွောင်ꩻနဝ်ꩻ ဖေႏခါꩻသေႏသေႏသွော့ မွဉ်းဖျင်ထာꩻထီႏစနိစ်သြ", - "visualeditor-preference-tabs-prefer-wt": "မိဉ်ႏထွာနွောင်ꩻနဝ်ꩻ ဖေႏခါꩻသေႏသေႏသွော့ မွဉ်းဖျင်ထာꩻထီႏစနိစ်သြ", + "visualeditor-preference-tabs-prefer-ve": "Always give me the visual editor if possible", + "visualeditor-preference-tabs-prefer-wt": "Always give me the source editor", "visualeditor-preference-tabs-remember-last": "တောင်ꩻယူႏလꩻ အဆုဲင်ꩻသွတ်ꩻ မွဉ်းဖျင်စနိစ်", "visualeditor-rebase-client-export": "ဒင်ႏပသာ", "visualeditor-rebase-client-import": "ဒင်ႏသွင်ꩻသော့ꩻ", diff --git a/i18n/ve-mw/hu.json b/i18n/ve-mw/hu.json index 2557cedc64..5b7906bf4a 100644 --- a/i18n/ve-mw/hu.json +++ b/i18n/ve-mw/hu.json @@ -30,9 +30,9 @@ "tooltip-ca-createsource": "Az oldal forráskódjának létrehozása", "tooltip-ca-createsource-local": "A helyi leírólap forráskódjának létrehozása", "visualeditor-advancedsettings-tool": "Haladó beállítások", - "visualeditor-annotations-default-description": "Ez a lap hozzátartozik egy jegyzeti tartományhoz.", - "visualeditor-annotations-default-end": "A jegyzett tartomány vége", - "visualeditor-annotations-default-start": "A jegyzett tartomány kezdése", + "visualeditor-annotations-default-description": "A lapnak ez a része egy annotált tartományhoz tartozik.", + "visualeditor-annotations-default-end": "Az annotált tartomány vége", + "visualeditor-annotations-default-start": "Az annotált tartomány kezdete", "visualeditor-autosave-modified-prompt-accept": "Szerkesztés folytatása", "visualeditor-autosave-modified-prompt-message": "Valaki megváltoztatta a lapot, mióta elkezdted szerkeszteni. Szeretnéd folytatni a régi változat szerkesztését, vagy szeretnél új szerkesztést kezdeni a legújabb változat alapján?", "visualeditor-autosave-modified-prompt-reject": "Új szerkesztés kezdése", diff --git a/i18n/ve-mw/pa.json b/i18n/ve-mw/pa.json index 62a608041e..b6543efb2a 100644 --- a/i18n/ve-mw/pa.json +++ b/i18n/ve-mw/pa.json @@ -35,7 +35,7 @@ "visualeditor-desc": "ਮੀਡੀਆਵਿਕੀ ਲਈ ਵਿਜ਼ੁਅਲ ਐਡੀਟਰ", "visualeditor-descriptionpagelink": "Project:ਵਿਜ਼ੁਅਲ ਐਡੀਟਰ", "visualeditor-dialog-media-alttext-section": "ਬਦਲਵੀਂ ਲਿਖਤ", - "visualeditor-dialog-media-alttext-section-help": "ਤੁਸੀਂ ਇਸਦੀ ਵਰਤੋਂ ਲਿਖਤ ਦਾ ਵਰਣਨ ਕਰਨ ਲਈ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਅਜਿਹੇ ਲੋਕਾਂ ਲਈ ਹੈ ਜੋ ਇਸ ਆਈਟਮ ਨੂੰ ਨਹੀਂ ਦੇਖ ਸਕਦੇ। ਇਹ ਵਰਣਨ ਵਧੀਆ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਕਿ ਇਸ ਨਾਲ ਇਸ ਮੀਡੀਆ ਆਈਟਮ ਦਾ ਮਕਸਦ ਅਤੇ ਜਾਣਕਾਰੀ ਸਮਝ ਵਿੱਚ ਆਵੇ। ਇਹ ਅੰਨ੍ਹੇ ਵਰਤੋਂਕਾਰਾਂ ਅਤੇ ਉਹਨਾਂ ਲੋਕਾਂ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਜੋ ਸਕ੍ਰੀਨ-ਪੜ੍ਹਨ ਵਾਲੇ ਸਾਫਟਵੇਅਰ ਅਤੇ ਸਿਰਫ਼-ਲਿਖਤ ਵਾਲੇ ਬਰਾਊਜ਼ਰ ਵਰਤਦੇ ਹਨ।", + "visualeditor-dialog-media-alttext-section-help": "ਤੁਸੀਂ ਇਸਦੀ ਵਰਤੋਂ ਉਹਨਾਂ ਲੋਕਾਂ ਲਈ ਇੱਕ ਲਿਖਤ ਦਾ ਵੇਰਵਾ ਦੇਣ ਲਈ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਇਸ ਮਜ਼ਮੂਨ ਨੂੰ ਨਹੀਂ ਦੇਖ ਸਕਦੇ। ਮੀਡੀਆ ਮਜ਼ਮੂਨ ਵੱਲੋਂ ਦਿੱਤੀ ਗਈ ਜਾਣਕਾਰੀ ਅਤੇ ਉਦੇਸ਼ ਨੂੰ ਸਮਝਣ ਲਈ ਇਹ ਵੇਰਵਾ ਕਾਫ਼ੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਅੰਨ੍ਹੇ ਵਰਤੋਂਕਾਰਾਂ ਅਤੇ ਅਜਿਹੇ ਲੋਕਾਂ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਜੋ ਸਕ੍ਰੀਨ-ਪੜ੍ਹਨ ਵਾਲੇ ਸਾਫਟਵੇਅਰ ਜਾਂ ਸਿਰਫ਼-ਲਿਖਤ ਵਾਲੇ ਬਰਾਊਜ਼ਰ ਵਰਤਦੇ ਹਨ।", "visualeditor-dialog-media-change-image": "ਤਸਵੀਰ ਬਦਲੋ", "visualeditor-dialog-media-choose-image": "ਇਹ ਤਸਵੀਰ ਵਰਤੋ", "visualeditor-dialog-media-content-description-link": "(ਵੇਰਵਾ ਸਫ਼ਾ)", diff --git a/i18n/ve-wmf/nqo.json b/i18n/ve-wmf/nqo.json index acd459abd8..b474b311e4 100644 --- a/i18n/ve-wmf/nqo.json +++ b/i18n/ve-wmf/nqo.json @@ -7,7 +7,7 @@ "tag-editcheck-newcontent-description": "EditCheck ߦߴߊ߬ ߖߌ߰ ߟߊ߫ ߞߏ߫ ߞߣߐߘߐ߫ ߞߎߘߊ߫ ߓߘߊ߫ ߞߊ߬ߝߏ߬ ߞߣߐߘߐ ߡߊ߬", "tag-editcheck-newreference-description": "ߦߟߌߡߊߛߙߋ ߘߏ߫ ߓߘߊ߫ ߝߙߊ߬ ߞߐߜߍ ߟߊ߫", "tag-editcheck-references-description": "EditCheck ߦߴߊ߬ ߖߊ߬ߕߋ߬ ߟߊ߫ ߟߋ߬ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߣߌ߲߬ ߘߐ߫", - "tag-editcheck-references-activated": " ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߬ߟߌ (ߦߟߌߡߊߛߙߋ ߟߎ߬) ߓߘߊ߫ ߟߊߞߎߣߎ߲߫", + "tag-editcheck-references-activated": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߬ߟߌ (ߦߟߌߡߊߛߙߋ ߟߎ߬) ߓߘߊ߫ ߟߊߞߎߣߎ߲߫", "tag-editcheck-references-activated-description": "EdidCheck ߦߴߊ߬ ߖߌ߰ ߟߊ߫ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫، ߊ߬ ߘߏ߲߬ UI ߓߘߊ߫ ߦߌ߬ߘߊ߬.", "tag-visualeditor": "ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲", "tag-visualeditor-description": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߡߍ߲ ߠߎ߬ ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ [[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߗߏ߯ ߡߊߦߟߍߡߊ߲]] ߘߐ߫", From ebd96109006851aeeafec82e74ef9dce8de9c0e0 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 24 Dec 2024 08:17:15 +0100 Subject: [PATCH 103/730] Localisation updates from https://translatewiki.net. Change-Id: I579cfb225d7faaedd7cf22a1efef4fd259d7bd88 --- i18n/ve-mw/ar.json | 4 ++++ i18n/ve-mw/pa.json | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index 6fa6248bbe..ec76211cbe 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -186,9 +186,12 @@ "visualeditor-dialog-template-title": "قالب", "visualeditor-dialog-transclusion-action-save": "احفظ", "visualeditor-dialog-transclusion-template-title-nonexistent": "هذا القالب غير موجود.", + "visualeditor-dialog-transclusion-template-title-modifier": "لا تتوفر وثائق القالب و[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameters] (إذا كانت موجودة) عند تحرير القوالب باستخدام بناء الجملة المتداخل أو المعدلات، مثل [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst].", "visualeditor-dialog-transclusion-template-widget-aria": "اضغط على مفتاح المسافة لتحديد القالب.", + "visualeditor-dialog-transclusion-template-widget-aria-selected": "اضغط على Ctrl+Del لحذف القالب ومعامِلاته وقيمها. اضغط على Ctrl+Shift+Arrows لتحريك القالب لأعلى أو لأسفل.", "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "اضغط على Ctrl+Del لحذف القالب ومعامِلاته وقيمها.", "visualeditor-dialog-transclusion-add-wikitext": "أضف نص ويكي", + "visualeditor-dialog-transclusion-add-param-error-alias": "\" $1 \" تمت إضافته بالفعل كـ \" $2 \". يرجى التحقق من الخيارات في الشريط الجانبي. يرجع هذا إما إلى استخدام [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases aliases] أو [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label labels].", "visualeditor-dialog-transclusion-add-param-error-deprecated": "لا يمكن إضافة \"$1\" لأن المعلمة تم وضع علامة عليها كـ [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated deprecated].", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "لا يمكن إضافة المعلمة \"$2\" مرتين.", "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "المعلمة \"$2\" متاحة للاستخدام بالفعل. يرجى التحقق من الخيارات في الشريط الجانبي.", @@ -356,6 +359,7 @@ "visualeditor-recreate": "لقد تم حذف هذه الصفحة بعد أن بدأت بتحريرها. اضغط على «$1» لإعادة إنشائها.", "visualeditor-redirect-description": "تحويل إلى $1", "visualeditor-savedialog-identify-anon": "لم تعد تسجيل الدخول إذا استمررت في ذلك، سيتم تسجيل عنوان IP الخاص بك في تاريخ تحرير هذه الصفحة.", + "visualeditor-savedialog-identify-temp": "أنت تستخدم الآن اسم المستخدم المؤقت $1 . إذا تابعت، فسيتم ربط تعديلك باسم المستخدم هذا.", "visualeditor-savedialog-identify-user": "لقد سجلت الدخول على أنك [[User:$1|$1]]. سيرتبط تعديلك بهذا الحساب إذا حفظت هذا التعديل.", "visualeditor-savedialog-keyboard-shortcut-submit": "يمكنك الضغط على $1 لحفظ تعديلك.", "visualeditor-savedialog-label-publish-short": "انشر", diff --git a/i18n/ve-mw/pa.json b/i18n/ve-mw/pa.json index b6543efb2a..81b83fa45e 100644 --- a/i18n/ve-mw/pa.json +++ b/i18n/ve-mw/pa.json @@ -55,7 +55,7 @@ "visualeditor-dialog-media-position-section": "ਸਥਿਤੀ", "visualeditor-dialog-media-save": "ਸਾਂਭੋ", "visualeditor-dialog-media-search-tab-search": "ਖੋਜ", - "visualeditor-dialog-media-search-tab-upload": "ਅਪਲੋਡ", + "visualeditor-dialog-media-search-tab-upload": "ਚੜ੍ਹਾਉ", "visualeditor-dialog-media-size-section": "ਤਸਵੀਰ ਦਾ ਅਕਾਰ", "visualeditor-dialog-media-title": "ਮੀਡੀਆ ਸੈਟਿੰਗਾਂ", "visualeditor-dialog-media-type-border": "ਹੱਦ", @@ -64,7 +64,7 @@ "visualeditor-dialog-media-type-none": "ਮੁਢਲੀ", "visualeditor-dialog-media-type-section": "ਤਸਵੀਰ ਕਿਸਮ", "visualeditor-dialog-media-type-thumb": "ਛੋਟਾ ਆਕਾਰ", - "visualeditor-dialog-media-upload": "ਅਪਲੋਡ", + "visualeditor-dialog-media-upload": "ਚੜ੍ਹਾਉ", "visualeditor-dialog-meta-advancedsettings-label": "ਵਧੇਰੇ ਸੈਟਿੰਗ", "visualeditor-dialog-meta-advancedsettings-section": "ਵਧੇਰੇ ਸੈਟਿੰਗ", "visualeditor-dialog-meta-categories-addcategory-label": "ਇਸ ਸਫ਼ੇ ਤੇ ਇੱਕ ਸ਼੍ਰੇਣੀ ਸ਼ਾਮਲ ਕਰੋ", From 584137bb079532aba2aed657d8169fbf8d3a7e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 21 Sep 2023 00:07:30 +0200 Subject: [PATCH 104/730] Use abort signals in mw.Api code Depends-On: Iec338e9f595b452c19ce8e74eb81339fbce11640 Change-Id: Ia803b4eab766768c2c8a096c308958b48eb34af2 --- .../ve-mw/ce/nodes/ve.ce.MWSignatureNode.js | 31 ++++------------ .../ve-mw/init/targets/ve.init.mw.Target.js | 37 +++++++------------ 2 files changed, 20 insertions(+), 48 deletions(-) diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWSignatureNode.js b/modules/ve-mw/ce/nodes/ve.ce.MWSignatureNode.js index b421fab118..f09ea7b736 100644 --- a/modules/ve-mw/ce/nodes/ve.ce.MWSignatureNode.js +++ b/modules/ve-mw/ce/nodes/ve.ce.MWSignatureNode.js @@ -107,25 +107,14 @@ ve.ce.MWSignatureNode.prototype.onTeardown = function () { */ ve.ce.MWSignatureNode.prototype.generateContents = function () { const doc = this.getModel().getDocument(); - let abortable, aborted; - const abortedPromise = ve.createDeferred().reject( 'http', - { textStatus: 'abort', exception: 'abort' } ).promise(); - - function abort() { - aborted = true; - if ( abortable && abortable.abort ) { - abortable.abort(); - } - } + const api = ve.init.target.getContentApi( doc ); + const ajaxOptions = {}; + const abortable = api.makeAbortablePromise( ajaxOptions ); // Acquire a temporary user username before previewing, so that signatures // display the temp user instead of IP user. (T331397) return mw.user.acquireTempUserName() .then( () => { - if ( aborted ) { - return abortedPromise; - } - // We must have only one top-level node, this is the easiest way. const wikitext = '~~~~'; @@ -133,35 +122,29 @@ ve.ce.MWSignatureNode.prototype.generateContents = function () { // meta attributes (that may or may not be required). // We could try hacking up one (or even both) of these, but just calling the two parsers // in order seems slightly saner. - return ( abortable = ve.init.target.getContentApi( doc ).post( { + return api.post( { action: 'parse', text: wikitext, contentmodel: 'wikitext', prop: 'text', onlypst: true - } ) ); + }, ajaxOptions ); } ) .then( ( pstResponse ) => { - if ( aborted ) { - return abortedPromise; - } const wikitext = ve.getProp( pstResponse, 'parse', 'text' ); if ( !wikitext ) { return ve.createDeferred().reject(); } - return ( abortable = ve.init.target.parseWikitextFragment( wikitext, true, doc ) ); + return ve.init.target.parseWikitextFragment( wikitext, true, doc, ajaxOptions ); } ) .then( ( parseResponse ) => { - if ( aborted ) { - return abortedPromise; - } if ( ve.getProp( parseResponse, 'visualeditor', 'result' ) !== 'success' ) { return ve.createDeferred().reject(); } // Simplified case of template rendering, don't need to worry about filtering etc return $( parseResponse.visualeditor.content ).contents().toArray(); } ) - .promise( { abort: abort } ); + .promise( abortable ); }; /* Registration */ diff --git a/modules/ve-mw/init/targets/ve.init.mw.Target.js b/modules/ve-mw/init/targets/ve.init.mw.Target.js index 2a56df59d0..36ac761732 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.Target.js +++ b/modules/ve-mw/init/targets/ve.init.mw.Target.js @@ -601,19 +601,13 @@ ve.init.mw.Target.prototype.getWikitextFragment = function ( doc, useRevision ) * @param {string} wikitext * @param {boolean} pst Perform pre-save transform * @param {ve.dm.Document} [doc] Parse for a specific document, defaults to current surface's + * @param {Object} [ajaxOptions] * @return {jQuery.Promise} Abortable promise */ -ve.init.mw.Target.prototype.parseWikitextFragment = function ( wikitext, pst, doc ) { - let abortable, aborted; - const abortedPromise = ve.createDeferred().reject( 'http', - { textStatus: 'abort', exception: 'abort' } ).promise(); - - function abort() { - aborted = true; - if ( abortable && abortable.abort ) { - abortable.abort(); - } - } +ve.init.mw.Target.prototype.parseWikitextFragment = function ( wikitext, pst, doc, ajaxOptions ) { + const api = this.getContentApi( doc ); + ajaxOptions = ajaxOptions || {}; + const abortable = api.makeAbortablePromise( ajaxOptions ); // Acquire a temporary user username before previewing or diffing, so that signatures and // user-related magic words display the temp user instead of IP user in the preview. (T331397) @@ -625,19 +619,14 @@ ve.init.mw.Target.prototype.parseWikitextFragment = function ( wikitext, pst, do } return tempUserNamePromise - .then( () => { - if ( aborted ) { - return abortedPromise; - } - return ( abortable = this.getContentApi( doc ).post( { - action: 'visualeditor', - paction: 'parsefragment', - page: this.getPageName( doc ), - wikitext: wikitext, - pst: pst - } ) ); - } ) - .promise( { abort: abort } ); + .then( () => api.post( { + action: 'visualeditor', + paction: 'parsefragment', + page: this.getPageName( doc ), + wikitext: wikitext, + pst: pst + }, ajaxOptions ) ) + .promise( abortable ); }; /** From f37ee6dea1f8cebe44a3bceb32c5ab0f7288c481 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 31 Dec 2024 08:17:53 +0100 Subject: [PATCH 105/730] Localisation updates from https://translatewiki.net. Change-Id: Idcb07c2bf0175b0730a6b0322d1807e65809e46c --- i18n/ve-mw/lb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index c6f46230a2..0e6ec0de73 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -267,7 +267,7 @@ "visualeditor-preference-newwikitexteditor-help": "Dëst gëtt heiansdo 'Wikitext-Editeur 2017' genannt.", "visualeditor-preference-tabs": "Ännerungsmodus:", "visualeditor-preference-tabs-multi-tab": "Déi zwee Ännerungs-Tabs weisen", - "visualeditor-preference-tabs-prefer-ve": "De visuellen Editeur ëmmer benotze wann et méiglech ass", + "visualeditor-preference-tabs-prefer-ve": "De visuellen Editeur ëmmer benotzen, wann et méiglech ass", "visualeditor-preference-tabs-prefer-wt": "Mir ëmmer de Wikitext-Editeur proposéieren", "visualeditor-preference-tabs-remember-last": "Mäi leschten Auteur verhalen", "visualeditor-preference-collab-label": "Kollaborativ änneren", From 0b50aef4252cc5dbfb2b36ae2c969d81322673a3 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 1 Jan 2025 08:23:34 +0100 Subject: [PATCH 106/730] Localisation updates from https://translatewiki.net. Change-Id: I74382250e70ffad43e3408ca4b6f166ae9e22622 --- i18n/ve-mw/lg.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/lg.json b/i18n/ve-mw/lg.json index 2f8d7ac1cd..9f20643514 100644 --- a/i18n/ve-mw/lg.json +++ b/i18n/ve-mw/lg.json @@ -2,9 +2,12 @@ "@metadata": { "authors": [ "Ainali", - "Selwanga" + "Selwanga", + "Ssemmanda will" ] }, + "visualeditor-ca-editsource": "Omuko gwa Edit Source", + "visualeditor-ca-editsource-section": "kolera mu edit source", "visualeditor-dialog-media-page-advanced": "Ekyawaggulu", "visualeditor-dialog-media-page-general": "Ekyawamu", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Kale" From 6eb0392df905249b0e41b312ede2bb159c4c6c5c Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 3 Jan 2025 08:32:16 +0100 Subject: [PATCH 107/730] Localisation updates from https://translatewiki.net. Change-Id: Ib939a755248f34c3e6eb3f13c8084e12f4a39b1f --- i18n/ve-mw/es.json | 2 +- i18n/ve-mw/kge.json | 5 +++-- i18n/ve-mw/pa.json | 2 +- i18n/ve-mw/smn.json | 2 ++ 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/i18n/ve-mw/es.json b/i18n/ve-mw/es.json index e7884c982b..5178c08887 100644 --- a/i18n/ve-mw/es.json +++ b/i18n/ve-mw/es.json @@ -385,7 +385,7 @@ "visualeditor-section-body-placeholder": "Nueva sección", "visualeditor-section-title-placeholder": "Asunto", "visualeditor-settings-tool": "Configuración de página", - "visualeditor-special-characters-group-other": "Usado a menudo", + "visualeditor-special-characters-group-other": "Utilizados a menudo", "visualeditor-templatesused-tool": "Plantillas utilizadas", "visualeditor-title-error": "Título inválido.", "visualeditor-toload": "El editor se cargará ahora. Si sigue apareciendo este mensaje después de unos segundos, [$1 recarga la página].", diff --git a/i18n/ve-mw/kge.json b/i18n/ve-mw/kge.json index 5af775b1fc..5e856f5ee8 100644 --- a/i18n/ve-mw/kge.json +++ b/i18n/ve-mw/kge.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ - "Es Krim 5 Juta Rasa" + "Es Krim 5 Juta Rasa", + "Jawadywn" ] }, "visualeditor-ca-createlocaldescriptionsource": "Tambahko sumbor panjabaran lokal", "visualeditor-ca-createsource": "Guway sumbor", "visualeditor-ca-editsource": "Dandani sumbor", - "visualeditor-ca-editsource-section": "Sunting sumbor", + "visualeditor-ca-editsource-section": "dandani sumbor", "visualeditor-descriptionpagelink": "Project:VisualEditor" } diff --git a/i18n/ve-mw/pa.json b/i18n/ve-mw/pa.json index 81b83fa45e..c113f151ff 100644 --- a/i18n/ve-mw/pa.json +++ b/i18n/ve-mw/pa.json @@ -42,7 +42,7 @@ "visualeditor-dialog-media-content-filename": "ਫ਼ਾਈਲ ਦਾ ਨਾਂ", "visualeditor-dialog-media-content-section": "ਸਿਰਲੇਖ", "visualeditor-dialog-media-goback": "ਪਿਛਾਂਹ", - "visualeditor-dialog-media-info-artist": "$1 ਦੁਆਰਾ ਅਪਲੋਡ ਕੀਤੀ ਗਈ", + "visualeditor-dialog-media-info-artist": "$1 ਵੱਲੋਂ ਚੜ੍ਹਾਈ ਗਈ", "visualeditor-dialog-media-info-audiofile": "ਅਵਾਜ਼ੀ ਫ਼ਾਈਲ", "visualeditor-dialog-media-info-created": "ਬਣਾਇਆ ਗਿਆ: $1", "visualeditor-dialog-media-info-meta-artist": "ਲੇਖਕ: $1", diff --git a/i18n/ve-mw/smn.json b/i18n/ve-mw/smn.json index d4ca0826de..8194d31b6f 100644 --- a/i18n/ve-mw/smn.json +++ b/i18n/ve-mw/smn.json @@ -69,6 +69,8 @@ "visualeditor-dialog-transclusion-add-param-save": "Lasseet parameetter", "visualeditor-dialog-transclusion-add-template": "Lasseet myenster", "visualeditor-dialog-transclusion-add-template-save": "Lasseet", + "visualeditor-dialog-transclusion-contextitem-loading": "Luođiimin…", + "visualeditor-dialog-transclusion-loading": "Luođiimin...", "visualeditor-dialog-transclusion-template-search": "Myensteruuccâm", "visualeditor-dialogbutton-template-tooltip": "Myenster", "visualeditor-languages-tool": "Kielah", From c543a8d12a8cf495ff1fcca8994e4392e69ed194 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 6 Jan 2025 08:26:40 +0100 Subject: [PATCH 108/730] Localisation updates from https://translatewiki.net. Change-Id: I5c54a4041351f5a428f4fe2f8742c3ab6cc149ae --- editcheck/i18n/tr.json | 7 +++++-- i18n/ve-mw/nl.json | 3 ++- i18n/ve-mw/ru.json | 3 ++- i18n/ve-mw/sr-ec.json | 2 ++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/editcheck/i18n/tr.json b/editcheck/i18n/tr.json index af5c32f180..7bd568aed2 100644 --- a/editcheck/i18n/tr.json +++ b/editcheck/i18n/tr.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Hedda" + "Hedda", + "Leo" ] }, "editcheck-dialog-action-no": "Hayır", @@ -13,5 +14,7 @@ "editcheck-dialog-addref-reject-other": "Diğer", "editcheck-dialog-addref-success-notify": "Kaynak eklediğiniz için teşekkür ederiz!", "editcheck-dialog-addref-title": "Kaynak ekle", - "editcheck-dialog-title": "Yayınlanmadan önce" + "editcheck-dialog-title": "Yayınlanmadan önce", + "tag-editcheck-reference-decline-common-knowledge": "Edit Check (kaynakça) reddedildi (genel bilgi)", + "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck kaynağı genel bilgi olduğu için reddedildi" } diff --git a/i18n/ve-mw/nl.json b/i18n/ve-mw/nl.json index 2e3f776639..188558929e 100644 --- a/i18n/ve-mw/nl.json +++ b/i18n/ve-mw/nl.json @@ -20,6 +20,7 @@ "Huhbakker", "Jdforrester", "JensRiskin", + "Jeroen N", "Keegan", "Kim Bruning", "Klaas van Buiten", @@ -288,7 +289,7 @@ "visualeditor-includes-includeonly-description": "Wanneer inhoud van deze pagina door een andere pagina wordt gebruikt, wordt hier de volgende aanvullende inhoud opgenomen:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Meer informatie over gedeeltelijke transclusie]", "visualeditor-languages-tool": "Talen", - "visualeditor-linkinspector-button-link-external": "Uitwendige pagina", + "visualeditor-linkinspector-button-link-external": "Externe koppeling", "visualeditor-linkinspector-button-link-internal": "Interne pagina's doorzoeken", "visualeditor-linkinspector-convert-link-isbn": "Omzetten naar ISBN-koppeling", "visualeditor-linkinspector-convert-link-pmid": "Omzetten naar PMID-koppeling", diff --git a/i18n/ve-mw/ru.json b/i18n/ve-mw/ru.json index eb71cea27d..5395b22e08 100644 --- a/i18n/ve-mw/ru.json +++ b/i18n/ve-mw/ru.json @@ -37,6 +37,7 @@ "NBS", "Niklem", "Nirovulf", + "Novichev", "Okras", "Ole Yves", "Pacha Tchernof", @@ -296,7 +297,7 @@ "visualeditor-includes-includeonly-description": "Когда содержание этой страницы используется на другой странице, то следующее дополнительное содержание будет внесено сюда:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Узнать больше о частичном включении]", "visualeditor-languages-tool": "Языки", - "visualeditor-linkinspector-button-link-external": "Внешний вебсайт", + "visualeditor-linkinspector-button-link-external": "Внешний веб-сайт", "visualeditor-linkinspector-button-link-internal": "Поиск внутренних страниц", "visualeditor-linkinspector-convert-link-isbn": "Превратить в ISBN-ссылку", "visualeditor-linkinspector-convert-link-pmid": "Превратить в PMID-ссылку", diff --git a/i18n/ve-mw/sr-ec.json b/i18n/ve-mw/sr-ec.json index 579b7da11c..0f344ebea4 100644 --- a/i18n/ve-mw/sr-ec.json +++ b/i18n/ve-mw/sr-ec.json @@ -228,6 +228,8 @@ "visualeditor-formatdropdown-format-mw-heading5": "Поднаслов 3", "visualeditor-formatdropdown-format-mw-heading6": "Поднаслов 4", "visualeditor-generating-wikitext-progress": "Генерисање викитекста", + "visualeditor-includes-noinclude-start": "Почетак садржаја који неће бити приказан при позиву шаблона", + "visualeditor-includes-noinclude-end": "Крај садржаја који неће бити приказан при позиву шаблона", "visualeditor-languages-tool": "Језици", "visualeditor-linkinspector-button-link-external": "Веб-сајт", "visualeditor-linkinspector-button-link-internal": "Претрага интерних страница", From 3ba774e7ca03a9ad00351cafd6fa167c53b0624f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 7 Jan 2025 08:15:35 +0100 Subject: [PATCH 109/730] Localisation updates from https://translatewiki.net. Change-Id: I2979de1703fb043603b872f4e9dd1e73118bf311 --- editcheck/i18n/nl.json | 10 +++++----- i18n/ve-mw/mg.json | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index aa63166754..15c87dd439 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -18,13 +18,13 @@ "editcheck-dialog-addref-success-notify": "Bedankt voor het toevoegen van een referentie!", "editcheck-dialog-addref-title": "Referentie toevoegen", "editcheck-dialog-title": "Voordat u dit publiceert", - "editcheck-review-title": "Wijzigingen beoordelen", - "tag-editcheck-reference-decline-common-knowledge": "EditCheck (referenties) afgewezen (algemene kennis)", + "editcheck-review-title": "Wijzigingen controleren", + "tag-editcheck-reference-decline-common-knowledge": "Edit Check (referenties) afgewezen (algemene kennis)", "tag-editcheck-reference-decline-common-knowledge-description": "De EditCheck-referentie is afgewezen als algemeen bekend", - "tag-editcheck-reference-decline-irrelevant": "Edit Check (referenties) afgewezen (irrelevant)", + "tag-editcheck-reference-decline-irrelevant": "Edit Check (referenties) afgewezen (niet relevant)", "tag-editcheck-reference-decline-irrelevant-description": "De EditCheck-referentie is afgewezen omdat deze niet relevant is", - "tag-editcheck-reference-decline-other": "EditCheck (referenties) geweigerd (overig)", + "tag-editcheck-reference-decline-other": "Edit Check (referenties) afgewezen (overig)", "tag-editcheck-reference-decline-other-description": "De EditCheck-referentie is geweigerd om een overige reden", - "tag-editcheck-reference-decline-uncertain": "EditCheck (referenties) geweigerd (onzeker)", + "tag-editcheck-reference-decline-uncertain": "Edit Check (referenties) afgewezen (twijfel)", "tag-editcheck-reference-decline-uncertain-description": "De EditCheck-referentie is afgewezen als onzeker" } diff --git a/i18n/ve-mw/mg.json b/i18n/ve-mw/mg.json index d593c818f2..8ac401d493 100644 --- a/i18n/ve-mw/mg.json +++ b/i18n/ve-mw/mg.json @@ -63,7 +63,7 @@ "visualeditor-dialog-table-collapsible": "Azo afintina", "visualeditor-dialog-table-sortable": "Azo alamina", "visualeditor-dialog-template-title": "Endrika", - "visualeditor-dialog-transclusion-add-template": "Hampiditra endirka", + "visualeditor-dialog-transclusion-add-template": "Hampiditra endrika", "visualeditor-dialog-transclusion-collapse-options": "Hanafina safidy", "visualeditor-dialog-transclusion-contextitem-description": "Navoaka avy amin'i: $1", "visualeditor-dialog-transclusion-expand-options": "Aseho ny safidy", @@ -72,7 +72,7 @@ "visualeditor-dialog-transclusion-required-parameter": "Sahan'ita ilaina", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Hiverina", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Tohizana ihany", - "visualeditor-dialogbutton-media-tooltip": "Haino aman-jery", + "visualeditor-dialogbutton-media-tooltip": "Sary sy haino aman-jery", "visualeditor-dialogbutton-template-tooltip": "Endrika", "visualeditor-editnotices-tooltip": "Hanova ny famoahan-kevitra", "visualeditor-formatdropdown-format-mw-heading1": "Lohatenim-pejy", @@ -82,8 +82,8 @@ "visualeditor-formatdropdown-format-mw-heading5": "Zana-dohateny 3", "visualeditor-formatdropdown-format-mw-heading6": "Zana-dohateny 4", "visualeditor-languages-tool": "Fiteny", - "visualeditor-linkinspector-button-link-external": "Rohy ivelany", - "visualeditor-linkinspector-button-link-internal": "Hitady pejy", + "visualeditor-linkinspector-button-link-external": "Tranonkala ivelany", + "visualeditor-linkinspector-button-link-internal": "Hikaroka pejy anaty", "visualeditor-linkinspector-convert-link-isbn": "Avadika ho rohy ISBN", "visualeditor-linkinspector-educationpopup-title": "Rohy", "visualeditor-mweditmodeve-popup-body": "Afaka mivadika amin'ny fanovana ara-maso na oviana na oviana ianao amin'ny alalan'ny fanindriana ity sarikely ity.", From 03125eb6402ea36babbe6b067202eb7df7224148 Mon Sep 17 00:00:00 2001 From: Jon Robson Date: Tue, 10 Sep 2024 17:32:55 -0700 Subject: [PATCH 110/730] VisualEditor must declare modules that are loaded on page load We have begun monitoring all modules loaded on page load, by requiring that they define modules added on page load in bundlesize.config.json This allows us to remove the hardcoded list in core in Ia4acca48cb231cc24f685e373aac1292082dd2cf These are initially defined as null as it is up to individual maintainers about whether they want to enforce values and the editing team have said they do not wish to do that. Bug: T360590 Change-Id: I414fc0e0c97d4236bba59938309eb0d7e0c5dcde --- bundlesize.config.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 bundlesize.config.json diff --git a/bundlesize.config.json b/bundlesize.config.json new file mode 100644 index 0000000000..6da4192e58 --- /dev/null +++ b/bundlesize.config.json @@ -0,0 +1,14 @@ +[ + { + "resourceModule": "ext.visualEditor.desktopArticleTarget.noscript", + "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.desktopArticleTarget.init", + "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.targetLoader", + "maxSize": null + } +] From 42ac30c5628fb61ec5681ff42adac5c0ae7bf46f Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 7 Jan 2025 17:00:52 -0600 Subject: [PATCH 111/730] System for registering experimental edit checks Adds a new config `VisualEditorEditCheckLoadExperimental` that triggers loading any check that's put in the `editcheck/modules/editchecks/experimental` directory. Change-Id: I44b6ea9e00ecb808e0ff91da67cf7120d5494812 --- editcheck/includes/Hooks.php | 53 +++++++++++++++++++ .../ConvertReferenceEditCheck.js | 0 .../{ => experimental}/TextMatchEditCheck.js | 0 editcheck/modules/init.js | 7 +-- extension.json | 11 ++-- includes/Hooks.php | 1 + 6 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 editcheck/includes/Hooks.php rename editcheck/modules/editchecks/{ => experimental}/ConvertReferenceEditCheck.js (100%) rename editcheck/modules/editchecks/{ => experimental}/TextMatchEditCheck.js (100%) diff --git a/editcheck/includes/Hooks.php b/editcheck/includes/Hooks.php new file mode 100644 index 0000000000..e391ec81f5 --- /dev/null +++ b/editcheck/includes/Hooks.php @@ -0,0 +1,53 @@ +getConfigFactory()->makeConfig( 'visualeditor' ); + + if ( !$veConfig->get( 'VisualEditorEditCheckLoadExperimental' ) ) { + return; + } + + $experimentalDir = dirname( __DIR__ ) . '/modules/editchecks/experimental'; + $files = array_diff( scandir( $experimentalDir ), [ '..', '.' ] ); + $veResourceTemplate = [ + 'localBasePath' => $experimentalDir, + 'remoteExtPath' => 'VisualEditor', + ]; + $resourceLoader->register( [ + 'ext.visualEditor.editCheck.experimental' => $veResourceTemplate + [ + 'group' => 'visualEditorA', + 'packageFiles' => $files + [ + [ + "name" => "init.js", + "main" => true, + "content" => array_reduce( $files, static function ( $carry, $file ) { + return $carry . "require('./$file');\n"; + }, "" ), + ], + ], + "dependencies" => [ 'ext.visualEditor.editCheck' ], + ] ] ); + } +} diff --git a/editcheck/modules/editchecks/ConvertReferenceEditCheck.js b/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js similarity index 100% rename from editcheck/modules/editchecks/ConvertReferenceEditCheck.js rename to editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js diff --git a/editcheck/modules/editchecks/TextMatchEditCheck.js b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js similarity index 100% rename from editcheck/modules/editchecks/TextMatchEditCheck.js rename to editcheck/modules/editchecks/experimental/TextMatchEditCheck.js diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 551cf1a0b0..04b7386d13 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -12,11 +12,12 @@ require( './EditCheckFactory.js' ); require( './EditCheckAction.js' ); require( './BaseEditCheck.js' ); -// TODO: Load these checks behind feature flags -// require( './editchecks/ConvertReferenceEditCheck.js' ); -// require( './editchecks/TextMatchEditCheck.js' ); require( './editchecks/AddReferenceEditCheck.js' ); +if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckExperimental ) { + mw.loader.using( 'ext.visualEditor.editCheck.experimental' ); +} + /** * Check if the document has content needing a reference, for AddReferenceEditCheck * diff --git a/extension.json b/extension.json index 3d0e942c9a..e2e9f83205 100644 --- a/extension.json +++ b/extension.json @@ -140,6 +140,10 @@ "value": true, "description": "Only allow a single edit check to be surfaced" }, + "VisualEditorEditCheckLoadExperimental": { + "value": false, + "description": "Load experimental edit checks" + }, "VisualEditorEditCheckABTest": { "value": false, "description": "A/B test Edit Check for all users. A/B bucket status will override VisualEditorEditCheck." @@ -217,7 +221,7 @@ "RecentChange_save": "VisualEditorHooks", "RedirectSpecialArticleRedirectParams": "VisualEditorHooks", "ResourceLoaderGetConfigVars": "VisualEditorHooks", - "ResourceLoaderRegisterModules": "VisualEditorHooks", + "ResourceLoaderRegisterModules": [ "VisualEditorHooks", "EditCheckHooks" ], "SkinEditSectionLinks": "VisualEditorHooks", "SkinTemplateNavigation::Universal": "VisualEditorHooks", "UserLoggedIn": "VisualEditorHooks" @@ -226,6 +230,9 @@ "VisualEditorHooks": { "class": "MediaWiki\\Extension\\VisualEditor\\Hooks" }, + "EditCheckHooks": { + "class": "MediaWiki\\Extension\\VisualEditor\\EditCheck\\Hooks" + }, "betapreferences": { "class": "MediaWiki\\Extension\\VisualEditor\\BetaPreferenceHooks", "services": [ @@ -623,8 +630,6 @@ "editcheck/modules/EditCheckAction.js", "editcheck/modules/BaseEditCheck.js", "editcheck/modules/editchecks/AddReferenceEditCheck.js", - "editcheck/modules/editchecks/ConvertReferenceEditCheck.js", - "editcheck/modules/editchecks/TextMatchEditCheck.js", { "name": "editcheck/modules/config.json", "callback": "\\MediaWiki\\Extension\\VisualEditor\\EditCheck\\ResourceLoaderData::getConfig" diff --git a/includes/Hooks.php b/includes/Hooks.php index f335cf7325..df0212dd8a 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -1160,6 +1160,7 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf 'editCheckTagging' => $veConfig->get( 'VisualEditorEditCheckTagging' ), 'editCheck' => $veConfig->get( 'VisualEditorEditCheck' ), 'editCheckSingle' => $veConfig->get( 'VisualEditorEditCheckSingleCheckMode' ), + 'editCheckExperimental' => $veConfig->get( 'VisualEditorEditCheckLoadExperimental' ), 'editCheckABTest' => $veConfig->get( 'VisualEditorEditCheckABTest' ), 'editCheckReliabilityAvailable' => ApiEditCheckReferenceUrl::isAvailable(), 'namespacesWithSubpages' => $namespacesWithSubpagesEnabled, From ae17fc3da4d37caf97714deae0c272460deecd1f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 8 Jan 2025 08:26:51 +0100 Subject: [PATCH 112/730] Localisation updates from https://translatewiki.net. Change-Id: I8d9e73c76a956859cb747c3abae0824fd5d8a7b4 --- i18n/ve-mw/cbk-zam.json | 3 +++ i18n/ve-mw/ljp.json | 11 +++++++++++ 2 files changed, 14 insertions(+) create mode 100644 i18n/ve-mw/ljp.json diff --git a/i18n/ve-mw/cbk-zam.json b/i18n/ve-mw/cbk-zam.json index 4d4ad8692f..665e2b05ee 100644 --- a/i18n/ve-mw/cbk-zam.json +++ b/i18n/ve-mw/cbk-zam.json @@ -1,8 +1,11 @@ { "@metadata": { "authors": [ + "Aristorkle", "WikiEditor50" ] }, + "visualeditor-ca-createsource": "Hace codigo", + "visualeditor-ca-editsource": "Revisa el codigo", "visualeditor-ca-editsource-section": "revisa codigo" } diff --git a/i18n/ve-mw/ljp.json b/i18n/ve-mw/ljp.json new file mode 100644 index 0000000000..f3d26b3d4b --- /dev/null +++ b/i18n/ve-mw/ljp.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "DedeKurnn" + ] + }, + "visualeditor-ca-createlocaldescriptionsource": "Tambahko sumber penjabaran lokal", + "visualeditor-ca-createsource": "Guway sumber", + "visualeditor-ca-editsource": "Dandani sumber", + "visualeditor-ca-editsource-section": "dandani sumber" +} From 22c02c137b01cf4cb8294597bfda89bf0cfd997b Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 9 Jan 2025 08:23:52 +0100 Subject: [PATCH 113/730] Localisation updates from https://translatewiki.net. Change-Id: I0b24f60e343f24234541fc5f7e7355af109e6f6d --- i18n/ve-mw/api/es.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/api/es.json b/i18n/ve-mw/api/es.json index 37cff54f42..c84f982bbb 100644 --- a/i18n/ve-mw/api/es.json +++ b/i18n/ve-mw/api/es.json @@ -29,17 +29,19 @@ "apihelp-visualeditoredit-param-cachekey": "Utilizar el resultado de una solicitud de \"serializeforcache\" anterior con éste código. Sobreescribe $1html.", "apihelp-visualeditoredit-param-captchaid": "Captcha ID (al guardar respondiendo un código de imágeen \"captcha\").", "apihelp-visualeditoredit-param-captchaword": "Respuesta al código de imagen (al guardar respondiendo un código de imágeen \"captcha\").", + "apihelp-visualeditoredit-param-nocontent": "Omitir el contenido HTML de la nueva revisión en la respuesta.", "apihelp-visualeditoredit-param-etag": "ETag que enviar.", "apihelp-visualeditoredit-param-html": "HTML para enviar a Parsoid en lugar del wikitexto.", "apihelp-visualeditoredit-param-minor": "Marca de edición menor.", "apihelp-visualeditoredit-param-needcheck": "Al guardar, establece este parámetro si la revisión puede tener problemas de \"roundtrip\". Esto hará que se etiquete la edición.", - "apihelp-visualeditoredit-param-oldid": "El número de revisión que utilizar. De manera predeterminada corresponde a la más reciente. Utiliza 0 para una página nueva.", + "apihelp-visualeditoredit-param-oldid": "El número de revisión que utilizar. Por defecto, el número de la revisión más reciente.", "apihelp-visualeditoredit-param-paction": "Acción que realizar.", "apihelp-visualeditoredit-param-page": "La página en la que se realizarán acciones.", "apihelp-visualeditoredit-param-section": "La sección donde actuar.", "apihelp-visualeditoredit-param-sectiontitle": "Título de la sección nueva.", "apihelp-visualeditoredit-param-starttimestamp": "Al guardar, establece esto a la fecha y hora en que la página se cargó. Se utiliza para detectar conflictos de edición.", "apihelp-visualeditoredit-param-summary": "Resumen de edición.", + "apihelp-visualeditoredit-param-tags": "Etiquetas de cambio que aplicar a la edición.", "apihelp-visualeditoredit-param-wikitext": "El wikicódigo que se utilizará.", "apihelp-visualeditoredit-summary": "Guardar una página HTML5 en MediaWiki (convertida en wikicódigo mediante el servicio Parsoid)." } From 8eb6c311ce93f4912551c1dc850cfead085f2b9e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 5 Nov 2024 15:32:22 +0000 Subject: [PATCH 114/730] Experimental imported content copyvio check (paste check) Bug: T359107 Change-Id: Ie924677eaff2a57af0b6781275f37b74a72d4ab5 --- editcheck/i18n/en.json | 2 + editcheck/i18n/fr.json | 2 + editcheck/i18n/qqq.json | 2 + .../experimental/ImportCopyvioEditCheck.js | 74 +++++++++++++++++++ extension.json | 2 + .../init/targets/ve.init.mw.ArticleTarget.js | 5 ++ 6 files changed, 87 insertions(+) create mode 100644 editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index 062b1d10ae..72f6a99256 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -18,6 +18,8 @@ "editcheck-dialog-addref-success-notify": "Thank you for adding a citation!", "editcheck-dialog-addref-title": "Add a citation", "editcheck-dialog-title": "Before publishing", + "editcheck-copyvio-title": "Pasted content", + "editcheck-copyvio-description": "As a general rule, do not copy text from other sources. Doing so usually constitutes both a copyright violation and plagiarism.", "editcheck-review-title": "Review changes", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (references) declined (common knowledge)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck reference was declined as common knowledge", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index 43303e4864..ee2dd05ceb 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -17,6 +17,8 @@ "editcheck-dialog-addref-success-notify": "Merci d'avoir ajouté une source !", "editcheck-dialog-addref-title": "Ajouter une source", "editcheck-dialog-title": "Avant de publier", + "editcheck-copyvio-title": "Contenu copié-collé", + "editcheck-copyvio-description": "En règle générale, ne copiez pas de texte provenant d'autres sources. Cela constitue généralement une violation des droits d'auteur et un plagiat.", "editcheck-review-title": "Relire les modifications", "tag-editcheck-reference-decline-common-knowledge": "Vérification de modification (références) refusée (savoir commun)", "tag-editcheck-reference-decline-common-knowledge-description": "La référence EditCheck a été refusée comme étant un savoir commun", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index cd28cdbb1f..c64238b0d7 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -20,6 +20,8 @@ "editcheck-dialog-addref-title": "Title for the edit check context asking user to add a citation.", "editcheck-dialog-title": "Title shown in the toolbar while the user is in the add a citation workflow.", "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", + "editcheck-copyvio-title": "Title of pasted content / copyvio check", + "editcheck-copyvio-description": "Description of pasted content / copyvio check", "tag-editcheck-reference-decline-common-knowledge": "Short description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", "tag-editcheck-reference-decline-common-knowledge-description": "Long description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", "tag-editcheck-reference-decline-irrelevant": "Short description of the editcheck-reference-decline-irrelevant tag.\n\nTag added when a user declines to add a suggested reference and selects the \"irrelevant\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-irrelevant}}", diff --git a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js new file mode 100644 index 0000000000..6de8bd4e02 --- /dev/null +++ b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js @@ -0,0 +1,74 @@ +mw.editcheck.ImportCopyvioEditCheck = function MWImportCopyvioEditCheck( /* config */ ) { + // Parent constructor + mw.editcheck.ImportCopyvioEditCheck.super.apply( this, arguments ); +}; + +OO.inheritClass( mw.editcheck.ImportCopyvioEditCheck, mw.editcheck.BaseEditCheck ); + +mw.editcheck.ImportCopyvioEditCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.BaseEditCheck.static.defaultConfig, { + minimumCharacters: 50 +} ); + +mw.editcheck.ImportCopyvioEditCheck.static.title = ve.msg( 'editcheck-copyvio-title' ); + +mw.editcheck.ImportCopyvioEditCheck.static.name = 'importCopyvio'; + +mw.editcheck.ImportCopyvioEditCheck.static.choices = [ + { + action: 'rewrite', + label: 'Rewrite', // ve.msg( 'editcheck-dialog-action-yes' ), + icon: 'edit' + }, + { + action: 'dismiss', + label: 'Keep', // ve.msg( 'editcheck-dialog-action-no' ), + icon: 'check' + } +]; + +mw.editcheck.ImportCopyvioEditCheck.prototype.onDocumentChange = function ( surfaceModel ) { + const pastesById = {}; + surfaceModel.documentModel.documentNode.getAnnotationRanges().forEach( ( annRange ) => { + const annotation = annRange.annotation; + if ( annotation instanceof ve.dm.ImportedDataAnnotation && !annotation.getAttribute( 'source' ) ) { + const id = annotation.getAttribute( 'eventId' ); + if ( this.isDismissedId( id ) ) { + return; + } + if ( annRange.range.getLength() < this.config.minimumCharacters ) { + return; + } + pastesById[ id ] = pastesById[ id ] || []; + pastesById[ id ].push( annRange.range ); + } + } ); + return Object.keys( pastesById ).map( ( id ) => { + const fragments = pastesById[ id ].map( ( range ) => surfaceModel.getLinearFragment( range ) ); + return new mw.editcheck.EditCheckAction( { + fragments: fragments, + message: ve.msg( 'editcheck-copyvio-description' ), + id: id, + check: this + } ); + } ); +}; + +mw.editcheck.ImportCopyvioEditCheck.prototype.act = function ( choice, action, surface ) { + switch ( choice ) { + case 'dismiss': + this.dismiss( action ); + break; + case 'rewrite': + action.fragments.forEach( ( fragment ) => { + fragment.removeContent(); + } ); + // Auto-scrolling causes selection and focus changes... + setTimeout( () => { + action.fragments[ action.fragments.length - 1 ].select(); + surface.getView().focus(); + }, 500 ); + break; + } +}; + +mw.editcheck.editCheckFactory.register( mw.editcheck.ImportCopyvioEditCheck ); diff --git a/extension.json b/extension.json index e2e9f83205..422060ada2 100644 --- a/extension.json +++ b/extension.json @@ -656,6 +656,8 @@ "editcheck-dialog-addref-success-notify", "editcheck-dialog-addref-title", "editcheck-dialog-title", + "editcheck-copyvio-title", + "editcheck-copyvio-description", "editcheck-review-title", "visualeditor-backbutton-tooltip", "next", diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index e7e92cb4ed..f9a5467cbd 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -159,6 +159,11 @@ OO.inheritClass( ve.init.mw.ArticleTarget, ve.init.mw.Target ); */ ve.init.mw.ArticleTarget.static.name = 'article'; +/** + * @inheritdoc + */ +ve.init.mw.ArticleTarget.static.annotateImportedData = true; + /** * Tracking name of target class. Used by ArticleTargetEvents to identify which target we are tracking. * From 582c6f74fd66d2ed23564a66fb95f38c4c475caf Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 19 Nov 2024 18:16:31 +0000 Subject: [PATCH 115/730] Experimental link disambiguation check Change-Id: I4caea547e8d8639ad089bca83f43009ccbad7b59 --- .../experimental/DisambiguationEditCheck.js | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js diff --git a/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js b/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js new file mode 100644 index 0000000000..e0fe1e3843 --- /dev/null +++ b/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js @@ -0,0 +1,64 @@ +mw.editcheck.DisambiguationEditCheck = function MWDisambiguationEditCheck( /* config */ ) { + // Parent constructor + mw.editcheck.DisambiguationEditCheck.super.apply( this, arguments ); +}; + +OO.inheritClass( mw.editcheck.DisambiguationEditCheck, mw.editcheck.BaseEditCheck ); + +mw.editcheck.DisambiguationEditCheck.static.title = 'Disambiguation link'; + +mw.editcheck.DisambiguationEditCheck.static.name = 'disambiguation'; + +mw.editcheck.DisambiguationEditCheck.static.description = 'Link to a specific page instead.'; + +mw.editcheck.DisambiguationEditCheck.static.choices = [ + { + action: 'edit', + label: 'Edit link', // ve.msg( 'editcheck-dialog-action-yes' ), + icon: 'edit' + }, + { + action: 'dismiss', + label: 'Ignore', // ve.msg( 'editcheck-dialog-action-no' ), + icon: 'check' + } +]; + +mw.editcheck.DisambiguationEditCheck.prototype.onDocumentChange = function ( surfaceModel ) { + return surfaceModel.documentModel.documentNode.getAnnotationRanges().map( ( annRange ) => { + const annotation = annRange.annotation; + if ( !( annotation instanceof ve.dm.MWInternalLinkAnnotation ) ) { + return null; + } + + const linkData = ve.init.platform.linkCache.getCached( annotation.getAttribute( 'lookupTitle' ) ); + if ( !linkData || !linkData.disambiguation ) { + return null; + } + + if ( this.isDismissedRange( annRange.range ) ) { + return null; + } + const fragment = surfaceModel.getLinearFragment( annRange.range ); + return new mw.editcheck.EditCheckAction( { + fragments: [ fragment ], + check: this + } ); + } ).filter( ( action ) => action ); +}; + +mw.editcheck.DisambiguationEditCheck.prototype.act = function ( choice, action, surface ) { + switch ( choice ) { + case 'dismiss': + this.dismiss( action ); + break; + case 'edit': + setTimeout( () => { + action.selection.select(); + surface.execute( 'window', 'open', 'link' ); + }, 500 ); + break; + } +}; + +mw.editcheck.editCheckFactory.register( mw.editcheck.DisambiguationEditCheck ); From 5f57bf2b858f870b48d445d8667b3b0d72877990 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Dec 2024 14:30:45 +0000 Subject: [PATCH 116/730] EditCheck: Open mid-edit checks when some detected, close when empty Change-Id: If5f709ff988034fbf57aaf953920865d9281ed54 --- editcheck/modules/EditCheckDialog.js | 12 +++++++++--- editcheck/modules/init.js | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 59698ac8b2..1a2135cea3 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -113,7 +113,7 @@ ve.ui.EditCheckDialog.prototype.update = function ( fromUserAction ) { if ( this.listener === 'onDocumentChange' || !this.currentChecks ) { this.currentChecks = mw.editcheck.editCheckFactory.createAllByListener( this.listener, this.surface.getModel() ); } - if ( this.listener === 'onBeforeSave' && this.currentChecks.length === 0 ) { + if ( this.currentChecks.length === 0 ) { return this.close( 'complete' ); } const checks = this.currentChecks; @@ -389,7 +389,13 @@ ve.ui.windowFactory.register( ve.ui.EditCheckDialog ); ve.ui.commandRegistry.register( new ve.ui.Command( - 'editCheckDialogInProcess', 'window', 'toggle', { args: [ 'editCheckDialog', { listener: 'onDocumentChange' } ] } + 'editCheckDialogInProcessOpen', 'window', 'open', { args: [ 'editCheckDialog', { listener: 'onDocumentChange' } ] } + ) +); + +ve.ui.commandRegistry.register( + new ve.ui.Command( + 'editCheckDialogInProcessToggle', 'window', 'toggle', { args: [ 'editCheckDialog', { listener: 'onDocumentChange' } ] } ) ); @@ -415,7 +421,7 @@ ve.ui.EditCheckDialogTool.static.group = 'notices'; ve.ui.EditCheckDialogTool.static.icon = 'robot'; ve.ui.EditCheckDialogTool.static.title = 'Edit check'; // OO.ui.deferMsg( 'visualeditor-dialog-command-help-title' ); ve.ui.EditCheckDialogTool.static.autoAddToCatchall = false; -ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialogInProcess'; +ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialogInProcessToggle'; // ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialogBeforeSave'; // Demo button for opening edit check sidebar diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 04b7386d13..30fd161b13 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -86,6 +86,25 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { } if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable ) { + mw.hook( 've.activationComplete' ).add( () => { + const surface = ve.init.target.getSurface(); + const surfaceModel = surface.getModel(); + const surfaceView = surface.getView(); + + // TODO: De-duplicate with this listener in EditCheckDialog + surfaceModel.on( 'undoStackChange', ve.debounce( () => { + if ( !surfaceView.reviewMode ) { + const checks = mw.editcheck.editCheckFactory.createAllByListener( 'onDocumentChange', surfaceModel ); + if ( checks.length ) { + const currentWindow = surface.getToolbarDialogs( 'side' ).getCurrentWindow(); + if ( !currentWindow || currentWindow.constructor.static.name !== 'editCheckDialog' ) { + const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); + return windowAction.open( 'editCheckDialog', { listener: 'onDocumentChange' } ); + } + } + } + }, 100 ) ); + } ); mw.hook( 've.activationStart' ).add( () => { document.documentElement.classList.add( 've-editcheck-available' ); } ); From 1a38320fb5495d8256c6d50824ef2df1b0670289 Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Thu, 9 Jan 2025 20:02:57 +0100 Subject: [PATCH 117/730] build: Upgrade stylelint-config-wikimedia from 0.17.2 to 0.18.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A stylelint-disable-next-line must be splitted as stylelint reports the line of the closing } as the problem. But moving the stylelint-disable-null does not fix that (it is reported on the comment instead). modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less 52:1 ✖ Needless disable for "selector-class-pattern" --report-needless-disables 57:1 ✖ Expected ".overlay" to match pattern "^(ve|mw|oo-ui|client|skin)-" selector-class-pattern ✖ 2 problems (2 errors, 0 warnings) Change-Id: Ic23838da154bcd69abad129e269abdc82eff8edd --- .../ve.init.mw.MobileArticleTarget.less | 3 +- package-lock.json | 1510 +++++++---------- package.json | 2 +- 3 files changed, 634 insertions(+), 881 deletions(-) diff --git a/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less b/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less index 1e1c4f2974..6aed63fec2 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less +++ b/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less @@ -49,12 +49,13 @@ } } -/* stylelint-disable-next-line selector-class-pattern */ +/* stylelint-disable selector-class-pattern */ .ve-init-mw-mobileArticleTarget.overlay { // Override MobileFrontend `.overlay` styles. // `padding-top` is instead set on a different element in adjustContentPadding(). padding-top: 0; } +/* stylelint-enable selector-class-pattern */ .ve-init-mw-mobileArticleTarget .ve-ui-overlay-local { // Reset line height set by .content diff --git a/package-lock.json b/package-lock.json index 1356a7f245..0b99e847f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "mocha": "5.2.0", "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", - "stylelint-config-wikimedia": "0.17.2", + "stylelint-config-wikimedia": "0.18.0", "wdio-mediawiki": "2.5.0" } }, @@ -173,9 +173,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.1.tgz", - "integrity": "sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==", + "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": [ { @@ -187,17 +187,18 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-tokenizer": "^3.0.3" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.4.tgz", - "integrity": "sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==", + "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": [ { @@ -209,37 +210,15 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.9.tgz", - "integrity": "sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.3.tgz", - "integrity": "sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==", + "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": [ { @@ -251,18 +230,21 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.13" + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-ZKXyJeFAzcpKM2kk8ipoGIPUqx9BX52omTGnfwjJvxOCaZTM2wtDK7zN0aIgPRbT9XYAlha0HtmZ+XKteuh0Gw==", + "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, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -929,40 +911,42 @@ } }, "node_modules/@stylistic/stylelint-config": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stylistic/stylelint-config/-/stylelint-config-1.0.1.tgz", - "integrity": "sha512-JgFP88HZEyo34k9RpWVdcQJtLPrMxYE58IO3qypXhmvE/NmZohj+xjDtQ8UfaarnYsLecnldw57/GHum07Ctdw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@stylistic/stylelint-config/-/stylelint-config-2.0.0.tgz", + "integrity": "sha512-8J4YAxggy2Nzkb8KJIOLbtMXTPZ5gpKVmyhiiuKEUgCl9XFND5lM0e/ZZBMGEYZ68h5qcsS/jgg1wh235erRAw==", "dev": true, + "license": "MIT", "dependencies": { - "@stylistic/stylelint-plugin": "^2.0.0" + "@stylistic/stylelint-plugin": "^3.0.0" }, "engines": { "node": "^18.12 || >=20.9" }, "peerDependencies": { - "stylelint": "^16.0.2" + "stylelint": "^16.8.0" } }, "node_modules/@stylistic/stylelint-plugin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-2.0.0.tgz", - "integrity": "sha512-dHKuT6PGd1WGZLOTuozAM7GdQzdmlmnFXYzvV1jYJXXpcCpV/OJ3+n8TXpMkoOeKHpJydY43EOoZTO1W/FOA4Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.1.1.tgz", + "integrity": "sha512-XagAHHIa528EvyGybv8EEYGK5zrVW74cHpsjhtovVATbhDRuJYfE+X4HCaAieW9lCkwbX6L+X0I4CiUG3w/hFw==", "dev": true, + "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^2.3.2", - "@csstools/css-tokenizer": "^2.2.1", - "@csstools/media-query-list-parser": "^2.1.5", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1", "is-plain-object": "^5.0.0", - "postcss-selector-parser": "^6.0.13", + "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "style-search": "^0.1.0", - "stylelint": "^16.0.2" + "stylelint": "^16.8.2" }, "engines": { "node": "^18.12 || >=20.9" }, "peerDependencies": { - "stylelint": "^16.0.2" + "stylelint": "^16.8.0" } }, "node_modules/@stylistic/stylelint-plugin/node_modules/is-plain-object": { @@ -970,10 +954,25 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/@stylistic/stylelint-plugin/node_modules/postcss-selector-parser": { + "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, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -1167,7 +1166,8 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mocha": { "version": "10.0.10", @@ -2174,6 +2174,7 @@ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2219,6 +2220,7 @@ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2264,6 +2266,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2830,9 +2833,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -2848,11 +2851,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -3209,9 +3213,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001600", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", - "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "dev": true, "funding": [ { @@ -3226,7 +3230,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/caseless": { "version": "0.12.0", @@ -3786,10 +3791,11 @@ } }, "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, + "license": "MIT", "engines": { "node": ">=12 || >=16" } @@ -3832,6 +3838,7 @@ "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", "integrity": "sha512-gLmmbJdwH9HLY4bcA17lnZ8GgPwEXRbvxBJGHnkiB6gLhRpTzjkjtMIvz7YORGW/Ptv2oMk8b5g+u7mRD6Dd7A==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^1.0.33" @@ -3841,13 +3848,15 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/css-tokenize/node_modules/readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -3859,7 +3868,8 @@ "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/css-tree": { "version": "1.0.0-alpha.37", @@ -4342,20 +4352,20 @@ } }, "node_modules/doiuse": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-6.0.2.tgz", - "integrity": "sha512-eBTs23NOX+EAYPr4RbCR6J4DRW/TML3uMo37y0X1whlkersDYFCk9HmCl09KX98cis22VKsV1QaxfVNauJ3NBw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-6.0.5.tgz", + "integrity": "sha512-ljuf9ndGqKST0GlPAYyCg04hbQAeR1xIIWVDjQaDDkoTY/Y1Vb+8FNoy6NuVuJIEEKe/nKUH8NRWjG7JJxZ9Eg==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001487", + "browserslist": "^4.24.0", + "caniuse-lite": "^1.0.30001669", "css-tokenize": "^1.0.1", - "duplexify": "^4.1.2", - "ldjson-stream": "^1.2.1", + "duplexify": "^4.1.3", "multimatch": "^5.0.0", - "postcss": "^8.4.21", + "postcss": "^8.4.47", "source-map": "^0.7.4", - "yargs": "^17.7.1" + "yargs": "^17.7.2" }, "bin": { "doiuse": "bin/cli.js" @@ -4403,6 +4413,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -4423,7 +4434,8 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domino": { "version": "2.1.6", @@ -4568,6 +4580,7 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", @@ -4636,10 +4649,11 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.722", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.722.tgz", - "integrity": "sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ==", - "dev": true + "version": "1.5.79", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz", + "integrity": "sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -4757,10 +4771,11 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5712,6 +5727,23 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fast-xml-parser": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", @@ -7267,6 +7299,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -7279,6 +7312,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -7298,13 +7332,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/htmlparser2/node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -7319,6 +7355,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -8491,10 +8528,11 @@ } }, "node_modules/known-css-properties": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz", - "integrity": "sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==", - "dev": true + "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, + "license": "MIT" }, "node_modules/ky": { "version": "0.28.7", @@ -8550,25 +8588,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/ldjson-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", - "integrity": "sha512-xw/nNEXafuPSLu8NjjG3+atVVw+8U1APZAQylmwQn19Hgw6rC7QjHvP6MupnHWCrzSm9m0xs5QWkCLuRvBPjgQ==", - "dev": true, - "dependencies": { - "split2": "^0.2.1", - "through2": "^0.6.1" - } - }, - "node_modules/ldjson-stream/node_modules/split2": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", - "integrity": "sha512-D/oTExYAkC9nWleOCTOyNmAuzfAT/6rHGBA9LIK7FVnGo13CSvrKCUzKenwH6U1s2znY9MqH6v0UQTEDa3vJmg==", - "dev": true, - "dependencies": { - "through2": "~0.6.1" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8821,7 +8840,8 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.union": { "version": "4.6.0", @@ -9500,6 +9520,7 @@ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimatch": "^3.0.3", "array-differ": "^3.0.0", @@ -9586,10 +9607,11 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" }, "node_modules/nopt": { "version": "3.0.6", @@ -10285,10 +10307,11 @@ "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==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -10540,9 +10563,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -10558,23 +10581,25 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-html": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.6.0.tgz", - "integrity": "sha512-OWgQ9/Pe23MnNJC0PL4uZp8k0EDaUvqpJFSiwFxOLClAhmD7UEisyhO3x5hVsD4xFrjReVTXydlrMes45dJ71w==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.7.0.tgz", + "integrity": "sha512-MfcMpSUIaR/nNgeVS8AyvyDugXlADjN9AcV7e5rDfrF1wduIAGSkL4q2+wgrZgA3sHVAHLDO9FuauHhZYW2nBw==", "dev": true, + "license": "MIT", "dependencies": { "htmlparser2": "^8.0.0", - "js-tokens": "^8.0.0", + "js-tokens": "^9.0.0", "postcss": "^8.4.0", "postcss-safe-parser": "^6.0.0" }, @@ -10583,10 +10608,11 @@ } }, "node_modules/postcss-html/node_modules/js-tokens": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz", - "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", - "dev": true + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" }, "node_modules/postcss-less": { "version": "6.0.0", @@ -10601,16 +10627,18 @@ } }, "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=", - "dev": true + "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, + "license": "MIT" }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0" }, @@ -11248,6 +11276,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11805,6 +11834,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -11846,15 +11876,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "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, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12049,7 +12081,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/strict-uri-encode": { "version": "1.1.0", @@ -12228,52 +12261,63 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/stylelint": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz", - "integrity": "sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==", + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz", + "integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4", - "@csstools/media-query-list-parser": "^2.1.9", - "@csstools/selector-specificity": "^3.0.3", - "@dual-bundle/import-meta-resolve": "^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.2", - "css-tree": "^2.3.1", - "debug": "^4.3.4", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.1", + "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^8.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.1", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.30.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.38", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.0.16", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", - "supports-hyperlinks": "^3.0.0", + "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", - "table": "^6.8.2", + "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -12281,100 +12325,191 @@ }, "engines": { "node": ">=18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" } }, "node_modules/stylelint-config-recommended": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz", - "integrity": "sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==", + "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" + } + ], + "license": "MIT", "engines": { "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^16.0.0" + "stylelint": "^16.1.0" } }, "node_modules/stylelint-config-wikimedia": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.17.2.tgz", - "integrity": "sha512-cc3PYhe1O/GTgsMOp+Ri3ru579YBbZ3Me0oU7xNb06n4iwyXYPz8qO5G4iQ13UH19UW2NIS8Tk0goPRrJ1RAfw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.18.0.tgz", + "integrity": "sha512-Lr45NIe7pG8i7BPcMc6EddO1pRK8/KNG8gp4o/oOG1Ez10hglJuJb/QT17BlzX8NPkhtP2KdY63NS2f/Wcj6Ww==", "dev": true, + "license": "MIT", "dependencies": { - "@stylistic/stylelint-config": "1.0.1", - "@stylistic/stylelint-plugin": "2.0.0", + "@stylistic/stylelint-config": "2.0.0", + "@stylistic/stylelint-plugin": "3.1.1", "browserslist-config-wikimedia": "0.7.0", - "postcss-html": "1.6.0", + "postcss-html": "1.7.0", "postcss-less": "6.0.0", - "stylelint": "16.2.0", - "stylelint-config-recommended": "14.0.0", - "stylelint-no-unsupported-browser-features": "8.0.1" + "stylelint": "16.12.0", + "stylelint-config-recommended": "14.0.1", + "stylelint-no-unsupported-browser-features": "8.0.2" }, "peerDependencies": { "postcss-less": "^6.0.0" } }, - "node_modules/stylelint-config-wikimedia/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/stylelint-no-unsupported-browser-features": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/stylelint-no-unsupported-browser-features/-/stylelint-no-unsupported-browser-features-8.0.2.tgz", + "integrity": "sha512-4PY2qJ3ZTEje9RgGfaQ82eJoPioXxs6hazeKpji/wzLNVzTX2wd4b0Ds3ewdLkH3ID+o63IInuTquU2MNJO3YQ==", "dev": true, + "license": "MIT", + "dependencies": { + "doiuse": "^6.0.5", + "postcss": "^8.4.32" + }, "engines": { - "node": ">=12" + "node": ">=18.12.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "stylelint": "^16.0.2" + } + }, + "node_modules/stylelint/node_modules/@csstools/media-query-list-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "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" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" } }, - "node_modules/stylelint-config-wikimedia/node_modules/balanced-match": { + "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-config-wikimedia/node_modules/css-tree": { - "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==", + "node_modules/stylelint/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, + "license": "MIT", "dependencies": { - "mdn-data": "2.0.30", + "mdn-data": "2.12.2", "source-map-js": "^1.0.1" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/stylelint-config-wikimedia/node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "node_modules/stylelint/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=16.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/stylelint-config-wikimedia/node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "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, + "license": "MIT", + "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, + "license": "MIT", "dependencies": { - "flatted": "^3.2.9", + "flatted": "^3.3.1", "keyv": "^4.5.4" }, "engines": { - "node": ">=16" + "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, + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "node_modules/stylelint-config-wikimedia/node_modules/is-plain-object": { + "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", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", @@ -12383,19 +12518,14 @@ "node": ">=0.10.0" } }, - "node_modules/stylelint-config-wikimedia/node_modules/known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", - "dev": true - }, - "node_modules/stylelint-config-wikimedia/node_modules/mdn-data": { - "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/stylelint/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" }, - "node_modules/stylelint-config-wikimedia/node_modules/meow": { + "node_modules/stylelint/node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", @@ -12407,10 +12537,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint-config-wikimedia/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==", + "node_modules/stylelint/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/postcss-safe-parser": { + "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": [ { @@ -12426,6 +12563,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": ">=18.0" }, @@ -12433,7 +12571,21 @@ "postcss": "^8.4.31" } }, - "node_modules/stylelint-config-wikimedia/node_modules/resolve-from": { + "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, + "license": "MIT", + "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", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -12442,240 +12594,20 @@ "node": ">=8" } }, - "node_modules/stylelint-config-wikimedia/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==", + "node_modules/suffix": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", + "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=", "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=4" } }, - "node_modules/stylelint-config-wikimedia/node_modules/stylelint": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.2.0.tgz", - "integrity": "sha512-gwqU5AkIb52wrAzzn+359S3NIJDMl02TXLUaV2tzA/L6jUdpTwNt+MCxHlc8+Hb2bUHlYVo92YeSIryF2gJthA==", - "dev": true, - "dependencies": { - "@csstools/css-parser-algorithms": "^2.5.0", - "@csstools/css-tokenizer": "^2.2.3", - "@csstools/media-query-list-parser": "^2.1.7", - "@csstools/selector-specificity": "^3.0.1", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.1", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^8.0.0", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^5.3.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.29.0", - "mathml-tag-names": "^2.1.3", - "meow": "^13.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.33", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.0.15", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "stylelint": "bin/stylelint.mjs" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-no-unsupported-browser-features": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/stylelint-no-unsupported-browser-features/-/stylelint-no-unsupported-browser-features-8.0.1.tgz", - "integrity": "sha512-tc8Xn5DaqJhxTmbA4H8gZbYdAz027NfuSZv5+cVieQb7BtBrF/1/iKYdpcGwXPl3GtqkQrisiXuGqKkKnzWcLw==", - "dev": true, - "dependencies": { - "doiuse": "^6.0.2", - "postcss": "^8.4.32" - }, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "stylelint": "^16.0.2" - } - }, - "node_modules/stylelint/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "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": "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.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/stylelint/node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "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", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylelint/node_modules/mdn-data": { - "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/stylelint/node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylelint/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==", - "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": ">=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" - } - }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "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/suffix": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", - "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/superagent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", - "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", - "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", + "node_modules/superagent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", + "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", + "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", "dev": true, "dependencies": { "component-emitter": "^1.3.0", @@ -12749,16 +12681,20 @@ } }, "node_modules/supports-hyperlinks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "engines": { "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-hyperlinks/node_modules/supports-color": { @@ -12766,6 +12702,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12931,10 +12868,11 @@ } }, "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -12947,15 +12885,16 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "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, + "license": "MIT", "dependencies": { "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.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -12966,7 +12905,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.1", @@ -13097,40 +13037,6 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "node_modules/through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", - "dev": true, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "node_modules/through2/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, "node_modules/timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -13450,9 +13356,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "funding": [ { @@ -13468,9 +13374,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -14326,36 +14233,29 @@ } }, "@csstools/css-parser-algorithms": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.1.tgz", - "integrity": "sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==", + "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": "2.2.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.4.tgz", - "integrity": "sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==", + "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": "2.1.9", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.9.tgz", - "integrity": "sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.3.tgz", - "integrity": "sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==", + "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": {} }, "@dual-bundle/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-ZKXyJeFAzcpKM2kk8ipoGIPUqx9BX52omTGnfwjJvxOCaZTM2wtDK7zN0aIgPRbT9XYAlha0HtmZ+XKteuh0Gw==", + "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 }, "@es-joy/jsdoccomment": { @@ -14863,28 +14763,28 @@ "dev": true }, "@stylistic/stylelint-config": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stylistic/stylelint-config/-/stylelint-config-1.0.1.tgz", - "integrity": "sha512-JgFP88HZEyo34k9RpWVdcQJtLPrMxYE58IO3qypXhmvE/NmZohj+xjDtQ8UfaarnYsLecnldw57/GHum07Ctdw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@stylistic/stylelint-config/-/stylelint-config-2.0.0.tgz", + "integrity": "sha512-8J4YAxggy2Nzkb8KJIOLbtMXTPZ5gpKVmyhiiuKEUgCl9XFND5lM0e/ZZBMGEYZ68h5qcsS/jgg1wh235erRAw==", "dev": true, "requires": { - "@stylistic/stylelint-plugin": "^2.0.0" + "@stylistic/stylelint-plugin": "^3.0.0" } }, "@stylistic/stylelint-plugin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-2.0.0.tgz", - "integrity": "sha512-dHKuT6PGd1WGZLOTuozAM7GdQzdmlmnFXYzvV1jYJXXpcCpV/OJ3+n8TXpMkoOeKHpJydY43EOoZTO1W/FOA4Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.1.1.tgz", + "integrity": "sha512-XagAHHIa528EvyGybv8EEYGK5zrVW74cHpsjhtovVATbhDRuJYfE+X4HCaAieW9lCkwbX6L+X0I4CiUG3w/hFw==", "dev": true, "requires": { - "@csstools/css-parser-algorithms": "^2.3.2", - "@csstools/css-tokenizer": "^2.2.1", - "@csstools/media-query-list-parser": "^2.1.5", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1", "is-plain-object": "^5.0.0", - "postcss-selector-parser": "^6.0.13", + "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "style-search": "^0.1.0", - "stylelint": "^16.0.2" + "stylelint": "^16.8.2" }, "dependencies": { "is-plain-object": { @@ -14892,6 +14792,16 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true + }, + "postcss-selector-parser": { + "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", + "util-deprecate": "^1.0.2" + } } } }, @@ -16397,15 +16307,15 @@ "dev": true }, "browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" } }, "browserslist-config-wikimedia": { @@ -16666,9 +16576,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001600", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", - "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "dev": true }, "caseless": { @@ -17101,9 +17011,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": { @@ -17541,20 +17451,19 @@ } }, "doiuse": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-6.0.2.tgz", - "integrity": "sha512-eBTs23NOX+EAYPr4RbCR6J4DRW/TML3uMo37y0X1whlkersDYFCk9HmCl09KX98cis22VKsV1QaxfVNauJ3NBw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-6.0.5.tgz", + "integrity": "sha512-ljuf9ndGqKST0GlPAYyCg04hbQAeR1xIIWVDjQaDDkoTY/Y1Vb+8FNoy6NuVuJIEEKe/nKUH8NRWjG7JJxZ9Eg==", "dev": true, "requires": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001487", + "browserslist": "^4.24.0", + "caniuse-lite": "^1.0.30001669", "css-tokenize": "^1.0.1", - "duplexify": "^4.1.2", - "ldjson-stream": "^1.2.1", + "duplexify": "^4.1.3", "multimatch": "^5.0.0", - "postcss": "^8.4.21", + "postcss": "^8.4.47", "source-map": "^0.7.4", - "yargs": "^17.7.1" + "yargs": "^17.7.2" } }, "dom-serializer": { @@ -17779,9 +17688,9 @@ } }, "electron-to-chromium": { - "version": "1.4.722", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.722.tgz", - "integrity": "sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ==", + "version": "1.5.79", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.79.tgz", + "integrity": "sha512-nYOxJNxQ9Om4EC88BE4pPoNI8xwSFf8pU/BAeOl4Hh/b/i6V4biTAzwV7pXi3ARKeoYO5JZKMIXTryXSVer5RA==", "dev": true }, "emoji-regex": { @@ -17879,9 +17788,9 @@ } }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true }, "escape-string-regexp": { @@ -18586,6 +18495,12 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, + "fast-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "dev": true + }, "fast-xml-parser": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", @@ -19779,9 +19694,9 @@ "dev": true }, "domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, "requires": { "dom-serializer": "^2.0.0", @@ -20689,9 +20604,9 @@ } }, "known-css-properties": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz", - "integrity": "sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==", + "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 }, "ky": { @@ -20741,27 +20656,6 @@ } } }, - "ldjson-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", - "integrity": "sha512-xw/nNEXafuPSLu8NjjG3+atVVw+8U1APZAQylmwQn19Hgw6rC7QjHvP6MupnHWCrzSm9m0xs5QWkCLuRvBPjgQ==", - "dev": true, - "requires": { - "split2": "^0.2.1", - "through2": "^0.6.1" - }, - "dependencies": { - "split2": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", - "integrity": "sha512-D/oTExYAkC9nWleOCTOyNmAuzfAT/6rHGBA9LIK7FVnGo13CSvrKCUzKenwH6U1s2znY9MqH6v0UQTEDa3vJmg==", - "dev": true, - "requires": { - "through2": "~0.6.1" - } - } - } - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -21567,9 +21461,9 @@ } }, "node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, "nopt": { @@ -22093,9 +21987,9 @@ "dev": true }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "picomatch": { @@ -22279,32 +22173,32 @@ } }, "postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "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.0.0", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" } }, "postcss-html": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.6.0.tgz", - "integrity": "sha512-OWgQ9/Pe23MnNJC0PL4uZp8k0EDaUvqpJFSiwFxOLClAhmD7UEisyhO3x5hVsD4xFrjReVTXydlrMes45dJ71w==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.7.0.tgz", + "integrity": "sha512-MfcMpSUIaR/nNgeVS8AyvyDugXlADjN9AcV7e5rDfrF1wduIAGSkL4q2+wgrZgA3sHVAHLDO9FuauHhZYW2nBw==", "dev": true, "requires": { "htmlparser2": "^8.0.0", - "js-tokens": "^8.0.0", + "js-tokens": "^9.0.0", "postcss": "^8.4.0", "postcss-safe-parser": "^6.0.0" }, "dependencies": { "js-tokens": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz", - "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", "dev": true } } @@ -22317,9 +22211,9 @@ "requires": {} }, "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": { @@ -23269,9 +23163,9 @@ "dev": true }, "source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "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 }, "spdx-correct": { @@ -23572,57 +23466,64 @@ "dev": true }, "stylelint": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.5.0.tgz", - "integrity": "sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==", + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz", + "integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==", "dev": true, "requires": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4", - "@csstools/media-query-list-parser": "^2.1.9", - "@csstools/selector-specificity": "^3.0.3", - "@dual-bundle/import-meta-resolve": "^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.2", - "css-tree": "^2.3.1", - "debug": "^4.3.4", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.1", + "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^8.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.1", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.30.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.38", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.0.16", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", - "supports-hyperlinks": "^3.0.0", + "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", - "table": "^6.8.2", + "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true + "@csstools/media-query-list-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", + "dev": true, + "requires": {} + }, + "@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", @@ -23631,34 +23532,49 @@ "dev": true }, "css-tree": { - "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==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "requires": { - "mdn-data": "2.0.30", + "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, "file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "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": "^4.0.0" + "flat-cache": "^5.0.0" } }, "flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "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.2.9", + "flatted": "^3.3.1", "keyv": "^4.5.4" } }, + "ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true + }, "is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", @@ -23666,9 +23582,9 @@ "dev": true }, "mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "dev": true }, "meow": { @@ -23677,195 +23593,67 @@ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "postcss-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": {} }, + "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", "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": "14.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz", - "integrity": "sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==", + "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-wikimedia": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.17.2.tgz", - "integrity": "sha512-cc3PYhe1O/GTgsMOp+Ri3ru579YBbZ3Me0oU7xNb06n4iwyXYPz8qO5G4iQ13UH19UW2NIS8Tk0goPRrJ1RAfw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/stylelint-config-wikimedia/-/stylelint-config-wikimedia-0.18.0.tgz", + "integrity": "sha512-Lr45NIe7pG8i7BPcMc6EddO1pRK8/KNG8gp4o/oOG1Ez10hglJuJb/QT17BlzX8NPkhtP2KdY63NS2f/Wcj6Ww==", "dev": true, "requires": { - "@stylistic/stylelint-config": "1.0.1", - "@stylistic/stylelint-plugin": "2.0.0", + "@stylistic/stylelint-config": "2.0.0", + "@stylistic/stylelint-plugin": "3.1.1", "browserslist-config-wikimedia": "0.7.0", - "postcss-html": "1.6.0", + "postcss-html": "1.7.0", "postcss-less": "6.0.0", - "stylelint": "16.2.0", - "stylelint-config-recommended": "14.0.0", - "stylelint-no-unsupported-browser-features": "8.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "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": "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.30", - "source-map-js": "^1.0.1" - } - }, - "file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "requires": { - "flat-cache": "^4.0.0" - } - }, - "flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - } - }, - "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 - }, - "known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", - "dev": true - }, - "mdn-data": { - "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 - }, - "meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "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==", - "dev": true, - "requires": {} - }, - "resolve-from": { - "version": "5.0.0", - "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": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.2.0.tgz", - "integrity": "sha512-gwqU5AkIb52wrAzzn+359S3NIJDMl02TXLUaV2tzA/L6jUdpTwNt+MCxHlc8+Hb2bUHlYVo92YeSIryF2gJthA==", - "dev": true, - "requires": { - "@csstools/css-parser-algorithms": "^2.5.0", - "@csstools/css-tokenizer": "^2.2.3", - "@csstools/media-query-list-parser": "^2.1.7", - "@csstools/selector-specificity": "^3.0.1", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.1", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^8.0.0", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^5.3.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.29.0", - "mathml-tag-names": "^2.1.3", - "meow": "^13.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.33", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.0.15", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "write-file-atomic": "^5.0.1" - } - } + "stylelint": "16.12.0", + "stylelint-config-recommended": "14.0.1", + "stylelint-no-unsupported-browser-features": "8.0.2" } }, "stylelint-no-unsupported-browser-features": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/stylelint-no-unsupported-browser-features/-/stylelint-no-unsupported-browser-features-8.0.1.tgz", - "integrity": "sha512-tc8Xn5DaqJhxTmbA4H8gZbYdAz027NfuSZv5+cVieQb7BtBrF/1/iKYdpcGwXPl3GtqkQrisiXuGqKkKnzWcLw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/stylelint-no-unsupported-browser-features/-/stylelint-no-unsupported-browser-features-8.0.2.tgz", + "integrity": "sha512-4PY2qJ3ZTEje9RgGfaQ82eJoPioXxs6hazeKpji/wzLNVzTX2wd4b0Ds3ewdLkH3ID+o63IInuTquU2MNJO3YQ==", "dev": true, "requires": { - "doiuse": "^6.0.2", + "doiuse": "^6.0.5", "postcss": "^8.4.32" } }, @@ -23933,9 +23721,9 @@ } }, "supports-hyperlinks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "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", @@ -24079,9 +23867,9 @@ } }, "table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, "requires": { "ajv": "^8.0.1", @@ -24092,15 +23880,15 @@ }, "dependencies": { "ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "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.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" } }, "json-schema-traverse": { @@ -24229,42 +24017,6 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - } - } - }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -24508,13 +24260,13 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" } }, "uri-js": { diff --git a/package.json b/package.json index 80c0ff2d67..d9258e6f11 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "mocha": "5.2.0", "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", - "stylelint-config-wikimedia": "0.17.2", + "stylelint-config-wikimedia": "0.18.0", "wdio-mediawiki": "2.5.0" } } From a6217877e8f5e09311a47c6cb35d483eca01685b Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 9 Jan 2025 12:05:57 -0600 Subject: [PATCH 118/730] Enhance the TextMatch check into an actual check * Now restricted to only modified ranges * Lets replacers be defined by on-wiki config * Lets replacers choose to extend the fragment beyond the matched text * Lets replacers choose which listener to act within Change-Id: I76d18911ff4d44de4514ca36aa94545e7094d3cb --- .../experimental/TextMatchEditCheck.js | 86 +++++++++++++++---- 1 file changed, 70 insertions(+), 16 deletions(-) diff --git a/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js index 4da3fd3bae..9fe4aa058a 100644 --- a/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js +++ b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js @@ -1,16 +1,29 @@ mw.editcheck.TextMatchEditCheck = function MWTextMatchEditCheck( /* config */ ) { // Parent constructor mw.editcheck.TextMatchEditCheck.super.apply( this, arguments ); + + this.replacers = [ + ...mw.editcheck.TextMatchEditCheck.static.replacers, + ...( this.config.replacers || [] ) + ]; }; OO.inheritClass( mw.editcheck.TextMatchEditCheck, mw.editcheck.BaseEditCheck ); mw.editcheck.TextMatchEditCheck.static.name = 'textMatch'; -mw.editcheck.TextMatchEditCheck.static.choices = []; +mw.editcheck.TextMatchEditCheck.static.choices = [ + { + action: 'delete', + label: ve.msg( 'visualeditor-contextitemwidget-label-remove' ) + }, + { + action: 'dismiss', + label: ve.msg( 'ooui-dialog-process-dismiss' ) + } +]; mw.editcheck.TextMatchEditCheck.static.replacers = [ - // TODO: Load text replacement rules from community config { query: 'unfortunately', title: 'Adverb usage', @@ -18,24 +31,65 @@ mw.editcheck.TextMatchEditCheck.static.replacers = [ } ]; -mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange = function ( surfaceModel ) { +mw.editcheck.TextMatchEditCheck.prototype.handleListener = function ( surfaceModel, listener ) { const actions = []; - this.constructor.static.replacers.forEach( ( replacer ) => { - surfaceModel.getDocument().findText( replacer.query ).forEach( ( range ) => { - const fragment = surfaceModel.getLinearFragment( range ); - actions.push( - new mw.editcheck.EditCheckAction( { - fragments: [ fragment ], - title: replacer.title, - message: replacer.message, - check: this - } ) - ); - } ); + const modified = this.getModifiedContentRanges( surfaceModel.getDocument() ); + this.replacers.forEach( ( replacer ) => { + if ( replacer.listener && replacer.listener !== listener ) { + return; + } + surfaceModel.getDocument().findText( replacer.query ) + .filter( ( range ) => !this.isDismissedRange( range ) ) + .filter( ( range ) => modified.some( ( modRange ) => range.touchesRange( modRange ) ) ) + .filter( ( range ) => this.isRangeInValidSection( range, surfaceModel.documentModel ) ) + .forEach( ( range ) => { + let fragment = surfaceModel.getLinearFragment( range ); + switch ( replacer.expand ) { + case 'sentence': + // TODO: implement once unicodejs support is added + break; + case 'paragraph': + fragment = fragment.expandLinearSelection( 'closest', ve.dm.ContentBranchNode ) + // …but that covered the entire CBN, we only want the contents + .adjustLinearSelection( 1, -1 ); + break; + case 'word': + case 'siblings': + case 'parent': + fragment = fragment.expandLinearSelection( replacer.expand ); + break; + } + actions.push( + new mw.editcheck.EditCheckAction( { + fragments: [ fragment ], + title: replacer.title, + message: replacer.message, + check: this + } ) + ); + } ); } ); return actions; }; -// mw.editcheck.TextMatchEditCheck.prototype.onBeforeSave = mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange; +mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange = function ( surfaceModel ) { + return this.handleListener( surfaceModel, 'onDocumentChange' ); +}; + +mw.editcheck.TextMatchEditCheck.prototype.onBeforeSave = function ( surfaceModel ) { + return this.handleListener( surfaceModel, 'onBeforeSave' ); +}; + +mw.editcheck.TextMatchEditCheck.prototype.act = function ( choice, action /* , surface */ ) { + switch ( choice ) { + case 'dismiss': + this.dismiss( action ); + break; + case 'delete': + action.fragments[ 0 ].removeContent(); + break; + } + return ve.createDeferred().resolve( {} ); +}; mw.editcheck.editCheckFactory.register( mw.editcheck.TextMatchEditCheck ); From 79fb726af54f7554f5f16363b79f630b5edbb030 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Fri, 10 Jan 2025 03:11:35 +0000 Subject: [PATCH 119/730] build: Updating mediawiki/mediawiki-phan-config to 0.15.1 Change-Id: Ib259026fdd83ec412d4a0dd0e1362c949c9b80fb --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 885a9fa83b..a40bdc3d12 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "require-dev": { "mediawiki/mediawiki-codesniffer": "45.0.0", - "mediawiki/mediawiki-phan-config": "0.15.0", + "mediawiki/mediawiki-phan-config": "0.15.1", "mediawiki/minus-x": "1.1.3", "php-parallel-lint/php-console-highlighter": "1.0.0", "php-parallel-lint/php-parallel-lint": "1.4.0" From b9a121be69e72c0c3924f072566b15becd6adfda Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 9 Jan 2025 21:48:01 -0600 Subject: [PATCH 120/730] EditCheck: clean up the now-unused EditCheckContextItem Change-Id: I1ba93ffb9f8b32bbf42585f56a23f935f4858e48 --- editcheck/modules/EditCheck.less | 18 ----- editcheck/modules/EditCheckContextItem.js | 91 ----------------------- editcheck/modules/init.js | 1 - extension.json | 1 - 4 files changed, 111 deletions(-) delete mode 100644 editcheck/modules/EditCheckContextItem.js diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 4d062af284..4b930ad84a 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -53,24 +53,6 @@ text-align: center; } -/* Context item */ - -.ve-ui-editCheckContextItem { - > .ve-ui-linearContextItem-head { - background: #fce7fe; - } - - &-actions { - margin-top: 16px; - } -} - -/* Fix the callout border color in browsers which support :has */ -/* stylelint-disable-next-line plugin/no-unsupported-browser-features */ -.ve-ui-desktopContext > .oo-ui-popupWidget:has( .ve-ui-editCheckContextItem:first-child ) .oo-ui-popupWidget-anchor::after { - border-bottom-color: #fce7fe; -} - /* Actions */ .ve-ui-editCheckDialog { diff --git a/editcheck/modules/EditCheckContextItem.js b/editcheck/modules/EditCheckContextItem.js deleted file mode 100644 index eed4f54bb0..0000000000 --- a/editcheck/modules/EditCheckContextItem.js +++ /dev/null @@ -1,91 +0,0 @@ -/*! - * VisualEditor EditCheckContextItem class. - * - * @copyright See AUTHORS.txt - */ - -/** - * Context item shown after a rich text paste. - * - * @class - * @extends ve.ui.PersistentContextItem - * - * @constructor - * @param {ve.ui.LinearContext} context Context the item is in - * @param {ve.dm.Model} model Model the item is related to - * @param {Object} [config] - */ -ve.ui.EditCheckContextItem = function VeUiEditCheckContextItem() { - // Parent constructor - ve.ui.EditCheckContextItem.super.apply( this, arguments ); - - // Initialization - this.$element.addClass( 've-ui-editCheckContextItem' ); -}; - -/* Inheritance */ - -OO.inheritClass( ve.ui.EditCheckContextItem, ve.ui.PersistentContextItem ); - -/* Static Properties */ - -ve.ui.EditCheckContextItem.static.name = 'editCheckReferences'; - -ve.ui.EditCheckContextItem.static.icon = 'quotes'; - -ve.ui.EditCheckContextItem.static.label = OO.ui.deferMsg( 'editcheck-dialog-addref-title' ); - -/* Methods */ - -/** - * @inheritdoc - */ -ve.ui.EditCheckContextItem.prototype.renderBody = function () { - const $actions = $( '
' ).addClass( 've-ui-editCheckContextItem-actions' ); - - this.data.action.getChoices().forEach( ( choice ) => { - const button = new OO.ui.ButtonWidget( choice ); - button.connect( this, { - click: () => { - this.onChoiceClick( choice.action ); - } - } ); - $actions.append( button.$element ); - } ); - - // HACK: Suppress close button on mobile context - if ( this.context.isMobile() ) { - this.context.closeButton.toggle( false ); - } - - this.$body.append( - $( '

' ).text( this.data.action.getDescription() ), - $actions - ); -}; - -/** - * Close the context item - * - * @param {Object} data Window closing data - */ -ve.ui.EditCheckContextItem.prototype.close = function ( data ) { - // HACK: Un-suppress close button on mobile context - if ( this.context.isMobile() ) { - this.context.closeButton.toggle( true ); - } - this.data.callback( data, this.data ); -}; - -/** - * Handle click events on a choice button - * - * @param {string} choice Choice identifier, e.g. 'accept' or 'reject' - */ -ve.ui.EditCheckContextItem.prototype.onChoiceClick = function ( choice ) { - this.data.action.check.act( choice, this.data.action, this ); -}; - -/* Registration */ - -ve.ui.contextItemFactory.register( ve.ui.EditCheckContextItem ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 30fd161b13..26aa918bec 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -5,7 +5,6 @@ mw.editcheck = { dismissedIds: {} }; -require( './EditCheckContextItem.js' ); require( './EditCheckInspector.js' ); require( './EditCheckDialog.js' ); require( './EditCheckFactory.js' ); diff --git a/extension.json b/extension.json index 422060ada2..72f387360c 100644 --- a/extension.json +++ b/extension.json @@ -623,7 +623,6 @@ "group": "visualEditorA", "packageFiles": [ "editcheck/modules/init.js", - "editcheck/modules/EditCheckContextItem.js", "editcheck/modules/EditCheckInspector.js", "editcheck/modules/EditCheckDialog.js", "editcheck/modules/EditCheckFactory.js", From 5d240c13e5b79cbac783c26e4010180a657e26c0 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 9 Jan 2025 20:11:51 -0600 Subject: [PATCH 121/730] EditCheckAction: port actions to use an ActionSet Change-Id: I66676633db8f9bf27b493ae0e27cec1a3dee0aea --- editcheck/modules/EditCheckAction.js | 60 ++++++++++++++++++---------- editcheck/modules/EditCheckDialog.js | 8 ++-- 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 5881e6ea90..eb8caaa1ab 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -8,6 +8,9 @@ * @param {jQuery|string|Function|OO.ui.HtmlSnippet} title Check title */ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { + // Mixin constructors + OO.EventEmitter.call( this ); + this.check = config.check; this.fragments = config.fragments; this.message = config.message; @@ -18,6 +21,7 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { }; OO.initClass( mw.editcheck.EditCheckAction ); +OO.mixinClass( mw.editcheck.EditCheckAction, OO.EventEmitter ); /** * Get the action's title @@ -75,29 +79,36 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi label: this.getTitle(), message: this.getDescription(), classes: collapsed ? [ 've-ui-editCheckActionWidget-collapsed' ] : '', + mode: this.check.mode, singleAction: singleAction } ); - this.getChoices().forEach( ( choice ) => { - const button = new OO.ui.ButtonWidget( choice ); - button.connect( this, { - click: () => { - const promise = this.check.act( choice.action, this, surface ) || ve.createDeferred().resolve().promise(); - widget.emit( 'act', choice, choice.action, promise ); - } - } ); - widget.addAction( button ); + widget.actions.connect( this, { + click: [ 'onActionClick', surface ] } ); + widget.actions.add( this.getChoices().map( + ( choice ) => new OO.ui.ActionWidget( ve.extendObject( { modes: [ '' ], framed: true }, choice ) ) + ) ); return widget; }; +mw.editcheck.EditCheckAction.prototype.onActionClick = function ( surface, actionWidget ) { + const promise = this.check.act( actionWidget.action, this, surface ); + this.emit( 'act', promise || ve.createDeferred().resolve().promise() ); +}; + mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) { // Configuration initialization config = config || {}; this.singleAction = config.singleAction; + this.mode = config.mode || ''; - this.actions = []; + this.actions = new OO.ui.ActionSet(); + + this.actions.connect( this, { + change: 'onActionsChange' + } ); // Parent constructor mw.editcheck.EditCheckActionWidget.super.call( this, config ); @@ -137,22 +148,32 @@ OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.LabelElement ); OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.TitledElement ); OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.FlaggedElement ); +mw.editcheck.EditCheckActionWidget.static.iconMap = { + notice: 'infoFilled', + error: 'error', + warning: 'alert' +}; + +/** + * Called when actions are changed + */ +mw.editcheck.EditCheckActionWidget.prototype.onActionsChange = function () { + this.$actions.empty().addClass( 'oo-ui-element-hidden' ); + this.actions.get( { modes: [ this.mode ] } ).forEach( ( actionWidget ) => { + this.$actions.append( actionWidget.$element ).removeClass( 'oo-ui-element-hidden' ); + } ); +}; + /** * @inheritdoc */ mw.editcheck.EditCheckActionWidget.prototype.setDisabled = function ( disabled ) { OO.ui.Widget.prototype.setDisabled.call( this, disabled ); - this.actions.forEach( ( action ) => { + this.actions.forEach( null, ( action ) => { action.setDisabled( disabled ); } ); }; -mw.editcheck.EditCheckActionWidget.static.iconMap = { - notice: 'infoFilled', - error: 'error', - warning: 'alert' -}; - mw.editcheck.EditCheckActionWidget.prototype.setType = function ( type ) { if ( !this.constructor.static.iconMap[ type ] ) { type = 'notice'; @@ -170,11 +191,6 @@ mw.editcheck.EditCheckActionWidget.prototype.getType = function () { return this.type; }; -mw.editcheck.EditCheckActionWidget.prototype.addAction = function ( action ) { - this.actions.push( action ); - this.$actions.append( action.$element ).removeClass( 'oo-ui-element-hidden' ); -}; - mw.editcheck.EditCheckActionWidget.prototype.onHeadClick = function ( e ) { if ( this.singleAction ) { return; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 1a2135cea3..5dc6db16f3 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -124,8 +124,10 @@ ve.ui.EditCheckDialog.prototype.update = function ( fromUserAction ) { checks.forEach( ( check, index ) => { const widget = check.render( index !== newOffset, this.listener === 'onBeforeSave', this.surface ); widget.on( 'togglecollapse', this.onToggleCollapse, [ check, index ], this ); - widget.on( 'act', this.onAct, [ widget ], this ); + check.on( 'act', this.onAct, [ widget ], this ); this.$checks.append( widget.$element ); + + // for scrolling later check.widget = widget; } ); @@ -309,11 +311,9 @@ ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data ) { * Handle 'act' events from the mw.widget.EditCheckActionWidget * * @param {mw.editcheck.EditCheckActionWidget} widget - * @param {Object} choice Choice object (with 'reason', 'object', 'label') - * @param {string} actionChosen Choice action * @param {jQuery.Promise} promise Promise which resolves when the action is complete */ -ve.ui.EditCheckDialog.prototype.onAct = function ( widget, choice, actionChosen, promise ) { +ve.ui.EditCheckDialog.prototype.onAct = function ( widget, promise ) { widget.setDisabled( true ); this.nextButton.setDisabled( true ); this.previousButton.setDisabled( true ); From f06a101e4e46bcc0e0729d1b6973eff7a97e66c3 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 13 Jan 2025 08:25:44 +0100 Subject: [PATCH 122/730] Localisation updates from https://translatewiki.net. Change-Id: Ib1a8d4aa789d93627cacbad253e78e8a43e1e305 --- editcheck/i18n/ar.json | 2 ++ editcheck/i18n/az.json | 2 ++ editcheck/i18n/de.json | 2 ++ editcheck/i18n/fi.json | 8 +++++--- editcheck/i18n/he.json | 2 ++ editcheck/i18n/pl.json | 2 ++ editcheck/i18n/qqq.json | 2 +- editcheck/i18n/sr-ec.json | 17 ++++++++++++++++- editcheck/i18n/tr.json | 10 ++++++++-- editcheck/i18n/zh-hant.json | 2 ++ i18n/ve-mw/fi.json | 2 +- i18n/ve-mw/ky.json | 6 ++++++ i18n/ve-mw/tr.json | 7 ++++--- i18n/ve-wmf/tr.json | 5 +++-- 14 files changed, 56 insertions(+), 13 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index da52402ba4..8252ddf9e1 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -17,6 +17,8 @@ "editcheck-dialog-addref-success-notify": "شكرًا لكم على إضافة استشهاد!", "editcheck-dialog-addref-title": "إضافة استشهاد", "editcheck-dialog-title": "قبل النشر", + "editcheck-copyvio-title": "محتوى مُلصَق", + "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. هذا عادة ما يشكل انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", "editcheck-review-title": "مراجعة التغييرات", "tag-editcheck-reference-decline-common-knowledge": "تم رفض (ثقافة عامة) التحقّق من التحرير (مراجع)", "tag-editcheck-reference-decline-common-knowledge-description": "تم رفض مرجع EditCheck (أداة التحقّق) باعتباره ثقافةً عامة", diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index e5d880aef2..51619b56df 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -17,6 +17,8 @@ "editcheck-dialog-addref-success-notify": "İstinad əlavə etdiyiniz üçün təşəkkür edirik!", "editcheck-dialog-addref-title": "İstinad əlavə et", "editcheck-dialog-title": "Yayımlamadan əvvəl", + "editcheck-copyvio-title": "Yapışdırılmış məzmun", + "editcheck-copyvio-description": "Bir qayda olaraq, mətni digər mənbələrdən olduğu kimi kopyalamayın. Bunu etmək adətən həm müəllif hüquqlarının pozulması, həm də plagiat sayılır.", "editcheck-review-title": "Dəyişiklikləri yoxla", "tag-editcheck-reference-decline-common-knowledge": "Redaktə Yoxlanışı (istinadlar) rədd edildi (hamının bildiyi)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck istinadı hamının bildiyi məlumat kimi rədd edildi", diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index 3f4ebf0b44..283e619525 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -14,6 +14,8 @@ "editcheck-dialog-addref-success-notify": "Vielen Dank für das Hinzufügen eines Belegs!", "editcheck-dialog-addref-title": "Einen Beleg hinzufügen", "editcheck-dialog-title": "Vor der Veröffentlichung", + "editcheck-copyvio-title": "Eingefügter Inhalt", + "editcheck-copyvio-description": "Kopiere in der Regel keinen Text aus anderen Quellen. Dies stellt in der Regel sowohl eine Verletzung des Urheberrechts als auch ein Plagiat dar.", "editcheck-review-title": "Änderungen überprüfen", "tag-editcheck-reference-decline-common-knowledge": "Bearbeitungsprüfung (Belege) abgelehnt (Allgemeinwissen)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck: Beleg wurde als allgemein bekannt abgelehnt", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 9c57563682..aca8ae8f37 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -12,13 +12,15 @@ "editcheck-dialog-addref-reject-question": "Mikset lisää lähdeviitettä?", "editcheck-dialog-addref-reject-description": "Muut muokkaajat arvostaisivat kuulla päätöksestäsi olla lisäämättä lähdeviitettä.", "editcheck-dialog-addref-reject-irrelevant": "En usko, että lähdeviitteet ovat tarpeen tekemässäni muokkauksessa", - "editcheck-dialog-addref-reject-common-knowledge": "Tieto, jota olen lisäämässä, on yleistä tietoa", + "editcheck-dialog-addref-reject-common-knowledge": "Lisäämäni tieto on yleisesti tunnettua", "editcheck-dialog-addref-reject-uncertain": "En ole varma, minkä lähdeviitteen lisäisin", - "editcheck-dialog-addref-reject-other": "Muu", + "editcheck-dialog-addref-reject-other": "Muu syy", "editcheck-dialog-addref-success-notify": "Kiitos lähdeviitteen lisäämisestä!", "editcheck-dialog-addref-title": "Lisää viite", "editcheck-dialog-title": "Ennen julkaisua", - "editcheck-review-title": "Arvioi muutoksia", + "editcheck-copyvio-title": "Liitetty sisältö", + "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Näin toimiminen on yleensä sekä tekijänoikeusrikkomus että plagiarismia.", + "editcheck-review-title": "Tarkasta muutokset", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", "tag-editcheck-reference-decline-common-knowledge-description": "Muokkaustarkistimen ehdotus hylättiin, koska lisäys on yleistä tietoa", "tag-editcheck-reference-decline-irrelevant": "Muokkaustarkistin (lähteet) hylätty (epäolennaista)", diff --git a/editcheck/i18n/he.json b/editcheck/i18n/he.json index dd42b6eebb..7cf0709430 100644 --- a/editcheck/i18n/he.json +++ b/editcheck/i18n/he.json @@ -17,6 +17,8 @@ "editcheck-dialog-addref-success-notify": "תודה על הוספת הערת שוליים!", "editcheck-dialog-addref-title": "הוספת הערת שוליים", "editcheck-dialog-title": "לפני הפרסום", + "editcheck-copyvio-title": "תוכן מודבק", + "editcheck-copyvio-description": "ככלל, אין להעתיק טקסט ממקורות אחרים. בדרך־כלל, זאת גם הפרת זכויות יוצרים וגם גניבת ספרותית (פלגיאט).", "editcheck-review-title": "סקירת שינויים", "tag-editcheck-reference-decline-common-knowledge": "מערכת בדיקת עריכה (הערות שוליים) – נדחה (ידוע לכול)", "tag-editcheck-reference-decline-common-knowledge-description": "הערת שוליים שהוצעה דרך מערכת בדיקת עריכה נדחתה בשל היותה ידועה לכול", diff --git a/editcheck/i18n/pl.json b/editcheck/i18n/pl.json index 6a54c92c2d..5342289305 100644 --- a/editcheck/i18n/pl.json +++ b/editcheck/i18n/pl.json @@ -19,6 +19,8 @@ "editcheck-dialog-addref-success-notify": "Dziękujemy za dodanie przypisu!", "editcheck-dialog-addref-title": "Dodaj przypis", "editcheck-dialog-title": "Przed publikacją", + "editcheck-copyvio-title": "Wklejona zawartość", + "editcheck-copyvio-description": "Co do zasady, nie kopiuj treści z innych źródeł. Takie działania stanowią zarówno naruszenie praw autorskich, jak i plagiat.", "tag-editcheck-reference-decline-common-knowledge": "Automatyczny pomocnik (przypisy): odrzucono (wiedza powszechna)", "tag-editcheck-reference-decline-common-knowledge-description": "Automatyczny pomocnik: użytkownik odrzucił sugestię dodania przypisu, ponieważ uznał informację za wiedzę powszechną", "tag-editcheck-reference-decline-irrelevant": "Automatyczny pomocnik (przypisy): odrzucono (nieistotne)", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index c64238b0d7..92b74a2e5b 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -19,9 +19,9 @@ "editcheck-dialog-addref-success-notify": "Notification messages shown after a citation is added successfully.", "editcheck-dialog-addref-title": "Title for the edit check context asking user to add a citation.", "editcheck-dialog-title": "Title shown in the toolbar while the user is in the add a citation workflow.", - "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", "editcheck-copyvio-title": "Title of pasted content / copyvio check", "editcheck-copyvio-description": "Description of pasted content / copyvio check", + "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", "tag-editcheck-reference-decline-common-knowledge": "Short description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", "tag-editcheck-reference-decline-common-knowledge-description": "Long description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", "tag-editcheck-reference-decline-irrelevant": "Short description of the editcheck-reference-decline-irrelevant tag.\n\nTag added when a user declines to add a suggested reference and selects the \"irrelevant\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-irrelevant}}", diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index 9f5f436ccb..df91174b89 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -6,6 +6,21 @@ }, "editcheck-dialog-action-no": "Не", "editcheck-dialog-action-yes": "Да", + "editcheck-dialog-addref-description": "Помозите читаоцима да знају одакле информација долази додавањем референце.", + "editcheck-dialog-addref-reject-question": "Зашто не додајете референцу?", + "editcheck-dialog-addref-reject-description": "Остали уредници радо би знали зашто сте одлучили не додати референцу.", + "editcheck-dialog-addref-reject-irrelevant": "Референцирање је небитно за моју измену", + "editcheck-dialog-addref-reject-common-knowledge": "Информација коју додајем је опште позната", + "editcheck-dialog-addref-reject-uncertain": "Не знам коју референцу навести", "editcheck-dialog-addref-reject-other": "Друго", - "editcheck-review-title": "Преглед измена" + "editcheck-dialog-addref-success-notify": "Хвала на додавању референце!", + "editcheck-dialog-addref-title": "Додавање референце", + "editcheck-dialog-title": "Пре објављивања", + "editcheck-copyvio-title": "Налепљен садржај", + "editcheck-copyvio-description": "Опште правило је да се не копира текст из других извора. Копирање текста је кршење ауторских права и плагијат.", + "editcheck-review-title": "Преглед измена", + "tag-editcheck-reference-decline-common-knowledge": "Edit Check референцирање одбачено (опште знање)", + "tag-editcheck-reference-decline-irrelevant": "Edit Check референцирање одбачено (нерелевантно)", + "tag-editcheck-reference-decline-other": "Edit Check референцирање одбачено (друго)", + "tag-editcheck-reference-decline-uncertain": "Edit Check референцирање одбачено (није сигуран)" } diff --git a/editcheck/i18n/tr.json b/editcheck/i18n/tr.json index 7bd568aed2..78b4cd0a8e 100644 --- a/editcheck/i18n/tr.json +++ b/editcheck/i18n/tr.json @@ -15,6 +15,12 @@ "editcheck-dialog-addref-success-notify": "Kaynak eklediğiniz için teşekkür ederiz!", "editcheck-dialog-addref-title": "Kaynak ekle", "editcheck-dialog-title": "Yayınlanmadan önce", - "tag-editcheck-reference-decline-common-knowledge": "Edit Check (kaynakça) reddedildi (genel bilgi)", - "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck kaynağı genel bilgi olduğu için reddedildi" + "tag-editcheck-reference-decline-common-knowledge": "Düzenleme Kontrolü (kaynakça) reddedildi (genel bilgi)", + "tag-editcheck-reference-decline-common-knowledge-description": "DüzenlemeKontrolü kaynağı genel bilgi olduğu için reddedildi", + "tag-editcheck-reference-decline-irrelevant": "Düzenleme Kontrolü (kaynakça) reddedildi (ilgisiz)", + "tag-editcheck-reference-decline-irrelevant-description": "DüzenlemeKontrolü kaynağı ilgisiz olduğu için reddedildi", + "tag-editcheck-reference-decline-other": "Düzenleme Kontrolü (kaynakça) reddedildi (diğer)", + "tag-editcheck-reference-decline-other-description": "DüzenlemeKontrolü kaynağı belirtilmeyen bir sebepten dolayı reddedildi", + "tag-editcheck-reference-decline-uncertain": "Düzenleme Kontrolü (kaynakça) reddedildi (belirsiz)", + "tag-editcheck-reference-decline-uncertain-description": "DüzenlemeKontrolü kaynağı belirsiz olduğu için reddedildi" } diff --git a/editcheck/i18n/zh-hant.json b/editcheck/i18n/zh-hant.json index 5b43832ec8..9fff0b96da 100644 --- a/editcheck/i18n/zh-hant.json +++ b/editcheck/i18n/zh-hant.json @@ -18,6 +18,8 @@ "editcheck-dialog-addref-success-notify": "感謝您新增引註!", "editcheck-dialog-addref-title": "新增引註", "editcheck-dialog-title": "發布前", + "editcheck-copyvio-title": "貼上內容", + "editcheck-copyvio-description": "一般來說,請不要從其他來源複製文字。這樣做通常會構成侵犯著作權和抄襲。", "editcheck-review-title": "審核變更", "tag-editcheck-reference-decline-common-knowledge": "編輯檢查(參考資料)遭拒(常識)", "tag-editcheck-reference-decline-common-knowledge-description": "編輯檢查參考文獻功能因「常識」而被拒絕", diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 6dbd40746d..768e464db9 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -334,7 +334,7 @@ "visualeditor-mwpredialog-convert": "Salli tekstin muotoilu", "visualeditor-mwpredialog-title": "Esimuotoiltu yksinkertainen teksti", "visualeditor-mwsignature-tool": "Allekirjoituksesi", - "visualeditor-preference-visualeditor": "Ota visuaalinen muokkain käyttöön", + "visualeditor-preference-visualeditor": "Ota käyttöön visuaalinen muokkain", "visualeditor-preference-newwikitexteditor-enable": "Käytä wikitekstitilaa visuaalisen muokkaimen sisällä toisen wikitekstitilan sijaan", "visualeditor-preference-newwikitexteditor-help": "Tätä kutsutaan joskus ”wikitekstimuokkaimeksi 2017”.", "visualeditor-preference-tabs": "Muokkaustila:", diff --git a/i18n/ve-mw/ky.json b/i18n/ve-mw/ky.json index cff465d2f3..f7ec025de1 100644 --- a/i18n/ve-mw/ky.json +++ b/i18n/ve-mw/ky.json @@ -27,6 +27,7 @@ "visualeditor-ca-editsource": "Булагын түзөтүү", "visualeditor-ca-editsource-section": "булагын түзөтүү", "visualeditor-categories-tool": "Категориялар", + "visualeditor-changedesc-mwtransclusion": "Калыптын параметрлери өзгөртүлдү", "visualeditor-desc": "МедиаВикинин визуалдык түзөткүчү", "visualeditor-descriptionpagelink": "Project:Визуалдык түзөткүч", "visualeditor-dialog-media-alttext-section": "Альтернативалуу текст", @@ -72,9 +73,11 @@ "visualeditor-dialog-meta-languages-section": "Тилдер", "visualeditor-dialog-meta-settings-displaytitle": "Көрсөтүүлүчү аталыш", "visualeditor-dialog-meta-settings-hiddencat-label": "Жашыруун категория", + "visualeditor-dialog-meta-settings-index-default": "Демейки", "visualeditor-dialog-meta-settings-index-disable": "Жок", "visualeditor-dialog-meta-settings-index-force": "Ооба", "visualeditor-dialog-meta-settings-label": "Барактын параметрлери", + "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Демейки", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Жок", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Ооба", "visualeditor-dialog-meta-settings-redirect-label": "Бул баракты төмөнкү баракка багыттоо:", @@ -108,12 +111,14 @@ "visualeditor-dialog-transclusion-loading": "Жүктөлүүдө...", "visualeditor-dialog-transclusion-no-template-data-description": "Бул калыпта [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] жок болгондуктан, параметрлер [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters автоматтык түрдө түзүлдү]. Натыйжада калыптын жана анын параметрлеринин сыпаттамасы жок. Керектүү маалымат [[$1|калыптын барагында]] болушу мүмкүн.", "visualeditor-dialog-transclusion-no-template-description": "«$1» калыбынын сыпаттамасы жок, бирок [[$2|калыптын барагында]] керектүү маалымат болушу мүмкүн.", + "visualeditor-dialog-transclusion-param-default": "Демейки: $1", "visualeditor-dialog-transclusion-param-example-long": "Мисал: $1", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Калып табуу", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Артка кайтуу", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Баары бир улантуу", "visualeditor-dialog-transclusion-title-insert-template": "Калыпты кошуу", "visualeditor-dialog-transclusion-title-edit-known-template": "Түзөтүү: $1", + "visualeditor-dialog-transclusion-title-edit-transclusion": "Калыптын мазмуну", "visualeditor-dialog-transclusion-template-search": "Калып издөө", "visualeditor-dialog-transclusion-template-search-help": "Аныктоочу сөздү издөө аркылуу керек калыпты табыңыз. Сыпаттамасы бар калыптар визуалдык түзөткүч менен жакшыраак иштейт.", "visualeditor-dialog-transclusion-wikitext": "Викитекст", @@ -172,6 +177,7 @@ "visualeditor-mwsignature-tool": "Кол тамгаңыз", "visualeditor-preference-tabs": "Түзөтүү режими:", "visualeditor-rebase-client-export": "Экспорттоо", + "visualeditor-rebase-client-export-start": "Экспорттоо…", "visualeditor-rebase-client-import": "Импорттоо", "visualeditor-rebase-client-import-name": "Барактын аталышы", "visualeditor-redirect-description": "«$1» барагына багыттама", diff --git a/i18n/ve-mw/tr.json b/i18n/ve-mw/tr.json index aa4f230931..582e404d83 100644 --- a/i18n/ve-mw/tr.json +++ b/i18n/ve-mw/tr.json @@ -39,7 +39,8 @@ "TurkishStyles", "Uncitoyen", "Uğurkent", - "Violetanka" + "Violetanka", + "Vito Genovese" ] }, "collabpad-doctitle": "CollabPad: $1", @@ -70,8 +71,8 @@ "visualeditor-ca-createlocaldescriptionsource": "Yerel açıklama kaynağı ekle", "visualeditor-ca-createsource": "Kaynak oluştur", "visualeditor-ca-editlocaldescriptionsource": "Yerel açıklama kaynağını düzenle", - "visualeditor-ca-editsource": "Kaynağı değiştir", - "visualeditor-ca-editsource-section": "kaynağı değiştir", + "visualeditor-ca-editsource": "Kaynağı düzenle", + "visualeditor-ca-editsource-section": "kaynağı düzenle", "visualeditor-ca-editsource-section-hint": "Bölümün kaynak kodunu değiştir: $1", "visualeditor-categories-tool": "Kategoriler", "visualeditor-changedesc-mwcategory-sortkey-changed": "Sıralama anahtarı $1 iken $2 olarak değiştirildi", diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index d58c90e820..f2d54452a0 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -10,6 +10,7 @@ "Incelemeelemani", "Joseph", "Kumkumuk", + "Leo", "LuCKY", "Maidis", "McAang", @@ -24,8 +25,8 @@ "tag-editcheck-newcontent-description": "EditCheck sayfaya yeni içerik eklendiğini düşünüyor", "tag-editcheck-newreference-description": "Sayfaya bir kaynak eklendi", "tag-editcheck-references-description": "EditCheck bir kaynağın gerekli olabileceğini düşünüyor", - "tag-editcheck-references-activated": "Düzenleme Denetimi (kaynakça) etkinleştirildi", - "tag-editcheck-references-activated-description": "EditCheck bir kaynağın gerekebileceğini düşünüyor ve kullanıcı arayüzü gösteriliyor", + "tag-editcheck-references-activated": "Düzenleme Kontrolü (kaynakça) etkinleştirildi", + "tag-editcheck-references-activated-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", "tag-visualeditor": "Görsel düzenleme", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleyiciyi]] kullanarak düzenleyin", "tag-visualeditor-needcheck": "Görsel düzenleme: Doğrula", From afa51ef8ac6db628c7bf2cf2b8a9acc9e7e01724 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 13 Jan 2025 17:39:27 -0600 Subject: [PATCH 123/730] EditCheck: mobile should always be in single-action mode Change-Id: Ibb091f8b0660fa6b3a205da47fd37efdaca528e9 --- editcheck/modules/EditCheckDialog.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 1a2135cea3..2b173046e2 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -262,13 +262,15 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { this.surface.getModel().on( 'undoStackChange', this.updateDebounced ); this.surface.getView().on( 'position', this.positionDebounced ); + const singleAction = ( this.listener === 'onBeforeSave' ) || OO.ui.isMobile(); + this.closeButton.toggle( OO.ui.isMobile() ); this.footer.toggle( - this.listener === 'onBeforeSave' && + singleAction && + // If we're in single-check mode don't show even the disabled pagers: !mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle ); - - this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', this.listener === 'onBeforeSave' ); + this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', singleAction ); this.surface.context.hide(); From 92ba20b8b7afd28971a2c412fa5b27585a644b04 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 13 Jan 2025 17:44:18 -0600 Subject: [PATCH 124/730] EditCheck: watch for the correct toolbar dialog on mobile Follow-up to 5f57bf2b858f870b48d445d8667b3b0d72877990 Change-Id: I27d0ac8d178ff0bcaf44aab716b78f7be6e0ae20 --- editcheck/modules/init.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 26aa918bec..f606ef992a 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -95,7 +95,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable if ( !surfaceView.reviewMode ) { const checks = mw.editcheck.editCheckFactory.createAllByListener( 'onDocumentChange', surfaceModel ); if ( checks.length ) { - const currentWindow = surface.getToolbarDialogs( 'side' ).getCurrentWindow(); + const currentWindow = surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); if ( !currentWindow || currentWindow.constructor.static.name !== 'editCheckDialog' ) { const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); return windowAction.open( 'editCheckDialog', { listener: 'onDocumentChange' } ); From 0f3e0c1552b39e226cc718287d8b6dbdb8e12e77 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 14 Jan 2025 08:17:53 +0100 Subject: [PATCH 125/730] Localisation updates from https://translatewiki.net. Change-Id: I59bacaa86f5d3c0d9149b66530820c686b70076a --- i18n/ve-mw/ky.json | 1 + 1 file changed, 1 insertion(+) diff --git a/i18n/ve-mw/ky.json b/i18n/ve-mw/ky.json index f7ec025de1..4ba5c55daf 100644 --- a/i18n/ve-mw/ky.json +++ b/i18n/ve-mw/ky.json @@ -23,6 +23,7 @@ "visualeditor-autosave-modified-prompt-accept": "Түзөтүүнү улантуу", "visualeditor-autosave-modified-prompt-reject": "Жаңыдан түзөтүү", "visualeditor-backbutton-tooltip": "Артка кайтуу", + "visualeditor-ca-createlocaldescriptionsource": "Жергиликтүү сыпаттаманы кошуу", "visualeditor-ca-createsource": "Булакты түзүү", "visualeditor-ca-editsource": "Булагын түзөтүү", "visualeditor-ca-editsource-section": "булагын түзөтүү", From 61a0df117e55002c225493e53e5aa7030e4bbe08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Tue, 14 Jan 2025 03:21:22 +0100 Subject: [PATCH 126/730] Error out when trying to load new section editing in visual mode This is not supported and causes data loss or page corruption when it happens. Bug: T223369 Bug: T275818 Change-Id: I335dc296d1ce9c8e97d9c960ed168c2f3edd5cbb --- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 3 +++ modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js | 3 +++ modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js | 3 +++ 3 files changed, 9 insertions(+) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index f9a5467cbd..db7b388c82 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1123,6 +1123,9 @@ ve.init.mw.ArticleTarget.prototype.onSaveDialogRetry = function () { * @return {jQuery.Promise} Data promise */ ve.init.mw.ArticleTarget.prototype.load = function ( dataPromise ) { + if ( this.getDefaultMode() === 'visual' && this.section === 'new' ) { + throw new Error( 'Adding new section is not supported in visual mode' ); + } // Prevent duplicate requests if ( this.loading ) { return this.loading; diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index cf1cb0218f..b798d92399 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -480,6 +480,9 @@ ve.init.mw.DesktopArticleTarget.prototype.setSurface = function ( surface ) { * @param {ve.ui.Surface} surface */ ve.init.mw.DesktopArticleTarget.prototype.setupNewSection = function ( surface ) { + if ( surface.getMode() === 'visual' && this.section === 'new' ) { + throw new Error( 'Adding new section is not supported in visual mode' ); + } if ( surface.getMode() === 'source' && this.section === 'new' ) { if ( !this.sectionTitle ) { this.sectionTitle = new OO.ui.TextInputWidget( { diff --git a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js index 5d9b650ce3..f06145c0a3 100644 --- a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js +++ b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js @@ -224,6 +224,9 @@ */ requestPageData: function ( mode, pageName, options ) { options = options || {}; + if ( mode === 'visual' && options.section === 'new' ) { + throw new Error( 'Adding new section is not supported in visual mode' ); + } const apiRequest = mode === 'source' ? this.requestWikitext.bind( this, pageName, options ) : this.requestParsoidData.bind( this, pageName, options ); From 64d3dae1114763129b8f0f0661fd85083a8bc600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Tue, 14 Jan 2025 03:20:38 +0100 Subject: [PATCH 127/730] Always use wikitext mode when loading with section=new Bug: T275818 Change-Id: I4564fdcf11f51d4ce1b52a3c5aa6cf5895d1ddef --- includes/Hooks.php | 4 ++++ modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/includes/Hooks.php b/includes/Hooks.php index df0212dd8a..4986ae79d8 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -436,6 +436,10 @@ private static function getEditPageEditor( User $user, WebRequest $req ): string if ( !$config->get( 'VisualEditorUseSingleEditTab' ) && !$isRedLink ) { return 'wikitext'; } + // Adding a new section is not supported in visual mode + if ( $req->getRawVal( 'section' ) === 'new' ) { + return 'wikitext'; + } return self::getPreferredEditor( $user, $req, !$isRedLink ); } diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index e501769a08..52ac88e266 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -757,6 +757,10 @@ if ( !mw.config.get( 'wgVisualEditorConfig' ).singleEditTab && !isRedLink ) { return 'wikitext'; } + // Adding a new section is not supported in visual mode + if ( url.searchParams.get( 'section' ) === 'new' ) { + return 'wikitext'; + } switch ( tabPreference ) { case 'prefer-ve': From 96c361f659097e978fd34ffde04917c72a77c55c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Tue, 14 Jan 2025 03:31:08 +0100 Subject: [PATCH 128/730] Disable switching to visual mode when adding new section This is not supported and causes data loss or page corruption when it happens. Bug: T223369 Change-Id: I0d05f3fd8f675e1b3446aa59f6bb125fd1dcbd4b --- modules/ve-mw/preinit/ve.init.MWEditModeTool.js | 12 ++++++++++++ modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js index dab080bab7..5c10f117ad 100644 --- a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js +++ b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js @@ -115,6 +115,18 @@ mw.libs.ve.MWEditModeVisualTool.static.title = mw.libs.ve.MWEditModeVisualTool.static.unavailableTooltip = OO.ui.deferMsg( 'visualeditor-mweditmodeve-tool-unavailable' ); +/** + * @inheritdoc + */ +mw.libs.ve.MWEditModeVisualTool.prototype.isModeAvailable = function ( mode ) { + // Adding a new section is not supported in visual mode + // eslint-disable-next-line no-jquery/no-global-selector + if ( mode === 'visual' && $( 'input[name=wpSection]' ).val() === 'new' ) { + return false; + } + return mw.libs.ve.MWEditModeVisualTool.super.prototype.isModeAvailable( mode ); +}; + /** * MediaWiki edit mode source tool. * diff --git a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js index 8ff3a42518..83f0d72bef 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js @@ -62,12 +62,24 @@ ve.ui.MWEditModeVisualTool = function VeUiMWEditModeVisualTool() { }; OO.inheritClass( ve.ui.MWEditModeVisualTool, mw.libs.ve.MWEditModeVisualTool ); OO.mixinClass( ve.ui.MWEditModeVisualTool, ve.ui.MWEditModeTool ); + /** * @inheritdoc */ ve.ui.MWEditModeVisualTool.prototype.switch = function () { this.toolbar.getTarget().switchToVisualEditor(); }; + +/** + * @inheritdoc + */ +ve.ui.MWEditModeVisualTool.prototype.isModeAvailable = function ( mode ) { + // Adding a new section is not supported in visual mode + if ( mode === 'visual' && this.toolbar.getTarget().section === 'new' ) { + return false; + } + return ve.ui.MWEditModeVisualTool.super.prototype.isModeAvailable( mode ); +}; ve.ui.toolFactory.register( ve.ui.MWEditModeVisualTool ); /** From 5eb8933e0906c52b033699555e9401d339494f89 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 15 Jan 2025 08:25:45 +0100 Subject: [PATCH 129/730] Localisation updates from https://translatewiki.net. Change-Id: Id94a47bce1a802fdb10a0ab240dc62de53d8d290 --- editcheck/i18n/nl.json | 2 ++ i18n/ve-mw/ky.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index 15c87dd439..f0922494ec 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -18,6 +18,8 @@ "editcheck-dialog-addref-success-notify": "Bedankt voor het toevoegen van een referentie!", "editcheck-dialog-addref-title": "Referentie toevoegen", "editcheck-dialog-title": "Voordat u dit publiceert", + "editcheck-copyvio-title": "Geplakte inhoud", + "editcheck-copyvio-description": "Over het algemeen geldt: kopieer geen tekst van andere bronnen. Dit is meestal een schending van het auteursrecht en ook plagiaat.", "editcheck-review-title": "Wijzigingen controleren", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (referenties) afgewezen (algemene kennis)", "tag-editcheck-reference-decline-common-knowledge-description": "De EditCheck-referentie is afgewezen als algemeen bekend", diff --git a/i18n/ve-mw/ky.json b/i18n/ve-mw/ky.json index 4ba5c55daf..173a2fddfc 100644 --- a/i18n/ve-mw/ky.json +++ b/i18n/ve-mw/ky.json @@ -72,7 +72,7 @@ "visualeditor-dialog-meta-languages-link-label": "Байланыштырылган барак", "visualeditor-dialog-meta-languages-name-label": "Тил", "visualeditor-dialog-meta-languages-section": "Тилдер", - "visualeditor-dialog-meta-settings-displaytitle": "Көрсөтүүлүчү аталыш", + "visualeditor-dialog-meta-settings-displaytitle": "Көрсөтүлүүчү аталыш", "visualeditor-dialog-meta-settings-hiddencat-label": "Жашыруун категория", "visualeditor-dialog-meta-settings-index-default": "Демейки", "visualeditor-dialog-meta-settings-index-disable": "Жок", From 1881e54d2278a10eb042cd9a0bbf85de870c46e3 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 15 Jan 2025 14:26:10 +0000 Subject: [PATCH 130/730] EditCheck: Check for onDocumentChange checks on load There may already be suggestions if we are recovering from auto-save. Change-Id: Ifc0b5387c18d059de820385de1a4d3697c39f944 --- editcheck/modules/init.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index f606ef992a..47c0ed93a8 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -90,8 +90,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable const surfaceModel = surface.getModel(); const surfaceView = surface.getView(); - // TODO: De-duplicate with this listener in EditCheckDialog - surfaceModel.on( 'undoStackChange', ve.debounce( () => { + function onDocumentChange() { if ( !surfaceView.reviewMode ) { const checks = mw.editcheck.editCheckFactory.createAllByListener( 'onDocumentChange', surfaceModel ); if ( checks.length ) { @@ -102,7 +101,13 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable } } } - }, 100 ) ); + } + + // TODO: De-duplicate with this listener in EditCheckDialog + surfaceModel.on( 'undoStackChange', ve.debounce( () => onDocumentChange, 100 ) ); + + // Run on load (e.g. recovering from auto-save) + onDocumentChange(); } ); mw.hook( 've.activationStart' ).add( () => { document.documentElement.classList.add( 've-editcheck-available' ); From a1c6684a4ce0aa882308323d81939a1788788d7d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 16 Jan 2025 08:22:01 +0100 Subject: [PATCH 131/730] Localisation updates from https://translatewiki.net. Change-Id: Iacf71adbc875a77dd0bf928053680cff90a1c67f --- editcheck/i18n/mk.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index b05f7ce1fd..7ebc658b40 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -16,6 +16,8 @@ "editcheck-dialog-addref-success-notify": "Ви благодариме што ставивте навод!", "editcheck-dialog-addref-title": "Додај навод", "editcheck-dialog-title": "Пред да објавите", + "editcheck-copyvio-title": "Налепена содржина", + "editcheck-copyvio-description": "По општо правило, не копирајте текст од други извори. Копирањето на текст претставува кршење на авторски права и плагијат.", "editcheck-review-title": "Прегледај промени", "tag-editcheck-reference-decline-common-knowledge": "Проверката на уредувањето (наводи) е одбиена (општопознато)", "tag-editcheck-reference-decline-common-knowledge-description": "Наводот со EditCheck е одбиен како општопознат", From b2c5c31c7b700ef7eb8466704ab4e23d07f8f81b Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Fri, 17 Jan 2025 03:38:37 +0000 Subject: [PATCH 132/730] build: Updating wdio-mediawiki to 2.6.0 Additional changes: * Enable stylelint caching. Change-Id: I56aa155191f8ffd9c8bd6d782d1125b0a5437c93 --- .gitignore | 1 + Gruntfile.js | 3 ++- package-lock.json | 18 +++++++----------- package.json | 2 +- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 4f6919b0dc..d94eedefd5 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ tests/selenium/log # OS .DS_Store +/.stylelintcache diff --git a/Gruntfile.js b/Gruntfile.js index 6c6cdf616f..c32ebb0e38 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -120,7 +120,8 @@ module.exports = function ( grunt ) { }, stylelint: { options: { - reportNeedlessDisables: true + reportNeedlessDisables: true, + cache: true }, all: [ '**/*.{css,less}', diff --git a/package-lock.json b/package-lock.json index 0b99e847f3..b215750b4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", - "wdio-mediawiki": "2.5.0" + "wdio-mediawiki": "2.6.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -13535,16 +13535,12 @@ } }, "node_modules/wdio-mediawiki": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.5.0.tgz", - "integrity": "sha512-cuBotMJyga/49r5rQzO4Op1brj0yj7Kw/FTe3k6TrNJeK5iwIDsbmruEoYwr5Z2cl3TKPuK6Y4YbV/gdSFfqtg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.6.0.tgz", + "integrity": "sha512-aYUyuDhygB27ZbXBLGlyGdQb0wsY1JS75wPFaCZ7yss2FVoHiLdaiH4yNViJ4PBUo4Kr4fvUxjZtAo3cd5L5bA==", "dev": true, "dependencies": { "mwbot": "2.1.3" - }, - "engines": { - "node": ">=18.17.0", - "npm": ">=9.6.7" } }, "node_modules/webdriver": { @@ -24387,9 +24383,9 @@ } }, "wdio-mediawiki": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.5.0.tgz", - "integrity": "sha512-cuBotMJyga/49r5rQzO4Op1brj0yj7Kw/FTe3k6TrNJeK5iwIDsbmruEoYwr5Z2cl3TKPuK6Y4YbV/gdSFfqtg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.6.0.tgz", + "integrity": "sha512-aYUyuDhygB27ZbXBLGlyGdQb0wsY1JS75wPFaCZ7yss2FVoHiLdaiH4yNViJ4PBUo4Kr4fvUxjZtAo3cd5L5bA==", "dev": true, "requires": { "mwbot": "2.1.3" diff --git a/package.json b/package.json index d9258e6f11..7313de24ba 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,6 @@ "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", - "wdio-mediawiki": "2.5.0" + "wdio-mediawiki": "2.6.0" } } From 4c96eb0a0b9195e9403181d87167a7765edcc532 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 17 Jan 2025 08:35:43 +0100 Subject: [PATCH 133/730] Localisation updates from https://translatewiki.net. Change-Id: I6e0044015a9436639613f7ea8d435771f13f8741 --- i18n/ve-mw/ppl.json | 8 ++++++++ i18n/ve-wmf/az.json | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 i18n/ve-mw/ppl.json diff --git a/i18n/ve-mw/ppl.json b/i18n/ve-mw/ppl.json new file mode 100644 index 0000000000..3a33a6328f --- /dev/null +++ b/i18n/ve-mw/ppl.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "TimumachtikanNawat" + ] + }, + "visualeditor-ca-editsource-section": "Shikpata ne tajkwilulchin" +} diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index cbb07e8beb..92fe29475c 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -20,8 +20,8 @@ "tag-visualeditor-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktorun]] köməyi ilə edilib", "tag-visualeditor-needcheck": "Vizual redaktor: Yoxla", "tag-visualeditor-needcheck-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|vizual redaktor]] ilə edildi, sistem burada vikimətndə gözlənilməyən dəyişikliklər aşkar etdi.", - "tag-visualeditor-wikitext": "2017 mənbə redaktoru", - "tag-visualeditor-wikitext-description": "2017 mənbə redaktoru vasitəsilə edilmiş düzəlişlər", + "tag-visualeditor-wikitext": "2017 vikimətn redaktoru", + "tag-visualeditor-wikitext-description": "2017 vikimətn redaktoru vasitəsilə edilmiş redaktələr", "tag-visualeditor-switched": "Vizual redaktor: Dəyişdirildi", "tag-visualeditor-switched-description": "İstifadəçi vizual redaktorla başladı, daha sonra vikimətn redaktoruna keçdi.", "visualeditor-feedback-link": "Project:Vizual redaktor/Rəy", From f3f52ad5db29f7d8e6776baea865bb75e06af73d Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Wed, 8 Jan 2025 22:15:07 +0100 Subject: [PATCH 134/730] selenium: Wait for the page to be fully loaded in Page.openTitle Return the returned promise from Page.openTitle to the caller Follow-Up: Idd72732a749ee6657a8617cc0ecc7ab9f6217a69 Change-Id: I554f6358a97323fe2b9c172c8984bab3bd067434 --- tests/selenium/pageobjects/edit.page.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/selenium/pageobjects/edit.page.js b/tests/selenium/pageobjects/edit.page.js index 46a1153cbb..43d39dbdc5 100644 --- a/tests/selenium/pageobjects/edit.page.js +++ b/tests/selenium/pageobjects/edit.page.js @@ -115,8 +115,8 @@ class EditPage extends Page { return $( '.oo-ui-tool-name-editModeVisual' ); } - openForEditing( title ) { - super.openTitle( title, { veaction: 'edit', cxhidebetapopup: 1, hidewelcomedialog: 1, vehidebetadialog: 1 } ); + async openForEditing( title ) { + return super.openTitle( title, { veaction: 'edit', cxhidebetapopup: 1, hidewelcomedialog: 1, vehidebetadialog: 1 } ); } activationComplete() { From 34c880e55f2eff1d245b0301c9b1f162785b4f8b Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 20 Jan 2025 08:24:49 +0100 Subject: [PATCH 135/730] Localisation updates from https://translatewiki.net. Change-Id: Ib4fd00eea955dc5fbe7fd32dd78d31ca27f1f1b2 --- editcheck/i18n/fa.json | 2 ++ i18n/ve-mw/br.json | 2 ++ i18n/ve-wmf/ky.json | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/fa.json b/editcheck/i18n/fa.json index dd7a5cba5d..50af3cee3a 100644 --- a/editcheck/i18n/fa.json +++ b/editcheck/i18n/fa.json @@ -16,6 +16,8 @@ "editcheck-dialog-addref-success-notify": "بابت افزودن یادکرد از شما ممنونیم!", "editcheck-dialog-addref-title": "افزودن یک یادکرد", "editcheck-dialog-title": "پیش از انتشار", + "editcheck-copyvio-title": "متن چسبانده‌شده", + "editcheck-copyvio-description": "به‌عنوان یک قاعدهٔ کلی، متن را از سایر منابع کپی نکنید. چنین کاری معمولاً ترکیبی است از نقض حق تکثیر و سرقت ادبی.", "editcheck-review-title": "بازبینی تغییرات", "tag-editcheck-reference-decline-common-knowledge": "بررسی ویرایش (ارجاعات) رد شد (دانش عمومی)", "tag-editcheck-reference-decline-common-knowledge-description": "ارجاع بررسی ویرایش تحت عنوان دانش عمومی رد شد", diff --git a/i18n/ve-mw/br.json b/i18n/ve-mw/br.json index 42848b6cf8..8c8087b0cf 100644 --- a/i18n/ve-mw/br.json +++ b/i18n/ve-mw/br.json @@ -40,7 +40,9 @@ "visualeditor-ca-editlocaldescriptionsource": "Kemmañ deskrivadur lec'hel (mammenn)", "visualeditor-ca-editsource": "Kemmañ ar vammenn", "visualeditor-ca-editsource-section": "kemmañ ar vammenn", + "visualeditor-ca-editsource-section-hint": "Kemmañ kod tarzh ar rann : $1", "visualeditor-categories-tool": "Rummadoù", + "visualeditor-changedesc-mwcategory-sortkey-changed": "Kemmet eo bet an alc'hwez urzhiañ eus $1 da $2", "visualeditor-changedesc-mwlanguagevariant": "Balizenn adstumm yezh kemmet", "visualeditor-changedesc-mwredirect": "Pal an adkas kemmet eus $1 da $2", "visualeditor-changedesc-mwtransclusion": "Arventennoù patrom kemmet", diff --git a/i18n/ve-wmf/ky.json b/i18n/ve-wmf/ky.json index 364803f8ca..c69d551bcb 100644 --- a/i18n/ve-wmf/ky.json +++ b/i18n/ve-wmf/ky.json @@ -16,7 +16,7 @@ "visualeditor-help-label": "Колдонмону окуу", "visualeditor-welcomedialog-action": "Түзөтүп баштоо", "visualeditor-welcomedialog-content": "Көп түкүрсө көл болот.", - "visualeditor-welcomedialog-content-thanks": "Дүйнөнү ого бетер таанууга жардам бергениңиз үчүн рахмат !", + "visualeditor-welcomedialog-content-thanks": "Дүйнөнү ого бетер таанууга жардам бергениңиз үчүн рахмат!", "visualeditor-welcomedialog-switch": "Булак түзөткүчтөн түзөтүп баштоо", "visualeditor-welcomedialog-switch-ve": "Визуалдык түзөткүчтөн түзөтүп баштоо" } From 664acda9339adff3d661cb2efe3fa1ae5bd859f5 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 21 Jan 2025 08:14:39 +0100 Subject: [PATCH 136/730] Localisation updates from https://translatewiki.net. Change-Id: Ia2603662eca143ba72d1b248a059d28d9f6c1ac0 --- i18n/ve-mw/mui.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/mui.json b/i18n/ve-mw/mui.json index 9cc7fc5b21..35a9b28733 100644 --- a/i18n/ve-mw/mui.json +++ b/i18n/ve-mw/mui.json @@ -6,7 +6,7 @@ ] }, "tooltip-ca-ve-edit": "Robah laman ni", - "visualeditor-ca-createlocaldescriptionsource": "Tamba sumber keterangan sinila", + "visualeditor-ca-createlocaldescriptionsource": "Bûbû sumber keterangan sinila", "visualeditor-ca-createsource": "Gawé' kodenyo", "visualeditor-ca-editsource": "Dandani kodenyo", "visualeditor-ca-editsource-section": "dandani kodenyo", From 35f9804a1749cd8c964916fdeabb19cf4930ee35 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 21 Jan 2025 18:27:32 +0000 Subject: [PATCH 137/730] updateSubmodule.sh: Put localisation updates in a separate section Change-Id: I79d78dacc7a257dfa5361612c41787649a285ab8 --- bin/updateSubmodule.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bin/updateSubmodule.sh b/bin/updateSubmodule.sh index 1d2818b200..fd096096c8 100755 --- a/bin/updateSubmodule.sh +++ b/bin/updateSubmodule.sh @@ -46,6 +46,8 @@ fi # Generate commit summary NEWCHANGES=$(git log ..$TARGET --oneline --no-merges --topo-order --reverse --color=never) +LOCALISATION_UPDATES=$(echo "$NEWCHANGES" | grep "Localisation updates from https://translatewiki.net" | awk '{print $1}' | paste -sd, - | sed -E 's/,/, /g' | sed -E 's/(([^,]+, ?){6}) /\1\n/g') +NEWCHANGES=$(echo "$NEWCHANGES" | grep -v "Localisation updates from https://translatewiki.net") TASKS=$(git log ..$TARGET --no-merges --format=format:%B | grep "Bug: T" | sort | uniq) # Ensure script continues if grep "fails" (returns nothing) with || : (due to -e flag in bash) @@ -70,6 +72,13 @@ COMMITMSG="Update VE core submodule to $TARGETDESC New changes: $NEWCHANGES" +if [ -n "$LOCALISATION_UPDATES" ]; then + COMMITMSG+=" + +Localisation Updates: +$LOCALISATION_UPDATES" +fi + if [ -n "$ADDED_I18N_KEYS" ]; then COMMITMSG+=" From 0f5b55fafb72cd2071207e729aec2e86663d78b6 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 21 Jan 2025 18:48:19 +0000 Subject: [PATCH 138/730] Update VE core submodule to master (6c3d9aadf) New changes: 2790cd6e4 Use `wikimedia/client` instead of `client-es6` 902eb5cc8 Target: Add custom setting for allow tab navigation off the surface Localisation Updates: abdc06973, 655bc3cf9, 042670135, bc55c2667, e4c517ca7, aa7450d12, 939d76749, 97e20b872, 5c50899a8 Bug: T368554 Change-Id: I1ecf33e87dca9dcf90baa816147e4c3a6d6add44 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index dfb712599d..6c3d9aadfb 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit dfb712599d4e4c59dff56836529f9b99c1ac526e +Subproject commit 6c3d9aadfb740c00c2b99e1779ad9f0267c2dc02 From a39cd70414a12056ab868a4618ce65c6d9c9cd25 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 15 Jan 2025 20:11:32 -0600 Subject: [PATCH 139/730] EditCheck: automatically focus a new check if one appears Change-Id: Iad75cbc361b2cc15e4dca6acb68cb5abf1193217 --- editcheck/modules/EditCheckAction.js | 29 ++++++++++++++++++++++++++++ editcheck/modules/EditCheckDialog.js | 10 +++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index eb8caaa1ab..3c17b449ad 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -97,6 +97,35 @@ mw.editcheck.EditCheckAction.prototype.onActionClick = function ( surface, actio this.emit( 'act', promise || ve.createDeferred().resolve().promise() ); }; +/** + * @param {mw.editcheck.EditCheckAction} other + * @return {boolean} + */ +mw.editcheck.EditCheckAction.prototype.equals = function ( other ) { + // Same check type? + if ( this.check.constructor !== other.check.constructor ) { + return false; + } + // If ids are present, they're the only thing that counts + if ( this.id || other.id ) { + return this.id === other.id; + } + // Shortcut the fragment check if possible + if ( this.fragments.length !== other.fragments.length ) { + return false; + } + // Now they're the same if every fragment is found in both actions + return this.fragments.every( ( fragment ) => { + const selection = fragment.getSelection(); + for ( let i = other.fragments.length - 1; i >= 0; i-- ) { + if ( selection.equals( other.fragments[ i ].getSelection() ) ) { + return true; + } + } + return false; + } ); +}; + mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) { // Configuration initialization config = config || {}; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index dd365bfac6..fcaf463fea 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -107,17 +107,25 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { }; ve.ui.EditCheckDialog.prototype.update = function ( fromUserAction ) { + let newChecks; const surfaceView = this.surface.getView(); // We only regenerate the checks on-change during the edit. If we're in // the proofreading step, no new checks should appear based on changes: if ( this.listener === 'onDocumentChange' || !this.currentChecks ) { + const previousChecks = this.currentChecks; this.currentChecks = mw.editcheck.editCheckFactory.createAllByListener( this.listener, this.surface.getModel() ); + newChecks = previousChecks && this.currentChecks.filter( ( check ) => previousChecks.every( ( oldCheck ) => !check.equals( oldCheck ) ) ); } if ( this.currentChecks.length === 0 ) { return this.close( 'complete' ); } const checks = this.currentChecks; - const newOffset = Math.min( this.currentOffset, checks.length - 1 ); + // This just adjusts so the previously selected check remains selected: + let newOffset = Math.min( this.currentOffset, checks.length - 1 ); + if ( newChecks && newChecks.length ) { + // If new checks were found, automatically select the first new check + newOffset = this.currentChecks.indexOf( newChecks[ 0 ] ); + } this.$checks.empty(); this.$highlights.empty(); From add580320507e9585d8000ca2513e0d878c75ac6 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 23 Jan 2025 10:48:06 -0600 Subject: [PATCH 140/730] EditCheck: add reference should only trigger on fully covered nodes Follow-up to d69d366469ec3ca7b37cceca4a075ecd91d022f5 which accidentally removed this behavior. It implemented this way to do it, but forgot to apply it to the check. Bug: T381020 Change-Id: I42938d81d9a5d7983a8a2a935cac81737b6c4cec --- editcheck/modules/editchecks/AddReferenceEditCheck.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index 58b5caa7a3..fb03ce4d71 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -16,6 +16,8 @@ mw.editcheck.AddReferenceEditCheck.static.defaultConfig = ve.extendObject( {}, m beforePunctuation: false } ); +mw.editcheck.AddReferenceEditCheck.static.onlyCoveredNodes = true; + mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceModel ) { return this.findAddedContent( surfaceModel.getDocument() ).filter( ( range ) => !this.isDismissedRange( range ) ) .map( From f4a1f25bdd44143df6d7703ed1307e8cccb1e4e5 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 23 Jan 2025 14:15:38 -0600 Subject: [PATCH 141/730] EditCheck: make gutter highlights clickable for quick navigation This is way too fiddly as-is to be the *only* way to navigate, but it's a perfectly fine backup trick. Change-Id: I3e26c66e8540d6857c29cc39175e823b7c3900c1 --- editcheck/modules/EditCheckDialog.js | 1 + 1 file changed, 1 insertion(+) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index dd365bfac6..9b0cb339ce 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -175,6 +175,7 @@ ve.ui.EditCheckDialog.prototype.drawHighlights = function () { top: rect.top - 2, height: rect.height + 4 } ) + .on( 'click', () => this.setCurrentOffset( index ) ) ); } ); } ); From 584ec6366ca9378a5cddbe1acdfe446ad3bf127f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 27 Jan 2025 08:22:35 +0100 Subject: [PATCH 142/730] Localisation updates from https://translatewiki.net. Change-Id: Ibb0157123c0ed4b7d863c211cb3ff407047ca7f9 --- editcheck/i18n/sr-ec.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index df91174b89..409b62de0e 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -20,7 +20,11 @@ "editcheck-copyvio-description": "Опште правило је да се не копира текст из других извора. Копирање текста је кршење ауторских права и плагијат.", "editcheck-review-title": "Преглед измена", "tag-editcheck-reference-decline-common-knowledge": "Edit Check референцирање одбачено (опште знање)", + "tag-editcheck-reference-decline-common-knowledge-description": "Референцирање је одбачено зато што је у питању опште знање", "tag-editcheck-reference-decline-irrelevant": "Edit Check референцирање одбачено (нерелевантно)", + "tag-editcheck-reference-decline-irrelevant-description": "Референцирање је небитно за конкретну измену", "tag-editcheck-reference-decline-other": "Edit Check референцирање одбачено (друго)", - "tag-editcheck-reference-decline-uncertain": "Edit Check референцирање одбачено (није сигуран)" + "tag-editcheck-reference-decline-other-description": "Референцирање је одбачено из неког другог разлога", + "tag-editcheck-reference-decline-uncertain": "Edit Check референцирање одбачено (нисам сигуран/на)", + "tag-editcheck-reference-decline-uncertain-description": "Референцирање је одбачено из незнања" } From 1e78adbec00351b825a4f8fcd120801cb66428fe Mon Sep 17 00:00:00 2001 From: "Volker E." Date: Fri, 24 Jan 2025 15:47:15 -0800 Subject: [PATCH 143/730] styles: Remove outdated `-ms` vendor prefixes Change-Id: I5723fcd7594f27a7d5697d9d95b5c8b48f84851e --- .../preinit/styles/ve.init.mw.DesktopArticleTarget.init.less | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less index 6fdc49d0ec..fa48f16301 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less @@ -64,7 +64,6 @@ pointer-events: none; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; opacity: 0.5; } @@ -74,7 +73,6 @@ /* Override the styles above to allow the heading to be selected, for copy-pasting */ -webkit-user-select: text; -moz-user-select: text; - -ms-user-select: text; user-select: text; pointer-events: auto; cursor: text; From 8932b355eb792ad049da31f579145b25190d936c Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 28 Jan 2025 08:23:39 +0100 Subject: [PATCH 144/730] Localisation updates from https://translatewiki.net. Change-Id: I7dc011fb5a4870b20899a1fe94fcc189ceefc386 --- editcheck/i18n/nb.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editcheck/i18n/nb.json b/editcheck/i18n/nb.json index cc4830f61f..1ae30f1c7f 100644 --- a/editcheck/i18n/nb.json +++ b/editcheck/i18n/nb.json @@ -17,6 +17,9 @@ "editcheck-dialog-addref-success-notify": "Takk for at du la til en referanse!", "editcheck-dialog-addref-title": "Legg til en referanse", "editcheck-dialog-title": "Før publisering", + "editcheck-copyvio-title": "Innhold som er limt inn", + "editcheck-copyvio-description": "Generelt må du ikke kopiere tekst fra andre kilder. Det utgjør ofte plagiarisme og et brudd på opphavsrett.", + "editcheck-review-title": "Gjennomgå endringer", "tag-editcheck-reference-decline-common-knowledge": "Redigeringssjekk (referanser) avvist (allmennkunnskap)", "tag-editcheck-reference-decline-common-knowledge-description": "Redigeringssjekk for referanser ble avvist som allmennkunnskap", "tag-editcheck-reference-decline-irrelevant": "Redigeringssjekk (referanser) avvist (irrelevant)", From c39815e67388daad916c0623183ef779907551fe Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 28 Jan 2025 10:20:01 -0600 Subject: [PATCH 145/730] Update VE core submodule to master (9014b6591) New changes: 003da1438 ve.dm.example: Remove pasted garbage from file header 800c466ae PositionedTargetToolbar: Allow construction of a toolbar that doesn't attach dialogs 2cb1ca7e9 Update OOUI to v0.51.5 8e13e0a60 styles: Remove outdated `-ms` vendor prefix Localisation Updates: 96f2ea4bc, 17120dfc3 Change-Id: I3bc9b4146c1eba57a8d52b4a5ce15601846b0f28 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 6c3d9aadfb..9014b65910 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 6c3d9aadfb740c00c2b99e1779ad9f0267c2dc02 +Subproject commit 9014b65910731d9259b076ed7ac6c6583f37f40b From 1be8fb8e046ac6945f4a223cf35a951e3ed3dd60 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 28 Jan 2025 17:39:25 -0600 Subject: [PATCH 146/730] EditCheck: don't reregister onAct constantly Follow-up to 5d240c13e5b79cbac783c26e4010180a657e26c0 Change-Id: If9838d18ed06eb9c1e1101a5bf99b79c0768763a --- editcheck/modules/EditCheckDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 5a2331a3dc..56f269de6a 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -132,7 +132,7 @@ ve.ui.EditCheckDialog.prototype.update = function ( fromUserAction ) { checks.forEach( ( check, index ) => { const widget = check.render( index !== newOffset, this.listener === 'onBeforeSave', this.surface ); widget.on( 'togglecollapse', this.onToggleCollapse, [ check, index ], this ); - check.on( 'act', this.onAct, [ widget ], this ); + check.off( 'act' ).on( 'act', this.onAct, [ widget ], this ); this.$checks.append( widget.$element ); // for scrolling later From 51c9f1c4d1b4ef364015e663a96689e1c2e449e7 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Wed, 29 Jan 2025 03:32:45 +0000 Subject: [PATCH 147/730] build: Updating mediawiki/mediawiki-codesniffer to 46.0.0 Change-Id: I96e9b562f1de63e076e82ba3b5ed31dd5bc6b110 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index a40bdc3d12..c26c89b34c 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "require-dev": { - "mediawiki/mediawiki-codesniffer": "45.0.0", + "mediawiki/mediawiki-codesniffer": "46.0.0", "mediawiki/mediawiki-phan-config": "0.15.1", "mediawiki/minus-x": "1.1.3", "php-parallel-lint/php-console-highlighter": "1.0.0", From b8395c2426bf60170cc27e4ca0b996ded3d31362 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 28 Jan 2025 20:10:23 -0600 Subject: [PATCH 148/730] EditCheck: fix mid-edit checks displaying on-change Follow-up to 1881e54d2278a10eb042cd9a0bbf85de870c46e3 Change-Id: I76662a681a427866862ec99dacbe72604460288a --- editcheck/modules/init.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 47c0ed93a8..6b76f64797 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -104,7 +104,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable } // TODO: De-duplicate with this listener in EditCheckDialog - surfaceModel.on( 'undoStackChange', ve.debounce( () => onDocumentChange, 100 ) ); + surfaceModel.on( 'undoStackChange', ve.debounce( onDocumentChange, 100 ) ); // Run on load (e.g. recovering from auto-save) onDocumentChange(); From aade795536a898c70f1a1b680b0e7f30374bf0a6 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 29 Jan 2025 13:37:23 +0000 Subject: [PATCH 149/730] TextMatchEditCheck: Disable in onBeforeSave by default There isn't a way to edit text in review mode at the moment. Change-Id: I0a66fc43684b61e0ba3304d6970b43b245deb16f --- .../modules/editchecks/experimental/TextMatchEditCheck.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js index 9fe4aa058a..6cae537e34 100644 --- a/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js +++ b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js @@ -76,9 +76,9 @@ mw.editcheck.TextMatchEditCheck.prototype.onDocumentChange = function ( surfaceM return this.handleListener( surfaceModel, 'onDocumentChange' ); }; -mw.editcheck.TextMatchEditCheck.prototype.onBeforeSave = function ( surfaceModel ) { - return this.handleListener( surfaceModel, 'onBeforeSave' ); -}; +// For now it doesn't make sense to run a TextMatchEditCheck in review mode +// as there isn't a way to edit the text. +mw.editcheck.TextMatchEditCheck.prototype.onBeforeSave = null; mw.editcheck.TextMatchEditCheck.prototype.act = function ( choice, action /* , surface */ ) { switch ( choice ) { From daca8e4208c03b7b6659bd2b2eb85e421e32d9a1 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 29 Jan 2025 13:48:24 +0000 Subject: [PATCH 150/730] EditCheck: Re-open mid-edit sidebar when exiting pre-save checks Change-Id: Idc1be27b9b647deb7fdd0ee901d72b4d056ca0ab --- editcheck/modules/init.js | 64 +++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 6b76f64797..86ff9628b1 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -187,36 +187,42 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable target.onContainerScroll(); // surface.executeCommand( 'editCheckDialogBeforeSave' ); return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true } ) - .then( ( instance ) => instance.closing ) - .then( ( data ) => { - reviewToolbar.$element.remove(); - toolbar.toggle( true ); - target.toolbar = toolbar; - if ( $contextContainer ) { - surface.context.popup.$container = $contextContainer; - surface.context.popup.containerPadding = contextPadding; - } - // Creating a new PositionedTargetToolbar stole the - // toolbar windowmanagers, so we need to make the - // original toolbar reclaim them: - toolbar.disconnect( target ); - target.setupToolbar( surface ); - target.onContainerScroll(); + .then( ( instance ) => { + instance.closed.then( () => {}, () => {} ).then( () => { + // Re-open the mid-edit sidebar if necessary. + // TODO: Do this without triggering a fake undoStackChange event. + surface.getModel().emit( 'undoStackChange' ); + } ); + return instance.closing.then( ( data ) => { + reviewToolbar.$element.remove(); + toolbar.toggle( true ); + target.toolbar = toolbar; + if ( $contextContainer ) { + surface.context.popup.$container = $contextContainer; + surface.context.popup.containerPadding = contextPadding; + } + // Creating a new PositionedTargetToolbar stole the + // toolbar windowmanagers, so we need to make the + // original toolbar reclaim them: + toolbar.disconnect( target ); + target.setupToolbar( surface ); + target.onContainerScroll(); - if ( data ) { - const delay = ve.createDeferred(); - // If they inserted, wait 2 seconds on desktop - // before showing save dialog to make sure insertions are finialized - setTimeout( () => { - ve.track( 'counter.editcheck.preSaveChecksCompleted' ); - delay.resolve(); - }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); - return delay.promise(); - } else { - // closed via "back" or otherwise - ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); - return ve.createDeferred().reject().promise(); - } + if ( data ) { + const delay = ve.createDeferred(); + // If they inserted, wait 2 seconds on desktop + // before showing save dialog to make sure insertions are finialized + setTimeout( () => { + ve.track( 'counter.editcheck.preSaveChecksCompleted' ); + delay.resolve(); + }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); + return delay.promise(); + } else { + // closed via "back" or otherwise + ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); + return ve.createDeferred().reject().promise(); + } + } ); } ); } ); } ); From b3039cd6630051693767b7c975c0d5ef940efd73 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 29 Jan 2025 16:33:11 +0000 Subject: [PATCH 151/730] updateSubmodule: Show error message if there are no new changes Change-Id: Ie32e098a40626998628488782cf5cd4052a1a9d0 --- bin/updateSubmodule.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bin/updateSubmodule.sh b/bin/updateSubmodule.sh index fd096096c8..b46ac2a5e1 100755 --- a/bin/updateSubmodule.sh +++ b/bin/updateSubmodule.sh @@ -46,6 +46,12 @@ fi # Generate commit summary NEWCHANGES=$(git log ..$TARGET --oneline --no-merges --topo-order --reverse --color=never) + +if [ -z "$NEWCHANGES" ]; then + echo >&2 "No new changes" + exit 1 +fi + LOCALISATION_UPDATES=$(echo "$NEWCHANGES" | grep "Localisation updates from https://translatewiki.net" | awk '{print $1}' | paste -sd, - | sed -E 's/,/, /g' | sed -E 's/(([^,]+, ?){6}) /\1\n/g') NEWCHANGES=$(echo "$NEWCHANGES" | grep -v "Localisation updates from https://translatewiki.net") TASKS=$(git log ..$TARGET --no-merges --format=format:%B | grep "Bug: T" | sort | uniq) From 4f14cbd418298042a24509093c65df3c8be1560e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 3 Feb 2025 08:27:47 +0100 Subject: [PATCH 152/730] Localisation updates from https://translatewiki.net. Change-Id: I0ed9368e5cc2f39a70e0e56d07af44ee9a6e3018 --- i18n/ve-mw/got.json | 1 + i18n/ve-mw/scn.json | 4 ++-- i18n/ve-wmf/tr.json | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/i18n/ve-mw/got.json b/i18n/ve-mw/got.json index 0f2311e2d2..c4b3ae3cd1 100644 --- a/i18n/ve-mw/got.json +++ b/i18n/ve-mw/got.json @@ -5,6 +5,7 @@ ] }, "tooltip-ca-ve-edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", + "visualeditor-ca-createlocaldescriptionsource": "𐌰𐌽𐌰𐌰𐌹𐌰𐌿𐌺 𐍃𐍄𐌰𐌳𐌴𐌹𐌽𐌰𐌹𐌶𐍉𐍃 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌰𐌹𐍃 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", "visualeditor-ca-createsource": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", "visualeditor-ca-editsource": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", "visualeditor-ca-editsource-section": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", diff --git a/i18n/ve-mw/scn.json b/i18n/ve-mw/scn.json index fb72bb6469..f2206a6227 100644 --- a/i18n/ve-mw/scn.json +++ b/i18n/ve-mw/scn.json @@ -34,7 +34,7 @@ "visualeditor-dialog-media-info-created": "Criatu: $1", "visualeditor-dialog-media-info-meta-artist": "Auturi: $1", "visualeditor-dialog-media-info-moreinfo": "Chiossai nfurmazzioni", - "visualeditor-dialog-media-info-readmore": "Pi sapìrinni cchiossai", + "visualeditor-dialog-media-info-readmore": "Leggi cchiossai", "visualeditor-dialog-media-page-advanced": "Avanzati", "visualeditor-dialog-media-page-general": "Ginirali", "visualeditor-dialog-media-save": "Sarva", @@ -134,7 +134,7 @@ "visualeditor-mwgallerydialog-widths-field-label": "Larichizza dâ mmàggini", "visualeditor-mwsignature-tool": "La tò firma", "visualeditor-rebase-client-import-name": "Tìtulu dâ pàggina", - "visualeditor-savedialog-identify-anon": "Vuoi sarbari sta pàggina comu utilizzaturi anonimu? Lu tò nnirirzzu IP veni arriggistratu ntê crunuluggìa dâ pàggina.", + "visualeditor-savedialog-identify-anon": "Nun sì cchiù cunnessu. Si cuntìnui, riggistramu lu to ndrizzu IP nnâ cronuluggìa dî canci a sta pàggina.", "visualeditor-savedialog-identify-user": "Trasisti comu [[User:$1|$1]]. Si cuntinui, lu tò canciamentu veni assuciatu a st’utenza.", "visualeditor-savedialog-label-resolve-conflict": "Risorvi nu cunflittu", "visualeditor-savedialog-label-review": "Ritalìa li to canciamenti", diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index f2d54452a0..ba542fbba2 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -22,15 +22,15 @@ "TurkishStyles" ] }, - "tag-editcheck-newcontent-description": "EditCheck sayfaya yeni içerik eklendiğini düşünüyor", + "tag-editcheck-newcontent-description": "DüzenlemeKontrolü sayfaya yeni içerik eklendiğini düşünüyor", "tag-editcheck-newreference-description": "Sayfaya bir kaynak eklendi", - "tag-editcheck-references-description": "EditCheck bir kaynağın gerekli olabileceğini düşünüyor", + "tag-editcheck-references-description": "DüzenlemeKontrolü bir kaynağın gerekli olabileceğini düşünüyor", "tag-editcheck-references-activated": "Düzenleme Kontrolü (kaynakça) etkinleştirildi", "tag-editcheck-references-activated-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", "tag-visualeditor": "Görsel düzenleme", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleyiciyi]] kullanarak düzenleyin", "tag-visualeditor-needcheck": "Görsel düzenleme: Doğrula", - "tag-visualeditor-needcheck-description": "Sistem [[{{MediaWiki:visualeditor-descriptionpagelink}}|görsel düzenleyici]] ile düzenleyemeyeceğiniz, ancak kaynağı değiştir bağlantısıyla editör ile yapabileceğiniz değişiklik yaptığınızı tespit etti.", + "tag-visualeditor-needcheck-description": "Sistemin vikimetininde muhtemelen istenmeyen değişiklikler olduğunu tespit ettiği [[{{MediaWiki:visualeditor-descriptionpagelink}}|görsel düzenleyici]] kullanılarak yapılan düzenleme.", "tag-visualeditor-wikitext": "2017 kaynak düzenleyici", "tag-visualeditor-wikitext-description": "2017 vikimetin düzenleyicisi kullanılarak yapılan düzenleme", "tag-visualeditor-switched": "Görsel düzenleme: Değiştirildi", From aee20cd6cf4155088be955b358a56a675d3d574d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 4 Feb 2025 08:18:31 +0100 Subject: [PATCH 153/730] Localisation updates from https://translatewiki.net. Change-Id: I97170f585253a83dc376b36b66aead05ecc4d2be --- i18n/ve-mw/fi.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 768e464db9..e56e40ec25 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -217,7 +217,7 @@ "visualeditor-dialog-transclusion-deprecated-parameter-description": "Kenttä on vanhentunut. $1", "visualeditor-dialog-transclusion-loading": "Ladataan...", "visualeditor-dialog-transclusion-multipart-message": "Muokkaat nyt mallinetta ja yhtä tai useampaa siihen [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content yhdistettyä sisältöä] (wikitekstiä ja/tai muita mallineita).", - "visualeditor-dialog-transclusion-no-template-data-description": "Tästä mallineesta puuttuu [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData], joten sen parametrit on [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters luotu automaattisesti]. Tämän vuoksi mallineelta ja sen parametreilta puuttuu kuvaukset. Lisätietoa saattaa löytyä [[$1|mallineen sivulta]].", + "visualeditor-dialog-transclusion-no-template-data-description": "Tästä mallineesta puuttuu [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData], joten sen parametrit on [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters luotu automaattisesti]. Tämän vuoksi mallineelta ja sen parametreilta puuttuvat kuvaukset. Lisätietoa saattaa löytyä [[$1|mallineen sivulta]].", "visualeditor-dialog-transclusion-no-template-description": "Mallineella ”$1” ei ole vielä kuvausta, mutta jotain tietoa saattaa löytyä [[$2|mallineen sivulta]].", "visualeditor-dialog-transclusion-no-template-parameters": "Tällä mallineella ei ole dokumentoituja parametreja, ja se voi olla tarkoitettu käytettäväksi ilman niitä.", "visualeditor-dialog-transclusion-param-default": "Oletusarvo: $1", @@ -232,7 +232,7 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Jatka", "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Vaadittava kenttä puuttuu|Vaadittavat kentät puuttuvat}}", "visualeditor-dialog-transclusion-required-parameter-is-blank": "Haluatko varmasti jatkaa, vaikka et ole täyttänyt $1 {{PLURAL:$2|kenttää}}?", - "visualeditor-dialog-transclusion-see-template": "Mallineet ovat käyttäjien tekemiä, ja niiden selitteet voivat olla puutteellisia. Lisätietoa saattaa olla [[$2|mallineen sivulla]].", + "visualeditor-dialog-transclusion-see-template": "Mallineet ovat käyttäjien tekemiä, ja niiden kuvaukset voivat olla puutteellisia. Lisätietoa saattaa olla [[$2|mallineen sivulla]].", "visualeditor-dialog-transclusion-title-insert-template": "Lisää malline", "visualeditor-dialog-transclusion-title-insert-known-template": "Lisää: $1", "visualeditor-dialog-transclusion-title-edit-known-template": "Muokkaa: $1", From 6d3ecfa2853c849646897b90e983857c71219a8f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 4 Feb 2025 12:14:00 +0000 Subject: [PATCH 154/730] Update VE core submodule to master (64b3634f6) New changes: 3b954744d ve.dm.Surface#getSelectedNode: Only select wrapped nodes cde3f9591 Fix documentation of getAnnotation in inspector and widget Localisation Updates: 9c9bed625, 64b3634f6 Change-Id: I8af5280cd3de5a5b46786d77acc4f9a7a831c959 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 9014b65910..64b3634f6a 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 9014b65910731d9259b076ed7ac6c6583f37f40b +Subproject commit 64b3634f6a643314854c6766ff4db0db8000c408 From 983d57e1c8a60aead8b049c6a7fb6fd1c5a598ed Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 4 Feb 2025 12:35:01 -0600 Subject: [PATCH 155/730] EditCheck: exclude insertions from dismissed fragments Also, clean out dismissals between VE sessions Bug: T384658 Change-Id: I38e9e40573e3fbf751caf9d7b3a56f9c10560b55 --- editcheck/modules/BaseEditCheck.js | 5 ++++- editcheck/modules/init.js | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index 33fc9e995a..5407014f3f 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -289,7 +289,10 @@ mw.editcheck.BaseEditCheck.prototype.dismiss = function ( action ) { } else { const dismissedFragments = mw.editcheck.dismissedFragments; dismissedFragments[ name ] = dismissedFragments[ name ] || []; - dismissedFragments[ name ].push( ...action.fragments ); + dismissedFragments[ name ].push( + // Exclude insertions so we don't accidentally block unrelated changes: + ...action.fragments.map( ( fragment ) => fragment.clone().setExcludeInsertions( true ) ) + ); } }; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 86ff9628b1..74a5c7975d 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -114,6 +114,9 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable } ); mw.hook( 've.deactivationComplete' ).add( () => { document.documentElement.classList.remove( 've-editcheck-available' ); + + mw.editcheck.dismissedFragments = {}; + mw.editcheck.dismissedIds = {}; } ); mw.hook( 've.preSaveProcess' ).add( ( saveProcess, target ) => { const surface = target.getSurface(); From 80b11490c4f00a146bd38fcc91c1652cd0a17bfa Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 5 Feb 2025 08:25:49 +0100 Subject: [PATCH 156/730] Localisation updates from https://translatewiki.net. Change-Id: Ie5f35838fa176aead0bb3e0b2c813ff067382294 --- i18n/ve-mw/ike-cans.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 i18n/ve-mw/ike-cans.json diff --git a/i18n/ve-mw/ike-cans.json b/i18n/ve-mw/ike-cans.json new file mode 100644 index 0000000000..81e225b449 --- /dev/null +++ b/i18n/ve-mw/ike-cans.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "MysticVoyager" + ] + }, + "visualeditor-ca-editsource": "ᐊᓯᔾᔨᖅᑎᖅᐸᖕᒋᑦ ᓴᖅᑯᖅ", + "visualeditor-ca-editsource-section": "ᐊᓯᔾᔨᖅᑎᖅᐸᖕᒋᑦ ᓴᖅᑯᖅ" +} From f9ae03723ba9b5a32e6529efbcd07570638ea238 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 6 Feb 2025 08:22:26 +0100 Subject: [PATCH 157/730] Localisation updates from https://translatewiki.net. Change-Id: Ic177358b3f9c43ea686101d1201aef78e98ec87e --- i18n/ve-mw/ike-cans.json | 2 ++ i18n/ve-mw/ps.json | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/i18n/ve-mw/ike-cans.json b/i18n/ve-mw/ike-cans.json index 81e225b449..cde70963e3 100644 --- a/i18n/ve-mw/ike-cans.json +++ b/i18n/ve-mw/ike-cans.json @@ -4,6 +4,8 @@ "MysticVoyager" ] }, + "visualeditor-ca-createlocaldescriptionsource": "ᑐᓴᖃᐅᕈᓯᓐᓂᕐᒥᒃ ᐊᐅᓪᓚᕆᐅᑎᒃ ᓇᑭᙶᕈᓯᔭᓐᓂᕐᒥᒃ", + "visualeditor-ca-createsource": "ᓴᖅᑭᑦᑎᓂᕐᒥᒃ ᓇᑭᙶᐅᑦ", "visualeditor-ca-editsource": "ᐊᓯᔾᔨᖅᑎᖅᐸᖕᒋᑦ ᓴᖅᑯᖅ", "visualeditor-ca-editsource-section": "ᐊᓯᔾᔨᖅᑎᖅᐸᖕᒋᑦ ᓴᖅᑯᖅ" } diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index ff58642d6e..1b1a39c4c0 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -31,13 +31,13 @@ "visualeditor-dialog-media-info-artist": "$1 پورته کړی", "visualeditor-dialog-media-info-audiofile": "غږيزه دوتنه", "visualeditor-dialog-media-info-created": "جوړ شوی: $1", - "visualeditor-dialog-media-info-meta-artist": "هنرمند: $1", + "visualeditor-dialog-media-info-meta-artist": "لیکوال: $1", "visualeditor-dialog-media-info-moreinfo": "نور مالومات", "visualeditor-dialog-media-info-readmore": "نور لوستل", "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "ورپورته شوی: $1", - "visualeditor-dialog-media-page-advanced": "پرمختللې امستنې", - "visualeditor-dialog-media-page-general": "ټولگړې امستنې", + "visualeditor-dialog-media-page-advanced": "پرمختللی", + "visualeditor-dialog-media-page-general": "ټولگړی", "visualeditor-dialog-media-position-checkbox": "د دې توکي شاوخوا متن ځايول", "visualeditor-dialog-media-position-section": "ځای", "visualeditor-dialog-media-save": "خوندي کول", @@ -94,15 +94,22 @@ "visualeditor-dialog-meta-title": "خوښنې", "visualeditor-dialog-table-sortable": "اوډون وړ", "visualeditor-dialog-template-title": "کينډۍ", + "visualeditor-dialog-transclusion-action-save": "خوندي کول", + "visualeditor-dialog-transclusion-add-param-save": "ورگډول", "visualeditor-dialog-transclusion-add-template": "کينډۍ ورگډول", + "visualeditor-dialog-transclusion-add-template-save": "ورگډول", "visualeditor-dialog-transclusion-collapse-options": "خوښنې پټول", "visualeditor-dialog-transclusion-contextitem-description": "جوړ شوی له: $1", + "visualeditor-dialog-transclusion-contextitem-loading": "رابرسېرېږي...", "visualeditor-dialog-transclusion-expand-options": "خوښنې ښکاره کول", + "visualeditor-dialog-transclusion-filter-show-all": "ټول ښکاره کول", "visualeditor-dialog-transclusion-loading": "رابرسېرېږي...", "visualeditor-dialog-transclusion-param-default": "تلواليز: $1", "visualeditor-dialog-transclusion-required-parameter": "غوښتلی ډاگی", "visualeditor-dialog-transclusion-required-parameter-description": "دې ډاگي ته اړتيا ده.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "پر شا تلل", + "visualeditor-dialog-transclusion-title-edit-known-template": "سمون: $1", + "visualeditor-dialog-transclusion-wikitext": "ویکي‌متن", "visualeditor-dialogbutton-media-tooltip": "رسنۍ", "visualeditor-dialogbutton-template-tooltip": "کينډۍ", "visualeditor-editingtabdialog-ok": "تېر ځل کارېدلی سمونگر کارول", @@ -110,6 +117,8 @@ "visualeditor-editnotices-tooltip": "يادښتونه سمول", "visualeditor-editsummary": "ووايۍ کوم بدلونونه مو راوستل", "visualeditor-educationpopup-dismiss": "ښه، وپوهېدم", + "visualeditor-expandable-less": "لږ", + "visualeditor-expandable-more": "نور", "visualeditor-feedback-defaultmessage": "URL: $1", "visualeditor-formatdropdown-format-mw-heading1": "مخ سرليک", "visualeditor-formatdropdown-format-mw-heading2": "سرليک", @@ -130,6 +139,8 @@ "visualeditor-magiclinknodeinspector-title-isbn": "ISBN تړنه", "visualeditor-magiclinknodeinspector-title-pmid": "PMID تړنه", "visualeditor-magiclinknodeinspector-title-rfc": "RFC تړنه", + "visualeditor-media-title-image": "انځور", + "visualeditor-media-title-video": "ويډيو", "visualeditor-meta-tool": "خوښنې", "visualeditor-mweditmodesource-tool-current": "سرچینه سمول", "visualeditor-mweditmodeve-popup-body": "د دې نښې په کېښکاږلو سره تاسې هر وخت کولای شئ چې بيا ليدنيزسمونگر ته ور واوړئ.", @@ -158,15 +169,20 @@ "visualeditor-mwgallerydialog-widths-field-label": "د انځور سور", "visualeditor-mwsignature-tool": "ستاسې لاسليک", "visualeditor-preference-tabs-remember-last": "وروستنی سمونگر مې په ياد لره", + "visualeditor-rebase-client-import-name": "مخ سرليک", "visualeditor-savedialog-label-publish-short": "خپرول", "visualeditor-savedialog-label-resolve-conflict": "کړکېچ حلول", "visualeditor-savedialog-label-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-label-review-good": "د خوندي کولو چوکاټ ته ورگرځېدل", "visualeditor-savedialog-label-save-short": "خوندي کول", + "visualeditor-savedialog-label-save-short-start": "خوندي کېږي…", "visualeditor-savedialog-review-nosummary": "د سمون لنډیز نسته", + "visualeditor-savedialog-review-wikitext": "ویکي‌متن", "visualeditor-savedialog-title-conflict": "کړکېچ", "visualeditor-savedialog-title-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-title-save": "بدلونونه مو خوندي کړئ", + "visualeditor-section-body-placeholder": "نوې برخه", + "visualeditor-section-title-placeholder": "سکالو", "visualeditor-settings-tool": "مخ امستنې", "visualeditor-special-characters-group-other": "اکثر کارېدونکی", "visualeditor-version-label": "بڼه", From 2a47288cc23a4f799ad51f43cb1b7e584bc33c74 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 28 Jan 2025 18:53:03 -0600 Subject: [PATCH 158/730] EditCheck: allow checks to be passed into the dialog This is a minor source of efficiency -- the dialog doesn't need to regenerate the checks immediately after some caller has asked whether checks exist in order to decide whether to show the dialog. Change-Id: I6a6a38769dfb328eb81944fe3b2209c63a62f9ce --- editcheck/modules/EditCheckDialog.js | 2 +- editcheck/modules/init.js | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 56f269de6a..fec8ead0d7 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -265,7 +265,7 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getSetupProcess.call( this, data ) .first( () => { this.currentOffset = 0; - this.currentChecks = null; + this.currentChecks = data.checks; // if these weren't passed they'll be regenerated this.listener = data.listener || 'onDocumentChange'; this.reviewMode = data.reviewMode; this.surface = data.surface; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 74a5c7975d..6d2495a211 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -97,7 +97,10 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable const currentWindow = surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); if ( !currentWindow || currentWindow.constructor.static.name !== 'editCheckDialog' ) { const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); - return windowAction.open( 'editCheckDialog', { listener: 'onDocumentChange' } ); + return windowAction.open( + 'editCheckDialog', + { listener: 'onDocumentChange', checks: checks } + ); } } } @@ -189,7 +192,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable toolbar.toggle( false ); target.onContainerScroll(); // surface.executeCommand( 'editCheckDialogBeforeSave' ); - return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true } ) + return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true, checks: checks } ) .then( ( instance ) => { instance.closed.then( () => {}, () => {} ).then( () => { // Re-open the mid-edit sidebar if necessary. From 71f6f8684873bef634f99e458901b819ae7c03c7 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 7 Feb 2025 08:39:08 +0100 Subject: [PATCH 159/730] Localisation updates from https://translatewiki.net. Change-Id: Id868242054c7305cadd3024234ddd7546f701196 --- i18n/ve-mw/inh.json | 5 ++++- i18n/ve-wmf/de.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/inh.json b/i18n/ve-mw/inh.json index 89a0154392..911b6afa38 100644 --- a/i18n/ve-mw/inh.json +++ b/i18n/ve-mw/inh.json @@ -30,7 +30,10 @@ "visualeditor-dialogbutton-media-tooltip": "Сурташи медиафайлаши", "visualeditor-dialogbutton-template-tooltip": "Ло", "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|хоам}}", + "visualeditor-editsummary": "Ӏайха даьча хувцамех лаьца язде лоацца", "visualeditor-linkinspector-educationpopup-title": "Тӏатовжамаш", "visualeditor-mweditmodeve-popup-body": "МоллагӀча хана юха дӀатоха йиш я хьа визуальни хувцамаш деча ражагахьа, укх хьарака тӀа тоӀабаь.", - "visualeditor-mweditmodeve-showagain": "Кхы хьа ма гойта ер хоам" + "visualeditor-mweditmodeve-showagain": "Кхы хьа ма гойта ер хоам", + "visualeditor-savedialog-label-review": "Хьадаь хувцамаш", + "visualeditor-savedialog-title-save": "ДӀаязде хьай хувцамаш" } diff --git a/i18n/ve-wmf/de.json b/i18n/ve-wmf/de.json index a13c5acd59..71f6dafa21 100644 --- a/i18n/ve-wmf/de.json +++ b/i18n/ve-wmf/de.json @@ -24,7 +24,7 @@ "tag-visualeditor-description": "Bearbeitungen, die mit dem [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editor]] ausgeführt wurden.", "tag-visualeditor-needcheck": "Visuelle Bearbeitung: Überprüfung", "tag-visualeditor-needcheck-description": "Bearbeitungen, die mit dem [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editor]] ausgeführt wurden und bei denen es möglicherweise zu ungewollten Änderungen des Wikitexts gekommen ist.", - "tag-visualeditor-wikitext": "2017-Quelltext-Bearbeitung", + "tag-visualeditor-wikitext": "Quelltext-Bearbeitung 2017", "tag-visualeditor-wikitext-description": "Bearbeitungen, die mit dem Wikitext-Editor 2017 ausgeführt wurden.", "tag-visualeditor-switched": "Visuelle Bearbeitung: Gewechselt", "tag-visualeditor-switched-description": "Bearbeitungen, die mithilfe des visuellen Editors begonnen, aber nach dem Wechsel mit dem Wikitext-Editor beendet wurden.", From 9b99c75c8e0d7d33f64ba31a1067441e6485f402 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 10 Feb 2025 08:26:10 +0100 Subject: [PATCH 160/730] Localisation updates from https://translatewiki.net. Change-Id: I279303cc6e166c17f3d1b1bc8c1331a788c0b099 --- i18n/ve-mw/fi.json | 2 +- i18n/ve-mw/ish.json | 8 ++++++++ i18n/ve-mw/ljp.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 i18n/ve-mw/ish.json diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index e56e40ec25..349109f59d 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -279,7 +279,7 @@ "visualeditor-linkinspector-convert-link-isbn": "Muunna ISBN-linkiksi", "visualeditor-linkinspector-convert-link-pmid": "Muunna PMID-linkiksi", "visualeditor-linkinspector-convert-link-rfc": "Muunna RFC-linkiksi", - "visualeditor-linkinspector-educationpopup-text": "Linkitä tärkeät sanat muihin wikiartikkeleihin tai jopa muille verkkosivustoille. Se auttaa lukijoita ymmärtämään kontekstin.", + "visualeditor-linkinspector-educationpopup-text": "Linkitä tärkeät sanat muihin wikiartikkeleihin tai muille verkkosivustoille. Se auttaa lukijoita ymmärtämään kontekstia.", "visualeditor-linkinspector-educationpopup-title": "Linkit", "visualeditor-linkinspector-illegal-title": "Virheellinen sivun otsikko", "visualeditor-linkinspector-invalid-blocked": "Tämän wikin käyttäjät ovat päättäneet estää linkit tälle sivustolle. Kokeile toista linkkiä.", diff --git a/i18n/ve-mw/ish.json b/i18n/ve-mw/ish.json new file mode 100644 index 0000000000..8a41f9bd57 --- /dev/null +++ b/i18n/ve-mw/ish.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Hackesan" + ] + }, + "visualeditor-ca-editsource-section": "Hèhin otolé" +} diff --git a/i18n/ve-mw/ljp.json b/i18n/ve-mw/ljp.json index f3d26b3d4b..37084a18c0 100644 --- a/i18n/ve-mw/ljp.json +++ b/i18n/ve-mw/ljp.json @@ -5,7 +5,7 @@ ] }, "visualeditor-ca-createlocaldescriptionsource": "Tambahko sumber penjabaran lokal", - "visualeditor-ca-createsource": "Guway sumber", + "visualeditor-ca-createsource": "Guwai sumber", "visualeditor-ca-editsource": "Dandani sumber", "visualeditor-ca-editsource-section": "dandani sumber" } From 24503420e4bb8c275687658ac21fcf56a6c03805 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 11 Feb 2025 08:24:50 +0100 Subject: [PATCH 161/730] Localisation updates from https://translatewiki.net. Change-Id: Ia3ec66f19448f8516e075c30dd043aeca219bc76 --- editcheck/i18n/lv.json | 4 +++- i18n/ve-mw/az.json | 1 + i18n/ve-mw/hi.json | 7 ++++--- i18n/ve-wmf/hi.json | 2 ++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/editcheck/i18n/lv.json b/editcheck/i18n/lv.json index 275e674843..bd4f2a05d8 100644 --- a/editcheck/i18n/lv.json +++ b/editcheck/i18n/lv.json @@ -15,5 +15,7 @@ "editcheck-dialog-addref-reject-other": "Cits", "editcheck-dialog-addref-success-notify": "Paldies, ka pievienoji atsauci!", "editcheck-dialog-addref-title": "Pievienot atsauci", - "editcheck-dialog-title": "Pirms publicēšanas" + "editcheck-dialog-title": "Pirms publicēšanas", + "editcheck-copyvio-title": "Iekopētais saturs", + "editcheck-review-title": "Pārskatīt izmaiņas" } diff --git a/i18n/ve-mw/az.json b/i18n/ve-mw/az.json index edb7d38547..b88561c789 100644 --- a/i18n/ve-mw/az.json +++ b/i18n/ve-mw/az.json @@ -13,6 +13,7 @@ "Vesely35", "Wertuose", "Şeyx Şamil", + "Əkrəm", "Əkrəm Cəfər" ] }, diff --git a/i18n/ve-mw/hi.json b/i18n/ve-mw/hi.json index 7855f09347..d1fbf64671 100644 --- a/i18n/ve-mw/hi.json +++ b/i18n/ve-mw/hi.json @@ -4,6 +4,7 @@ "Abijeet Patro", "Ankita-ks", "Ansumang", + "Bunnypranav", "Devayon", "Goelujjwal", "Hindustanilanguage", @@ -312,7 +313,7 @@ "visualeditor-mwpredialog-convert": "टेक्स्ट स्टाइलिंग की अनुमति दें", "visualeditor-mwpredialog-title": "प्रीफॉर्मेट किया गया सादा टेक्स्ट", "visualeditor-mwsignature-tool": "आपका हस्ताक्षर", - "visualeditor-preference-newwikitexteditor-enable": "अलग विकिटेक्स्ट एडिटर की जगह यथादृश्य संपादिका के अंदर ही विकिटेक्स्ट मोड का इस्तेमाल करें।", + "visualeditor-preference-newwikitexteditor-enable": "अलग विकिटेक्स्ट एडिटर की जगह यथादृश्य संपादिका के अंदर ही विकिटेक्स्ट मोड का इस्तेमाल करें", "visualeditor-preference-tabs": "सम्पादन मोड:", "visualeditor-preference-tabs-multi-tab": "मुझे दोनों संपादक टैब दिखाएँ", "visualeditor-preference-tabs-prefer-ve": "मुझे यथासंभव हमेशा यथादृश्य संपादिका दिखाएँ", @@ -325,8 +326,8 @@ "visualeditor-rebase-client-title-help": "आप सहेजने से पहले बदलावों का झलक देख पाएँगे।", "visualeditor-recreate": "आपके संपादन शुरू करने के बाद से पृष्ठ को हटा दिया गया है। पुनः निर्माण करने के लिए \"$1\" दबाएँ।", "visualeditor-redirect-description": "$1 को अनुप्रेषण", - "visualeditor-savedialog-identify-anon": "क्या आप इस पृष्ठ को एक गुमनाम सदस्य की तरह सहेजना चाहेंगे? आपका IP पता पृष्ठ इतिहास में रिकॉर्ड किया जाएगा।", - "visualeditor-savedialog-identify-user": "आप अब [[User:$1|$1]] नाम से लॉग-इन कर चुके हैं। अगर अब आप सम्पादन सहेजते हैं तो इस सम्पादन को इस खाते से जोड़ दिया जाएगा।", + "visualeditor-savedialog-identify-anon": "अब आप लॉग इन नहीं हैं। यदि आप जारी रखते हैं, तो आपका IP पता इस पृष्ठ के संपादन इतिहास में दर्ज किया जाएगा।", + "visualeditor-savedialog-identify-user": "अब आप [[उपयोगकर्ता: $1 | $1 ]] के रूप में लॉग-इन हैं। यदि आप जारी रखते हैं, तो आपका संपादन इस खाते से संबद्ध हो जाएगा।", "visualeditor-savedialog-keyboard-shortcut-submit": "आप अपने संपादन को सहेजने के लिए $1 दबा सकते हैं।", "visualeditor-savedialog-label-publish-short": "प्रकाशित करें", "visualeditor-savedialog-label-publish-short-start": "प्रकाशित करें…", diff --git a/i18n/ve-wmf/hi.json b/i18n/ve-wmf/hi.json index 226f0c31bc..93a85ec924 100644 --- a/i18n/ve-wmf/hi.json +++ b/i18n/ve-wmf/hi.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Ansumang", + "Bunnypranav", "Devayon", "Jayprakash12345", "Rajesh", @@ -11,6 +12,7 @@ "संजीव कुमार" ] }, + "tag-editcheck-newreference-description": "पृष्ठ पर एक संदर्भ जोड़ा गया था", "tag-visualeditor": "यथादृश्य संपादिका", "tag-visualeditor-description": "संपादन [[{{MediaWiki:visualeditor-descriptionpagelink}}|यथादृश्य संपादिका]] के उपयोग द्वारा किया गया", "tag-visualeditor-needcheck": "यथादृश्य संपादिका: जाँचें", From 0c86d458aa8091e837e80ee4b73ebd0beea49560 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 12 Feb 2025 08:29:46 +0100 Subject: [PATCH 162/730] Localisation updates from https://translatewiki.net. Change-Id: I8bc3df63875e7ed55dd024074df61759eadd7552 --- i18n/ve-mw/ca.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/i18n/ve-mw/ca.json b/i18n/ve-mw/ca.json index 7e4cc229b0..3f40424933 100644 --- a/i18n/ve-mw/ca.json +++ b/i18n/ve-mw/ca.json @@ -266,6 +266,8 @@ "visualeditor-mwpredialog-convert": "Permet estils de text", "visualeditor-mwpredialog-title": "Text senzill preformatat", "visualeditor-mwsignature-tool": "La vostra signatura", + "visualeditor-preference-visualeditor": "Activa l'editor visual", + "visualeditor-preference-newwikitexteditor-enable": "Utilitza el mode wikitext dins de l'editor visual, en comptes d'un editor de wikitext diferent", "visualeditor-preference-tabs": "Pestanyes d'edició:", "visualeditor-preference-tabs-multi-tab": "Mostra’m les dues opcions d’editor", "visualeditor-preference-tabs-prefer-ve": "Sempre fes servir l’editor visual si és possible", From da9422dc5a7f5a67d98f363bf945722ef2c840b1 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 13 Feb 2025 08:27:08 +0100 Subject: [PATCH 163/730] Localisation updates from https://translatewiki.net. Change-Id: Iee5777c0068eac64b5340e4739d26d150c7547ff --- i18n/ve-mw/sms.json | 1 + 1 file changed, 1 insertion(+) diff --git a/i18n/ve-mw/sms.json b/i18n/ve-mw/sms.json index 979140db31..e920421fc1 100644 --- a/i18n/ve-mw/sms.json +++ b/i18n/ve-mw/sms.json @@ -22,6 +22,7 @@ "visualeditor-dialog-media-choose-image": "Ââʹn tän snimldõõǥǥ", "visualeditor-dialog-media-content-filename": "Teâttõsnõmm", "visualeditor-dialog-media-content-section": "Kartt-teʹkstt", + "visualeditor-dialog-media-goback": "Mååusat", "visualeditor-dialog-media-info-artist": "Ruõkkâm: $1", "visualeditor-dialog-media-info-audiofile": "Jiõnnteâttõs", "visualeditor-dialog-media-info-created": "Rajjum: $1", From f47b6fd87e3014642d9271e06de2247b053271b6 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 14 Feb 2025 11:23:47 +0000 Subject: [PATCH 164/730] Allow MWMediaDialogTool to add itself to the catch-all group This tool is already in the catch-all group, it is just manually listed as promoted, but there's no reason to exclude it from other catch-all groups (e.g. on mobile). Change-Id: Ib6fc6075c88f4871ce02997f01a7ba488651a8b7 --- modules/ve-mw/ui/tools/ve.ui.MWMediaDialogTool.js | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/ve-mw/ui/tools/ve.ui.MWMediaDialogTool.js b/modules/ve-mw/ui/tools/ve.ui.MWMediaDialogTool.js index 80bc2576c9..0653d01c71 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWMediaDialogTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWMediaDialogTool.js @@ -25,7 +25,6 @@ ve.ui.MWMediaDialogTool.static.title = OO.ui.deferMsg( 'visualeditor-dialogbutton-media-tooltip' ); ve.ui.MWMediaDialogTool.static.modelClasses = [ ve.dm.MWBlockImageNode, ve.dm.MWInlineImageNode ]; ve.ui.MWMediaDialogTool.static.commandName = 'media'; -ve.ui.MWMediaDialogTool.static.autoAddToCatchall = false; ve.ui.MWMediaDialogTool.static.autoAddToGroup = false; ve.ui.toolFactory.register( ve.ui.MWMediaDialogTool ); From 05b80742dcdc996edcadda2a1444b11b237ebb6c Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 14 Feb 2025 12:13:46 +0000 Subject: [PATCH 165/730] DisambigEditCheck: Use filter then map The second loop should be suitably small that it doesn't affect performance, but makes the code more readable. Also filter down to added to content only, like other checks. Change-Id: I50088b236d7142506d0814ee2f04561ed7d72767 --- .../experimental/DisambiguationEditCheck.js | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js b/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js index e0fe1e3843..869750ccc7 100644 --- a/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js +++ b/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js @@ -25,26 +25,19 @@ mw.editcheck.DisambiguationEditCheck.static.choices = [ ]; mw.editcheck.DisambiguationEditCheck.prototype.onDocumentChange = function ( surfaceModel ) { - return surfaceModel.documentModel.documentNode.getAnnotationRanges().map( ( annRange ) => { - const annotation = annRange.annotation; - if ( !( annotation instanceof ve.dm.MWInternalLinkAnnotation ) ) { - return null; - } - + const isDisambig = ( annotation ) => { const linkData = ve.init.platform.linkCache.getCached( annotation.getAttribute( 'lookupTitle' ) ); - if ( !linkData || !linkData.disambiguation ) { - return null; - } - - if ( this.isDismissedRange( annRange.range ) ) { - return null; - } - const fragment = surfaceModel.getLinearFragment( annRange.range ); - return new mw.editcheck.EditCheckAction( { - fragments: [ fragment ], - check: this - } ); - } ).filter( ( action ) => action ); + return linkData && linkData.disambiguation; + }; + return surfaceModel.documentModel.documentNode.getAnnotationRanges().filter( + ( annRange ) => annRange.annotation instanceof ve.dm.MWInternalLinkAnnotation && + isDisambig( annRange.annotation ) && + this.isRangeInValidSection( annRange.range, surfaceModel.documentModel ) && + !this.isDismissedRange( annRange.range ) + ).map( ( annRange ) => new mw.editcheck.EditCheckAction( { + fragments: [ surfaceModel.getLinearFragment( annRange.range ) ], + check: this + } ) ); }; mw.editcheck.DisambiguationEditCheck.prototype.act = function ( choice, action, surface ) { From 87b1cd0449ec8f75e0c7badfcc20bc1922201157 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sat, 15 Feb 2025 20:51:22 +0000 Subject: [PATCH 166/730] ve.ui.MWTransclusionOutlineWidget: Fix invalid slash in rgba() Follows-up I7049eb60dc0ea. In Less.php 5 and Less.js 4+ this failed to compile due to unexpected slash: ``` Less_Exception_Compiler: error evaluating function `rgba` color functions take numbers as parameters in ve.ui.MWTransclusionOutlineWidget.less on line 6 6| @selected-shading: rgba( 0, 109, 255, 21/255 ); ``` This can be fixed by adding parens around it, but in this case given it is a constant it seems more readable to make the alpha fraction explicit. Bug: T368921 Change-Id: Iadd548620fa66e58299cbd2548d4077b432de90e --- .../ui/styles/widgets/ve.ui.MWTransclusionOutlineWidget.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/ui/styles/widgets/ve.ui.MWTransclusionOutlineWidget.less b/modules/ve-mw/ui/styles/widgets/ve.ui.MWTransclusionOutlineWidget.less index 36b5c1ab6b..0d2dd0d949 100644 --- a/modules/ve-mw/ui/styles/widgets/ve.ui.MWTransclusionOutlineWidget.less +++ b/modules/ve-mw/ui/styles/widgets/ve.ui.MWTransclusionOutlineWidget.less @@ -3,7 +3,7 @@ @selected-text-color: @color-progressive; // This shade on a white background results in #eaf3ff a.k.a. @background-color-progressive-subtle -@selected-shading: rgba( 0, 109, 255, 21/255 ); +@selected-shading: rgba( 0, 109, 255, 0.082 ); // This shade on a white background results in #eaecf0 a.k.a. @background-color-interactive @hover-shading: @background-color-button-quiet--active; From c1809cee7cf65b00e6a932df31142e8f3533f2c1 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 17 Feb 2025 08:30:18 +0100 Subject: [PATCH 167/730] Localisation updates from https://translatewiki.net. Change-Id: I85dea2ed9126d46ef096fd472c4f92c41e06de2c --- editcheck/i18n/ia.json | 3 +++ i18n/ve-mw/kg.json | 4 +++- i18n/ve-mw/th.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index 76dbc9be67..daabecd84a 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -16,6 +16,9 @@ "editcheck-dialog-addref-success-notify": "Gratias pro haber addite un citation!", "editcheck-dialog-addref-title": "Adder un citation", "editcheck-dialog-title": "Ante de publicar", + "editcheck-copyvio-title": "Contento collate", + "editcheck-copyvio-description": "Como regula general, non copia contento de altere fontes. Isto es generalmente un violation del derecto de autor e un plagiato.", + "editcheck-review-title": "Revider cambiamentos", "tag-editcheck-reference-decline-common-knowledge": "Verification de modification (referentias) declinate (cognoscentia commun)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck: referentia declinate perque es cognoscentia commun", "tag-editcheck-reference-decline-irrelevant": "Verification de modification (referentias) declinate (irrelevante)", diff --git a/i18n/ve-mw/kg.json b/i18n/ve-mw/kg.json index fe11d61020..ceea150e09 100644 --- a/i18n/ve-mw/kg.json +++ b/i18n/ve-mw/kg.json @@ -1,8 +1,10 @@ { "@metadata": { "authors": [ + "BOKOBA VEROLY", "Cgmbo" ] }, - "visualeditor-ca-editsource": "Soba kisina" + "visualeditor-ca-editsource": "Soba kisina", + "visualeditor-ca-editsource-section": "edit source" } diff --git a/i18n/ve-mw/th.json b/i18n/ve-mw/th.json index 2c9a882103..8dbc94d995 100644 --- a/i18n/ve-mw/th.json +++ b/i18n/ve-mw/th.json @@ -227,7 +227,7 @@ "visualeditor-mwgallerydialog-remove-button-label": "เอาภาพออก", "visualeditor-mwgallerydialog-search-button-label": "เพิ่มภาพใหม่", "visualeditor-mwgallerydialog-show-filename-field-label": "แสดงชื่อไฟล์", - "visualeditor-mwgallerydialog-styles-field-label": "รูปแบบ CSS", + "visualeditor-mwgallerydialog-styles-field-label": "รูปแบบซีเอสเอส", "visualeditor-mwgallerydialog-title": "แกลเลอรี", "visualeditor-mwgallerydialog-widths-field-label": "ความกว้างของภาพ", "visualeditor-mwgallerydialog-widths-input-placeholder": "ความกว้างเริ่มต้น: $1 พิกเซล", From fcfce67a800e5be743aafbd033888c26b2327273 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Mon, 6 Jan 2025 17:31:03 +0000 Subject: [PATCH 168/730] Edit check for users inserting external links Bug: T376518 Change-Id: I8baa01b3f1df171bf75ecd2c2c1b31f7728d4b9a --- .../experimental/ExternalLinksEditCheck.js | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 editcheck/modules/editchecks/experimental/ExternalLinksEditCheck.js diff --git a/editcheck/modules/editchecks/experimental/ExternalLinksEditCheck.js b/editcheck/modules/editchecks/experimental/ExternalLinksEditCheck.js new file mode 100644 index 0000000000..dc02b92951 --- /dev/null +++ b/editcheck/modules/editchecks/experimental/ExternalLinksEditCheck.js @@ -0,0 +1,58 @@ +mw.editcheck.ExternalLinksEditCheck = function MWExternalLinksEditCheck( /* config */ ) { + // Parent constructor + mw.editcheck.ExternalLinksEditCheck.super.apply( this, arguments ); +}; + +OO.inheritClass( mw.editcheck.ExternalLinksEditCheck, mw.editcheck.BaseEditCheck ); + +mw.editcheck.ExternalLinksEditCheck.static.title = 'External link'; + +mw.editcheck.ExternalLinksEditCheck.static.name = 'externalLink'; + +mw.editcheck.ExternalLinksEditCheck.static.description = 'Generally, external links should not appear in the body of the article. Please refer to WP:ELNO. Edit this link?'; + +mw.editcheck.ExternalLinksEditCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.BaseEditCheck.static.defaultConfig, { + ignoreSections: [ 'External links' ] +} ); + +mw.editcheck.ExternalLinksEditCheck.static.choices = [ + { + action: 'edit', + label: 'Edit link', + icon: 'edit' + }, + { + action: 'dismiss', + label: ve.msg( 'editcheck-dialog-action-no' ), + icon: 'check' + } +]; + +mw.editcheck.ExternalLinksEditCheck.prototype.onDocumentChange = function ( surfaceModel ) { + const modified = this.getModifiedContentRanges( surfaceModel.getDocument() ); + return surfaceModel.documentModel.documentNode.getAnnotationRanges() + .filter( ( annRange ) => annRange.annotation instanceof ve.dm.MWExternalLinkAnnotation && + !this.isDismissedRange( annRange.range ) && + this.isRangeInValidSection( annRange.range, surfaceModel.documentModel ) && + modified.some( ( modifiedRange ) => modifiedRange.containsRange( annRange.range ) ) + ).map( ( annRange ) => new mw.editcheck.EditCheckAction( { + fragments: [ surfaceModel.getLinearFragment( annRange.range ) ], + check: this + } ) ); +}; + +mw.editcheck.ExternalLinksEditCheck.prototype.act = function ( choice, action, surface ) { + switch ( choice ) { + case 'dismiss': + this.dismiss( action ); + break; + case 'edit': + setTimeout( () => { + action.fragments[ 0 ].select(); + surface.execute( 'window', 'open', 'link' ); + } ); + break; + } +}; + +mw.editcheck.editCheckFactory.register( mw.editcheck.ExternalLinksEditCheck ); From 4df9754878154f1bc74c1dedb14c8ad88b061cf1 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 18 Feb 2025 18:51:32 +0000 Subject: [PATCH 169/730] Update VE core submodule to master (71ec17652) New changes: 9b489f4e3 Include unminified PeerJS in the repo (unused) 9c11182d3 Rebuild demos to fix CI ca660f810 LinkContextItem: Document flex box min-width fix 467bb764f Replace deprecated escapable property with getEscapeAction 7a206b411 Context(Items): Simplify for loops f7cca85b2 Mark mobile context as non-exclusive Localisation Updates: c32195f40, 783ca3cff, fda97d8d8 Added files: - lib/peerjs/peerjs.js Bug: T383533 Bug: T386451 Change-Id: I2cc05fc3aaffb615b9f3c934e86c39732f0bed66 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 64b3634f6a..71ec176522 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 64b3634f6a643314854c6766ff4db0db8000c408 +Subproject commit 71ec176522cd54099363a04067eef9fccdd8799d From 32980c7911a8c996bf9187dcd3d258f42a366738 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 19 Feb 2025 08:26:54 +0100 Subject: [PATCH 170/730] Localisation updates from https://translatewiki.net. Change-Id: I0d0cf171c755a2fa54c8ed5c326a1e529bc295b6 --- i18n/ve-mw/ps.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 1b1a39c4c0..b4b425fdf8 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -6,6 +6,7 @@ "Amjad Khan", "Baloch Khan", "Irus", + "شاه زمان پټان", "عثمان منصور انصاري" ] }, @@ -109,7 +110,7 @@ "visualeditor-dialog-transclusion-required-parameter-description": "دې ډاگي ته اړتيا ده.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "پر شا تلل", "visualeditor-dialog-transclusion-title-edit-known-template": "سمون: $1", - "visualeditor-dialog-transclusion-wikitext": "ویکي‌متن", + "visualeditor-dialog-transclusion-wikitext": "ویکيليک", "visualeditor-dialogbutton-media-tooltip": "رسنۍ", "visualeditor-dialogbutton-template-tooltip": "کينډۍ", "visualeditor-editingtabdialog-ok": "تېر ځل کارېدلی سمونگر کارول", @@ -175,7 +176,7 @@ "visualeditor-savedialog-label-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-label-review-good": "د خوندي کولو چوکاټ ته ورگرځېدل", "visualeditor-savedialog-label-save-short": "خوندي کول", - "visualeditor-savedialog-label-save-short-start": "خوندي کېږي…", + "visualeditor-savedialog-label-save-short-start": "خوندي کيږي…", "visualeditor-savedialog-review-nosummary": "د سمون لنډیز نسته", "visualeditor-savedialog-review-wikitext": "ویکي‌متن", "visualeditor-savedialog-title-conflict": "کړکېچ", From e31b350a7269722bddccf24f889633f3d95b445d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Wed, 19 Feb 2025 14:41:03 +0000 Subject: [PATCH 171/730] Fixes DisambiguationEditCheck Change-Id: I2e8299c59f2a534daadab25a75346f7d1d35ce2a --- .../editchecks/experimental/DisambiguationEditCheck.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js b/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js index e0fe1e3843..4680840729 100644 --- a/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js +++ b/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js @@ -54,9 +54,9 @@ mw.editcheck.DisambiguationEditCheck.prototype.act = function ( choice, action, break; case 'edit': setTimeout( () => { - action.selection.select(); + action.fragments[ 0 ].select(); surface.execute( 'window', 'open', 'link' ); - }, 500 ); + } ); break; } }; From 0101836bdfde618a2df6e6e3da46b5993bd3a593 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 20 Feb 2025 08:25:37 +0100 Subject: [PATCH 172/730] Localisation updates from https://translatewiki.net. Change-Id: I41aaaeab9d48bb51de0bbb4f31cc95544684e48f --- i18n/ve-mw/nit.json | 7 ++++--- i18n/ve-mw/te.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/i18n/ve-mw/nit.json b/i18n/ve-mw/nit.json index 793681b216..d14b47dfc7 100644 --- a/i18n/ve-mw/nit.json +++ b/i18n/ve-mw/nit.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ - "Athram Rajkumar" + "Athram Rajkumar", + "Chaduvari" ] }, "visualeditor-ca-createlocaldescriptionsource": "స్థానిక వివరణ సోర్సున్ సెర్ప్", "visualeditor-ca-createsource": "మూలపాఠ్యాన్ సృష్టించుర్", - "visualeditor-ca-editsource": "మూలపాఠ్యాన్ని సవరిప్", - "visualeditor-ca-editsource-section": "మూలపాఠ్యాన్ని సవరిప్", + "visualeditor-ca-editsource": "మూలపాఠ్యాన్ని సవరించు", + "visualeditor-ca-editsource-section": "మూలపాఠ్యాన్ని సవరించు", "visualeditor-descriptionpagelink": "Project:విజువల్ఎడిటర్" } diff --git a/i18n/ve-mw/te.json b/i18n/ve-mw/te.json index b7f7309efa..6b6e794247 100644 --- a/i18n/ve-mw/te.json +++ b/i18n/ve-mw/te.json @@ -35,7 +35,7 @@ "visualeditor-autosave-recovered-title": "మార్పులను వెలికితీసాం", "visualeditor-backbutton-tooltip": "వెనక్కి వెళ్ళండి", "visualeditor-ca-createlocaldescriptionsource": "స్థానిక వివరణ సోర్సును చేర్చండి", - "visualeditor-ca-createsource": "మూలపాఠ్యాన్ని సృష్టించండి", + "visualeditor-ca-createsource": "మూలపాఠ్యాన్ని సృష్టించు", "visualeditor-ca-editlocaldescriptionsource": "స్థానిక వివరణ సోర్సును మార్చండి", "visualeditor-ca-editsource": "మూలపాఠ్యాన్ని సవరించు", "visualeditor-ca-editsource-section": "మూలపాఠ్యాన్ని సవరించు", From 7bc377d5ed7840822c3811285235acb6e9d3855a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 21 Feb 2025 08:42:37 +0100 Subject: [PATCH 173/730] Localisation updates from https://translatewiki.net. Change-Id: Idc1e8299f8be1c47b885859b31973e808a0262bc --- i18n/ve-mw/ps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index b4b425fdf8..ce5889a23f 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -110,7 +110,7 @@ "visualeditor-dialog-transclusion-required-parameter-description": "دې ډاگي ته اړتيا ده.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "پر شا تلل", "visualeditor-dialog-transclusion-title-edit-known-template": "سمون: $1", - "visualeditor-dialog-transclusion-wikitext": "ویکيليک", + "visualeditor-dialog-transclusion-wikitext": "ویکي‌متن", "visualeditor-dialogbutton-media-tooltip": "رسنۍ", "visualeditor-dialogbutton-template-tooltip": "کينډۍ", "visualeditor-editingtabdialog-ok": "تېر ځل کارېدلی سمونگر کارول", @@ -176,7 +176,7 @@ "visualeditor-savedialog-label-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-label-review-good": "د خوندي کولو چوکاټ ته ورگرځېدل", "visualeditor-savedialog-label-save-short": "خوندي کول", - "visualeditor-savedialog-label-save-short-start": "خوندي کيږي…", + "visualeditor-savedialog-label-save-short-start": "خوندي کېږي…", "visualeditor-savedialog-review-nosummary": "د سمون لنډیز نسته", "visualeditor-savedialog-review-wikitext": "ویکي‌متن", "visualeditor-savedialog-title-conflict": "کړکېچ", From 3567cb7dde8e9e2ed18a4dc5c5479cf1cf85e824 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 21 Feb 2025 12:19:19 +0000 Subject: [PATCH 174/730] Update VE core submodule to master (65e885e43) New changes: cd66fbcf7 Rebuild demos 47d323e27 ve.ce.Surface: Don't modify model selection while pasting 0a91a6327 Document requirements for persistent storage, and enforce them Localisation Updates: 3e4119008 Bug: T368598 Bug: T377484 Change-Id: Ia18437fa6a1f6dbaf7055a14648200d70a04a87f --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 71ec176522..65e885e43d 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 71ec176522cd54099363a04067eef9fccdd8799d +Subproject commit 65e885e43d490c808526a4092f614c5a596606a7 From f605615f93e7ddc67a8fde1389465289f5326938 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 21 Feb 2025 11:58:19 +0000 Subject: [PATCH 175/730] Convert EditCheckActionWidget to a MessageWidget Change-Id: Id9fbda7e445810d4f2e6d1c3d843e91cb1cf9a79 --- editcheck/modules/EditCheck.less | 32 ++++++++-------- editcheck/modules/EditCheckAction.js | 55 ++++------------------------ 2 files changed, 24 insertions(+), 63 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 4b930ad84a..35570ae8cf 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -81,23 +81,25 @@ .ve-ui-editCheckActionWidget { box-sizing: border-box; - border: @border-base; - margin: @spacing-100 0; white-space: normal; // Minerva needs this + padding: @spacing-50 @spacing-75; + cursor: pointer; + overflow: hidden; - &-head { - position: relative; - padding: @spacing-50 @spacing-75; + > .oo-ui-iconElement-icon { + // Fixes icon placement in WMUI theme + top: -@spacing-50; + } - > .oo-ui-labelElement-label { - display: block; - margin-left: 2em; - font-weight: @font-weight-semi-bold; - } + > .oo-ui-labelElement-label { + font-weight: @font-weight-semi-bold; } &-body { - margin: @spacing-50 @spacing-75 @spacing-100; + cursor: auto; + background-color: @background-color-base; + margin: @spacing-50 -@spacing-75 -@spacing-50 -@spacing-75; + padding: @spacing-50 @spacing-75 @spacing-100; } &-actions { @@ -190,14 +192,12 @@ .ve-ui-editCheckActionWidget { margin: 0; border-width: 0; - - &-head { - background-color: transparent !important; /* stylelint-disable-line declaration-no-important */ - } + background-color: transparent !important; /* stylelint-disable-line declaration-no-important */ &-body { + background-color: transparent; padding-left: 2em; - margin-bottom: @spacing-75; + margin-left: 0; } } } diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 3c17b449ad..6112c8418e 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -142,46 +142,21 @@ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) // Parent constructor mw.editcheck.EditCheckActionWidget.super.call( this, config ); - // Mixin constructors - OO.ui.mixin.IconElement.call( this, config ); - OO.ui.mixin.LabelElement.call( this, config ); - OO.ui.mixin.TitledElement.call( this, config ); - OO.ui.mixin.FlaggedElement.call( this, config ); - - this.setType( config.type ); - - if ( config.icon ) { - this.setIcon( config.icon ); - } - this.message = new OO.ui.LabelWidget( { label: config.message } ); this.$actions = $( '

' ).addClass( 've-ui-editCheckActionWidget-actions oo-ui-element-hidden' ); - this.$head = $( '
' ) - .append( this.$icon, this.$label ) - .addClass( 've-ui-editCheckActionWidget-head' ) - .on( 'click', this.onHeadClick.bind( this ) ); + this.$element.on( 'click', this.onClick.bind( this ) ); + this.$body = $( '
' ) .append( this.message.$element, this.$actions ) .addClass( 've-ui-editCheckActionWidget-body' ); this.$element - .append( this.$head, this.$body ) - // .append( this.$icon, this.$label, this.closeButton && this.closeButton.$element ) + .append( this.$body ) .addClass( 've-ui-editCheckActionWidget' ); }; -OO.inheritClass( mw.editcheck.EditCheckActionWidget, OO.ui.Widget ); -OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.IconElement ); -OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.LabelElement ); -OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.TitledElement ); -OO.mixinClass( mw.editcheck.EditCheckActionWidget, OO.ui.mixin.FlaggedElement ); - -mw.editcheck.EditCheckActionWidget.static.iconMap = { - notice: 'infoFilled', - error: 'error', - warning: 'alert' -}; +OO.inheritClass( mw.editcheck.EditCheckActionWidget, OO.ui.MessageWidget ); /** * Called when actions are changed @@ -203,27 +178,13 @@ mw.editcheck.EditCheckActionWidget.prototype.setDisabled = function ( disabled ) } ); }; -mw.editcheck.EditCheckActionWidget.prototype.setType = function ( type ) { - if ( !this.constructor.static.iconMap[ type ] ) { - type = 'notice'; - } - if ( type !== this.type ) { - this.clearFlags(); - this.setFlags( type ); - - this.setIcon( this.constructor.static.iconMap[ type ] ); - } - this.type = type; -}; - -mw.editcheck.EditCheckActionWidget.prototype.getType = function () { - return this.type; -}; - -mw.editcheck.EditCheckActionWidget.prototype.onHeadClick = function ( e ) { +mw.editcheck.EditCheckActionWidget.prototype.onClick = function ( e ) { if ( this.singleAction ) { return; } + if ( this.$body[ 0 ].contains( e.target ) ) { + return; + } e.preventDefault(); // eslint-disable-next-line no-jquery/no-class-state From 49d3e8c40a5a1afbc45677802c89b11481c23320 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 24 Feb 2025 08:30:08 +0100 Subject: [PATCH 176/730] Localisation updates from https://translatewiki.net. Change-Id: Ib7c9d0270696bc966a9be5a15111dde4613cf29c --- i18n/ve-mw/diq.json | 3 ++- i18n/ve-mw/ike-latn.json | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 i18n/ve-mw/ike-latn.json diff --git a/i18n/ve-mw/diq.json b/i18n/ve-mw/diq.json index 5bdde989a8..80b410e088 100644 --- a/i18n/ve-mw/diq.json +++ b/i18n/ve-mw/diq.json @@ -6,6 +6,7 @@ "Asmen", "Erdemaslancan", "Gambollar", + "GolyatGeri", "Gorizon", "Gırd", "Kghbln", @@ -101,7 +102,7 @@ "visualeditor-dialog-meta-languages-label": "Zıwani", "visualeditor-dialog-meta-languages-link-label": "Pela gıreyıne", "visualeditor-dialog-meta-languages-name-label": "Zıwan", - "visualeditor-dialog-meta-languages-readonlynote": "Ena yew lista zıwananê binana ke yew gıre ra bestiyê. Nıka, tenya çımeyê terzi de ya zi Wikidata de vurnayış beno.", + "visualeditor-dialog-meta-languages-readonlynote": "Ena yew lista zıwananê binana ke yew gıre ra bestiyê. Nıka, tenya çımeyê terzi de ya zi Wikidayıt de vurnayış beno.", "visualeditor-dialog-meta-languages-section": "Zıwani", "visualeditor-dialog-meta-settings-displaytitle": "Sernuşte", "visualeditor-dialog-meta-settings-displaytitle-help": "Sernamey ena perrer herunda babetna ju etiketer asnayışa cı ravêrde şenê bıkarnê.", diff --git a/i18n/ve-mw/ike-latn.json b/i18n/ve-mw/ike-latn.json new file mode 100644 index 0000000000..d0829a0dc6 --- /dev/null +++ b/i18n/ve-mw/ike-latn.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "MysticVoyager" + ] + }, + "visualeditor-ca-editsource": "asijjiqpagit", + "visualeditor-ca-editsource-section": "asijjiqpagit" +} From 95cef5efc2af23e453c6a95a309a86766cecfb7a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 25 Feb 2025 08:25:56 +0100 Subject: [PATCH 177/730] Localisation updates from https://translatewiki.net. Change-Id: I15d8adae834618c665c1a13a4d2398c07285b5a1 --- i18n/ve-mw/br.json | 1 + 1 file changed, 1 insertion(+) diff --git a/i18n/ve-mw/br.json b/i18n/ve-mw/br.json index 8c8087b0cf..048ff49e46 100644 --- a/i18n/ve-mw/br.json +++ b/i18n/ve-mw/br.json @@ -43,6 +43,7 @@ "visualeditor-ca-editsource-section-hint": "Kemmañ kod tarzh ar rann : $1", "visualeditor-categories-tool": "Rummadoù", "visualeditor-changedesc-mwcategory-sortkey-changed": "Kemmet eo bet an alc'hwez urzhiañ eus $1 da $2", + "visualeditor-changedesc-mwcategory-sortkey-set": "Alc'hwez urzhiañ lakaet da $1", "visualeditor-changedesc-mwlanguagevariant": "Balizenn adstumm yezh kemmet", "visualeditor-changedesc-mwredirect": "Pal an adkas kemmet eus $1 da $2", "visualeditor-changedesc-mwtransclusion": "Arventennoù patrom kemmet", From c9e8f0eba7d532ac643d3d7d52b806425d4975d1 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 18 Feb 2025 01:15:20 -0600 Subject: [PATCH 178/730] Edit check: split out a dedicated controller Change-Id: If129f9334f405a7ae70bd7d4bd2bef2cf7953fee --- editcheck/modules/EditCheckDialog.js | 192 +++---------- editcheck/modules/controller.js | 389 +++++++++++++++++++++++++++ editcheck/modules/init.js | 159 +---------- extension.json | 1 + 4 files changed, 436 insertions(+), 305 deletions(-) create mode 100644 editcheck/modules/controller.js diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index fec8ead0d7..53188a10fe 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -17,9 +17,6 @@ ve.ui.EditCheckDialog = function VeUiEditCheckDialog( config ) { // Parent constructor ve.ui.EditCheckDialog.super.call( this, config ); - // Don't run a scroll if the previous animation is still running (which is jQuery 'fast' === 200ms) - this.scrollCurrentCheckIntoViewDebounced = ve.debounce( this.scrollCurrentCheckIntoView.bind( this ), 200, true ); - // Pre-initialization this.$element.addClass( 've-ui-editCheckDialog' ); }; @@ -99,96 +96,40 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { this.$checks = $( '
' ); this.$body.append( this.title.$element, this.closeButton.$element, this.$checks, this.footer.$element ); - - this.$highlights = $( '
' ); - - this.updateDebounced = ve.debounce( this.update.bind( this ), 100 ); - this.positionDebounced = ve.debounce( this.position.bind( this ), 100 ); }; -ve.ui.EditCheckDialog.prototype.update = function ( fromUserAction ) { - let newChecks; - const surfaceView = this.surface.getView(); - // We only regenerate the checks on-change during the edit. If we're in - // the proofreading step, no new checks should appear based on changes: - if ( this.listener === 'onDocumentChange' || !this.currentChecks ) { - const previousChecks = this.currentChecks; - this.currentChecks = mw.editcheck.editCheckFactory.createAllByListener( this.listener, this.surface.getModel() ); - newChecks = previousChecks && this.currentChecks.filter( ( check ) => previousChecks.every( ( oldCheck ) => !check.equals( oldCheck ) ) ); +ve.ui.EditCheckDialog.prototype.onChecksUpdated = function ( listener, checks, newChecks ) { + if ( listener !== this.listener ) { + return; } - if ( this.currentChecks.length === 0 ) { + this.currentChecks = checks; + if ( checks.length === 0 ) { return this.close( 'complete' ); } - const checks = this.currentChecks; + // This just adjusts so the previously selected check remains selected: let newOffset = Math.min( this.currentOffset, checks.length - 1 ); - if ( newChecks && newChecks.length ) { - // If new checks were found, automatically select the first new check - newOffset = this.currentChecks.indexOf( newChecks[ 0 ] ); + if ( newChecks.length ) { + newOffset = checks.indexOf( newChecks[ 0 ] ); } + + this.refresh(); + + this.setCurrentOffset( newOffset, false ); +}; + +ve.ui.EditCheckDialog.prototype.refresh = function () { this.$checks.empty(); - this.$highlights.empty(); - checks.forEach( ( check, index ) => { - const widget = check.render( index !== newOffset, this.listener === 'onBeforeSave', this.surface ); + this.currentChecks.forEach( ( check, index ) => { + const widget = check.render( index !== this.currentOffset, this.singleAction, this.surface ); widget.on( 'togglecollapse', this.onToggleCollapse, [ check, index ], this ); - check.off( 'act' ).on( 'act', this.onAct, [ widget ], this ); + check.off( 'act' ).on( 'act', this.onAct, [ check, widget ], this ); this.$checks.append( widget.$element ); // for scrolling later check.widget = widget; } ); - - if ( this.reviewMode ) { - // Review mode grays out everything that's not highlighted: - const highlightNodes = []; - checks.forEach( ( check ) => { - check.getHighlightSelections().forEach( ( selection ) => { - highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( selection.getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); - } ); - } ); - surfaceView.setReviewMode( true, highlightNodes ); - } - - this.setCurrentOffset( newOffset, fromUserAction ); -}; - -ve.ui.EditCheckDialog.prototype.position = function () { - this.drawHighlights(); - if ( this.reviewMode ) { - this.scrollCurrentCheckIntoViewDebounced(); - } -}; - -ve.ui.EditCheckDialog.prototype.drawHighlights = function () { - const surfaceView = this.surface.getView(); - this.$highlights.empty(); - - this.currentChecks.forEach( ( check, index ) => { - check.getHighlightSelections().forEach( ( selection ) => { - const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); - const rect = selectionView.getSelectionBoundingRect(); - // The following classes are used here: - // * ve-ui-editCheck-gutter-highlight-error - // * ve-ui-editCheck-gutter-highlight-warning - // * ve-ui-editCheck-gutter-highlight-notice - // * ve-ui-editCheck-gutter-highlight-success - // * ve-ui-editCheck-gutter-highlight-active - // * ve-ui-editCheck-gutter-highlight-inactive - this.$highlights.append( $( '
' ) - .addClass( 've-ui-editCheck-gutter-highlight' ) - .addClass( 've-ui-editCheck-gutter-highlight-' + check.getType() ) - .addClass( 've-ui-editCheck-gutter-highlight-' + ( index === this.currentOffset ? 'active' : 'inactive' ) ) - .css( { - top: rect.top - 2, - height: rect.height + 4 - } ) - .on( 'click', () => this.setCurrentOffset( index ) ) - ); - } ); - } ); - - surfaceView.appendHighlights( this.$highlights, false ); }; /** @@ -196,8 +137,9 @@ ve.ui.EditCheckDialog.prototype.drawHighlights = function () { * * @param {number} offset * @param {boolean} fromUserAction + * @param {boolean} internal */ -ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAction ) { +ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAction, internal ) { // TODO: work out how to tell the window to recalculate height here this.currentOffset = Math.max( 0, offset ); @@ -216,46 +158,13 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc this.updateSize(); - if ( this.isOpening() ) { - return; - } - - const surfaceView = this.surface.getView(); - if ( this.currentChecks.length > 0 ) { - // The currently-focused check gets a selection: - // TODO: clicking the selection should activate the sidebar-action - surfaceView.getSelectionManager().drawSelections( - 'editCheckWarning', - this.currentChecks[ this.currentOffset ].getHighlightSelections().map( - ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) - ) - ); - - if ( fromUserAction || this.reviewMode ) { - this.scrollCurrentCheckIntoViewDebounced(); - } - } else { - surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); + if ( !internal ) { + this.controller.focusCheck( this.currentChecks[ this.currentOffset ], fromUserAction ); } - - this.drawHighlights(); }; -ve.ui.EditCheckDialog.prototype.scrollCurrentCheckIntoView = function () { - const currentCheck = this.currentChecks[ this.currentOffset ]; - if ( currentCheck ) { - // scrollSelectionIntoView scrolls to the focus of a selection, but we - // want the very beginning to be in view, so collapse it: - const selection = currentCheck.getHighlightSelections()[ 0 ].collapseToStart(); - this.surface.scrollSelectionIntoView( selection, { - animate: true, - padding: { - top: ( OO.ui.isMobile() ? 80 : currentCheck.widget.$element[ 0 ].getBoundingClientRect().top ), - bottom: ( OO.ui.isMobile() ? this.getContentHeight() : 0 ) + 20 - }, - alignToTop: true - } ); - } +ve.ui.EditCheckDialog.prototype.onFocusCheck = function ( check, index, scrollTo ) { + this.setCurrentOffset( index, scrollTo, true ); }; /** @@ -264,42 +173,28 @@ ve.ui.EditCheckDialog.prototype.scrollCurrentCheckIntoView = function () { ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getSetupProcess.call( this, data ) .first( () => { - this.currentOffset = 0; - this.currentChecks = data.checks; // if these weren't passed they'll be regenerated + this.controller = data.controller; + this.controller.on( 'checksUpdated', this.onChecksUpdated, false, this ); + this.controller.on( 'focusCheck', this.onFocusCheck, false, this ); + this.listener = data.listener || 'onDocumentChange'; - this.reviewMode = data.reviewMode; + this.currentOffset = 0; + this.currentChecks = data.checks || this.controller.getChecks( this.listener ); this.surface = data.surface; - this.surface.getModel().on( 'undoStackChange', this.updateDebounced ); - this.surface.getView().on( 'position', this.positionDebounced ); - - const singleAction = ( this.listener === 'onBeforeSave' ) || OO.ui.isMobile(); + this.singleAction = ( this.listener === 'onBeforeSave' ) || OO.ui.isMobile(); this.closeButton.toggle( OO.ui.isMobile() ); this.footer.toggle( - singleAction && + this.singleAction && // If we're in single-check mode don't show even the disabled pagers: !mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle ); - this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', singleAction ); + this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', this.singleAction ); this.surface.context.hide(); - this.update(); - }, this ); -}; - -/** - * @inheritdoc - */ -ve.ui.EditCheckDialog.prototype.getReadyProcess = function ( data ) { - return ve.ui.EditCheckDialog.super.prototype.getReadyProcess.call( this, data ) - .next( () => { - // Call update again after the dialog has transitioned open, as the first - // call of update will not have drawn any selections. - setTimeout( () => { - this.update(); - }, OO.ui.theme.getDialogTransitionDuration() ); + this.onChecksUpdated( this.listener, this.currentChecks, this.currentChecks, [] ); }, this ); }; @@ -309,11 +204,8 @@ ve.ui.EditCheckDialog.prototype.getReadyProcess = function ( data ) { ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getTeardownProcess.call( this, data ) .next( () => { - this.surface.getView().setReviewMode( false ); - this.surface.getView().getSelectionManager().drawSelections( 'editCheckWarning', [] ); - this.surface.getView().off( 'position', this.positionDebounced ); - this.surface.getModel().off( 'undoStackChange', this.updateDebounced ); - this.$highlights.remove().empty(); + this.controller.off( 'checksUpdated', this.onChecksUpdated, this ); + this.controller.off( 'focusCheck', this.onFocusCheck, this ); this.$checks.empty(); }, this ); }; @@ -321,10 +213,11 @@ ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data ) { /** * Handle 'act' events from the mw.widget.EditCheckActionWidget * + * @param {mw.editcheck.EditCheckAction} check * @param {mw.editcheck.EditCheckActionWidget} widget * @param {jQuery.Promise} promise Promise which resolves when the action is complete */ -ve.ui.EditCheckDialog.prototype.onAct = function ( widget, promise ) { +ve.ui.EditCheckDialog.prototype.onAct = function ( check, widget, promise ) { widget.setDisabled( true ); this.nextButton.setDisabled( true ); this.previousButton.setDisabled( true ); @@ -345,13 +238,10 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( widget, promise ) { // more generic const pause = data.action !== 'reject' ? 500 : 0; setTimeout( () => { - // We must have been acting on the currentOffset - this.currentChecks.splice( this.currentOffset, 1 ); - this.currentOffset = Math.max( 0, this.currentOffset - 1 ); - this.update(); + this.controller.removeCheck( this.listener, check ); }, pause ); } else { - this.updateDebounced( true ); + this.controller.refresh(); } } ); }; @@ -412,7 +302,7 @@ ve.ui.commandRegistry.register( ve.ui.commandRegistry.register( new ve.ui.Command( - 'editCheckDialogBeforeSave', 'window', 'toggle', { args: [ 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true } ] } + 'editCheckDialogBeforeSave', 'window', 'toggle', { args: [ 'editCheckDialog', { listener: 'onBeforeSave' } ] } ) ); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js new file mode 100644 index 0000000000..23f577a04c --- /dev/null +++ b/editcheck/modules/controller.js @@ -0,0 +1,389 @@ +'use strict'; + +function Controller() { + // Mixin constructors + OO.EventEmitter.call( this ); + + this.checksByListener = {}; + + this.target = false; + this.surface = false; + this.listener = 'onDocumentChange'; + + this.$highlights = $( '
' ); + + this.onDocumentChangeDebounced = ve.debounce( this.onDocumentChange.bind( this ), 100 ); + this.onPositionDebounced = ve.debounce( this.onPosition.bind( this ), 100 ); + + // Don't run a scroll if the previous animation is still running (which is jQuery 'fast' === 200ms) + this.scrollCheckIntoViewDebounced = ve.debounce( this.scrollCheckIntoView.bind( this ), 200, true ); +} + +OO.mixinClass( Controller, OO.EventEmitter ); + +Controller.prototype.setup = function () { + mw.hook( 've.activationStart' ).add( () => { + document.documentElement.classList.add( 've-editcheck-available' ); + + } ); + mw.hook( 've.activationComplete' ).add( () => { + this.target = ve.init.target; + this.surface = this.target.getSurface(); + + this.surface.getView().on( 'position', this.onPositionDebounced ); + this.surface.getModel().on( 'undoStackChange', this.onDocumentChangeDebounced ); + + this.on( 'checksUpdated', ( listener, checks, newChecks, discardedChecks ) => { + // do we need to redraw anything? + if ( newChecks.length || discardedChecks.length ) { + if ( this.focusedCheck && discardedChecks.indexOf( this.focusedCheck ) !== -1 ) { + this.focusedCheck = undefined; + } + this.drawSelections(); + this.drawGutter(); + } + + // do we need to show mid-edit actions? + if ( listener !== 'onDocumentChange' ) { + return; + } + if ( !checks.length ) { + return; + } + const currentWindow = this.surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); + if ( !currentWindow || currentWindow.constructor.static.name !== 'editCheckDialog' ) { + const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); + return windowAction.open( + 'editCheckDialog', + { listener: 'onDocumentChange', checks: checks, controller: this } + ); + } + } ); + + // Run on load (e.g. recovering from auto-save) + setTimeout( () => this.onDocumentChange(), 100 ); + } ); + mw.hook( 've.deactivationComplete' ).add( () => { + document.documentElement.classList.remove( 've-editcheck-available' ); + + mw.editcheck.dismissedFragments = {}; + mw.editcheck.dismissedIds = {}; + + this.surface.getModel().off( 'undoStackChange', this.onDocumentChangeDebounced ); + + this.disconnect( this ); + + this.target = false; + this.surface = false; + this.checksByListener = {}; + } ); + mw.hook( 've.preSaveProcess' ).add( this.onPreSaveProcess.bind( this ) ); +}; + +Controller.prototype.refresh = function ( listener ) { + if ( listener === 'onBeforeSave' ) { + // These shouldn't be recalculated + this.emit( 'checksUpdated', listener, this.getChecks( listener ), [], [] ); + } else { + this.updateChecksForListener( listener, true ); + } +}; + +Controller.prototype.updateChecksForListener = function ( listener, always ) { + listener = listener || this.listener; + const existing = this.checksByListener[ listener ] || []; + const checks = mw.editcheck.editCheckFactory.createAllByListener( listener, this.surface.getModel() ) + .map( ( check ) => existing.find( ( oldCheck ) => oldCheck.equals( check ) ) || check ); + + this.checksByListener[ listener ] = checks; + + const newChecks = checks.filter( ( check ) => existing.every( ( oldCheck ) => !check.equals( oldCheck ) ) ); + const discardedChecks = existing.filter( ( check ) => checks.every( ( newCheck ) => !check.equals( newCheck ) ) ); + if ( always || checks.length !== existing.length || newChecks.length || discardedChecks.length ) { + this.emit( 'checksUpdated', listener, checks, newChecks, discardedChecks ); + } + return checks; +}; + +Controller.prototype.removeCheck = function ( listener, check ) { + const checks = this.getChecks( listener ); + const index = checks.indexOf( check ); + if ( index === -1 ) { + return; + } + const removed = checks.splice( index, 1 ); + + if ( check === this.focusedCheck ) { + this.focusedCheck = undefined; + } + + this.emit( 'checksUpdated', listener, checks, [], removed ); +}; + +Controller.prototype.focusCheck = function ( check, scrollTo ) { + this.focusedCheck = check; + + this.drawSelections(); + this.drawGutter(); + + this.emit( 'focusCheck', check, this.getChecks().indexOf( check ), scrollTo ); +}; + +Controller.prototype.getChecks = function ( listener ) { + return this.checksByListener[ listener || this.listener ] || []; +}; + +Controller.prototype.onPosition = function () { + this.drawGutter(); + + if ( this.getChecks().length && this.focusedCheck && this.surface.getView().reviewMode ) { + this.scrollCheckIntoViewDebounced( this.focusedCheck ); + } +}; + +Controller.prototype.onDocumentChange = function () { + if ( this.surface.getMode() !== 'visual' ) { + return; + } + if ( this.listener !== 'onBeforeSave' ) { + this.updateChecksForListener( 'onDocumentChange' ); + } + + this.drawSelections(); + this.drawGutter(); +}; + +Controller.prototype.onPreSaveProcess = function ( saveProcess, target ) { + const surface = target.getSurface(); + + if ( surface.getMode() !== 'visual' ) { + // Some checks will entirely work in source mode for most cases. + // But others will fail spectacularly -- e.g. reference check + // isn't aware of tags and so will suggest that all content + // has references added. As such, disable in source mode for now. + return; + } + + ve.track( 'counter.editcheck.preSaveChecksAvailable' ); + + // clear rejection-reasons between runs of the save process, so only the last one counts + mw.editcheck.rejections.length = 0; + + const oldFocusedCheck = this.focusedCheck; + this.listener = 'onBeforeSave'; + const checks = this.updateChecksForListener( 'onBeforeSave' ); + if ( checks.length ) { + ve.track( 'counter.editcheck.preSaveChecksShown' ); + mw.editcheck.refCheckShown = true; + + this.setupToolbar( target ); + + let $contextContainer, contextPadding; + if ( surface.context.popup ) { + contextPadding = surface.context.popup.containerPadding; + $contextContainer = surface.context.popup.$container; + surface.context.popup.$container = surface.$element; + surface.context.popup.containerPadding = 20; + } + + saveProcess.next( () => { + const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); + // .always is not chainable + return windowAction.close( 'editCheckDialog' ).closed.then( () => {}, () => {} ).then( () => { + this.originalToolbar.toggle( false ); + target.onContainerScroll(); + return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', checks: checks, controller: this } ) + .then( ( instance ) => { + instance.closed.then( () => {}, () => {} ).then( () => { + surface.getView().setReviewMode( false ); + this.listener = 'onDocumentChange'; + this.focusedCheck = oldFocusedCheck; + // Re-open the mid-edit sidebar if necessary. + this.refresh(); + } ); + return instance.closing.then( ( data ) => { + this.restoreToolbar( target ); + + if ( $contextContainer ) { + surface.context.popup.$container = $contextContainer; + surface.context.popup.containerPadding = contextPadding; + } + + target.onContainerScroll(); + + if ( data ) { + const delay = ve.createDeferred(); + // If they inserted, wait 2 seconds on desktop + // before showing save dialog to make sure insertions are finialized + setTimeout( () => { + ve.track( 'counter.editcheck.preSaveChecksCompleted' ); + delay.resolve(); + }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); + return delay.promise(); + } else { + // closed via "back" or otherwise + ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); + return ve.createDeferred().reject().promise(); + } + } ); + } ); + } ); + } ); + } else { + this.listener = 'onDocumentChange'; + // Counterpart to earlier preSaveChecksShown, for use in tracking + // errors in check-generation: + ve.track( 'counter.editcheck.preSaveChecksNotShown' ); + } +}; + +Controller.prototype.setupToolbar = function ( target ) { + const surface = target.getSurface(); + const toolbar = target.getToolbar(); + const reviewToolbar = new ve.ui.PositionedTargetToolbar( target, target.toolbarConfig ); + reviewToolbar.setup( [ + { + name: 'back', + type: 'bar', + include: [ 'editCheckBack' ] + }, + // Placeholder toolbar groups + // TODO: Make a proper TitleTool? + { + name: 'title', + type: 'bar', + include: [] + }, + { + name: 'save', + // TODO: MobileArticleTarget should ignore 'align' + align: OO.ui.isMobile() ? 'before' : 'after', + type: 'bar', + include: [ 'showSaveDisabled' ] + } + ], surface ); + reviewToolbar.$element.addClass( 've-ui-editCheck-toolbar' ); + + reviewToolbar.items[ 1 ].$element.removeClass( 'oo-ui-toolGroup-empty' ); + reviewToolbar.items[ 1 ].$group.append( + $( '' ).addClass( 've-ui-editCheck-toolbar-title' ).text( ve.msg( 'editcheck-dialog-title' ) ) + ); + if ( OO.ui.isMobile() ) { + reviewToolbar.$element.addClass( 've-init-mw-mobileArticleTarget-toolbar' ); + } + target.toolbar.$element.before( reviewToolbar.$element ); + target.toolbar = reviewToolbar; + + this.originalToolbar = toolbar; + this.reviewToolbar = reviewToolbar; +}; + +Controller.prototype.restoreToolbar = function ( target ) { + if ( !this.reviewToolbar ) { + return; + } + this.reviewToolbar.$element.remove(); + this.originalToolbar.toggle( true ); + target.toolbar = this.originalToolbar; + + // Creating a new PositionedTargetToolbar stole the + // toolbar windowmanagers, so we need to make the + // original toolbar reclaim them: + this.originalToolbar.disconnect( target ); + target.setupToolbar( target.getSurface() ); + + this.reviewToolbar = false; + this.originalToolbar = false; +}; + +Controller.prototype.drawSelections = function () { + const surfaceView = this.surface.getView(); + if ( this.focusedCheck ) { + // The currently-focused check gets a selection: + // TODO: clicking the selection should activate the sidebar-action + surfaceView.getSelectionManager().drawSelections( + 'editCheckWarning', + this.focusedCheck.getHighlightSelections().map( + ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) + ) + ); + } else { + surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); + } + + if ( this.listener === 'onBeforeSave' ) { + // Review mode grays out everything that's not highlighted: + const highlightNodes = []; + this.getChecks().forEach( ( check ) => { + check.getHighlightSelections().forEach( ( selection ) => { + highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( selection.getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); + } ); + } ); + surfaceView.setReviewMode( true, highlightNodes ); + } +}; + +Controller.prototype.drawGutter = function () { + this.$highlights.empty(); + const checks = this.getChecks(); + if ( checks.length === 0 ) { + return; + } + const surfaceView = this.surface.getView(); + + checks.forEach( ( check ) => { + check.getHighlightSelections().forEach( ( selection ) => { + const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); + const rect = selectionView.getSelectionBoundingRect(); + if ( !rect ) { + return; + } + // The following classes are used here: + // * ve-ui-editCheck-gutter-highlight-error + // * ve-ui-editCheck-gutter-highlight-warning + // * ve-ui-editCheck-gutter-highlight-notice + // * ve-ui-editCheck-gutter-highlight-success + // * ve-ui-editCheck-gutter-highlight-active + // * ve-ui-editCheck-gutter-highlight-inactive + this.$highlights.append( $( '
' ) + .addClass( 've-ui-editCheck-gutter-highlight' ) + .addClass( 've-ui-editCheck-gutter-highlight-' + check.getType() ) + .addClass( 've-ui-editCheck-gutter-highlight-' + ( check === this.focusedCheck ? 'active' : 'inactive' ) ) + .css( { + top: rect.top - 2, + height: rect.height + 4 + } ) + .on( 'click', () => this.focusCheck( check ) ) + ); + } ); + } ); + + surfaceView.appendHighlights( this.$highlights, false ); +}; + +Controller.prototype.scrollCheckIntoView = function ( check ) { + // scrollSelectionIntoView scrolls to the focus of a selection, but we + // want the very beginning to be in view, so collapse it: + const selection = check.getHighlightSelections()[ 0 ].collapseToStart(); + const padding = { + top: OO.ui.isMobile() ? 80 : check.widget.$element[ 0 ].getBoundingClientRect().top, + bottom: 20 + }; + if ( ve.ui.EditCheckDialog.static.position === 'below' ) { + // TODO: ui.surface getPadding should really be fixed for this + const currentWindow = this.surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); + if ( currentWindow ) { + padding.bottom += currentWindow.getContentHeight(); + } + } + this.surface.scrollSelectionIntoView( selection, { + animate: true, + padding: padding, + alignToTop: true + } ); +}; + +module.exports = { + Controller: Controller, + instance: new Controller() +}; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 6d2495a211..a3406e5d27 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -2,7 +2,8 @@ mw.editcheck = { config: require( './config.json' ), ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ), dismissedFragments: {}, - dismissedIds: {} + dismissedIds: {}, + controller: require( './controller.js' ).instance }; require( './EditCheckInspector.js' ); @@ -85,161 +86,11 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { } if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable ) { - mw.hook( 've.activationComplete' ).add( () => { - const surface = ve.init.target.getSurface(); - const surfaceModel = surface.getModel(); - const surfaceView = surface.getView(); - - function onDocumentChange() { - if ( !surfaceView.reviewMode ) { - const checks = mw.editcheck.editCheckFactory.createAllByListener( 'onDocumentChange', surfaceModel ); - if ( checks.length ) { - const currentWindow = surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); - if ( !currentWindow || currentWindow.constructor.static.name !== 'editCheckDialog' ) { - const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); - return windowAction.open( - 'editCheckDialog', - { listener: 'onDocumentChange', checks: checks } - ); - } - } - } - } - - // TODO: De-duplicate with this listener in EditCheckDialog - surfaceModel.on( 'undoStackChange', ve.debounce( onDocumentChange, 100 ) ); - - // Run on load (e.g. recovering from auto-save) - onDocumentChange(); - } ); - mw.hook( 've.activationStart' ).add( () => { - document.documentElement.classList.add( 've-editcheck-available' ); - } ); - mw.hook( 've.deactivationComplete' ).add( () => { - document.documentElement.classList.remove( 've-editcheck-available' ); - - mw.editcheck.dismissedFragments = {}; - mw.editcheck.dismissedIds = {}; - } ); - mw.hook( 've.preSaveProcess' ).add( ( saveProcess, target ) => { - const surface = target.getSurface(); - - if ( surface.getMode() !== 'visual' ) { - // Some checks will entirely work in source mode for most cases. - // But others will fail spectacularly -- e.g. reference check - // isn't aware of tags and so will suggest that all content - // has references added. As such, disable in source mode for now. - return; - } - - ve.track( 'counter.editcheck.preSaveChecksAvailable' ); - - // clear rejection-reasons between runs of the save process, so only the last one counts - mw.editcheck.rejections.length = 0; - - const checks = mw.editcheck.editCheckFactory.createAllByListener( 'onBeforeSave', surface.getModel() ); - if ( checks.length ) { - ve.track( 'counter.editcheck.preSaveChecksShown' ); - mw.editcheck.refCheckShown = true; - - const toolbar = target.getToolbar(); - const reviewToolbar = new ve.ui.PositionedTargetToolbar( target, target.toolbarConfig ); - reviewToolbar.setup( [ - { - name: 'back', - type: 'bar', - include: [ 'editCheckBack' ] - }, - // Placeholder toolbar groups - // TODO: Make a proper TitleTool? - { - name: 'title', - type: 'bar', - include: [] - }, - { - name: 'save', - // TODO: MobileArticleTarget should ignore 'align' - align: OO.ui.isMobile() ? 'before' : 'after', - type: 'bar', - include: [ 'showSaveDisabled' ] - } - ], surface ); - reviewToolbar.$element.addClass( 've-ui-editCheck-toolbar' ); - - reviewToolbar.items[ 1 ].$element.removeClass( 'oo-ui-toolGroup-empty' ); - reviewToolbar.items[ 1 ].$group.append( - $( '' ).addClass( 've-ui-editCheck-toolbar-title' ).text( ve.msg( 'editcheck-dialog-title' ) ) - ); - if ( OO.ui.isMobile() ) { - reviewToolbar.$element.addClass( 've-init-mw-mobileArticleTarget-toolbar' ); - } - target.toolbar.$element.before( reviewToolbar.$element ); - target.toolbar = reviewToolbar; - - let $contextContainer, contextPadding; - if ( surface.context.popup ) { - contextPadding = surface.context.popup.containerPadding; - $contextContainer = surface.context.popup.$container; - surface.context.popup.$container = surface.$element; - surface.context.popup.containerPadding = 20; - } - - saveProcess.next( () => { - const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); - // .always is not chainable - return windowAction.close( 'editCheckDialog' ).closed.then( () => {}, () => {} ).then( () => { - toolbar.toggle( false ); - target.onContainerScroll(); - // surface.executeCommand( 'editCheckDialogBeforeSave' ); - return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', reviewMode: true, checks: checks } ) - .then( ( instance ) => { - instance.closed.then( () => {}, () => {} ).then( () => { - // Re-open the mid-edit sidebar if necessary. - // TODO: Do this without triggering a fake undoStackChange event. - surface.getModel().emit( 'undoStackChange' ); - } ); - return instance.closing.then( ( data ) => { - reviewToolbar.$element.remove(); - toolbar.toggle( true ); - target.toolbar = toolbar; - if ( $contextContainer ) { - surface.context.popup.$container = $contextContainer; - surface.context.popup.containerPadding = contextPadding; - } - // Creating a new PositionedTargetToolbar stole the - // toolbar windowmanagers, so we need to make the - // original toolbar reclaim them: - toolbar.disconnect( target ); - target.setupToolbar( surface ); - target.onContainerScroll(); - - if ( data ) { - const delay = ve.createDeferred(); - // If they inserted, wait 2 seconds on desktop - // before showing save dialog to make sure insertions are finialized - setTimeout( () => { - ve.track( 'counter.editcheck.preSaveChecksCompleted' ); - delay.resolve(); - }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); - return delay.promise(); - } else { - // closed via "back" or otherwise - ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); - return ve.createDeferred().reject().promise(); - } - } ); - } ); - } ); - } ); - } else { - // Counterpart to earlier preSaveChecksShown, for use in tracking - // errors in check-generation: - ve.track( 'counter.editcheck.preSaveChecksNotShown' ); - } - } ); + mw.editcheck.controller.setup(); } +// This is for the toolbar: + ve.ui.EditCheckBack = function VeUiEditCheckBack() { // Parent constructor ve.ui.EditCheckBack.super.apply( this, arguments ); diff --git a/extension.json b/extension.json index 271110701c..0d871e087d 100644 --- a/extension.json +++ b/extension.json @@ -623,6 +623,7 @@ "group": "visualEditorA", "packageFiles": [ "editcheck/modules/init.js", + "editcheck/modules/controller.js", "editcheck/modules/EditCheckInspector.js", "editcheck/modules/EditCheckDialog.js", "editcheck/modules/EditCheckFactory.js", From c273ebc74c73a0c0e8a76c5c7eb4eaa54bc02b58 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 25 Feb 2025 10:14:00 -0600 Subject: [PATCH 179/730] Edit check: change usage of "check" to "action" where relevant Change-Id: I44dd10a8728f85e4fbcf3d218f6d1b6fa25bb027 --- editcheck/modules/EditCheckDialog.js | 66 ++++++++-------- editcheck/modules/controller.js | 110 +++++++++++++-------------- 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 53188a10fe..cd72814d2f 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -66,7 +66,7 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { } ); this.currentOffset = 0; - this.currentChecks = null; + this.currentActions = null; this.footerLabel = new OO.ui.LabelWidget(); this.previousButton = new OO.ui.ButtonWidget( { @@ -94,23 +94,23 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { ] } ); - this.$checks = $( '
' ); - this.$body.append( this.title.$element, this.closeButton.$element, this.$checks, this.footer.$element ); + this.$actions = $( '
' ); + this.$body.append( this.title.$element, this.closeButton.$element, this.$actions, this.footer.$element ); }; -ve.ui.EditCheckDialog.prototype.onChecksUpdated = function ( listener, checks, newChecks ) { +ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, newActions ) { if ( listener !== this.listener ) { return; } - this.currentChecks = checks; - if ( checks.length === 0 ) { + this.currentActions = actions; + if ( actions.length === 0 ) { return this.close( 'complete' ); } // This just adjusts so the previously selected check remains selected: - let newOffset = Math.min( this.currentOffset, checks.length - 1 ); - if ( newChecks.length ) { - newOffset = checks.indexOf( newChecks[ 0 ] ); + let newOffset = Math.min( this.currentOffset, actions.length - 1 ); + if ( newActions.length ) { + newOffset = actions.indexOf( newActions[ 0 ] ); } this.refresh(); @@ -119,16 +119,16 @@ ve.ui.EditCheckDialog.prototype.onChecksUpdated = function ( listener, checks, n }; ve.ui.EditCheckDialog.prototype.refresh = function () { - this.$checks.empty(); + this.$actions.empty(); - this.currentChecks.forEach( ( check, index ) => { - const widget = check.render( index !== this.currentOffset, this.singleAction, this.surface ); - widget.on( 'togglecollapse', this.onToggleCollapse, [ check, index ], this ); - check.off( 'act' ).on( 'act', this.onAct, [ check, widget ], this ); - this.$checks.append( widget.$element ); + this.currentActions.forEach( ( action, index ) => { + const widget = action.render( index !== this.currentOffset, this.singleAction, this.surface ); + widget.on( 'togglecollapse', this.onToggleCollapse, [ action, index ], this ); + action.off( 'act' ).on( 'act', this.onAct, [ action, widget ], this ); + this.$actions.append( widget.$element ); // for scrolling later - check.widget = widget; + action.widget = widget; } ); }; @@ -150,20 +150,20 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc this.footerLabel.setLabel( ve.msg( 'visualeditor-find-and-replace-results', ve.init.platform.formatNumber( this.currentOffset + 1 ), - ve.init.platform.formatNumber( this.currentChecks.length ) + ve.init.platform.formatNumber( this.currentActions.length ) ) ); - this.nextButton.setDisabled( this.currentOffset >= this.currentChecks.length - 1 ); + this.nextButton.setDisabled( this.currentOffset >= this.currentActions.length - 1 ); this.previousButton.setDisabled( this.currentOffset <= 0 ); this.updateSize(); if ( !internal ) { - this.controller.focusCheck( this.currentChecks[ this.currentOffset ], fromUserAction ); + this.controller.focusAction( this.currentActions[ this.currentOffset ], fromUserAction ); } }; -ve.ui.EditCheckDialog.prototype.onFocusCheck = function ( check, index, scrollTo ) { +ve.ui.EditCheckDialog.prototype.onFocusAction = function ( action, index, scrollTo ) { this.setCurrentOffset( index, scrollTo, true ); }; @@ -174,12 +174,12 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getSetupProcess.call( this, data ) .first( () => { this.controller = data.controller; - this.controller.on( 'checksUpdated', this.onChecksUpdated, false, this ); - this.controller.on( 'focusCheck', this.onFocusCheck, false, this ); + this.controller.on( 'actionsUpdated', this.onActionsUpdated, false, this ); + this.controller.on( 'focusAction', this.onFocusAction, false, this ); this.listener = data.listener || 'onDocumentChange'; this.currentOffset = 0; - this.currentChecks = data.checks || this.controller.getChecks( this.listener ); + this.currentActions = data.actions || this.controller.getActions( this.listener ); this.surface = data.surface; this.singleAction = ( this.listener === 'onBeforeSave' ) || OO.ui.isMobile(); @@ -194,7 +194,7 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { this.surface.context.hide(); - this.onChecksUpdated( this.listener, this.currentChecks, this.currentChecks, [] ); + this.onActionsUpdated( this.listener, this.currentActions, this.currentActions, [] ); }, this ); }; @@ -204,20 +204,20 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data ) { return ve.ui.EditCheckDialog.super.prototype.getTeardownProcess.call( this, data ) .next( () => { - this.controller.off( 'checksUpdated', this.onChecksUpdated, this ); - this.controller.off( 'focusCheck', this.onFocusCheck, this ); - this.$checks.empty(); + this.controller.off( 'actionsUpdated', this.onActionsUpdated, this ); + this.controller.off( 'focusAction', this.onFocusAction, this ); + this.$actions.empty(); }, this ); }; /** * Handle 'act' events from the mw.widget.EditCheckActionWidget * - * @param {mw.editcheck.EditCheckAction} check + * @param {mw.editcheck.EditCheckAction} action * @param {mw.editcheck.EditCheckActionWidget} widget * @param {jQuery.Promise} promise Promise which resolves when the action is complete */ -ve.ui.EditCheckDialog.prototype.onAct = function ( check, widget, promise ) { +ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { widget.setDisabled( true ); this.nextButton.setDisabled( true ); this.previousButton.setDisabled( true ); @@ -238,7 +238,7 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( check, widget, promise ) { // more generic const pause = data.action !== 'reject' ? 500 : 0; setTimeout( () => { - this.controller.removeCheck( this.listener, check ); + this.controller.removeAction( this.listener, action ); }, pause ); } else { this.controller.refresh(); @@ -249,14 +249,14 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( check, widget, promise ) { /** * Handle 'togglecollapse' events from the mw.widget.EditCheckActionWidget * - * @param {mw.editcheck.EditCheckAction} check + * @param {mw.editcheck.EditCheckAction} action * @param {number} index * @param {boolean} collapsed */ -ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( check, index, collapsed ) { +ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, collapsed ) { if ( !collapsed ) { // expanded one - this.setCurrentOffset( this.currentChecks.indexOf( check ), true ); + this.setCurrentOffset( this.currentActions.indexOf( action ), true ); } }; diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 23f577a04c..ce6071d5f8 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -4,7 +4,7 @@ function Controller() { // Mixin constructors OO.EventEmitter.call( this ); - this.checksByListener = {}; + this.actionsByListener = {}; this.target = false; this.surface = false; @@ -16,7 +16,7 @@ function Controller() { this.onPositionDebounced = ve.debounce( this.onPosition.bind( this ), 100 ); // Don't run a scroll if the previous animation is still running (which is jQuery 'fast' === 200ms) - this.scrollCheckIntoViewDebounced = ve.debounce( this.scrollCheckIntoView.bind( this ), 200, true ); + this.scrollActionIntoViewDebounced = ve.debounce( this.scrollActionIntoView.bind( this ), 200, true ); } OO.mixinClass( Controller, OO.EventEmitter ); @@ -33,11 +33,11 @@ Controller.prototype.setup = function () { this.surface.getView().on( 'position', this.onPositionDebounced ); this.surface.getModel().on( 'undoStackChange', this.onDocumentChangeDebounced ); - this.on( 'checksUpdated', ( listener, checks, newChecks, discardedChecks ) => { + this.on( 'actionsUpdated', ( listener, actions, newActions, discardedActions ) => { // do we need to redraw anything? - if ( newChecks.length || discardedChecks.length ) { - if ( this.focusedCheck && discardedChecks.indexOf( this.focusedCheck ) !== -1 ) { - this.focusedCheck = undefined; + if ( newActions.length || discardedActions.length ) { + if ( this.focused && discardedActions.indexOf( this.focused ) !== -1 ) { + this.focused = undefined; } this.drawSelections(); this.drawGutter(); @@ -47,7 +47,7 @@ Controller.prototype.setup = function () { if ( listener !== 'onDocumentChange' ) { return; } - if ( !checks.length ) { + if ( !actions.length ) { return; } const currentWindow = this.surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); @@ -55,7 +55,7 @@ Controller.prototype.setup = function () { const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); return windowAction.open( 'editCheckDialog', - { listener: 'onDocumentChange', checks: checks, controller: this } + { listener: 'onDocumentChange', actions: actions, controller: this } ); } } ); @@ -75,7 +75,7 @@ Controller.prototype.setup = function () { this.target = false; this.surface = false; - this.checksByListener = {}; + this.actionsByListener = {}; } ); mw.hook( 've.preSaveProcess' ).add( this.onPreSaveProcess.bind( this ) ); }; @@ -83,61 +83,61 @@ Controller.prototype.setup = function () { Controller.prototype.refresh = function ( listener ) { if ( listener === 'onBeforeSave' ) { // These shouldn't be recalculated - this.emit( 'checksUpdated', listener, this.getChecks( listener ), [], [] ); + this.emit( 'actionsUpdated', listener, this.getActions( listener ), [], [] ); } else { - this.updateChecksForListener( listener, true ); + this.updateForListener( listener, true ); } }; -Controller.prototype.updateChecksForListener = function ( listener, always ) { +Controller.prototype.updateForListener = function ( listener, always ) { listener = listener || this.listener; - const existing = this.checksByListener[ listener ] || []; - const checks = mw.editcheck.editCheckFactory.createAllByListener( listener, this.surface.getModel() ) - .map( ( check ) => existing.find( ( oldCheck ) => oldCheck.equals( check ) ) || check ); + const existing = this.actionsByListener[ listener ] || []; + const actions = mw.editcheck.editCheckFactory.createAllByListener( listener, this.surface.getModel() ) + .map( ( action ) => existing.find( ( oldAction ) => oldAction.equals( action ) ) || action ); - this.checksByListener[ listener ] = checks; + this.actionsByListener[ listener ] = actions; - const newChecks = checks.filter( ( check ) => existing.every( ( oldCheck ) => !check.equals( oldCheck ) ) ); - const discardedChecks = existing.filter( ( check ) => checks.every( ( newCheck ) => !check.equals( newCheck ) ) ); - if ( always || checks.length !== existing.length || newChecks.length || discardedChecks.length ) { - this.emit( 'checksUpdated', listener, checks, newChecks, discardedChecks ); + const newActions = actions.filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); + const discardedActions = existing.filter( ( action ) => actions.every( ( newAction ) => !action.equals( newAction ) ) ); + if ( always || actions.length !== existing.length || newActions.length || discardedActions.length ) { + this.emit( 'actionsUpdated', listener, actions, newActions, discardedActions ); } - return checks; + return actions; }; -Controller.prototype.removeCheck = function ( listener, check ) { - const checks = this.getChecks( listener ); - const index = checks.indexOf( check ); +Controller.prototype.removeAction = function ( listener, action ) { + const actions = this.getActions( listener ); + const index = actions.indexOf( action ); if ( index === -1 ) { return; } - const removed = checks.splice( index, 1 ); + const removed = actions.splice( index, 1 ); - if ( check === this.focusedCheck ) { - this.focusedCheck = undefined; + if ( action === this.focused ) { + this.focused = undefined; } - this.emit( 'checksUpdated', listener, checks, [], removed ); + this.emit( 'actionsUpdated', listener, actions, [], removed ); }; -Controller.prototype.focusCheck = function ( check, scrollTo ) { - this.focusedCheck = check; +Controller.prototype.focusAction = function ( action, scrollTo ) { + this.focused = action; this.drawSelections(); this.drawGutter(); - this.emit( 'focusCheck', check, this.getChecks().indexOf( check ), scrollTo ); + this.emit( 'focusAction', action, this.getActions().indexOf( action ), scrollTo ); }; -Controller.prototype.getChecks = function ( listener ) { - return this.checksByListener[ listener || this.listener ] || []; +Controller.prototype.getActions = function ( listener ) { + return this.actionsByListener[ listener || this.listener ] || []; }; Controller.prototype.onPosition = function () { this.drawGutter(); - if ( this.getChecks().length && this.focusedCheck && this.surface.getView().reviewMode ) { - this.scrollCheckIntoViewDebounced( this.focusedCheck ); + if ( this.getActions().length && this.focused && this.surface.getView().reviewMode ) { + this.scrollActionIntoViewDebounced( this.focused ); } }; @@ -146,7 +146,7 @@ Controller.prototype.onDocumentChange = function () { return; } if ( this.listener !== 'onBeforeSave' ) { - this.updateChecksForListener( 'onDocumentChange' ); + this.updateForListener( 'onDocumentChange' ); } this.drawSelections(); @@ -169,10 +169,10 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess, target ) { // clear rejection-reasons between runs of the save process, so only the last one counts mw.editcheck.rejections.length = 0; - const oldFocusedCheck = this.focusedCheck; + const oldFocused = this.focused; this.listener = 'onBeforeSave'; - const checks = this.updateChecksForListener( 'onBeforeSave' ); - if ( checks.length ) { + const actions = this.updateForListener( 'onBeforeSave' ); + if ( actions.length ) { ve.track( 'counter.editcheck.preSaveChecksShown' ); mw.editcheck.refCheckShown = true; @@ -192,12 +192,12 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess, target ) { return windowAction.close( 'editCheckDialog' ).closed.then( () => {}, () => {} ).then( () => { this.originalToolbar.toggle( false ); target.onContainerScroll(); - return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', checks: checks, controller: this } ) + return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) .then( ( instance ) => { instance.closed.then( () => {}, () => {} ).then( () => { surface.getView().setReviewMode( false ); this.listener = 'onDocumentChange'; - this.focusedCheck = oldFocusedCheck; + this.focused = oldFocused; // Re-open the mid-edit sidebar if necessary. this.refresh(); } ); @@ -298,12 +298,12 @@ Controller.prototype.restoreToolbar = function ( target ) { Controller.prototype.drawSelections = function () { const surfaceView = this.surface.getView(); - if ( this.focusedCheck ) { + if ( this.focused ) { // The currently-focused check gets a selection: // TODO: clicking the selection should activate the sidebar-action surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', - this.focusedCheck.getHighlightSelections().map( + this.focused.getHighlightSelections().map( ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) ) ); @@ -314,8 +314,8 @@ Controller.prototype.drawSelections = function () { if ( this.listener === 'onBeforeSave' ) { // Review mode grays out everything that's not highlighted: const highlightNodes = []; - this.getChecks().forEach( ( check ) => { - check.getHighlightSelections().forEach( ( selection ) => { + this.getActions().forEach( ( action ) => { + action.getHighlightSelections().forEach( ( selection ) => { highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( selection.getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); } ); } ); @@ -325,14 +325,14 @@ Controller.prototype.drawSelections = function () { Controller.prototype.drawGutter = function () { this.$highlights.empty(); - const checks = this.getChecks(); - if ( checks.length === 0 ) { + const actions = this.getActions(); + if ( actions.length === 0 ) { return; } const surfaceView = this.surface.getView(); - checks.forEach( ( check ) => { - check.getHighlightSelections().forEach( ( selection ) => { + actions.forEach( ( action ) => { + action.getHighlightSelections().forEach( ( selection ) => { const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); const rect = selectionView.getSelectionBoundingRect(); if ( !rect ) { @@ -347,13 +347,13 @@ Controller.prototype.drawGutter = function () { // * ve-ui-editCheck-gutter-highlight-inactive this.$highlights.append( $( '
' ) .addClass( 've-ui-editCheck-gutter-highlight' ) - .addClass( 've-ui-editCheck-gutter-highlight-' + check.getType() ) - .addClass( 've-ui-editCheck-gutter-highlight-' + ( check === this.focusedCheck ? 'active' : 'inactive' ) ) + .addClass( 've-ui-editCheck-gutter-highlight-' + action.getType() ) + .addClass( 've-ui-editCheck-gutter-highlight-' + ( action === this.focused ? 'active' : 'inactive' ) ) .css( { top: rect.top - 2, height: rect.height + 4 } ) - .on( 'click', () => this.focusCheck( check ) ) + .on( 'click', () => this.focusAction( action ) ) ); } ); } ); @@ -361,12 +361,12 @@ Controller.prototype.drawGutter = function () { surfaceView.appendHighlights( this.$highlights, false ); }; -Controller.prototype.scrollCheckIntoView = function ( check ) { +Controller.prototype.scrollActionIntoView = function ( action ) { // scrollSelectionIntoView scrolls to the focus of a selection, but we // want the very beginning to be in view, so collapse it: - const selection = check.getHighlightSelections()[ 0 ].collapseToStart(); + const selection = action.getHighlightSelections()[ 0 ].collapseToStart(); const padding = { - top: OO.ui.isMobile() ? 80 : check.widget.$element[ 0 ].getBoundingClientRect().top, + top: OO.ui.isMobile() ? 80 : action.widget.$element[ 0 ].getBoundingClientRect().top, bottom: 20 }; if ( ve.ui.EditCheckDialog.static.position === 'below' ) { From 3ff70e68f5893b85c514356ad6cf537c3a866070 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 26 Feb 2025 14:00:59 +0000 Subject: [PATCH 180/730] TargetFactory: Validate target type on register Change-Id: I6f4159d82faae7dbb057432b2b69168128174cf5 --- modules/ve-mw/init/ve.init.mw.TargetFactory.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/ve-mw/init/ve.init.mw.TargetFactory.js b/modules/ve-mw/init/ve.init.mw.TargetFactory.js index edfbd84e86..7cdd57019d 100644 --- a/modules/ve-mw/init/ve.init.mw.TargetFactory.js +++ b/modules/ve-mw/init/ve.init.mw.TargetFactory.js @@ -22,6 +22,19 @@ OO.inheritClass( ve.init.mw.TargetFactory, OO.Factory ); /* Methods */ +/** + * @inheritdoc + */ +ve.init.mw.TargetFactory.prototype.register = function ( constructor ) { + // Validate arguments + if ( !( constructor.prototype instanceof ve.init.mw.Target ) ) { + throw new Error( 'Targets must be subclasses of ve.init.mw.Target' ); + } + + // Parent method + ve.init.mw.TargetFactory.super.prototype.register.apply( this, arguments ); +}; + /** * @inheritdoc */ From 6668331a7a78252bc99a0d10292c6650d837ea39 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 26 Feb 2025 14:58:26 +0000 Subject: [PATCH 181/730] EditCheck controller: Initialise target/surface to null instead of false Change-Id: Id07a9baaae527196454f4086c5442d3b8430fddc --- editcheck/modules/controller.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ce6071d5f8..a323e3f8dd 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -6,8 +6,8 @@ function Controller() { this.actionsByListener = {}; - this.target = false; - this.surface = false; + this.target = null; + this.surface = null; this.listener = 'onDocumentChange'; this.$highlights = $( '
' ); @@ -73,8 +73,8 @@ Controller.prototype.setup = function () { this.disconnect( this ); - this.target = false; - this.surface = false; + this.target = null; + this.surface = null; this.actionsByListener = {}; } ); mw.hook( 've.preSaveProcess' ).add( this.onPreSaveProcess.bind( this ) ); From 3359c2c8768127cdba30c747459a29cf0ad7d1d7 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 26 Feb 2025 21:49:31 -0600 Subject: [PATCH 182/730] Edit check: on mobile backing out of the citation dialog would skip the check Follow-up to c9e8f0eba7d532ac643d3d7d52b806425d4975d1 Change-Id: I9743d1873d56d504792eaea7cecc01ccd22535f4 --- editcheck/modules/controller.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ce6071d5f8..d3b7748ce3 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -80,12 +80,12 @@ Controller.prototype.setup = function () { mw.hook( 've.preSaveProcess' ).add( this.onPreSaveProcess.bind( this ) ); }; -Controller.prototype.refresh = function ( listener ) { - if ( listener === 'onBeforeSave' ) { +Controller.prototype.refresh = function () { + if ( this.listener === 'onBeforeSave' ) { // These shouldn't be recalculated - this.emit( 'actionsUpdated', listener, this.getActions( listener ), [], [] ); + this.emit( 'actionsUpdated', this.listener, this.getActions( this.listener ), [], [] ); } else { - this.updateForListener( listener, true ); + this.updateForListener( this.listener, true ); } }; From 41c75aaee3c1a39b95795de75a02c635bf42e9df Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 28 Feb 2025 08:46:18 +0100 Subject: [PATCH 183/730] Localisation updates from https://translatewiki.net. Change-Id: I2e9206d7310b352791909c0f43387167fd097e57 --- i18n/ve-mw/ps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index ce5889a23f..5e18aee235 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -15,7 +15,7 @@ "tooltip-ca-createsource": "د دې مخ د سرچينې کوډ جوړول", "visualeditor-advancedsettings-tool": "پرمختللې امستنې", "visualeditor-backbutton-tooltip": "پر شا تلل", - "visualeditor-ca-createlocaldescriptionsource": "د سيمه ايزې څرگندونې سرچينې ورگډول", + "visualeditor-ca-createlocaldescriptionsource": "د سيمه ييزې څرگندونې سرچينې ورگډول", "visualeditor-ca-createsource": "سرچينه جوړول", "visualeditor-ca-editlocaldescriptionsource": "د سيمه ايزې څرگندونې سرچينه سمول", "visualeditor-ca-editsource": "سرچينه سمول", From bc6b1d4848e187ff0d54863502b8a18fb8fe2c75 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 3 Mar 2025 08:28:35 +0100 Subject: [PATCH 184/730] Localisation updates from https://translatewiki.net. Change-Id: Icf365080b44d489a4891c5cecf0a70d832302234 --- i18n/ve-mw/et.json | 2 +- i18n/ve-mw/fi.json | 2 +- i18n/ve-mw/mns.json | 1 + i18n/ve-mw/pa.json | 2 +- i18n/ve-mw/ppl.json | 2 ++ i18n/ve-mw/ps.json | 6 +++--- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/i18n/ve-mw/et.json b/i18n/ve-mw/et.json index cb7745bb2b..c064e0f250 100644 --- a/i18n/ve-mw/et.json +++ b/i18n/ve-mw/et.json @@ -99,7 +99,7 @@ "visualeditor-dialog-meta-languages-label": "Keeled", "visualeditor-dialog-meta-languages-link-label": "Lingitud lehekülg", "visualeditor-dialog-meta-languages-name-label": "Keel", - "visualeditor-dialog-meta-languages-readonlynote": "See on loend muukeelsetest lehekülgedest, mis viitavad siia. Loendit saab praegu redigeerida vaid lähtekoodirežiimis või Vikiandmetes.", + "visualeditor-dialog-meta-languages-readonlynote": "See on loend muukeelsetest lehekülgedest, mis viitavad siia. Loendit saab praegu redigeerida vaid lähtekoodirežiimis või Wikidatas.", "visualeditor-dialog-meta-languages-section": "Keeled", "visualeditor-dialog-meta-settings-displaytitle": "Kuvatav pealkiri", "visualeditor-dialog-meta-settings-displaytitle-help": "Saad lehekülje kuvatava pealkirja üle kirjutada, kui määrad näitamiseks erineva sildi.", diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 349109f59d..b0c59575f7 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -232,7 +232,7 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Jatka", "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Vaadittava kenttä puuttuu|Vaadittavat kentät puuttuvat}}", "visualeditor-dialog-transclusion-required-parameter-is-blank": "Haluatko varmasti jatkaa, vaikka et ole täyttänyt $1 {{PLURAL:$2|kenttää}}?", - "visualeditor-dialog-transclusion-see-template": "Mallineet ovat käyttäjien tekemiä, ja niiden kuvaukset voivat olla puutteellisia. Lisätietoa saattaa olla [[$2|mallineen sivulla]].", + "visualeditor-dialog-transclusion-see-template": "Mallineet ovat käyttäjien tekemiä, ja niiden kuvaukset voivat olla puutteellisia. [[$2|Mallineen sivulla]] saattaa olla lisätietoja.", "visualeditor-dialog-transclusion-title-insert-template": "Lisää malline", "visualeditor-dialog-transclusion-title-insert-known-template": "Lisää: $1", "visualeditor-dialog-transclusion-title-edit-known-template": "Muokkaa: $1", diff --git a/i18n/ve-mw/mns.json b/i18n/ve-mw/mns.json index e041963b33..e4ca561551 100644 --- a/i18n/ve-mw/mns.json +++ b/i18n/ve-mw/mns.json @@ -4,6 +4,7 @@ "Ewithu" ] }, + "visualeditor-ca-editsource-section": "код сё̄питэн", "visualeditor-dialog-media-content-filename": "файл нам", "visualeditor-dialog-media-content-section": "Ёл ловинтап", "visualeditor-dialog-media-search-tab-search": "Кисхатыл", diff --git a/i18n/ve-mw/pa.json b/i18n/ve-mw/pa.json index c113f151ff..89a3ad16d9 100644 --- a/i18n/ve-mw/pa.json +++ b/i18n/ve-mw/pa.json @@ -167,7 +167,7 @@ "visualeditor-mwgallerydialog-mode-dropdown-label-traditional": "ਪਾਰੰਪਰਕ", "visualeditor-mwgallerydialog-remove-button-label": "ਤਸਵੀਰ ਹਟਾਓ", "visualeditor-mwgallerydialog-search-button-label": "ਨਵੀੰ ਤਸਵੀਰ ਜੋੜੋ", - "visualeditor-mwgallerydialog-title": "ਗੈਲਰੀ", + "visualeditor-mwgallerydialog-title": "ਚਿੱਤਰਸ਼ਾਲਾ", "visualeditor-mwgallerydialog-widths-field-label": "ਤਸਵੀਰ ਦੀ ਚੌੜਾਈ", "visualeditor-mwsignature-tool": "ਤੁਹਾਡੇ ਦਸਤਖਤ", "visualeditor-redirect-description": "$1 ਵੱਲ ਮੋੜੋ", diff --git a/i18n/ve-mw/ppl.json b/i18n/ve-mw/ppl.json index 3a33a6328f..59832629e2 100644 --- a/i18n/ve-mw/ppl.json +++ b/i18n/ve-mw/ppl.json @@ -1,8 +1,10 @@ { "@metadata": { "authors": [ + "Canjura", "TimumachtikanNawat" ] }, + "visualeditor-ca-editsource": "Shikpata ne tajkwilulchin", "visualeditor-ca-editsource-section": "Shikpata ne tajkwilulchin" } diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 5e18aee235..af8869b92b 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -110,7 +110,7 @@ "visualeditor-dialog-transclusion-required-parameter-description": "دې ډاگي ته اړتيا ده.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "پر شا تلل", "visualeditor-dialog-transclusion-title-edit-known-template": "سمون: $1", - "visualeditor-dialog-transclusion-wikitext": "ویکي‌متن", + "visualeditor-dialog-transclusion-wikitext": "ویکي‌ليک", "visualeditor-dialogbutton-media-tooltip": "رسنۍ", "visualeditor-dialogbutton-template-tooltip": "کينډۍ", "visualeditor-editingtabdialog-ok": "تېر ځل کارېدلی سمونگر کارول", @@ -176,9 +176,9 @@ "visualeditor-savedialog-label-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-label-review-good": "د خوندي کولو چوکاټ ته ورگرځېدل", "visualeditor-savedialog-label-save-short": "خوندي کول", - "visualeditor-savedialog-label-save-short-start": "خوندي کېږي…", + "visualeditor-savedialog-label-save-short-start": "خوندي کيږي…", "visualeditor-savedialog-review-nosummary": "د سمون لنډیز نسته", - "visualeditor-savedialog-review-wikitext": "ویکي‌متن", + "visualeditor-savedialog-review-wikitext": "ویکي‌ليک", "visualeditor-savedialog-title-conflict": "کړکېچ", "visualeditor-savedialog-title-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-title-save": "بدلونونه مو خوندي کړئ", From c1f1099d708510022683c9235f621457d24fe8ca Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 5 Mar 2025 08:27:06 +0100 Subject: [PATCH 185/730] Localisation updates from https://translatewiki.net. Change-Id: I3e2c8bfd5bb60ec8f888892c140a7499e86daff4 --- i18n/ve-mw/pa.json | 53 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/pa.json b/i18n/ve-mw/pa.json index 89a3ad16d9..963aa90491 100644 --- a/i18n/ve-mw/pa.json +++ b/i18n/ve-mw/pa.json @@ -14,26 +14,38 @@ "Tow" ] }, + "collabpad-doctitle": "ਸਹਿਯੋਗਪੈਡ: $1", + "collabpad-import-subtitle": "$1 ਤੋਂ ਦਰਾਮਦ ਕੀਤਾ ਗਿਆ", + "collabpad": "ਸਹਿਯੋਗਪੈਡ", "tooltip-ca-ve-edit": "ਇਹ ਸਫ਼ਾ ਸੋਧੋ", + "tooltip-ca-ve-edit-local": "ਸਥਾਨਕ ਵੇਰਵਾ ਸਫ਼ੇ ਨੂੰ ਸੋਧੋ", "tooltip-ca-ve-create": "ਇਹ ਸਫ਼ਾ ਬਣਾਓ", "tooltip-ca-ve-create-local": "ਸਥਾਨਕ ਵੇਰਵਾ ਸਫ਼ਾ ਬਣਾਓ", "tooltip-ca-editsource": "ਇਸ ਸਫ਼ੇ ਦੇ ਸਰੋਤ ਦਾ ਕੋਡ ਸੋਧੋ", "tooltip-ca-editsource-local": "ਸਥਾਨਕ ਵੇਰਵਾ ਸਫ਼ੇ ਦੇ ਸਰੋਤ ਕੋਡ ਨੂੰ ਸੋਧੋ", "tooltip-ca-createsource": "ਇਸ ਸਫ਼ੇ ਦੇ ਸਰੋਤ ਦਾ ਕੋਡ ਬਣਾਉ", + "tooltip-ca-createsource-local": "ਸਥਾਨਕ ਵੇਰਵਾ ਸਫ਼ੇ ਦਾ ਸਰੋਤ ਕੋਡ ਬਣਾਓ", "visualeditor-advancedsettings-tool": "ਉੱਨਤ ਸੈਟਿੰਗਾਂ", "visualeditor-autosave-modified-prompt-accept": "ਉਥੋਂ ਹੀ ਸੋਧਣਾ ਜਾਰੀ ਰੱਖੋ", "visualeditor-autosave-modified-prompt-reject": "ਨਵਾਂ ਸੋਧ ਸ਼ੁਰੂ ਕਰੋ", + "visualeditor-autosave-modified-prompt-title": "ਕੀ {{GENDER:|ਤੁਹਾਡੇ}} ਸੋਧ ਨੂੰ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨਾ ਐ?", + "visualeditor-autosave-not-recovered-text": "ਤੁਹਾਡੀਆਂ ਨਾ ਸੰਭਾਲੀਆਂ ਗਈਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।", "visualeditor-autosave-recovered-text": "ਤੁਹਾਡੀਆਂ ਅਣਰੱਖਿਅਤ ਤਬਦੀਲੀਆਂ ਆਪਣੇ ਆਪ ਹੀ ਮੁੜ ਪ੍ਰਾਪਤ ਹੋ ਗਈਆਂ ਹਨ।", "visualeditor-autosave-recovered-title": "ਤਬਦੀਲੀਆਂ ਮੁੜ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ", "visualeditor-backbutton-tooltip": "ਪਿੱਛੇ ਜਾਓ", "visualeditor-ca-createlocaldescriptionsource": "ਸਥਾਨਕ ਵੇਰਵੇ ਦਾ ਸਰੋਤ ਜੋੜੋ", "visualeditor-ca-createsource": "ਸਰੋਤ ਬਣਾਉ", + "visualeditor-ca-editlocaldescriptionsource": "ਸਥਾਨਕ ਵੇਰਵਾ ਸਰੋਤ ਸੋਧੋ", "visualeditor-ca-editsource": "ਸਰੋਤ ਸੋਧੋ", "visualeditor-ca-editsource-section": "ਸਰੋਤ ਸੋਧੋ", + "visualeditor-ca-editsource-section-hint": "ਭਾਗ ਦੇ ਸਰੋਤ ਕੋਡ ਨੂੰ ਸੋਧੋ: $1", "visualeditor-categories-tool": "ਸ਼੍ਰੇਣੀਆਂ", "visualeditor-changedesc-mwredirect": "ਵਾਪਸੀ ਟੀਚਾ $1 ਤੋਂ $2 ਵਿੱਚ ਬਦਲਿਆ ਗਿਆ", + "visualeditor-changedesc-mwtransclusion": "ਫਰਮੇ ਮਾਪਦੰਡ ਬਦਲੇ ਗਏ", "visualeditor-desc": "ਮੀਡੀਆਵਿਕੀ ਲਈ ਵਿਜ਼ੁਅਲ ਐਡੀਟਰ", "visualeditor-descriptionpagelink": "Project:ਵਿਜ਼ੁਅਲ ਐਡੀਟਰ", + "visualeditor-dialog-extension-abandonedit": "ਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ 'ਤੇ ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਲਾਗੂ ਕੀਤੇ ਬਿਨਾਂ ਇਸ ਸੰਵਾਦ ਨੂੰ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?", + "visualeditor-dialog-media-alttext-checkbox": "ਬਦਲਵੀਂ ਲਿਖਤ ਦੇ ਰੂਪ ਵਿੱਚ ਸੁਰਖੀ ਦੀ ਵਰਤੋਂ ਕਰੋ", "visualeditor-dialog-media-alttext-section": "ਬਦਲਵੀਂ ਲਿਖਤ", "visualeditor-dialog-media-alttext-section-help": "ਤੁਸੀਂ ਇਸਦੀ ਵਰਤੋਂ ਉਹਨਾਂ ਲੋਕਾਂ ਲਈ ਇੱਕ ਲਿਖਤ ਦਾ ਵੇਰਵਾ ਦੇਣ ਲਈ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਇਸ ਮਜ਼ਮੂਨ ਨੂੰ ਨਹੀਂ ਦੇਖ ਸਕਦੇ। ਮੀਡੀਆ ਮਜ਼ਮੂਨ ਵੱਲੋਂ ਦਿੱਤੀ ਗਈ ਜਾਣਕਾਰੀ ਅਤੇ ਉਦੇਸ਼ ਨੂੰ ਸਮਝਣ ਲਈ ਇਹ ਵੇਰਵਾ ਕਾਫ਼ੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਅੰਨ੍ਹੇ ਵਰਤੋਂਕਾਰਾਂ ਅਤੇ ਅਜਿਹੇ ਲੋਕਾਂ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਜੋ ਸਕ੍ਰੀਨ-ਪੜ੍ਹਨ ਵਾਲੇ ਸਾਫਟਵੇਅਰ ਜਾਂ ਸਿਰਫ਼-ਲਿਖਤ ਵਾਲੇ ਬਰਾਊਜ਼ਰ ਵਰਤਦੇ ਹਨ।", "visualeditor-dialog-media-change-image": "ਤਸਵੀਰ ਬਦਲੋ", @@ -65,8 +77,8 @@ "visualeditor-dialog-media-type-section": "ਤਸਵੀਰ ਕਿਸਮ", "visualeditor-dialog-media-type-thumb": "ਛੋਟਾ ਆਕਾਰ", "visualeditor-dialog-media-upload": "ਚੜ੍ਹਾਉ", - "visualeditor-dialog-meta-advancedsettings-label": "ਵਧੇਰੇ ਸੈਟਿੰਗ", - "visualeditor-dialog-meta-advancedsettings-section": "ਵਧੇਰੇ ਸੈਟਿੰਗ", + "visualeditor-dialog-meta-advancedsettings-label": "ਵਧੇਰੇ ਤਰਜੀਹਾਂ", + "visualeditor-dialog-meta-advancedsettings-section": "ਵਧੇਰੇ ਤਰਜੀਹਾਂ", "visualeditor-dialog-meta-categories-addcategory-label": "ਇਸ ਸਫ਼ੇ ਤੇ ਇੱਕ ਸ਼੍ਰੇਣੀ ਸ਼ਾਮਲ ਕਰੋ", "visualeditor-dialog-meta-categories-category": "ਸ਼੍ਰੇਣੀ", "visualeditor-dialog-meta-categories-data-label": "ਸ਼੍ਰੇਣੀਆਂ", @@ -92,40 +104,62 @@ "visualeditor-dialog-meta-settings-newsectioneditlink-default": "ਮੂਲ", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "ਨਹੀਂ", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "ਹਾਂ", + "visualeditor-dialog-meta-settings-nogallery-label": "ਚਿੱਤਰਸ਼ਾਲਾ ਨੂੰ ਅਸਮਰੱਥ ਕਰੋ", + "visualeditor-dialog-meta-settings-notitleconvert-help": "ਤੁਸੀਂ ਇਸ ਸਫ਼ੇ ਦੇ ਸਿਰਲੇਖ ਨੂੰ ਆਪਣੇ ਆਪ ਹੀ ਹੋਰ ਲਿਪੀ ਵਿੱਚ ਤਬਦੀਲ ਹੋਣ ਤੋਂ ਰੋਕ ਸਕਦੇ ਹੋ।", + "visualeditor-dialog-meta-settings-notitleconvert-label": "ਸਿਰਲੇਖ ਨੂੰ ਭਾਸ਼ਾ ਦੇ ਰੂਪਾਂ ਵਿੱਚਕਾਰ ਨਾ ਬਦਲੋ", "visualeditor-dialog-meta-settings-redirect-label": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਉੱਤੇ ਵਾਪਸ ਕਰੋ", "visualeditor-dialog-meta-settings-redirect-placeholder": "ਵਾਪਸੀ ਟੀਚੇ ਲਈ ਸਫ਼ੇ", "visualeditor-dialog-meta-settings-section": "ਸਫ਼ੇ ਦੀਆਂ ਸੈਟਿੰਗਾਂ", + "visualeditor-dialog-meta-settings-toc-default": "ਜੇ ਲੋੜ ਪਵੇ ਤਾਂ", "visualeditor-dialog-meta-settings-toc-disable": "ਕਦੇ ਨਹੀਂ", "visualeditor-dialog-meta-settings-toc-force": "ਹਮੇਸ਼ਾਂ", "visualeditor-dialog-meta-settings-toc-label": "ਸਮੱਗਰੀ ਦੀ ਸਾਰਣੀ ਦਿਖਾਓ", "visualeditor-dialog-meta-templatesused-noresults": "ਕੋਈ ਫਰਮੇ ਨਹੀਂ ਮਿਲੇ।", "visualeditor-dialog-meta-title": "ਚੋਣਾਂ", + "visualeditor-dialog-table-collapsed": "ਸ਼ੁਰੂ ਵਿੱਚ ਢਾਹਿਆ", + "visualeditor-dialog-table-collapsible": "ਢਾਉਨ-ਯੋਗ", + "visualeditor-dialog-table-sortable": "ਛਾਂਟਣਯੋਗ", "visualeditor-dialog-template-title": "ਫਰਮਾ", "visualeditor-dialog-transclusion-action-save": "ਸਾਂਭੋ", "visualeditor-dialog-transclusion-template-title-nonexistent": "ਇਹ ਫਰਮਾ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।", "visualeditor-dialog-transclusion-template-widget-aria": "ਫਰਮੇ ਨੂੰ ਚੁਣਨ ਲਈ ਸਪੇਸ ਦਬਾਓ।", "visualeditor-dialog-transclusion-add-wikitext": "ਵਿਕੀਲਿਖਤ ਸ਼ਾਮਲ ਕਰੋ", + "visualeditor-dialog-transclusion-add-param-placeholder": "ਮਾਪਦੰਡ ਦਾ ਨਾਂ", "visualeditor-dialog-transclusion-add-param-save": "ਜੋੜੋ", "visualeditor-dialog-transclusion-add-template": "ਫਰਮਾ ਜੋੜੋ", "visualeditor-dialog-transclusion-add-template-button": "ਫਰਮਾ ਜੋੜੋ", "visualeditor-dialog-transclusion-add-template-save": "ਜੋੜੋ", + "visualeditor-dialog-transclusion-add-undocumented-param": "ਗੈਰ-ਦਸਤਾਵੇਜ਼ੀ ਮਾਪਦੰਡ ਸ਼ਾਮਲ ਕਰੋ", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "ਕੀ ਖੋਜ ਕਰਨ ਲਈ ਵਾਪਸ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ? ਤੁਹਾਡੀਆਂ ਤਬਦੀਲੀਆਂ ਖਤਮ ਹੋ ਜਾਣਗੀਆਂ ਅਤੇ ਇਸ ਨੂੰ ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "ਕੀ ਫਰਮਾ ਸੋਧਕ ਬੰਦ ਕਰਨਾ ਐ? ਤੁਹਾਡੀਆਂ ਤਬਦੀਲੀਆਂ ਖਤਮ ਹੋ ਜਾਣਗੀਆਂ ਅਤੇ ਇਸ ਨੂੰ ਵਾਪਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।", + "visualeditor-dialog-transclusion-collapse-options": "ਚੋਣਾਂ ਲੁਕਾਓ", + "visualeditor-dialog-transclusion-confirmation-discard": "ਸੋਧਾਂ ਨੂੰ ਰੱਦ ਕਰੋ", "visualeditor-dialog-transclusion-confirmation-reject": "ਸੋਧਣਾ ਜਾਰੀ ਰੱਖੋ", "visualeditor-dialog-transclusion-contextitem-description": "ਇਸ ਤੋਂ ਤਿਆਰ ਕੀਤਾ ਗਿਆ: $1", "visualeditor-dialog-transclusion-contextitem-loading": "ਲੱਦ ਰਿਹਾ ਹੈ...", "visualeditor-dialog-transclusion-expand-options": "ਵਿਕਲਪ ਦਿਖਾਓ", "visualeditor-dialog-transclusion-filter-hide-unused": "ਨਾ ਵਰਤੇ ਲੁਕਾਓ", "visualeditor-dialog-transclusion-filter-no-match": "ਕੋਈ ਮੇਲ ਨਹੀਂ ਮਿਲਿਆ", + "visualeditor-dialog-transclusion-filter-placeholder": "ਖੇਤਰ ਲੱਭੋ", "visualeditor-dialog-transclusion-filter-show-all": "ਸਾਰੇ ਦਿਖਾਓ", "visualeditor-dialog-transclusion-filter-title": "$1 ਲਈ ਪੈਰਾਮੀਟਰ ਖੋਜ", + "visualeditor-dialog-transclusion-help-title": "ਫ਼ਰਮਾ ਸੋਧ ਸਹਾਇਤਾ", "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates ਫਰਮਿਆਂ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰਨ ਲਈ ਮਦਦ]", "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ]", + "visualeditor-dialog-transclusion-deprecated-parameter": "ਨਾਪਸੰਦ ਕੀਤਾ ਖੇਤਰ", + "visualeditor-dialog-transclusion-deprecated-parameter-description": "ਖੇਤਰ ਨਾਪਸੰਦ ਕੀਤਾ ਗਿਆ ਐ। $1", "visualeditor-dialog-transclusion-loading": "ਲੱਦ ਰਿਹਾ ਹੈ...", "visualeditor-dialog-transclusion-param-default": "ਪੂਰਵ-ਨਿਰਧਾਰਤ: $1", "visualeditor-dialog-transclusion-param-example-long": "ਉਦਾਹਰਨ: $1", "visualeditor-dialog-transclusion-param-selection-aria-label": "$1 ਵਿੱਚ ਮਾਪਦੰਡ", + "visualeditor-dialog-transclusion-param-undocumented": "(ਗੈਰ-ਦਸਤਾਵੇਜ਼ੀ ਮਾਪਦੰਡ)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "ਫਰਮਾ ਲੱਭੋ", + "visualeditor-dialog-transclusion-required-parameter": "ਲੋੜੀਂਦਾ ਖੇਤਰ", + "visualeditor-dialog-transclusion-required-parameter-description": "ਖੇਤਰ ਲੋੜੀਂਦਾ ਐ।", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "ਪਿੱਛੇ ਜਾਉ", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "ਜਿਵੇਂ-ਕਿਵੇਂ ਜਾਰੀ ਰੱਖੋ", + "visualeditor-dialog-transclusion-required-parameter-dialog-title": "ਲੋੜੀਂਦਾ {{PLURAL:$1|ਖੇਤਰ}} ਗੁਆਚਿਆ ਐ (ਗੁਆਚੇ ਹਨ)।", + "visualeditor-dialog-transclusion-required-parameter-is-blank": "ਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ 'ਤੇ $1 {{PLURAL:$2|ਖੇਤਰ|ਖੇਤਰਾਂ}} ਨੂੰ ਭਰੇ ਬਿਨਾਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?", "visualeditor-dialog-transclusion-title-insert-template": "ਇੱਕ ਫਰਮਾ ਪਾਓ", "visualeditor-dialog-transclusion-title-insert-known-template": "ਸ਼ਾਮਲ ਕਰੋ: $1", "visualeditor-dialog-transclusion-title-edit-known-template": "ਸੋਧੋ: $1", @@ -160,9 +194,15 @@ "visualeditor-magiclinknodeinspector-title-isbn": "ਆਈ.ਐੱਸ.ਬੀ.ਐੱਨ. ਕੜੀ", "visualeditor-magiclinknodeinspector-title-pmid": "ਪੀ.ਐੱਮ.ਆਈ.ਡੀ ਕੜੀ", "visualeditor-magiclinknodeinspector-title-rfc": "ਆਰ.ਐੱਫ.ਸੀ ਕੜੀ", + "visualeditor-media-title-image": "ਤਸਵੀਰ", + "visualeditor-media-title-video": "ਵੀਡੀਓ", "visualeditor-meta-tool": "ਚੋਣਾਂ", + "visualeditor-mweditmode-tooltip": "ਸੋਧਕ ਬਦਲੋ", + "visualeditor-mweditmodeve-tool-current": "ਦਰਸ਼ਨੀ ਸੋਧਾਂ", + "visualeditor-mwgallerydialog-caption-field-label": "ਚਿੱਤਰਸ਼ਾਲਾ ਸੁਰਖੀ", "visualeditor-mwgallerydialog-card-images": "ਤਸਵੀਰਾਂ", "visualeditor-mwgallerydialog-card-options": "ਚੋਣਾਂ", + "visualeditor-mwgallerydialog-empty-gallery-message": "ਚਿੱਤਰਸ਼ਾਲਾ ਖਾਲੀ ਐ।", "visualeditor-mwgallerydialog-heights-field-label": "ਤਸਵੀਰ ਦੀ ਲੰਬਾਈ", "visualeditor-mwgallerydialog-mode-dropdown-label-traditional": "ਪਾਰੰਪਰਕ", "visualeditor-mwgallerydialog-remove-button-label": "ਤਸਵੀਰ ਹਟਾਓ", @@ -170,6 +210,10 @@ "visualeditor-mwgallerydialog-title": "ਚਿੱਤਰਸ਼ਾਲਾ", "visualeditor-mwgallerydialog-widths-field-label": "ਤਸਵੀਰ ਦੀ ਚੌੜਾਈ", "visualeditor-mwsignature-tool": "ਤੁਹਾਡੇ ਦਸਤਖਤ", + "visualeditor-rebase-client-export": "ਬਰਾਮਦ", + "visualeditor-rebase-client-export-start": "ਬਰਾਮਦ ...", + "visualeditor-rebase-client-import": "ਦਰਾਮਦ", + "visualeditor-rebase-client-import-name": "ਸਫ਼ੇ ਦਾ ਸਿਰਲੇਖ", "visualeditor-redirect-description": "$1 ਵੱਲ ਮੋੜੋ", "visualeditor-savedialog-label-publish-short": "ਸਾਂਭੋ", "visualeditor-savedialog-label-publish-short-start": "ਛਾਪੋ", @@ -185,8 +229,13 @@ "visualeditor-savedialog-title-preview": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਦੀ ਝਲਕ ਦੇਖੋ", "visualeditor-savedialog-title-review": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਦੀ ਸਮੀਖਿਆ ਕਰੋ", "visualeditor-savedialog-title-save": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ", + "visualeditor-section-body-placeholder": "ਨਵਾਂ ਭਾਗ", + "visualeditor-section-title-placeholder": "ਵਿਸ਼ਾ", "visualeditor-settings-tool": "ਸਫ਼ੇ ਦੀਆਂ ਸੈਟਿੰਗਾਂ", + "visualeditor-special-characters-group-other": "ਅਕਸਰ ਵਰਤਿਆ ਗਿਆ", "visualeditor-templatesused-tool": "ਵਰਤੇ ਗਏ ਫਰਮੇ", + "visualeditor-title-error": "ਗਲਤ ਸਿਰਲੇਖ।", + "visualeditor-tooltip-non-breaking-space": "ਨਾ ਤੋੜਨ ਵਾਲੀ ਥਾਂ", "visualeditor-version-label": "ਵਰਸ਼ਨ", "visualeditor-wikitext-progress": "ਵਿਕੀਲਿਖਤ ਬਦਲੀ ਜਾ ਰਹੀ ਹੈ", "visualeditor-wikitextconvert-convert": "ਵਿਕੀਲਿਖਤ ਵਿੱਚ ਬਦਲੋ" From a66c638e12842f6077c1cf7d12fa634aee22d426 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 5 Mar 2025 14:41:59 +0000 Subject: [PATCH 186/730] EditCheck: Fix toolbar resizing When the review toolbar is created an attached, call initialize to setup window resize listeners. When the original toolbar is restored, call onWindowResize to clear the invalid cached measurements that may have been taken while it was hidden. Bug: T388006 Change-Id: I02b722ccee85ddd6574fdc1f7e9125f90029114a --- editcheck/modules/controller.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 066786d58f..fd7df4a607 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -274,6 +274,8 @@ Controller.prototype.setupToolbar = function ( target ) { target.toolbar.$element.before( reviewToolbar.$element ); target.toolbar = reviewToolbar; + reviewToolbar.initialize(); + this.originalToolbar = toolbar; this.reviewToolbar = reviewToolbar; }; @@ -291,6 +293,9 @@ Controller.prototype.restoreToolbar = function ( target ) { // original toolbar reclaim them: this.originalToolbar.disconnect( target ); target.setupToolbar( target.getSurface() ); + // If the window was resized while the originalToolbar was hidden then + // the cached measurements will be wrong. Recalculate. + this.originalToolbar.onWindowResize(); this.reviewToolbar = false; this.originalToolbar = false; From aade66359835de2ff1f3c2b95063fc49649af0df Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 5 Mar 2025 15:05:33 +0000 Subject: [PATCH 187/730] Simplify Array.some loops to Array.find Change-Id: I692d9dd1dd39d83e71edecd493cf727bbdb96d6d --- .../ve.init.mw.CollabTarget.init.js | 23 +++++++++---------- .../ce/nodes/ve.ce.MWTransclusionNode.js | 16 ++++--------- .../init/targets/ve.init.mw.ArticleTarget.js | 13 +++-------- 3 files changed, 19 insertions(+), 33 deletions(-) diff --git a/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js b/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js index eb124ff63b..31751110af 100644 --- a/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js +++ b/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js @@ -174,18 +174,17 @@ // Look for import metadata in document surfaceModel = target.getSurface().getModel(); - surfaceModel.getDocument().getMetaList().getItemsInGroup( 'misc' ).some( ( item ) => { - const importedDocument = item.getAttribute( 'importedDocument' ); - if ( importedDocument ) { - target.importTitle = mw.Title.newFromText( importedDocument.title ); - target.etag = importedDocument.etag; - target.baseTimeStamp = importedDocument.baseTimeStamp; - target.startTimeStamp = importedDocument.startTimeStamp; - target.revid = importedDocument.revid; - return true; - } - return false; - } ); + const importedDocumentItem = surfaceModel.getDocument().getMetaList().getItemsInGroup( 'misc' ).find( + ( item ) => item.getAttribute( 'importedDocument' ) + ); + if ( importedDocumentItem ) { + const importedDocument = importedDocumentItem.getAttribute( 'importedDocument' ); + target.importTitle = mw.Title.newFromText( importedDocument.title ); + target.etag = importedDocument.etag; + target.baseTimeStamp = importedDocument.baseTimeStamp; + target.startTimeStamp = importedDocument.startTimeStamp; + target.revid = importedDocument.revid; + } } initPromise.fail( ( err ) => { setTimeout( () => { diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js b/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js index 416261ee3f..13f8ff7efd 100644 --- a/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js +++ b/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js @@ -156,17 +156,11 @@ ve.ce.MWTransclusionNode.static.filterRendering = function ( contentNodes ) { /** @inheritDoc */ ve.ce.MWTransclusionNode.prototype.executeCommand = function () { const contextItems = this.focusableSurface.getSurface().getContext().items; - const contextClicked = contextItems.some( ( contextItem ) => { - if ( contextItem instanceof ve.ui.MWTransclusionContextItem ) { - // Utilize the context item when it's there instead of triggering the command manually. - // Required to make the context item show the "Loading…" message (see T297773). - contextItem.onEditButtonClick(); - return true; - } - return false; - } ); - - if ( contextClicked ) { + const transclusionContextItem = contextItems.find( ( contextItem ) => contextItem instanceof ve.ui.MWTransclusionContextItem ); + if ( transclusionContextItem ) { + // Utilize the context item when it's there instead of triggering the command manually. + // Required to make the context item show the "Loading…" message (see T297773). + transclusionContextItem.onEditButtonClick(); return; } diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index ba2800ec0c..66c7f97e55 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -2126,17 +2126,10 @@ ve.init.mw.ArticleTarget.prototype.restoreEditSection = function () { // In mw.libs.ve.unwrapParsoidSections we copy the data-mw-section-id from the section element // to the heading. Iterate over headings to find the one with the correct attribute // in originalDomElements. - let headingModel; - dmDoc.getNodesByType( 'mwHeading' ).some( ( heading ) => { + const headingModel = dmDoc.getNodesByType( 'mwHeading' ).find( ( heading ) => { const domElements = heading.getOriginalDomElements( dmDoc.getStore() ); - if ( - domElements && domElements.length && domElements[ 0 ].nodeType === Node.ELEMENT_NODE && - domElements[ 0 ].getAttribute( 'data-mw-section-id' ) === section - ) { - headingModel = heading; - return true; - } - return false; + return domElements && domElements.length && domElements[ 0 ].nodeType === Node.ELEMENT_NODE && + domElements[ 0 ].getAttribute( 'data-mw-section-id' ) === section; } ); if ( headingModel ) { const headingView = surface.getView().getDocument().getDocumentNode().getNodeFromOffset( headingModel.getRange().start ); From 89d2a375eba9a45e67fc66d4a5a69abfcd7f35fb Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 28 Feb 2025 12:47:28 +0000 Subject: [PATCH 188/730] Remove placeholder group for references The extensions are now fully repsonsible for the placement of their tools, as they should be, so we no longer need these placeholder groups. Change-Id: I323470dfbe059d824099ad5e2b3dbd59dee246ff Depends-On: Ib6cf5d4ee57658a76c77a9a7934b257449034fcd Depends-On: Icf0fa4c71de9d845b1faa643cb2a52ba3b41e8a4 --- modules/ve-mw-collab/ve.init.mw.CollabTarget.js | 2 -- modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js | 4 ---- modules/ve-mw/init/targets/ve.init.mw.Target.js | 4 ---- 3 files changed, 10 deletions(-) diff --git a/modules/ve-mw-collab/ve.init.mw.CollabTarget.js b/modules/ve-mw-collab/ve.init.mw.CollabTarget.js index b8d6d662b6..a29aedf98d 100644 --- a/modules/ve-mw-collab/ve.init.mw.CollabTarget.js +++ b/modules/ve-mw-collab/ve.init.mw.CollabTarget.js @@ -62,8 +62,6 @@ ve.init.mw.CollabTarget.static.toolbarGroups.splice( 4, 0, { name: 'commentAnnotation', include: [ 'commentAnnotation' ] } ); -// HACK: Disable references until supported (T194838) -ve.init.mw.CollabTarget.static.toolbarGroups = ve.init.mw.CollabTarget.static.toolbarGroups.filter( ( group ) => group.name !== 'reference' ); ve.init.mw.CollabTarget.static.toolbarGroups.push( { name: 'help', diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index d3a8a29569..18979c27ab 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -75,10 +75,6 @@ ve.init.mw.MobileArticleTarget.static.toolbarGroups = [ { name: 'link', include: [ 'link' ] - }, - // Placeholder for reference tools (e.g. Cite and/or Citoid) - { - name: 'reference' } ]; diff --git a/modules/ve-mw/init/targets/ve.init.mw.Target.js b/modules/ve-mw/init/targets/ve.init.mw.Target.js index edc2636758..5643fb598e 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.Target.js +++ b/modules/ve-mw/init/targets/ve.init.mw.Target.js @@ -83,10 +83,6 @@ ve.init.mw.Target.static.toolbarGroups = [ name: 'link', include: [ 'link' ] }, - // Placeholder for reference tools (e.g. Cite and/or Citoid) - { - name: 'reference' - }, { name: 'structure', type: 'list', From b1a709ff21137a22793f0c32ff0f3cba0883df32 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 5 Mar 2025 18:32:25 +0000 Subject: [PATCH 189/730] Update VE core submodule to master (a2d4d893a) New changes: 30c8f8e15 WindowManagers: Internalise modal=false defaults 82a25ceec Update OOUI to v0.51.6 887e2cc88 Additional styling for code annotation in standalone 49919894e Hide inspector window manager while context is still visible 4c4991e95 ve-ui: Simplify more for-loops 2902d423a Simplify Array.some loops c40c450af DiffElement: Reduce tab-size cf1bd51ba ve.dm.ModelRegistry: Cleanup loops Localisation Updates: cd5677400, ec8e8cff1 Bug: T380125 Change-Id: Ia77aca6aa475148835538cdf8bdcbfe139899c0d --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 65e885e43d..a2d4d893a8 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 65e885e43d490c808526a4092f614c5a596606a7 +Subproject commit a2d4d893a89f3a7e0fadda68fac3c3a595df146a From 7fc5bf0bd140797851d6631aaac168e9be381f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 6 Mar 2025 02:17:45 +0100 Subject: [PATCH 190/730] Preserve license message (copyrightWarning) when switching to NWE Bug: T388050 Change-Id: I674a06dcf36ecb6d36baf99da9d3dec7bafa675b --- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 66c7f97e55..d77186d41b 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -2287,6 +2287,7 @@ ve.init.mw.ArticleTarget.prototype.switchToWikitextEditor = function ( modified ve.init.mw.ArticleTarget.prototype.getWikitextDataPromiseForDoc = function ( modified ) { return this.serialize( this.getDocToSave() ).then( ( data ) => { // HACK - add parameters the API doesn't provide for a VE->WT switch + data.copyrightWarning = this.copyrightWarning; data.etag = this.etag; data.fromEditedState = modified; data.notices = this.remoteNotices; From 20d97960be027a8c7e465753b3e0517ad3b8a674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 6 Mar 2025 02:31:57 +0100 Subject: [PATCH 191/730] Document hacky lists of params that must match API responses In the JS code there are two places where we generate fake API responses that mostly (but not quite) match the PHP API responses: for autosave and for switching to source mode. Also sort the keys. Bug: T388050 Change-Id: I2d569cadcf978416af94d54437ca4052a41d4c28 --- includes/ApiVisualEditor.php | 23 +++++++--- .../init/targets/ve.init.mw.ArticleTarget.js | 43 ++++++++++++------- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/includes/ApiVisualEditor.php b/includes/ApiVisualEditor.php index 44aad1cb14..e233bcb380 100644 --- a/includes/ApiVisualEditor.php +++ b/includes/ApiVisualEditor.php @@ -435,20 +435,29 @@ public function msg( $key, ...$params ) { && $this->tempUserCreator->isAutoCreateAction( 'edit' ) && $permissionManager->userHasRight( $user, 'createaccount' ); + // phpcs:disable MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment + /** @phpcs-require-sorted-array */ $result = [ - 'result' => 'success', - 'notices' => $notices, - 'copyrightWarning' => $copyrightWarning, + // -------------------------------------------------------------------------------- + // This should match ArticleTarget#getWikitextDataPromiseForDoc and ArticleTarget#storeDocState + // -------------------------------------------------------------------------------- + 'basetimestamp' => $baseTimestamp, + 'blockinfo' => $blockinfo, // only used by MobileFrontend EditorGateway + 'canEdit' => $canEdit, 'checkboxesDef' => $checkboxesDef, 'checkboxesMessages' => $checkboxesMessages, + // 'content' => ..., // optional, see below + 'copyrightWarning' => $copyrightWarning, + // 'etag' => ..., // optional, see below + 'notices' => $notices, + 'oldid' => $oldid, + // 'preloaded' => ..., // optional, see below 'protectedClasses' => implode( ' ', $protectedClasses ), - 'basetimestamp' => $baseTimestamp, + 'result' => 'success', // probably unused? 'starttimestamp' => wfTimestampNow(), - 'oldid' => $oldid, - 'blockinfo' => $blockinfo, 'wouldautocreate' => $wouldautocreate, - 'canEdit' => $canEdit, ]; + // phpcs:enable MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment if ( isset( $restbaseHeaders['etag'] ) ) { $result['etag'] = $restbaseHeaders['etag']; } diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index d77186d41b..0258e96b05 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -540,20 +540,26 @@ ve.init.mw.ArticleTarget.prototype.storeDocState = function ( html ) { section: ( mode === 'source' || this.enableVisualSectionEditing ) ? this.section : null }, response: { + // -------------------------------------------------------------------------------- + // This should match the API result in ApiVisualEditor.php and ArticleTarget#getWikitextDataPromiseForDoc + // -------------------------------------------------------------------------------- + basetimestamp: this.baseTimeStamp, + // `blockinfo` is not used by this client + canEdit: this.canEdit, + checkboxesDef: this.checkboxesDef, + checkboxesMessages: this.checkboxesMessages, + // `content` is not needed here, we store `html` instead + copyrightWarning: this.copyrightWarning, etag: this.etag, - fromEditedState: this.fromEditedState, - switched: this.switched, - preloaded: this.preloaded, + fromEditedState: this.fromEditedState, // extra notices: this.remoteNotices, + oldid: this.revid, + preloaded: this.preloaded, protectedClasses: this.protectedClasses, - basetimestamp: this.baseTimeStamp, + // `result` is not used starttimestamp: this.startTimeStamp, - oldid: this.revid, - canEdit: this.canEdit, - wouldautocreate: this.wouldautocreate, - copyrightWarning: this.copyrightWarning, - checkboxesDef: this.checkboxesDef, - checkboxesMessages: this.checkboxesMessages + switched: this.switched, + wouldautocreate: this.wouldautocreate } }, html ); }; @@ -2287,17 +2293,24 @@ ve.init.mw.ArticleTarget.prototype.switchToWikitextEditor = function ( modified ve.init.mw.ArticleTarget.prototype.getWikitextDataPromiseForDoc = function ( modified ) { return this.serialize( this.getDocToSave() ).then( ( data ) => { // HACK - add parameters the API doesn't provide for a VE->WT switch + // -------------------------------------------------------------------------------- + // This should match the API result in ApiVisualEditor.php and ArticleTarget#storeDocState + // -------------------------------------------------------------------------------- + data.basetimestamp = this.baseTimeStamp; + // `blockinfo` is not used by this client + data.canEdit = this.canEdit; + data.checkboxesDef = this.checkboxesDef; + // `checkboxesMessages` is not needed, it's only used once per page load + // `content` is already set data.copyrightWarning = this.copyrightWarning; data.etag = this.etag; - data.fromEditedState = modified; + data.fromEditedState = modified; // this replaces data.preloaded data.notices = this.remoteNotices; + data.oldid = this.revid; data.protectedClasses = this.protectedClasses; - data.basetimestamp = this.baseTimeStamp; + // `result` is not used data.starttimestamp = this.startTimeStamp; - data.oldid = this.revid; - data.canEdit = this.canEdit; data.wouldautocreate = this.wouldautocreate; - data.checkboxesDef = this.checkboxesDef; // Wrap up like a response object as that is what dataPromise is expected to be return { visualeditoredit: data }; } ); From 89dd66a2b52dde8adfe01dda848842671b0a64c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 6 Mar 2025 02:41:33 +0100 Subject: [PATCH 192/730] Preserve checkboxesMessages when switching to NWE In I2d569cadcf978416af94d54437ca4052a41d4c28 I tried to explain why it could be omitted, then I found a case where it mustn't be. Bug: T388050 Change-Id: Ibeb812294908b4cafdae8fc098bc21cb29c2677b --- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 0258e96b05..d0fe7d986e 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -2300,7 +2300,7 @@ ve.init.mw.ArticleTarget.prototype.getWikitextDataPromiseForDoc = function ( mod // `blockinfo` is not used by this client data.canEdit = this.canEdit; data.checkboxesDef = this.checkboxesDef; - // `checkboxesMessages` is not needed, it's only used once per page load + data.checkboxesMessages = this.checkboxesMessages; // needed in case we end up autosaving with this data // `content` is already set data.copyrightWarning = this.copyrightWarning; data.etag = this.etag; From ccb8bc107de637fc5f4adf31f0521b6e1bf6eee5 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 6 Mar 2025 08:25:09 +0100 Subject: [PATCH 193/730] Localisation updates from https://translatewiki.net. Change-Id: I6c09289df823b34177eb95bbe4095f72dee05b63 --- editcheck/i18n/nn.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/nn.json b/editcheck/i18n/nn.json index 8e3332e8cf..99f63fcee8 100644 --- a/editcheck/i18n/nn.json +++ b/editcheck/i18n/nn.json @@ -7,5 +7,7 @@ "editcheck-dialog-addref-reject-common-knowledge": "Informasjonen eg legg til er ålmennkunnskap", "tag-editcheck-reference-decline-common-knowledge": "Endringssjekk (referansar) avvist (ålmennkunnskap)", "tag-editcheck-reference-decline-common-knowledge-description": "Endringssjekk for referansar vart avvist som ålmennkunnskap", - "tag-editcheck-reference-decline-other": "Endringssjekk (referansar) avvist (anna)" + "tag-editcheck-reference-decline-irrelevant": "Endringssjekk (referansar) avvist (irrelevant)", + "tag-editcheck-reference-decline-other": "Endringssjekk (referansar) avvist (anna)", + "tag-editcheck-reference-decline-uncertain": "Endringssjekk (referansar) avvist (uviss)" } From ee83cc384bd5d3c252e515953bf8a11d8ff38043 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 6 Mar 2025 17:18:02 +0000 Subject: [PATCH 194/730] Update VE core submodule to master (f0c5bf865) New changes: 6aac38f4d Create a sidebar window manager Added files: - src/ui/dialogs/ve.ui.SidebarDialog.js - src/ui/styles/dialogs/ve.ui.SidebarDialog.less - src/ui/styles/windowmanagers/ve.ui.SidebarDialogWindowManager.less - src/ui/windowmanagers/ve.ui.SidebarDialogWindowManager.js Local changes: - Fix margins of sidebar window manager Change-Id: Id36c619b674a788a80a7807bfaf3360bca676f00 --- extension.json | 6 +++++- lib/ve | 2 +- .../styles/ve.init.mw.DesktopArticleTarget-monobook.less | 4 ++++ .../styles/ve.init.mw.DesktopArticleTarget-vector.less | 8 ++++++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/extension.json b/extension.json index 0d871e087d..d591b9a2dd 100644 --- a/extension.json +++ b/extension.json @@ -1104,7 +1104,6 @@ "lib/ve/src/ui/ve.ui.FragmentWindow.js", "lib/ve/src/ui/ve.ui.NodeWindow.js", "lib/ve/src/ui/ve.ui.TabIndexScope.js", - "lib/ve/src/ui/windowmanagers/ve.ui.SurfaceWindowManager.js", "lib/ve/src/ui/actions/ve.ui.AnnotationAction.js", "lib/ve/src/ui/actions/ve.ui.BlockquoteAction.js", "lib/ve/src/ui/actions/ve.ui.CompletionAction.js", @@ -1135,6 +1134,7 @@ "lib/ve/src/ui/commands/ve.ui.MergeCellsCommand.js", "lib/ve/src/ui/dialogs/ve.ui.FragmentDialog.js", "lib/ve/src/ui/dialogs/ve.ui.NodeDialog.js", + "lib/ve/src/ui/dialogs/ve.ui.SidebarDialog.js", "lib/ve/src/ui/dialogs/ve.ui.ToolbarDialog.js", "lib/ve/src/ui/dialogs/ve.ui.CommandHelpDialog.js", "lib/ve/src/ui/dialogs/ve.ui.FindAndReplaceDialog.js", @@ -1148,6 +1148,8 @@ "lib/ve/src/ui/datatransferhandlers/ve.ui.HTMLFileTransferHandler.js", "lib/ve/src/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.js", "lib/ve/src/ui/elements/ve.ui.PreviewElement.js", + "lib/ve/src/ui/windowmanagers/ve.ui.SurfaceWindowManager.js", + "lib/ve/src/ui/windowmanagers/ve.ui.SidebarDialogWindowManager.js", "lib/ve/src/ui/windowmanagers/ve.ui.ToolbarDialogWindowManager.js", "lib/ve/src/ui/widgets/ve.ui.AlignWidget.js", "lib/ve/src/ui/widgets/ve.ui.TargetWidget.js", @@ -1207,6 +1209,7 @@ "lib/ve/src/ce/styles/ve.ce.less", "lib/ve/src/ce/styles/ve.ce.Surface.less", "lib/ve/src/ui/styles/ve.ui.icons.less", + "lib/ve/src/ui/styles/dialogs/ve.ui.SidebarDialog.less", "lib/ve/src/ui/styles/dialogs/ve.ui.ToolbarDialog.less", "lib/ve/src/ui/styles/dialogs/ve.ui.CommandHelpDialog.less", "lib/ve/src/ui/styles/dialogs/ve.ui.FindAndReplaceDialog.less", @@ -1223,6 +1226,7 @@ "lib/ve/src/ui/styles/inspectors/ve.ui.FragmentInspector.less", "lib/ve/src/ui/styles/layouts/ve.ui.SymbolListBookletLayout.less", "lib/ve/src/ui/styles/widgets/ve.ui.TargetWidget.less", + "lib/ve/src/ui/styles/windowmanagers/ve.ui.SidebarDialogWindowManager.less", "lib/ve/src/ui/styles/ve.ui.Context.less", "lib/ve/src/ui/styles/ve.ui.ContextItem.less", "lib/ve/src/ui/styles/contextitems/ve.ui.LinearContextItem.less", diff --git a/lib/ve b/lib/ve index a2d4d893a8..f0c5bf865c 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit a2d4d893a89f3a7e0fadda68fac3c3a595df146a +Subproject commit f0c5bf865cd650ae6e029d857c1c4a597a766be0 diff --git a/modules/ve-mw/init/styles/ve.init.mw.DesktopArticleTarget-monobook.less b/modules/ve-mw/init/styles/ve.init.mw.DesktopArticleTarget-monobook.less index d7d5082e7f..cc64d200f3 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.DesktopArticleTarget-monobook.less +++ b/modules/ve-mw/init/styles/ve.init.mw.DesktopArticleTarget-monobook.less @@ -18,6 +18,10 @@ font-size: 1.007874em; } + .ve-ui-sidebarDialog { + margin-left: 1em; + } + .mw-body & > .ve-ui-surface-placeholder > * { /* Fix margin overlap */ margin-top: 0; diff --git a/modules/ve-mw/init/styles/ve.init.mw.DesktopArticleTarget-vector.less b/modules/ve-mw/init/styles/ve.init.mw.DesktopArticleTarget-vector.less index 783456ad0d..ebb7b36116 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.DesktopArticleTarget-vector.less +++ b/modules/ve-mw/init/styles/ve.init.mw.DesktopArticleTarget-vector.less @@ -41,6 +41,10 @@ border: 0; } + .ve-ui-sidebarDialog { + margin-right: 1rem; + } + .skin-vector-legacy & { /* High-definition-specific styles (because Vector adds 1em to the leftNav if width is 982px+ */ @media screen and ( min-width: 982px ) { @@ -51,6 +55,10 @@ padding: 0 1.5rem; } + .ve-ui-sidebarDialog { + margin-right: 1.5rem; + } + /* Main document debug bar */ > .ve-ui-debugBar { padding: 1.5rem; From 1a3b12d9a7174636d6de984af631621e8b2b6983 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 6 Mar 2025 16:23:22 -0600 Subject: [PATCH 195/730] Edit check: use new hook for controller setup Change-Id: I0f7693bfa9aae85acdb4a7486794a7a5c753a1a5 --- editcheck/modules/controller.js | 72 ++++++++++++++++++--------------- editcheck/modules/init.js | 12 ++++-- 2 files changed, 48 insertions(+), 36 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index fd7df4a607..ba3e23099e 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -1,12 +1,13 @@ 'use strict'; -function Controller() { +function Controller( target ) { // Mixin constructors OO.EventEmitter.call( this ); this.actionsByListener = {}; - this.target = null; + this.target = target; + this.surface = null; this.listener = 'onDocumentChange'; @@ -22,13 +23,19 @@ function Controller() { OO.mixinClass( Controller, OO.EventEmitter ); Controller.prototype.setup = function () { - mw.hook( 've.activationStart' ).add( () => { + const target = this.target; + target.on( 'surfaceReady', () => { + if ( target.getSurface().getMode() !== 'visual' ) { + // Some checks will entirely work in source mode for most cases. + // But others will fail spectacularly -- e.g. reference check + // isn't aware of tags and so will suggest that all content + // has references added. As such, disable in source mode for now. + return; + } + // ideally this would happen slightly earlier: document.documentElement.classList.add( 've-editcheck-available' ); - } ); - mw.hook( 've.activationComplete' ).add( () => { - this.target = ve.init.target; - this.surface = this.target.getSurface(); + this.surface = target.getSurface(); this.surface.getView().on( 'position', this.onPositionDebounced ); this.surface.getModel().on( 'undoStackChange', this.onDocumentChangeDebounced ); @@ -58,26 +65,36 @@ Controller.prototype.setup = function () { { listener: 'onDocumentChange', actions: actions, controller: this } ); } - } ); + }, null, this ); // Run on load (e.g. recovering from auto-save) setTimeout( () => this.onDocumentChange(), 100 ); - } ); - mw.hook( 've.deactivationComplete' ).add( () => { - document.documentElement.classList.remove( 've-editcheck-available' ); - mw.editcheck.dismissedFragments = {}; - mw.editcheck.dismissedIds = {}; + this.surface.on( 'destroy', () => { + this.off( 'actionsUpdated' ); + + this.surface.getView().off( 'position', this.onPositionDebounced ); + this.surface.getModel().off( 'undoStackChange', this.onDocumentChangeDebounced ); - this.surface.getModel().off( 'undoStackChange', this.onDocumentChangeDebounced ); + this.surface = null; + this.actionsByListener = {}; - this.disconnect( this ); + mw.editcheck.dismissedFragments = {}; + mw.editcheck.dismissedIds = {}; + } ); + }, null, this ); - this.target = null; - this.surface = null; - this.actionsByListener = {}; + target.on( 'teardown', () => { + document.documentElement.classList.remove( 've-editcheck-available' ); + + target.disconnect( this ); + }, null, this ); + + mw.hook( 've.preSaveProcess' ).add( ( saveProcess, saveTarget ) => { + if ( saveTarget === this.target ) { + this.onPreSaveProcess( saveProcess ); + } } ); - mw.hook( 've.preSaveProcess' ).add( this.onPreSaveProcess.bind( this ) ); }; Controller.prototype.refresh = function () { @@ -142,9 +159,6 @@ Controller.prototype.onPosition = function () { }; Controller.prototype.onDocumentChange = function () { - if ( this.surface.getMode() !== 'visual' ) { - return; - } if ( this.listener !== 'onBeforeSave' ) { this.updateForListener( 'onDocumentChange' ); } @@ -153,17 +167,10 @@ Controller.prototype.onDocumentChange = function () { this.drawGutter(); }; -Controller.prototype.onPreSaveProcess = function ( saveProcess, target ) { +Controller.prototype.onPreSaveProcess = function ( saveProcess ) { + const target = this.target; const surface = target.getSurface(); - if ( surface.getMode() !== 'visual' ) { - // Some checks will entirely work in source mode for most cases. - // But others will fail spectacularly -- e.g. reference check - // isn't aware of tags and so will suggest that all content - // has references added. As such, disable in source mode for now. - return; - } - ve.track( 'counter.editcheck.preSaveChecksAvailable' ); // clear rejection-reasons between runs of the save process, so only the last one counts @@ -389,6 +396,5 @@ Controller.prototype.scrollActionIntoView = function ( action ) { }; module.exports = { - Controller: Controller, - instance: new Controller() + Controller: Controller }; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index a3406e5d27..d1b252e17e 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -2,8 +2,7 @@ mw.editcheck = { config: require( './config.json' ), ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ), dismissedFragments: {}, - dismissedIds: {}, - controller: require( './controller.js' ).instance + dismissedIds: {} }; require( './EditCheckInspector.js' ); @@ -86,7 +85,14 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { } if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable ) { - mw.editcheck.controller.setup(); + const Controller = require( './controller.js' ).Controller; + mw.hook( 've.newTarget' ).add( ( target ) => { + if ( target.constructor.static.name !== 'article' ) { + return; + } + const controller = new Controller( target ); + controller.setup(); + } ); } // This is for the toolbar: From 14e0c63b372b63d3bec30d63ab792d4c397c4a70 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 7 Mar 2025 08:41:02 +0100 Subject: [PATCH 196/730] Localisation updates from https://translatewiki.net. Change-Id: I5ce6959aad7d95d1716428aa8af68f2874864804 --- i18n/ve-mw/mwlanguagevariant/diq.json | 2 ++ i18n/ve-mw/scn.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/mwlanguagevariant/diq.json b/i18n/ve-mw/mwlanguagevariant/diq.json index 7948e1bc59..f354f354bd 100644 --- a/i18n/ve-mw/mwlanguagevariant/diq.json +++ b/i18n/ve-mw/mwlanguagevariant/diq.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "1917 Ekim Devrimi", + "GolyatGeri", "Mirzali", "Orbot707" ] @@ -16,6 +17,7 @@ "visualeditor-mwlanguagevariantcontextitem-flag-hidden": "Eno yew qaideyo nımteyo", "visualeditor-mwlanguagevariantcontextitem-flag-title": "Eno qaide sernamey pele rê tesir keno", "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Kodê zıwani", + "visualeditor-mwlanguagevariantcontextitem-rule-invalid-language-label": "Nêravêrde", "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "Zıwan", "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "Çıme", "visualeditor-mwlanguagevariantcontextitem-rule-text-to-label": "İstiqamet", diff --git a/i18n/ve-mw/scn.json b/i18n/ve-mw/scn.json index f2206a6227..9ac4010321 100644 --- a/i18n/ve-mw/scn.json +++ b/i18n/ve-mw/scn.json @@ -38,7 +38,7 @@ "visualeditor-dialog-media-page-advanced": "Avanzati", "visualeditor-dialog-media-page-general": "Ginirali", "visualeditor-dialog-media-save": "Sarva", - "visualeditor-dialog-media-search-tab-search": "Arricerca", + "visualeditor-dialog-media-search-tab-search": "Cerca", "visualeditor-dialog-media-search-tab-upload": "Càrrica", "visualeditor-dialog-media-title": "Mpustazzioni dû file multimidiali", "visualeditor-dialog-media-type-section": "Tipu di mmàggini", From 960982a62f1a07fb79ef0ffed5c9ff33925067fe Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 7 Mar 2025 11:03:58 +0000 Subject: [PATCH 197/730] EditCheck controller: Don't disconnect events on teardown We don't need to disconnect events from objects that are being destroyed, as the listeners are attached to those objects, and they will get GC'd once all references to them are removed. Instead just ensure the references are set back to null. Change-Id: I52d28e8647c893d8952429caeb29e40d877b703c --- editcheck/modules/controller.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ba3e23099e..06dbfa86f6 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -73,9 +73,6 @@ Controller.prototype.setup = function () { this.surface.on( 'destroy', () => { this.off( 'actionsUpdated' ); - this.surface.getView().off( 'position', this.onPositionDebounced ); - this.surface.getModel().off( 'undoStackChange', this.onDocumentChangeDebounced ); - this.surface = null; this.actionsByListener = {}; @@ -86,8 +83,6 @@ Controller.prototype.setup = function () { target.on( 'teardown', () => { document.documentElement.classList.remove( 've-editcheck-available' ); - - target.disconnect( this ); }, null, this ); mw.hook( 've.preSaveProcess' ).add( ( saveProcess, saveTarget ) => { @@ -297,15 +292,14 @@ Controller.prototype.restoreToolbar = function ( target ) { // Creating a new PositionedTargetToolbar stole the // toolbar windowmanagers, so we need to make the - // original toolbar reclaim them: - this.originalToolbar.disconnect( target ); + // original toolbar reclaims them: target.setupToolbar( target.getSurface() ); // If the window was resized while the originalToolbar was hidden then // the cached measurements will be wrong. Recalculate. this.originalToolbar.onWindowResize(); - this.reviewToolbar = false; - this.originalToolbar = false; + this.reviewToolbar = null; + this.originalToolbar = null; }; Controller.prototype.drawSelections = function () { From 18e1c48ac150a42567c5ff60743cd66ded98906b Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 7 Mar 2025 12:04:08 -0600 Subject: [PATCH 198/730] EditCheck controller: don't run presave when not watching the surface We were already ignoring it for different targets, but the same target whose surface is in a mode we're not listening to would cause an error. Change-Id: Id1280bcd849851616d9710dd5e75f6a9b05d7708 --- editcheck/modules/controller.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 06dbfa86f6..3ddc1aaadc 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -86,7 +86,9 @@ Controller.prototype.setup = function () { }, null, this ); mw.hook( 've.preSaveProcess' ).add( ( saveProcess, saveTarget ) => { - if ( saveTarget === this.target ) { + // This being a global hook means that it could fire on a different + // target, or on our target when it's not in visual mode. + if ( saveTarget === this.target && this.surface ) { this.onPreSaveProcess( saveProcess ); } } ); From 921c320590413fd751a040ef85a3cb420bc71d9a Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 7 Mar 2025 11:22:16 +0000 Subject: [PATCH 199/730] EditCheck: Bring dismissedIds/Fragments into controller's scope This allows dismissed checks to exist on a per-target basis. Change-Id: Ia4b9f65b6dc0e3bfa4159c9b8878b48dcb8c98cf --- editcheck/modules/BaseEditCheck.js | 11 ++++++----- editcheck/modules/EditCheckFactory.js | 5 +++-- editcheck/modules/controller.js | 9 ++++++--- editcheck/modules/editchecks/AddReferenceEditCheck.js | 4 ++-- editcheck/modules/init.js | 7 +++---- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index 5407014f3f..e5eb6b9011 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -1,4 +1,5 @@ -mw.editcheck.BaseEditCheck = function MWBaseEditCheck( config ) { +mw.editcheck.BaseEditCheck = function MWBaseEditCheck( controller, config ) { + this.controller = controller; this.config = ve.extendObject( {}, this.constructor.static.defaultConfig, config ); }; @@ -283,11 +284,11 @@ mw.editcheck.BaseEditCheck.prototype.isRangeInValidSection = function ( range, d mw.editcheck.BaseEditCheck.prototype.dismiss = function ( action ) { const name = this.constructor.static.name; if ( action.id ) { - const dismissedIds = mw.editcheck.dismissedIds; + const dismissedIds = this.controller.dismissedIds; dismissedIds[ name ] = dismissedIds[ name ] || []; dismissedIds[ name ].push( action.id ); } else { - const dismissedFragments = mw.editcheck.dismissedFragments; + const dismissedFragments = this.controller.dismissedFragments; dismissedFragments[ name ] = dismissedFragments[ name ] || []; dismissedFragments[ name ].push( // Exclude insertions so we don't accidentally block unrelated changes: @@ -303,7 +304,7 @@ mw.editcheck.BaseEditCheck.prototype.dismiss = function ( action ) { * @return {boolean} */ mw.editcheck.BaseEditCheck.prototype.isDismissedRange = function ( range ) { - const fragments = mw.editcheck.dismissedFragments[ this.constructor.static.name ]; + const fragments = this.controller.dismissedFragments[ this.constructor.static.name ]; return !!fragments && fragments.some( ( fragment ) => fragment.getSelection().getCoveringRange().containsRange( range ) ); @@ -316,6 +317,6 @@ mw.editcheck.BaseEditCheck.prototype.isDismissedRange = function ( range ) { * @return {boolean} */ mw.editcheck.BaseEditCheck.prototype.isDismissedId = function ( id ) { - const ids = mw.editcheck.dismissedIds[ this.constructor.static.name ]; + const ids = this.controller.dismissedIds[ this.constructor.static.name ]; return ids && ids.indexOf( id ) !== -1; }; diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index b514d937a6..ffea651282 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -61,14 +61,15 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener * * TODO: Rename to createAllActionsByListener * + * @param {mw.editcheck.Controller} controller * @param {string} listener Listener name * @param {ve.dm.Surface} surfaceModel Surface model * @return {mw.editcheck.EditCheckActions[]} Actions, sorted by range */ -mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( listener, surfaceModel ) { +mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( controller, listener, surfaceModel ) { let newChecks = []; this.getNamesByListener( listener ).forEach( ( checkName ) => { - const check = this.create( checkName, mw.editcheck.config[ checkName ] ); + const check = this.create( checkName, controller, mw.editcheck.config[ checkName ] ); if ( !check.canBeShown() ) { return; } diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 06dbfa86f6..8113ca0508 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -13,6 +13,9 @@ function Controller( target ) { this.$highlights = $( '
' ); + this.dismissedFragments = {}; + this.dismissedIds = {}; + this.onDocumentChangeDebounced = ve.debounce( this.onDocumentChange.bind( this ), 100 ); this.onPositionDebounced = ve.debounce( this.onPosition.bind( this ), 100 ); @@ -76,8 +79,8 @@ Controller.prototype.setup = function () { this.surface = null; this.actionsByListener = {}; - mw.editcheck.dismissedFragments = {}; - mw.editcheck.dismissedIds = {}; + this.dismissedFragments = {}; + this.dismissedIds = {}; } ); }, null, this ); @@ -104,7 +107,7 @@ Controller.prototype.refresh = function () { Controller.prototype.updateForListener = function ( listener, always ) { listener = listener || this.listener; const existing = this.actionsByListener[ listener ] || []; - const actions = mw.editcheck.editCheckFactory.createAllByListener( listener, this.surface.getModel() ) + const actions = mw.editcheck.editCheckFactory.createAllByListener( this, listener, this.surface.getModel() ) .map( ( action ) => existing.find( ( oldAction ) => oldAction.equals( action ) ) || action ); this.actionsByListener[ listener ] = actions; diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index fb03ce4d71..25763c6bc5 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -1,6 +1,6 @@ -mw.editcheck.AddReferenceEditCheck = function MWAddReferenceEditCheck( config ) { +mw.editcheck.AddReferenceEditCheck = function MWAddReferenceEditCheck() { // Parent constructor - mw.editcheck.AddReferenceEditCheck.super.call( this, config ); + mw.editcheck.AddReferenceEditCheck.super.apply( this, arguments ); }; OO.inheritClass( mw.editcheck.AddReferenceEditCheck, mw.editcheck.BaseEditCheck ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index d1b252e17e..cb8fdd77ae 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -1,8 +1,6 @@ mw.editcheck = { config: require( './config.json' ), - ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ), - dismissedFragments: {}, - dismissedIds: {} + ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ) }; require( './EditCheckInspector.js' ); @@ -31,7 +29,8 @@ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, include if ( mw.config.get( 'wgNamespaceNumber' ) !== mw.config.get( 'wgNamespaceIds' )[ '' ] ) { return false; } - const check = mw.editcheck.editCheckFactory.create( 'addReference', mw.editcheck.config.addReference ); + const check = mw.editcheck.editCheckFactory.create( null, 'addReference', mw.editcheck.config.addReference ); + // TODO: This should be factored out into a static method so we don't have to construct a dummy check return check.findAddedContent( documentModel, includeReferencedContent ).length > 0; }; From c19491622dc21450d931971ef9159fa230d786c4 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 5 Mar 2025 10:29:13 -0600 Subject: [PATCH 200/730] Edit check: add instrumentation around the check lifecycle Bug: T352092 Change-Id: Ie83432a51171aed21e794aa744c83ee164c88543 --- editcheck/modules/EditCheckAction.js | 7 +++++++ editcheck/modules/controller.js | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 6112c8418e..c267275f38 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -92,9 +92,16 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi return widget; }; +/** + * Called when a button in the rendered widget is clicked + * + * @param {ve.ui.Surface} surface + * @param {OO.ui.ActionWidget} actionWidget ActionWidget for the choice that was clicked + */ mw.editcheck.EditCheckAction.prototype.onActionClick = function ( surface, actionWidget ) { const promise = this.check.act( actionWidget.action, this, surface ); this.emit( 'act', promise || ve.createDeferred().resolve().promise() ); + ve.track( 'activity.editCheck-' + this.getName(), { action: 'action-' + ( actionWidget.getAction() || 'unknown' ) } ); }; /** diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 8113ca0508..27528ea834 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -60,14 +60,24 @@ Controller.prototype.setup = function () { if ( !actions.length ) { return; } + let shownPromise; const currentWindow = this.surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); if ( !currentWindow || currentWindow.constructor.static.name !== 'editCheckDialog' ) { const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); - return windowAction.open( + shownPromise = windowAction.open( 'editCheckDialog', { listener: 'onDocumentChange', actions: actions, controller: this } - ); + ).then( () => { + ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-midedit' } ); + } ); + } else { + shownPromise = ve.createDeferred().resolve().promise(); } + shownPromise.then( () => { + newActions.forEach( ( action ) => { + ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-midedit' } ); + } ); + } ); }, null, this ); // Run on load (e.g. recovering from auto-save) @@ -199,6 +209,10 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess ) { target.onContainerScroll(); return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) .then( ( instance ) => { + ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); + actions.forEach( ( action ) => { + ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); + } ); instance.closed.then( () => {}, () => {} ).then( () => { surface.getView().setReviewMode( false ); this.listener = 'onDocumentChange'; From c0d32f76c455bc1a238c6c4d00d09242e44a1b11 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 4 Mar 2025 14:32:33 -0600 Subject: [PATCH 201/730] Edit check: update tagging * Stop logging the decline reasons because the tags are confusing when in a multi-check situation * Rename editcheck-references-activated to editcheck-references-shown * Reset the reference check shown tracker between sessions in the same pageload Bug: T373949 Change-Id: Ifcef73bd106b12d70d521cdbfddb9e693f1b3f5b --- editcheck/modules/controller.js | 8 ++++---- editcheck/modules/editchecks/AddReferenceEditCheck.js | 1 - editcheck/modules/init.js | 8 +------- i18n/ve-wmf/en.json | 3 +++ i18n/ve-wmf/qqq.json | 3 +++ includes/Hooks.php | 2 +- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 7 ------- 7 files changed, 12 insertions(+), 20 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 27528ea834..ba1805fa67 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -91,6 +91,8 @@ Controller.prototype.setup = function () { this.dismissedFragments = {}; this.dismissedIds = {}; + + mw.editcheck.refCheckShown = false; } ); }, null, this ); @@ -181,15 +183,13 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess ) { ve.track( 'counter.editcheck.preSaveChecksAvailable' ); - // clear rejection-reasons between runs of the save process, so only the last one counts - mw.editcheck.rejections.length = 0; - const oldFocused = this.focused; this.listener = 'onBeforeSave'; const actions = this.updateForListener( 'onBeforeSave' ); if ( actions.length ) { ve.track( 'counter.editcheck.preSaveChecksShown' ); - mw.editcheck.refCheckShown = true; + mw.editcheck.refCheckShown = mw.editcheck.refCheckShown || + actions.some( ( action ) => action.getName() === 'addReference' ); this.setupToolbar( target ); diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index 25763c6bc5..3c36e01ab4 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -101,7 +101,6 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, su return instance.closing; } ).done( ( data ) => { if ( data && data.action === 'reject' && data.reason ) { - mw.editcheck.rejections.push( data.reason ); this.dismiss( action ); } } ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index cb8fdd77ae..dc5a0753b4 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -34,12 +34,6 @@ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, include return check.findAddedContent( documentModel, includeReferencedContent ).length > 0; }; -mw.editcheck.rejections = []; - -mw.editcheck.getRejectionReasons = function () { - return mw.editcheck.rejections; -}; - mw.editcheck.refCheckShown = false; if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { @@ -72,7 +66,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { tags.push( 'editcheck-newreference' ); } if ( mw.editcheck.refCheckShown ) { - tags.push( 'editcheck-references-activated' ); + tags.push( 'editcheck-references-shown' ); } return tags.join( ',' ); }; diff --git a/i18n/ve-wmf/en.json b/i18n/ve-wmf/en.json index 93e3f3d5a3..6cde74f99c 100644 --- a/i18n/ve-wmf/en.json +++ b/i18n/ve-wmf/en.json @@ -25,6 +25,9 @@ "tag-editcheck-references-activated": "Edit Check (references) activated", "tag-editcheck-references-activated-description": "EditCheck thinks a reference might have been needed, and the UI was shown", "tag-editcheck-references-activated-helppage": "mediawikiwiki:Special:MyLanguage/Edit check/False positives", + "tag-editcheck-references-shown": "Edit Check (references) shown", + "tag-editcheck-references-shown-description": "EditCheck thinks a reference might have been needed, and the UI was shown", + "tag-editcheck-references-shown-helppage": "mediawikiwiki:Special:MyLanguage/Edit check/False positives", "tag-visualeditor": "Visual edit", "tag-visualeditor-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", "tag-visualeditor-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", diff --git a/i18n/ve-wmf/qqq.json b/i18n/ve-wmf/qqq.json index 1d16ca0e74..c374f961a8 100644 --- a/i18n/ve-wmf/qqq.json +++ b/i18n/ve-wmf/qqq.json @@ -34,6 +34,9 @@ "tag-editcheck-references-activated": "Short description of the editcheck-references-activated tag.\n\nHidden tag added when EditCheck thinks that added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-activated-description}}\n{{Related|tag-editcheck-references-activated-description}}", "tag-editcheck-references-activated-description": "Long description of the editcheck-references-activated tag.\n\nHidden tag added when EditCheck thinks added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-activated}}\n{{Related|tag-editcheck-references-activated}}", "tag-editcheck-references-activated-helppage": "{{notranslate}}\nLink to the false positives reporting page of EditCheck.\n\nUsed in:\n* {{msg-mw|tag-editcheck-references-activated}}", + "tag-editcheck-references-shown": "Short description of the editcheck-references-shown tag.\n\nHidden tag added when EditCheck thinks that added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown-description}}\n{{Related|tag-editcheck-references-shown-description}}", + "tag-editcheck-references-shown-description": "Long description of the editcheck-references-shown tag.\n\nHidden tag added when EditCheck thinks added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown}}\n{{Related|tag-editcheck-references-shown}}", + "tag-editcheck-references-shown-helppage": "{{notranslate}}\nLink to the false positives reporting page of EditCheck.\n\nUsed in:\n* {{msg-mw|tag-editcheck-references-shown}}", "tag-visualeditor": "Short description of the visualeditor tag. Do not translate the link target, but do translate the words \"Visual edit\".\n\nShown on lists of changes (history, recentchanges, etc.) for each edit made using VisualEditor.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck}}\n{{Related|Tag-visualeditor}}\n{{Identical|VisualEditor}}", "tag-visualeditor-description": "Long description of the visualeditor tag ({{msg-mw|Tag-visualeditor}}).\n\nShown on [[Special:Tags]].\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck-description}}\n{{Related|Tag-visualeditor}}", "tag-visualeditor-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", diff --git a/includes/Hooks.php b/includes/Hooks.php index 4986ae79d8..f568d00783 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -104,11 +104,11 @@ class Hooks implements 'editcheck-references-activated', 'editcheck-newcontent', 'editcheck-newreference', + // No longer in active use: 'editcheck-reference-decline-common-knowledge', 'editcheck-reference-decline-irrelevant', 'editcheck-reference-decline-uncertain', 'editcheck-reference-decline-other', - // No longer in active use: 'visualeditor-needcheck', 'visualeditor-switched' ]; diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index d77186d41b..34d73cd549 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1574,13 +1574,6 @@ ve.init.mw.ArticleTarget.prototype.save = function ( doc, options ) { if ( mw.editcheck.hasAddedContentNeedingReference( documentModel, true ) ) { taglist.push( 'editcheck-newcontent' ); } - // Rejection reasons for references - const rejections = mw.editcheck.getRejectionReasons(); - if ( rejections.length > 0 ) { - rejections.forEach( ( reason ) => { - taglist.push( 'editcheck-reference-decline-' + reason ); - } ); - } } data.vetags = taglist.join( ',' ); From 7f8fea7f6416941a20d6c53d0fdccdeb01c33165 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 10 Mar 2025 08:32:33 +0100 Subject: [PATCH 202/730] Localisation updates from https://translatewiki.net. Change-Id: Ie22012de4fa2ecf64df03501eabb7078873a3b74 --- i18n/ve-mw/bug.json | 10 ++++++++++ i18n/ve-mw/scn.json | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 i18n/ve-mw/bug.json diff --git a/i18n/ve-mw/bug.json b/i18n/ve-mw/bug.json new file mode 100644 index 0000000000..87b720ef15 --- /dev/null +++ b/i18n/ve-mw/bug.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Rdwnnr" + ] + }, + "visualeditor-dialog-transclusion-add-param-save": "Tambai", + "visualeditor-dialog-transclusion-add-template": "Tambai accuwang", + "visualeditor-dialog-transclusion-add-template-save": "Tambai" +} diff --git a/i18n/ve-mw/scn.json b/i18n/ve-mw/scn.json index 9ac4010321..9365f27c7c 100644 --- a/i18n/ve-mw/scn.json +++ b/i18n/ve-mw/scn.json @@ -16,11 +16,11 @@ "tooltip-ca-ve-edit": "Cancia sta pàggina", "tooltip-ca-ve-create": "Crea sta pàggina", "tooltip-ca-editsource": "Cancia lu codici surgenti di sta pàggina", - "tooltip-ca-createsource": "Crea lu codici surgenti di sta pàggina", + "tooltip-ca-createsource": "Crìa lu còdici di sta pàggina", "visualeditor-advancedsettings-tool": "Mpustazzioni avanzati", "visualeditor-autosave-modified-prompt-reject": "Ncigna nu canciamentu novu", "visualeditor-ca-createlocaldescriptionsource": "Agghiunci na discrizzioni lucali tràmiti surgenti", - "visualeditor-ca-createsource": "Crea surgenti", + "visualeditor-ca-createsource": "Crìa còdici", "visualeditor-ca-editsource": "Cancia lu còdici", "visualeditor-ca-editsource-section": "cancia lu còdici", "visualeditor-categories-tool": "Catigurìi", @@ -138,7 +138,7 @@ "visualeditor-savedialog-identify-user": "Trasisti comu [[User:$1|$1]]. Si cuntinui, lu tò canciamentu veni assuciatu a st’utenza.", "visualeditor-savedialog-label-resolve-conflict": "Risorvi nu cunflittu", "visualeditor-savedialog-label-review": "Ritalìa li to canciamenti", - "visualeditor-savedialog-label-review-good": "Arritorna ô modulu di sarbataggiu", + "visualeditor-savedialog-label-review-good": "Torna ô mòdulu di sarbamentu", "visualeditor-savedialog-label-save-short": "Sarva", "visualeditor-savedialog-label-save-short-start": "Sarva...", "visualeditor-savedialog-review-visual": "Visuali", From 5dfc5eba97c92558e3e0c7ab411f6fd6ff22fb01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Tue, 18 Feb 2025 17:50:08 +0000 Subject: [PATCH 203/730] Show selected edit check action if the user clicks on its associated text Bug: T386932 Change-Id: Ia4b27e4e15973a061a32bc50286e506a340cd39c --- editcheck/modules/EditCheckDialog.js | 53 +++++++++++++++++++++------- editcheck/modules/controller.js | 14 ++++++++ 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index cd72814d2f..748cd6c342 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -65,7 +65,7 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { click: 'onCloseButtonClick' } ); - this.currentOffset = 0; + this.currentOffset = null; this.currentActions = null; this.footerLabel = new OO.ui.LabelWidget(); @@ -135,26 +135,37 @@ ve.ui.EditCheckDialog.prototype.refresh = function () { /** * Set the offset of the current check, within the list of all checks * - * @param {number} offset + * @param {number|null} offset * @param {boolean} fromUserAction * @param {boolean} internal */ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAction, internal ) { // TODO: work out how to tell the window to recalculate height here - this.currentOffset = Math.max( 0, offset ); + + if ( offset === null ) { + /* That's valid, carry on */ + } else if ( !Number.isSafeInteger( offset ) || ( this.offset < 0 || this.offset > ( this.currentActions.length - 1 ) ) ) { + throw new Error( `Bad offset ${ offset }, expected an integer between 0 and ${ this.currentActions.length - 1 }` ); + } + + this.currentOffset = offset; this.$body.find( '.ve-ui-editCheckActionWidget' ).each( ( i, el ) => { $( el ).toggleClass( 've-ui-editCheckActionWidget-collapsed', i !== this.currentOffset ); } ); - this.footerLabel.setLabel( - ve.msg( 'visualeditor-find-and-replace-results', - ve.init.platform.formatNumber( this.currentOffset + 1 ), - ve.init.platform.formatNumber( this.currentActions.length ) - ) - ); - this.nextButton.setDisabled( this.currentOffset >= this.currentActions.length - 1 ); - this.previousButton.setDisabled( this.currentOffset <= 0 ); + if ( this.currentOffset !== null ) { + this.footerLabel.setLabel( + ve.msg( 'visualeditor-find-and-replace-results', + ve.init.platform.formatNumber( this.currentOffset + 1 ), + ve.init.platform.formatNumber( this.currentActions.length ) + ) + ); + } else { + this.footerLabel.setLabel( '' ); + } + this.nextButton.setDisabled( this.currentOffset !== null && this.currentOffset >= this.currentActions.length - 1 ); + this.previousButton.setDisabled( this.currentOffset === null || this.currentOffset <= 0 ); this.updateSize(); @@ -257,6 +268,22 @@ ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, col if ( !collapsed ) { // expanded one this.setCurrentOffset( this.currentActions.indexOf( action ), true ); + if ( !OO.ui.isMobile() ) { + const surfaceModel = this.surface.getModel(); + const checkRange = action.getHighlightSelections()[ 0 ].getCoveringRange(); + const surfaceRange = surfaceModel.getSelection().getCoveringRange(); + // Collapse and move the selection to the nearest part of the check range + // Don't alter it if it touches the check range + if ( surfaceRange === null || surfaceRange.end < checkRange.start ) { + surfaceModel.setSelection( new ve.dm.LinearSelection( new ve.Range( checkRange.start ) ) ); + this.surface.getView().activate(); + this.surface.getView().focus(); + } else if ( surfaceRange.start > checkRange.end ) { + surfaceModel.setSelection( new ve.dm.LinearSelection( new ve.Range( checkRange.end ) ) ); + this.surface.getView().activate(); + this.surface.getView().focus(); + } + } } }; @@ -274,14 +301,14 @@ ve.ui.EditCheckDialog.prototype.onCloseButtonClick = function () { * Handle click events from the next button */ ve.ui.EditCheckDialog.prototype.onNextButtonClick = function () { - this.setCurrentOffset( this.currentOffset + 1, true ); + this.setCurrentOffset( this.currentOffset === null ? 0 : this.currentOffset + 1, true ); }; /** * Handle click events from the previous button */ ve.ui.EditCheckDialog.prototype.onPreviousButtonClick = function () { - this.setCurrentOffset( this.currentOffset - 1, true ); + this.setCurrentOffset( this.currentOffset === null ? this.currentActions.length - 1 : this.currentOffset - 1, true ); }; /* Registration */ diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 99fcfa6983..a42c1be84f 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -18,6 +18,7 @@ function Controller( target ) { this.onDocumentChangeDebounced = ve.debounce( this.onDocumentChange.bind( this ), 100 ); this.onPositionDebounced = ve.debounce( this.onPosition.bind( this ), 100 ); + this.onSelectDebounced = ve.debounce( this.onSelect.bind( this ), 100 ); // Don't run a scroll if the previous animation is still running (which is jQuery 'fast' === 200ms) this.scrollActionIntoViewDebounced = ve.debounce( this.scrollActionIntoView.bind( this ), 200, true ); @@ -42,6 +43,7 @@ Controller.prototype.setup = function () { this.surface.getView().on( 'position', this.onPositionDebounced ); this.surface.getModel().on( 'undoStackChange', this.onDocumentChangeDebounced ); + this.surface.getModel().on( 'select', this.onSelectDebounced ); this.on( 'actionsUpdated', ( listener, actions, newActions, discardedActions ) => { // do we need to redraw anything? @@ -160,6 +162,18 @@ Controller.prototype.getActions = function ( listener ) { return this.actionsByListener[ listener || this.listener ] || []; }; +Controller.prototype.onSelect = function ( selection ) { + if ( this.getActions().length === 0 || selection.isNull() ) { + // Nothing to do + return; + } + const action = this.getActions().find( + ( check ) => check.getHighlightSelections().some( + ( highlight ) => highlight.getCoveringRange().containsRange( selection.getCoveringRange() ) ) ); + + this.focusAction( action || null, false ); +}; + Controller.prototype.onPosition = function () { this.drawGutter(); From 8423b28a0aad9ac47b8569d9594f91cd11426149 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 11 Mar 2025 08:26:57 +0100 Subject: [PATCH 204/730] Localisation updates from https://translatewiki.net. Change-Id: Ifec5061c934067495196da5ef3276fb6c7da5a77 --- editcheck/i18n/fi.json | 2 +- i18n/ve-mw/bug.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index aca8ae8f37..2331fae941 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -19,7 +19,7 @@ "editcheck-dialog-addref-title": "Lisää viite", "editcheck-dialog-title": "Ennen julkaisua", "editcheck-copyvio-title": "Liitetty sisältö", - "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Näin toimiminen on yleensä sekä tekijänoikeusrikkomus että plagiarismia.", + "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Se on usein sekä tekijänoikeusrikkomus että plagiarismia.", "editcheck-review-title": "Tarkasta muutokset", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", "tag-editcheck-reference-decline-common-knowledge-description": "Muokkaustarkistimen ehdotus hylättiin, koska lisäys on yleistä tietoa", diff --git a/i18n/ve-mw/bug.json b/i18n/ve-mw/bug.json index 87b720ef15..caece7ea6d 100644 --- a/i18n/ve-mw/bug.json +++ b/i18n/ve-mw/bug.json @@ -4,6 +4,7 @@ "Rdwnnr" ] }, + "visualeditor-ca-editsource-section": "padéccéng apoléng", "visualeditor-dialog-transclusion-add-param-save": "Tambai", "visualeditor-dialog-transclusion-add-template": "Tambai accuwang", "visualeditor-dialog-transclusion-add-template-save": "Tambai" From 2d04ad43038f6a7160f2dec2afa63605ce4cf3ec Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 11 Mar 2025 14:18:14 +0000 Subject: [PATCH 205/730] TextMatchEditCheck: Use dynamic static variable Change-Id: I265b12b1ca9cb9849838242d3737b2be8926b1e7 --- editcheck/modules/editchecks/experimental/TextMatchEditCheck.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js index 6cae537e34..04e942ee42 100644 --- a/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js +++ b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js @@ -3,7 +3,7 @@ mw.editcheck.TextMatchEditCheck = function MWTextMatchEditCheck( /* config */ ) mw.editcheck.TextMatchEditCheck.super.apply( this, arguments ); this.replacers = [ - ...mw.editcheck.TextMatchEditCheck.static.replacers, + ...this.constructor.static.replacers, ...( this.config.replacers || [] ) ]; }; From b744a48d5d2b1251baa70f46f0865e1c9ff05090 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 12 Mar 2025 08:27:33 +0100 Subject: [PATCH 206/730] Localisation updates from https://translatewiki.net. Change-Id: I2c0a1a0429cacaba66018301a2b11beb4dd36c0d --- i18n/ve-mw/az.json | 4 ++-- i18n/ve-mw/bug-bugi.json | 7 +++++-- i18n/ve-wmf/de.json | 4 +++- i18n/ve-wmf/{hak.json => hak-latn.json} | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) rename i18n/ve-wmf/{hak.json => hak-latn.json} (83%) diff --git a/i18n/ve-mw/az.json b/i18n/ve-mw/az.json index b88561c789..0c6feae799 100644 --- a/i18n/ve-mw/az.json +++ b/i18n/ve-mw/az.json @@ -279,13 +279,13 @@ "visualeditor-mweditmode-tooltip": "Redaktoru dəyiş", "visualeditor-mweditmodesource-progress": "Mənbə redaktəsinə keçilir…", "visualeditor-mweditmodesource-tool-current": "Mənbə kodunun redaktəsi", - "visualeditor-mweditmodesource-tool-unavailable": "Mənbə redaktəsi burda mövcud deyil", + "visualeditor-mweditmodesource-tool-unavailable": "Mənbə redaktəsi burada əlçatan deyil", "visualeditor-mweditmodeve-popup-body": "İstənilən vaxt bu işarəyə klikləməklə vizual redaktəyə qayıda bilərsiniz.", "visualeditor-mweditmodeve-popup-title": "Mənbə redaktəsinə keçdiniz", "visualeditor-mweditmodeve-progress": "Vizual redaktəyə keçilir…", "visualeditor-mweditmodeve-showagain": "Bu mesajı bir daha göstərmə", "visualeditor-mweditmodeve-tool-current": "Vizual redaktə", - "visualeditor-mweditmodeve-tool-unavailable": "Vizual redaktə burda mövcud deyil", + "visualeditor-mweditmodeve-tool-unavailable": "Vizual redaktə burada əlçatan deyil", "visualeditor-mweditmodewt-popup-body": "İstənilən vaxt bu işarəyə klikləməklə mənbə redaktəsinə qayıda bilərsiniz.", "visualeditor-mweditmodewt-popup-title": "Siz vizual redaktəyə keçdiniz", "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|şəkil}}", diff --git a/i18n/ve-mw/bug-bugi.json b/i18n/ve-mw/bug-bugi.json index ad89bca003..c684ec69b9 100644 --- a/i18n/ve-mw/bug-bugi.json +++ b/i18n/ve-mw/bug-bugi.json @@ -1,6 +1,9 @@ { "@metadata": { - "authors": [] + "authors": [ + "Rdwnnr" + ] }, - "tooltip-ca-ve-edit": "ᨄᨉᨙᨌᨙᨂᨗ ᨕᨗᨐᨕᨙ ᨒᨛᨄᨂᨙ" + "tooltip-ca-ve-edit": "ᨄᨉᨙᨌᨙᨂᨗ ᨕᨗᨐᨕᨙ ᨒᨛᨄᨂᨙ", + "visualeditor-ca-editsource-section": "ᨄᨉᨙᨌᨙ ᨕᨄᨚᨒᨙ" } diff --git a/i18n/ve-wmf/de.json b/i18n/ve-wmf/de.json index 71f6dafa21..a349295f3e 100644 --- a/i18n/ve-wmf/de.json +++ b/i18n/ve-wmf/de.json @@ -17,9 +17,11 @@ }, "tag-editcheck-newcontent-description": "EditCheck geht davon aus, dass der Seite neue Inhalte hinzugefügt wurden", "tag-editcheck-newreference-description": "Der Seite wurde ein Einzelnachweis hinzugefügt", - "tag-editcheck-references-description": "EditCheck ist der Meinung, dass möglicherweise ein Einzelnachweis benötigt wird", + "tag-editcheck-references-description": "Die Bearbeitungsprüfung ist der Meinung, dass möglicherweise ein Einzelnachweis benötigt wird", "tag-editcheck-references-activated": "Bearbeitungsprüfung (Belege) aktiviert", "tag-editcheck-references-activated-description": "EditCheck geht davon aus, dass möglicherweise ein Einzelnachweis erforderlich war, und die Benutzeroberfläche wurde angezeigt", + "tag-editcheck-references-shown": "Bearbeitungsprüfung (Belege) wurde angezeigt", + "tag-editcheck-references-shown-description": "Die Bearbeitungsprüfung ist der Meinung, dass ein Beleg erforderlich gewesen sein könnte; die Benutzeroberfläche wurde angezeigt", "tag-visualeditor": "Visuelle Bearbeitung", "tag-visualeditor-description": "Bearbeitungen, die mit dem [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editor]] ausgeführt wurden.", "tag-visualeditor-needcheck": "Visuelle Bearbeitung: Überprüfung", diff --git a/i18n/ve-wmf/hak.json b/i18n/ve-wmf/hak-latn.json similarity index 83% rename from i18n/ve-wmf/hak.json rename to i18n/ve-wmf/hak-latn.json index 013c47b001..c1eed6c986 100644 --- a/i18n/ve-wmf/hak.json +++ b/i18n/ve-wmf/hak-latn.json @@ -1,7 +1,7 @@ { "@metadata": { "authors": [ - "Hakka" + "Winston Sung" ] }, "tag-visualeditor": "Sṳ-kok-fa phiên-siá" From 36ce08ce7085cde8aaa6cf1a7acddcd811d901b7 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 12 Mar 2025 14:15:23 +0000 Subject: [PATCH 207/730] Update VE core submodule to master (9c1b1850f) New changes: f00dca8f8 Update OOUI to v0.51.7 3af9fca6a Fix expandLinearSelection('word') at adjacent word boundaries Localisation Updates: 765587d2e Bug: T382144 Change-Id: Ibbf40cf8af15d080131766ae72eab91f6f82bf22 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index f0c5bf865c..9c1b1850f4 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit f0c5bf865cd650ae6e029d857c1c4a597a766be0 +Subproject commit 9c1b1850f40064966dd9f2b4d5590ccf7ac3e7dc From c947c60afdce843155aac5516a7dda38356908c4 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 21 Feb 2025 13:02:23 +0000 Subject: [PATCH 208/730] Use new sidebar for mid-edit checks Change-Id: I4329ca3f2fc698d0b6399765f367395ed774cdc3 --- editcheck/modules/EditCheck.less | 5 +- editcheck/modules/EditCheckDialog.js | 170 +++++++++++++++++++-------- editcheck/modules/controller.js | 34 ++++-- editcheck/modules/init.js | 2 +- 4 files changed, 149 insertions(+), 62 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 35570ae8cf..3cab4e3268 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -58,10 +58,6 @@ .ve-ui-editCheckDialog { font-size: 0.875rem; // ignore content scaling - .oo-ui-window-body { - padding-left: 12px; - } - &-title { display: block; font-weight: bold; @@ -82,6 +78,7 @@ .ve-ui-editCheckActionWidget { box-sizing: border-box; white-space: normal; // Minerva needs this + margin: @spacing-50 0; padding: @spacing-50 @spacing-75; cursor: pointer; overflow: hidden; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 748cd6c342..68335a9c93 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -13,25 +13,16 @@ * @constructor * @param {Object} [config] Configuration options */ -ve.ui.EditCheckDialog = function VeUiEditCheckDialog( config ) { - // Parent constructor - ve.ui.EditCheckDialog.super.call( this, config ); - +ve.ui.EditCheckDialog = function VeUiEditCheckDialog() { // Pre-initialization this.$element.addClass( 've-ui-editCheckDialog' ); }; /* Inheritance */ -OO.inheritClass( ve.ui.EditCheckDialog, ve.ui.ToolbarDialog ); - -ve.ui.EditCheckDialog.static.name = 'editCheckDialog'; - -ve.ui.EditCheckDialog.static.position = OO.ui.isMobile() ? 'below' : 'side'; +OO.initClass( ve.ui.EditCheckDialog ); -ve.ui.EditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; - -ve.ui.EditCheckDialog.static.framed = false; +/* Static Properties */ // TODO: Keep surface active on mobile for some checks? ve.ui.EditCheckDialog.static.activeSurface = !OO.ui.isMobile(); @@ -45,9 +36,6 @@ ve.ui.EditCheckDialog.static.title = OO.ui.deferMsg( 'editcheck-review-title' ); * @inheritdoc */ ve.ui.EditCheckDialog.prototype.initialize = function () { - // Parent method - ve.ui.EditCheckDialog.super.prototype.initialize.call( this ); - this.title = new OO.ui.LabelWidget( { label: this.constructor.static.title, classes: [ 've-ui-editCheckDialog-title' ] @@ -95,7 +83,10 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { } ); this.$actions = $( '
' ); - this.$body.append( this.title.$element, this.closeButton.$element, this.$actions, this.footer.$element ); + if ( OO.ui.isMobile() ) { + this.$body.append( this.title.$element ); + } + this.$body.append( this.closeButton.$element, this.$actions, this.footer.$element ); }; ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, newActions ) { @@ -181,44 +172,42 @@ ve.ui.EditCheckDialog.prototype.onFocusAction = function ( action, index, scroll /** * @inheritdoc */ -ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data ) { - return ve.ui.EditCheckDialog.super.prototype.getSetupProcess.call( this, data ) - .first( () => { - this.controller = data.controller; - this.controller.on( 'actionsUpdated', this.onActionsUpdated, false, this ); - this.controller.on( 'focusAction', this.onFocusAction, false, this ); - - this.listener = data.listener || 'onDocumentChange'; - this.currentOffset = 0; - this.currentActions = data.actions || this.controller.getActions( this.listener ); - this.surface = data.surface; - - this.singleAction = ( this.listener === 'onBeforeSave' ) || OO.ui.isMobile(); - - this.closeButton.toggle( OO.ui.isMobile() ); - this.footer.toggle( - this.singleAction && - // If we're in single-check mode don't show even the disabled pagers: - !mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle - ); - this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', this.singleAction ); - - this.surface.context.hide(); - - this.onActionsUpdated( this.listener, this.currentActions, this.currentActions, [] ); - }, this ); +ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data, process ) { + return process.first( () => { + this.controller = data.controller; + this.controller.on( 'actionsUpdated', this.onActionsUpdated, false, this ); + this.controller.on( 'focusAction', this.onFocusAction, false, this ); + + this.listener = data.listener || 'onDocumentChange'; + this.currentOffset = 0; + this.currentActions = data.actions || this.controller.getActions( this.listener ); + this.surface = data.surface; + + this.singleAction = ( this.listener === 'onBeforeSave' ) || OO.ui.isMobile(); + + this.closeButton.toggle( OO.ui.isMobile() ); + this.footer.toggle( + this.singleAction && + // If we're in single-check mode don't show even the disabled pagers: + !mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle + ); + this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', this.singleAction ); + + this.surface.context.hide(); + + this.onActionsUpdated( this.listener, this.currentActions, this.currentActions, [] ); + }, this ); }; /** * @inheritdoc */ -ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data ) { - return ve.ui.EditCheckDialog.super.prototype.getTeardownProcess.call( this, data ) - .next( () => { - this.controller.off( 'actionsUpdated', this.onActionsUpdated, this ); - this.controller.off( 'focusAction', this.onFocusAction, this ); - this.$actions.empty(); - }, this ); +ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data, process ) { + return process.next( () => { + this.controller.off( 'actionsUpdated', this.onActionsUpdated, this ); + this.controller.off( 'focusAction', this.onFocusAction, this ); + this.$actions.empty(); + }, this ); }; /** @@ -285,6 +274,7 @@ ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, col } } } + this.controller.align(); }; /** @@ -311,9 +301,89 @@ ve.ui.EditCheckDialog.prototype.onPreviousButtonClick = function () { this.setCurrentOffset( this.currentOffset === null ? this.currentActions.length - 1 : this.currentOffset - 1, true ); }; +ve.ui.SidebarEditCheckDialog = function VeUiSidebarEditCheckDialog( config ) { + // Parent constructor + ve.ui.SidebarEditCheckDialog.super.call( this, config ); + + // Mixin constructor + ve.ui.EditCheckDialog.call( this, config ); +}; + +OO.inheritClass( ve.ui.SidebarEditCheckDialog, ve.ui.SidebarDialog ); + +OO.mixinClass( ve.ui.SidebarEditCheckDialog, ve.ui.EditCheckDialog ); + +ve.ui.SidebarEditCheckDialog.static.name = 'sidebarEditCheckDialog'; + +ve.ui.SidebarEditCheckDialog.static.size = 'medium'; + +ve.ui.SidebarEditCheckDialog.prototype.initialize = function () { + // Parent method + ve.ui.SidebarEditCheckDialog.super.prototype.initialize.call( this ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.initialize.call( this ); +}; + +ve.ui.SidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) { + // Parent method + const process = ve.ui.SidebarEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ); +}; + +ve.ui.SidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { + // Parent method + const process = ve.ui.SidebarEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ); +}; + +/* Registration */ + +ve.ui.windowFactory.register( ve.ui.SidebarEditCheckDialog ); + +ve.ui.FixedEditCheckDialog = function VeUiFixedEditCheckDialog( config ) { + // Parent constructor + ve.ui.FixedEditCheckDialog.super.call( this, config ); + + // Mixin constructor + ve.ui.EditCheckDialog.call( this, config ); +}; + +OO.inheritClass( ve.ui.FixedEditCheckDialog, ve.ui.ToolbarDialog ); + +OO.mixinClass( ve.ui.FixedEditCheckDialog, ve.ui.EditCheckDialog ); + +ve.ui.FixedEditCheckDialog.static.name = 'fixedEditCheckDialog'; + +ve.ui.FixedEditCheckDialog.static.position = OO.ui.isMobile() ? 'below' : 'side'; + +ve.ui.FixedEditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; + +ve.ui.FixedEditCheckDialog.prototype.initialize = function () { + // Parent method + ve.ui.FixedEditCheckDialog.super.prototype.initialize.call( this ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.initialize.call( this ); +}; + +ve.ui.FixedEditCheckDialog.prototype.getSetupProcess = function ( data ) { + // Parent method + const process = ve.ui.FixedEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ); +}; + +ve.ui.FixedEditCheckDialog.prototype.getTeardownProcess = function ( data ) { + // Parent method + const process = ve.ui.FixedEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ); +}; + /* Registration */ -ve.ui.windowFactory.register( ve.ui.EditCheckDialog ); +ve.ui.windowFactory.register( ve.ui.FixedEditCheckDialog ); ve.ui.commandRegistry.register( new ve.ui.Command( diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index dfff47aa44..ee703438fd 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -63,11 +63,11 @@ Controller.prototype.setup = function () { return; } let shownPromise; - const currentWindow = this.surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); - if ( !currentWindow || currentWindow.constructor.static.name !== 'editCheckDialog' ) { + const currentWindow = this.surface.getSidebarDialogs().getCurrentWindow(); + if ( !currentWindow || currentWindow.constructor.static.name !== 'sidebarEditCheckDialog' ) { const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); shownPromise = windowAction.open( - 'editCheckDialog', + 'sidebarEditCheckDialog', { listener: 'onDocumentChange', actions: actions, controller: this } ).then( () => { ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-midedit' } ); @@ -220,10 +220,10 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess ) { saveProcess.next( () => { const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); // .always is not chainable - return windowAction.close( 'editCheckDialog' ).closed.then( () => {}, () => {} ).then( () => { + return windowAction.close( 'sidebarEditCheckDialog' ).closed.then( () => {}, () => {} ).then( () => { this.originalToolbar.toggle( false ); target.onContainerScroll(); - return windowAction.open( 'editCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) + return windowAction.open( 'fixedEditCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) .then( ( instance ) => { ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); actions.forEach( ( action ) => { @@ -371,6 +371,7 @@ Controller.prototype.drawGutter = function () { const surfaceView = this.surface.getView(); actions.forEach( ( action ) => { + action.top = Infinity; action.getHighlightSelections().forEach( ( selection ) => { const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); const rect = selectionView.getSelectionBoundingRect(); @@ -394,10 +395,29 @@ Controller.prototype.drawGutter = function () { } ) .on( 'click', () => this.focusAction( action ) ) ); + action.top = Math.min( action.top, rect.top ); } ); } ); surfaceView.appendHighlights( this.$highlights, false ); + + this.align(); +}; + +Controller.prototype.align = function () { + if ( this.listener !== 'onDocumentChange' ) { + return; + } + const surfaceTop = this.surface.getView().$element.offset().top + 10; + this.getActions().forEach( ( action ) => { + if ( action.widget ) { + action.widget.$element.css( 'margin-top', '' ); + action.widget.$element.css( + 'margin-top', + Math.max( 0, action.top + surfaceTop - action.widget.$element.offset().top ) + ); + } + } ); }; Controller.prototype.scrollActionIntoView = function ( action ) { @@ -408,9 +428,9 @@ Controller.prototype.scrollActionIntoView = function ( action ) { top: OO.ui.isMobile() ? 80 : action.widget.$element[ 0 ].getBoundingClientRect().top, bottom: 20 }; - if ( ve.ui.EditCheckDialog.static.position === 'below' ) { + if ( ve.ui.FixedEditCheckDialog.static.position === 'below' ) { // TODO: ui.surface getPadding should really be fixed for this - const currentWindow = this.surface.getToolbarDialogs( ve.ui.EditCheckDialog.static.position ).getCurrentWindow(); + const currentWindow = this.surface.getToolbarDialogs( ve.ui.FixedEditCheckDialog.static.position ).getCurrentWindow(); if ( currentWindow ) { padding.bottom += currentWindow.getContentHeight(); } diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index dc5a0753b4..402caed433 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -106,7 +106,7 @@ ve.ui.EditCheckBack.static.title = ve.ui.EditCheckBack.prototype.onSelect = function () { const surface = this.toolbar.getSurface(); surface.getContext().hide(); - surface.execute( 'window', 'close', 'editCheckDialog' ); + surface.execute( 'window', 'close', 'fixedEditCheckDialog' ); this.setActive( false ); }; ve.ui.EditCheckBack.prototype.onUpdateState = function () { From 7a0ec42d1aa77720019d237034a2745dc0d517a1 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 12 Mar 2025 21:29:24 +0000 Subject: [PATCH 209/730] Follow-up Ia4b9f65b6: Fix argument order passed to EditCheckFactory#create Bug: T388722 Change-Id: I7a9cbb018550d593cfc02df08ef6e1f16389547d --- editcheck/modules/init.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 402caed433..c619ab309a 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -29,7 +29,7 @@ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, include if ( mw.config.get( 'wgNamespaceNumber' ) !== mw.config.get( 'wgNamespaceIds' )[ '' ] ) { return false; } - const check = mw.editcheck.editCheckFactory.create( null, 'addReference', mw.editcheck.config.addReference ); + const check = mw.editcheck.editCheckFactory.create( 'addReference', null, mw.editcheck.config.addReference ); // TODO: This should be factored out into a static method so we don't have to construct a dummy check return check.findAddedContent( documentModel, includeReferencedContent ).length > 0; }; From 9d1b4c9981cad9288a2c7b54cb864349665c2ac5 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 12 Mar 2025 21:26:59 -0500 Subject: [PATCH 210/730] Edit check: don't change the focused action onselect unnecessarily If the currently focused action is within the selection, don't jump away from it. This was only an issue with multiple overlapping checks. Follow-up to 5dfc5eba97c92558e3e0c7ab411f6fd6ff22fb01. Bug: T386932 Change-Id: I652a1108061c7b4b4fbd11b778974fadc2bd0aae --- editcheck/modules/controller.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ee703438fd..8269d74b2d 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -169,11 +169,14 @@ Controller.prototype.onSelect = function ( selection ) { // Nothing to do return; } - const action = this.getActions().find( + const actions = this.getActions().filter( ( check ) => check.getHighlightSelections().some( ( highlight ) => highlight.getCoveringRange().containsRange( selection.getCoveringRange() ) ) ); - this.focusAction( action || null, false ); + if ( actions.length > 0 && actions.indexOf( this.focused ) === -1 ) { + // If the currently focused action is within the selection, don't jump around + this.focusAction( actions[ 0 ] || null, false ); + } }; Controller.prototype.onPosition = function () { From 7fd73c8f81a427f724968fe6db55fd4cf2310a20 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 12 Mar 2025 21:03:15 -0500 Subject: [PATCH 211/730] Edit check: mobile mid-edit display Bug: T383955 Change-Id: I326bbbd4e963a946c89acfd25fbde9d5dc69203e --- editcheck/modules/EditCheck.less | 85 +++++++ editcheck/modules/EditCheckDialog.js | 79 +++++- .../modules/EditCheckGutterSidebarDialog.js | 176 +++++++++++++ editcheck/modules/controller.js | 235 ++++++++++-------- editcheck/modules/init.js | 1 + extension.json | 1 + 6 files changed, 459 insertions(+), 118 deletions(-) create mode 100644 editcheck/modules/EditCheckGutterSidebarDialog.js diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 3cab4e3268..721e5c4354 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -206,6 +206,91 @@ margin-bottom: 100%; } +/* Mobile sidebar */ + +.ve-ui-editCheck-gutter { + display: none; +} + +.ve-ui-editCheck-gutter-active { + div.ve-init-mw-target-surface.ve-ui-surface-visual { + // margin-right: 52px; + } + + div.ve-ui-editCheckGutterSidebarDialog { + // display: block; + // position: absolute; + // top: 0; + // right: -52px; + // width: 44px; + // height: 100%; + background-color: @background-color-interactive-subtle; + + .ve-ui-editCheck-gutter-action { + position: absolute; + width: 42px; + text-align: center; + margin-top: -3px; + min-height: 24px; + + > .oo-ui-iconElement-icon { + width: 20px; + height: 20px; + margin-top: -4px; + } + + label { + position: absolute; + top: 16px; + right: 5px; + display: block; + border-radius: 3px; + background-color: @accent-color-base; + color: @color-inverted; + font-size: @font-size-x-small; + line-height: 0.9; + padding: 3px; + } + + &-error { + border-left: 2px solid @color-error; + } + + &-warning { + border-left: 2px solid @color-warning; + } + + &-notice { + border-left: 2px solid @color-notice; + } + + &-success { + border-left: 2px solid @color-success; + } + + &-inactive { + border-left: 2px solid @border-color-base; + } + } + } +} + +.ve-editcheck-available .mw-mf { + .ve-init-mw-target-surface { + // 16 + (44 / 2) + margin: 0 38px; + } + + .ve-ui-editCheck-sidebar-active .ve-init-mw-target-surface { + margin: 0 44px 0 16px; + + .ve-ui-sidebarDialogWindowManager { + margin-left: 16px; + margin-right: -44px; + } + } +} + /* Selections */ .ve-ce-surface-reviewMode + .ve-ui-overlay .ve-ce-surface-selections-editCheck .ve-ce-surface-selection { diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 68335a9c93..399b46a4ac 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -89,10 +89,17 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { this.$body.append( this.closeButton.$element, this.$actions, this.footer.$element ); }; -ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, newActions ) { +ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions ) { if ( listener !== this.listener ) { return; } + if ( this.updateFilter ) { + actions = this.updateFilter( actions, newActions, discardedActions, this.currentActions ); + } + this.showActions( actions, newActions ); +}; + +ve.ui.EditCheckDialog.prototype.showActions = function ( actions, newActions ) { this.currentActions = actions; if ( actions.length === 0 ) { return this.close( 'complete' ); @@ -109,6 +116,10 @@ ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, this.setCurrentOffset( newOffset, false ); }; +ve.ui.EditCheckDialog.prototype.hasAction = function ( action ) { + return this.currentActions.some( ( caction ) => action.equals( caction ) ); +}; + ve.ui.EditCheckDialog.prototype.refresh = function () { this.$actions.empty(); @@ -166,7 +177,7 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc }; ve.ui.EditCheckDialog.prototype.onFocusAction = function ( action, index, scrollTo ) { - this.setCurrentOffset( index, scrollTo, true ); + this.setCurrentOffset( this.currentActions.indexOf( action ), scrollTo, true ); }; /** @@ -178,24 +189,29 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data, process ) { this.controller.on( 'actionsUpdated', this.onActionsUpdated, false, this ); this.controller.on( 'focusAction', this.onFocusAction, false, this ); + const actions = data.actions || this.controller.getActions( this.listener ); + this.listener = data.listener || 'onDocumentChange'; - this.currentOffset = 0; - this.currentActions = data.actions || this.controller.getActions( this.listener ); this.surface = data.surface; + this.updateFilter = data.updateFilter; this.singleAction = ( this.listener === 'onBeforeSave' ) || OO.ui.isMobile(); this.closeButton.toggle( OO.ui.isMobile() ); - this.footer.toggle( - this.singleAction && - // If we're in single-check mode don't show even the disabled pagers: - !mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle - ); + if ( data.footer !== undefined ) { + this.footer.toggle( data.footer ); + } else { + this.footer.toggle( + this.singleAction && + // If we're in single-check mode don't show even the disabled pagers: + !mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle + ); + } this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', this.singleAction ); this.surface.context.hide(); - this.onActionsUpdated( this.listener, this.currentActions, this.currentActions, [] ); + this.showActions( actions, actions ); }, this ); }; @@ -274,7 +290,6 @@ ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, col } } } - this.controller.align(); }; /** @@ -328,14 +343,52 @@ ve.ui.SidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) { // Parent method const process = ve.ui.SidebarEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); // Mixin method - return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ); + return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ).next( () => { + this.controller.on( 'position', this.onPosition, null, this ); + } ); }; ve.ui.SidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { // Parent method const process = ve.ui.SidebarEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); // Mixin method - return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ); + return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ).next( () => { + this.controller.off( 'position', this.onPosition, this ); + } ); +}; + +ve.ui.SidebarEditCheckDialog.prototype.onPosition = function () { + if ( this.listener !== 'onDocumentChange' ) { + return; + } + const surfaceView = this.surface.getView(); + const surfaceTop = surfaceView.$element.offset().top + 10; + this.currentActions.forEach( ( action ) => { + const widget = action.widget; + if ( widget ) { + let top = Infinity; + action.getHighlightSelections().forEach( ( selection ) => { + const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); + const rect = selectionView.getSelectionBoundingRect(); + if ( !rect ) { + return; + } + top = Math.min( top, rect.top ); + } ); + widget.$element.css( 'margin-top', '' ); + widget.$element.css( + 'margin-top', + Math.max( 0, top + surfaceTop - widget.$element.offset().top ) + ); + } + } ); +}; + +ve.ui.SidebarEditCheckDialog.prototype.onToggleCollapse = function () { + // mixin + ve.ui.EditCheckDialog.prototype.onToggleCollapse.apply( this, arguments ); + + this.onPosition(); }; /* Registration */ diff --git a/editcheck/modules/EditCheckGutterSidebarDialog.js b/editcheck/modules/EditCheckGutterSidebarDialog.js new file mode 100644 index 0000000000..5728f19c8b --- /dev/null +++ b/editcheck/modules/EditCheckGutterSidebarDialog.js @@ -0,0 +1,176 @@ +/*! + * VisualEditor UserInterface EditCheckGutterSidebarDialog class. + * + * @copyright See AUTHORS.txt + */ + +ve.ui.GutterSidebarEditCheckDialog = function VeUiGutterSidebarEditCheckDialog( config ) { + // Parent constructor + ve.ui.GutterSidebarEditCheckDialog.super.call( this, config ); + + this.$element.addClass( 've-ui-editCheckGutterSidebarDialog' ); +}; + +OO.inheritClass( ve.ui.GutterSidebarEditCheckDialog, ve.ui.SidebarDialog ); + +ve.ui.GutterSidebarEditCheckDialog.static.name = 'gutterSidebarEditCheckDialog'; + +ve.ui.GutterSidebarEditCheckDialog.static.size = 'gutter'; + +ve.ui.GutterSidebarEditCheckDialog.prototype.initialize = function () { + // Parent method + ve.ui.GutterSidebarEditCheckDialog.super.prototype.initialize.call( this ); +}; + +ve.ui.GutterSidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) { + const process = this.constructor.super.prototype.getSetupProcess.call( this, data ); + return process.first( () => { + this.controller = data.controller; + this.listener = data.listener || data.controller.listener; + this.surface = data.controller.surface; + this.surface.getTarget().$element.addClass( 've-ui-editCheck-gutter-active' ); + + this.controller.on( 'actionsUpdated', this.onActionsUpdated, null, this ); + this.controller.on( 'position', this.onPosition, null, this ); + + this.renderActions( data.actions || this.controller.getActions( this.listener ) ); + }, this ); +}; + +ve.ui.GutterSidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { + // Parent method + const process = ve.ui.GutterSidebarEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); + return process.first( () => { + this.controller.disconnect( this ); + + this.surface = null; + this.controller = null; + }, this ); +}; + +ve.ui.GutterSidebarEditCheckDialog.prototype.onActionsUpdated = function ( listener, actions ) { + if ( listener !== this.listener ) { + return; + } + this.renderActions( actions ); +}; + +ve.ui.GutterSidebarEditCheckDialog.prototype.onPosition = function () { + this.renderActions( this.controller.getActions( this.listener ) ); +}; + +ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions ) { + if ( actions.length === 0 ) { + return this.close(); + } + + const surfaceView = this.surface.getView(); + const sections = []; + + // First join overlapping actions into "sections" + actions.forEach( ( action ) => { + const selection = action.getHighlightSelections()[ 0 ]; + const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); + const rect = selectionView.getSelectionBoundingRect(); + if ( !rect ) { + return; + } + // Look for any other section that the new one overlaps with + // TODO: join when two other sections are joined by the new one? + const prev = sections.find( ( p ) => !( p.rect.bottom < rect.top || rect.bottom < p.rect.top ) ); + if ( prev ) { + // overlap, so merge + prev.actions.push( action ); + // top, bottom, left, right, width, height + prev.rect.top = Math.min( prev.rect.top, rect.top ); + prev.rect.bottom = Math.max( prev.rect.bottom, rect.bottom ); + prev.rect.height = prev.rect.bottom - prev.rect.top; + return; + } + sections.push( { actions: [ action ], rect: rect } ); + } ); + + // Now try to reuse old widgets if possible, to avoid icons flickering + const oldWidgets = this.widgets || []; + this.widgets = []; + sections.forEach( ( section ) => { + const action = section.actions[ 0 ]; + let widget; + const index = oldWidgets.findIndex( + ( owidget ) => owidget.actions.length === section.actions.length && + owidget.actions.every( ( oact ) => section.actions.indexOf( oact ) !== -1 ) + ); + if ( index !== -1 ) { + widget = oldWidgets.splice( index, 1 )[ 0 ]; + } else { + const icon = new OO.ui.IconWidget( { + icon: mw.editcheck.EditCheckActionWidget.static.iconMap[ action.getType() ] || 'notice' + } ); + const iconLabel = new OO.ui.LabelWidget( { + label: section.actions.length.toString(), + invisibleLabel: section.actions.length === 1 + } ); + widget = { + actions: section.actions, + icon: icon, + iconLabel: iconLabel, + $element: $( '
' ) + .addClass( 've-ui-editCheck-gutter-action' ) + // The following classes are used here: + // * ve-ui-editCheck-gutter-action-error + // * ve-ui-editCheck-gutter-action-warning + // * ve-ui-editCheck-gutter-action-notice + // * ve-ui-editCheck-gutter-action-success + .addClass( 've-ui-editCheck-gutter-action-' + action.getType() ) + .append( icon.$element, iconLabel.$element ) + .on( 'click', () => { + if ( this.listener === 'onDocumentChange' ) { + // mid-edit + const currentWindow = this.surface.getToolbarDialogs( ve.ui.FixedEditCheckDialog.static.position ).getCurrentWindow(); + if ( !currentWindow || currentWindow.constructor.static.name !== 'fixedEditCheckDialog' ) { + const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); + windowAction.open( + 'fixedEditCheckDialog', + { + controller: this.controller, + listener: this.listener, + actions: section.actions, + footer: section.actions.length !== 1, + // just filter out any discarded actions from the allowed set + updateFilter: ( updatedActions, newActions, discardedActions, prevActions ) => prevActions.filter( ( pact ) => discardedActions.indexOf( pact ) === -1 ) + } + ); + } else if ( section.actions.every( ( sact ) => currentWindow.hasAction( sact ) ) ) { + // Second click: defocus and close + return this.controller.closeDialog(); + } else { + currentWindow.showActions( section.actions, [ action ] ); + currentWindow.footer.toggle( section.actions.length !== 1 ); + } + } + this.controller.focusAction( action, true ); + } ) + }; + this.$body.append( widget.$element ); + } + if ( widget.actions.indexOf( this.controller.focused ) !== -1 ) { + widget.icon.setFlags( action.getType() ); + } else { + widget.icon.clearFlags(); + } + widget.$element.css( { + top: section.rect.top + 2, + height: section.rect.height + } ).toggleClass( 've-ui-editCheck-gutter-action-inactive', section.actions.indexOf( this.controller.focused ) === -1 ); + + this.widgets.push( widget ); + } ); + + oldWidgets.forEach( ( widget ) => widget.$element.remove() ); + + // surfaceView.$element.after( this.$mobile ); +}; + +/* Registration */ + +ve.ui.windowFactory.register( ve.ui.GutterSidebarEditCheckDialog ); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ee703438fd..c8c45eee98 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -19,6 +19,7 @@ function Controller( target ) { this.onDocumentChangeDebounced = ve.debounce( this.onDocumentChange.bind( this ), 100 ); this.onPositionDebounced = ve.debounce( this.onPosition.bind( this ), 100 ); this.onSelectDebounced = ve.debounce( this.onSelect.bind( this ), 100 ); + this.onContextChangeDebounced = ve.debounce( this.onContextChange.bind( this ), 100 ); // Don't run a scroll if the previous animation is still running (which is jQuery 'fast' === 200ms) this.scrollActionIntoViewDebounced = ve.debounce( this.scrollActionIntoView.bind( this ), 200, true ); @@ -44,43 +45,9 @@ Controller.prototype.setup = function () { this.surface.getView().on( 'position', this.onPositionDebounced ); this.surface.getModel().on( 'undoStackChange', this.onDocumentChangeDebounced ); this.surface.getModel().on( 'select', this.onSelectDebounced ); + this.surface.getModel().on( 'contextChange', this.onContextChangeDebounced ); - this.on( 'actionsUpdated', ( listener, actions, newActions, discardedActions ) => { - // do we need to redraw anything? - if ( newActions.length || discardedActions.length ) { - if ( this.focused && discardedActions.indexOf( this.focused ) !== -1 ) { - this.focused = undefined; - } - this.drawSelections(); - this.drawGutter(); - } - - // do we need to show mid-edit actions? - if ( listener !== 'onDocumentChange' ) { - return; - } - if ( !actions.length ) { - return; - } - let shownPromise; - const currentWindow = this.surface.getSidebarDialogs().getCurrentWindow(); - if ( !currentWindow || currentWindow.constructor.static.name !== 'sidebarEditCheckDialog' ) { - const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); - shownPromise = windowAction.open( - 'sidebarEditCheckDialog', - { listener: 'onDocumentChange', actions: actions, controller: this } - ).then( () => { - ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-midedit' } ); - } ); - } else { - shownPromise = ve.createDeferred().resolve().promise(); - } - shownPromise.then( () => { - newActions.forEach( ( action ) => { - ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-midedit' } ); - } ); - } ); - }, null, this ); + this.on( 'actionsUpdated', this.onActionsUpdated, null, this ); // Run on load (e.g. recovering from auto-save) setTimeout( () => this.onDocumentChange(), 100 ); @@ -111,6 +78,13 @@ Controller.prototype.setup = function () { } ); }; +Controller.prototype.updatePositions = function () { + this.drawSelections(); + this.drawGutter(); + + this.emit( 'position' ); +}; + Controller.prototype.refresh = function () { if ( this.listener === 'onBeforeSave' ) { // These shouldn't be recalculated @@ -154,10 +128,9 @@ Controller.prototype.removeAction = function ( listener, action ) { Controller.prototype.focusAction = function ( action, scrollTo ) { this.focused = action; - this.drawSelections(); - this.drawGutter(); - this.emit( 'focusAction', action, this.getActions().indexOf( action ), scrollTo ); + + this.updatePositions(); }; Controller.prototype.getActions = function ( listener ) { @@ -165,6 +138,13 @@ Controller.prototype.getActions = function ( listener ) { }; Controller.prototype.onSelect = function ( selection ) { + if ( OO.ui.isMobile() ) { + // On mobile we want to close the drawer if the keyboard is shown + if ( this.surface.getView().hasNativeCursorSelection() ) { + // A native cursor selection means the keyboard will be visible + this.closeDialog(); + } + } if ( this.getActions().length === 0 || selection.isNull() ) { // Nothing to do return; @@ -176,8 +156,14 @@ Controller.prototype.onSelect = function ( selection ) { this.focusAction( action || null, false ); }; +Controller.prototype.onContextChange = function () { + if ( this.surface.getContext().isVisible() ) { + this.closeDialog(); + } +}; + Controller.prototype.onPosition = function () { - this.drawGutter(); + this.updatePositions(); if ( this.getActions().length && this.focused && this.surface.getView().reviewMode ) { this.scrollActionIntoViewDebounced( this.focused ); @@ -189,8 +175,48 @@ Controller.prototype.onDocumentChange = function () { this.updateForListener( 'onDocumentChange' ); } - this.drawSelections(); - this.drawGutter(); + this.updatePositions(); +}; + +Controller.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions ) { + // do we need to redraw anything? + if ( newActions.length || discardedActions.length ) { + if ( this.focused && discardedActions.indexOf( this.focused ) !== -1 ) { + this.focused = undefined; + } + this.updatePositions(); + } + + // do we need to show mid-edit actions? + if ( listener !== 'onDocumentChange' ) { + return; + } + if ( !actions.length ) { + return; + } + const windowName = OO.ui.isMobile() ? 'gutterSidebarEditCheckDialog' : 'sidebarEditCheckDialog'; + let shownPromise; + const currentWindow = this.surface.getSidebarDialogs().getCurrentWindow(); + if ( !currentWindow || currentWindow.constructor.static.name !== windowName ) { + this.target.$element.addClass( 've-ui-editCheck-sidebar-active' ); + const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); + shownPromise = windowAction.open( + windowName, + { listener: listener, actions: actions, controller: this } + ).then( ( instance ) => { + ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-midedit' } ); + instance.closed.then( () => { + this.target.$element.removeClass( 've-ui-editCheck-sidebar-active' ); + } ); + } ); + } else { + shownPromise = ve.createDeferred().resolve().promise(); + } + shownPromise.then( () => { + newActions.forEach( ( action ) => { + ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-midedit' } ); + } ); + } ); }; Controller.prototype.onPreSaveProcess = function ( saveProcess ) { @@ -217,53 +243,50 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess ) { surface.context.popup.containerPadding = 20; } - saveProcess.next( () => { + saveProcess.next( () => this.closeSidebars().then( () => this.closeDialog().then( () => { + this.originalToolbar.toggle( false ); + target.onContainerScroll(); const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); - // .always is not chainable - return windowAction.close( 'sidebarEditCheckDialog' ).closed.then( () => {}, () => {} ).then( () => { - this.originalToolbar.toggle( false ); - target.onContainerScroll(); - return windowAction.open( 'fixedEditCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) - .then( ( instance ) => { - ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); - actions.forEach( ( action ) => { - ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); - } ); - instance.closed.then( () => {}, () => {} ).then( () => { - surface.getView().setReviewMode( false ); - this.listener = 'onDocumentChange'; - this.focused = oldFocused; - // Re-open the mid-edit sidebar if necessary. - this.refresh(); - } ); - return instance.closing.then( ( data ) => { - this.restoreToolbar( target ); - - if ( $contextContainer ) { - surface.context.popup.$container = $contextContainer; - surface.context.popup.containerPadding = contextPadding; - } - - target.onContainerScroll(); - - if ( data ) { - const delay = ve.createDeferred(); - // If they inserted, wait 2 seconds on desktop - // before showing save dialog to make sure insertions are finialized - setTimeout( () => { - ve.track( 'counter.editcheck.preSaveChecksCompleted' ); - delay.resolve(); - }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); - return delay.promise(); - } else { - // closed via "back" or otherwise - ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); - return ve.createDeferred().reject().promise(); - } - } ); + return windowAction.open( 'fixedEditCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) + .then( ( instance ) => { + ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); + actions.forEach( ( action ) => { + ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); } ); - } ); - } ); + instance.closed.then( () => {}, () => {} ).then( () => { + surface.getView().setReviewMode( false ); + this.listener = 'onDocumentChange'; + this.focused = oldFocused; + // Re-open the mid-edit sidebar if necessary. + this.refresh(); + } ); + return instance.closing.then( ( data ) => { + this.restoreToolbar( target ); + + if ( $contextContainer ) { + surface.context.popup.$container = $contextContainer; + surface.context.popup.containerPadding = contextPadding; + } + + target.onContainerScroll(); + + if ( data ) { + const delay = ve.createDeferred(); + // If they inserted, wait 2 seconds on desktop + // before showing save dialog to make sure insertions are finialized + setTimeout( () => { + ve.track( 'counter.editcheck.preSaveChecksCompleted' ); + delay.resolve(); + }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); + return delay.promise(); + } else { + // closed via "back" or otherwise + ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); + return ve.createDeferred().reject().promise(); + } + } ); + } ); + } ) ) ); } else { this.listener = 'onDocumentChange'; // Counterpart to earlier preSaveChecksShown, for use in tracking @@ -363,6 +386,9 @@ Controller.prototype.drawSelections = function () { }; Controller.prototype.drawGutter = function () { + if ( OO.ui.isMobile() ) { + return; + } this.$highlights.empty(); const actions = this.getActions(); if ( actions.length === 0 ) { @@ -400,24 +426,6 @@ Controller.prototype.drawGutter = function () { } ); surfaceView.appendHighlights( this.$highlights, false ); - - this.align(); -}; - -Controller.prototype.align = function () { - if ( this.listener !== 'onDocumentChange' ) { - return; - } - const surfaceTop = this.surface.getView().$element.offset().top + 10; - this.getActions().forEach( ( action ) => { - if ( action.widget ) { - action.widget.$element.css( 'margin-top', '' ); - action.widget.$element.css( - 'margin-top', - Math.max( 0, action.top + surfaceTop - action.widget.$element.offset().top ) - ); - } - } ); }; Controller.prototype.scrollActionIntoView = function ( action ) { @@ -442,6 +450,23 @@ Controller.prototype.scrollActionIntoView = function ( action ) { } ); }; +Controller.prototype.closeDialog = function ( keepFocus ) { + if ( !keepFocus ) { + this.focusAction( undefined ); + } + const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); + return windowAction.close( 'fixedEditCheckDialog' ).closed.then( () => {}, () => {} ); +}; + +Controller.prototype.closeSidebars = function () { + const currentWindow = this.surface.getSidebarDialogs().getCurrentWindow(); + if ( currentWindow ) { + // .always is not chainable + return currentWindow.close().closed.then( () => {}, () => {} ); + } + return ve.createDeferred().resolve().promise(); +}; + module.exports = { Controller: Controller }; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index c619ab309a..a68dcf4a3f 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -5,6 +5,7 @@ mw.editcheck = { require( './EditCheckInspector.js' ); require( './EditCheckDialog.js' ); +require( './EditCheckGutterSidebarDialog.js' ); require( './EditCheckFactory.js' ); require( './EditCheckAction.js' ); require( './BaseEditCheck.js' ); diff --git a/extension.json b/extension.json index d591b9a2dd..3304cf49e6 100644 --- a/extension.json +++ b/extension.json @@ -626,6 +626,7 @@ "editcheck/modules/controller.js", "editcheck/modules/EditCheckInspector.js", "editcheck/modules/EditCheckDialog.js", + "editcheck/modules/EditCheckGutterSidebarDialog.js", "editcheck/modules/EditCheckFactory.js", "editcheck/modules/EditCheckAction.js", "editcheck/modules/BaseEditCheck.js", From 8cffbd63a618f7d9042384ebe10a14715c88cde2 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 13 Mar 2025 08:26:53 +0100 Subject: [PATCH 212/730] Localisation updates from https://translatewiki.net. Change-Id: I4a5ac84369544195a6a48e42da328b2a7a1e331a --- i18n/ve-wmf/az.json | 2 ++ i18n/ve-wmf/fi.json | 2 ++ i18n/ve-wmf/gl.json | 2 ++ i18n/ve-wmf/he.json | 2 ++ i18n/ve-wmf/tr.json | 2 ++ i18n/ve-wmf/zh-hant.json | 2 ++ 6 files changed, 12 insertions(+) diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index 92fe29475c..27911b88bc 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -16,6 +16,8 @@ "tag-editcheck-references-description": "EditCheck hesab edir ki, istinad lazım ola bilər", "tag-editcheck-references-activated": "Redaktə Yoxlanışı (istinadlar) aktivləşdirilib", "tag-editcheck-references-activated-description": "EditCheck istinad lazım olduğunu düşünür və interfeys göstərilir", + "tag-editcheck-references-shown": "Redaktə Yoxlanışı (istinadlar) göstərilib", + "tag-editcheck-references-shown-description": "EditCheck istinad lazım olduğunu düşünüb və interfeys göstərib", "tag-visualeditor": "Vizual redaktə", "tag-visualeditor-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktorun]] köməyi ilə edilib", "tag-visualeditor-needcheck": "Vizual redaktor: Yoxla", diff --git a/i18n/ve-wmf/fi.json b/i18n/ve-wmf/fi.json index fcd987c99c..ca20899f40 100644 --- a/i18n/ve-wmf/fi.json +++ b/i18n/ve-wmf/fi.json @@ -23,6 +23,8 @@ "tag-editcheck-references-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen", "tag-editcheck-references-activated": "Muokkaustarkistin (lähteet) aktivoitu", "tag-editcheck-references-activated-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen, ja käyttöliittymä näytettiin", + "tag-editcheck-references-shown": "Muokkaustarkistin (lähteet) näytetty", + "tag-editcheck-references-shown-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen, ja käyttöliittymä näytettiin", "tag-visualeditor": "Visuaalinen muokkaus", "tag-visualeditor-description": "Muutos tehtiin [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuaalisella muokkaimella]]", "tag-visualeditor-needcheck": "Visuaalinen muokkaus: Tarkista", diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index 690a6ea448..783a8622e4 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -13,6 +13,8 @@ "tag-editcheck-references-description": "EditCheck cre que cómpre unha referencia", "tag-editcheck-references-activated": "Verificación de modificacións (referencias) activada", "tag-editcheck-references-activated-description": "EditCheck cre que podería ser necesaria unha referencia e mostrouse a interface de usuario", + "tag-editcheck-references-shown": "Verificación de modificacións (referencias) amosada", + "tag-editcheck-references-shown-description": "EditCheck cre que podería ser necesaria unha referencia e mostrouse a interface de usuario", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Edición feita mediante o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: Comprobar", diff --git a/i18n/ve-wmf/he.json b/i18n/ve-wmf/he.json index 5245c5f311..d4f862db9f 100644 --- a/i18n/ve-wmf/he.json +++ b/i18n/ve-wmf/he.json @@ -22,6 +22,8 @@ "tag-editcheck-references-description": "מערכת בדיקת עריכה חושבת שאולי היה צורך בהערת שוליים", "tag-editcheck-references-activated": "מערכת בדיקת עריכה (הערות שוליים) הופעלה", "tag-editcheck-references-activated-description": "מערכת בדיקת עריכה חושבת שאולי נוספת הערת שוליים, וממשק המשתמש של זה הוצג", + "tag-editcheck-references-shown": "הוצגה מערכת בדיקת עריכה (הערות שוליים)", + "tag-editcheck-references-shown-description": "מערכת בדיקת העריכת חושבת שהייתה נחוצה הערת שוליים, וממשק המשתמש שלה הוצג", "tag-visualeditor": "עריכה חזותית", "tag-visualeditor-description": "עריכה שנעשתה באמצעות [[{{MediaWiki:visualeditor-descriptionpagelink}}|העורך החזותי]]", "tag-visualeditor-needcheck": "עריכה חזותית: נא לבדוק", diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index ba542fbba2..04040e6200 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -27,6 +27,8 @@ "tag-editcheck-references-description": "DüzenlemeKontrolü bir kaynağın gerekli olabileceğini düşünüyor", "tag-editcheck-references-activated": "Düzenleme Kontrolü (kaynakça) etkinleştirildi", "tag-editcheck-references-activated-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", + "tag-editcheck-references-shown": "Düzenleme Denetimi (kaynakça) gösterildi", + "tag-editcheck-references-shown-description": "DüzenlemeDenetimi bir kaynağın gerekebileceğini düşünüyor ve kullanıcı arayüzünün gösterildi", "tag-visualeditor": "Görsel düzenleme", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleyiciyi]] kullanarak düzenleyin", "tag-visualeditor-needcheck": "Görsel düzenleme: Doğrula", diff --git a/i18n/ve-wmf/zh-hant.json b/i18n/ve-wmf/zh-hant.json index 47770befab..2bfddc20a0 100644 --- a/i18n/ve-wmf/zh-hant.json +++ b/i18n/ve-wmf/zh-hant.json @@ -32,6 +32,8 @@ "tag-editcheck-references-description": "EditCheck 認為可能需要參考來源", "tag-editcheck-references-activated": "編輯檢查(參考資料)已啟用", "tag-editcheck-references-activated-description": "編輯檢查認為可能需要參考資料,並顯示了UI", + "tag-editcheck-references-shown": "編輯檢查(參考資料)已顯示", + "tag-editcheck-references-shown-description": "編輯檢查認為可能需要參考資料,並顯示了UI", "tag-visualeditor": "視覺化編輯", "tag-visualeditor-description": "使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|視覺化編輯器]]完成的編輯", "tag-visualeditor-needcheck": "視覺化編輯器:需要檢查", From 2a98f1c057ebebd49db042a76e253cd47ea2465e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 13 Mar 2025 12:34:01 +0000 Subject: [PATCH 213/730] Fix LESS parentheses Regressed with the upgrade to LESS.php 5.2.1 Change-Id: Ic2d76a7046170930fd100bd42e82eb8883f7da28 --- editcheck/modules/EditCheck.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 3cab4e3268..2a904609d1 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -216,7 +216,7 @@ .ve-ce-surface-selections-editCheck .ve-ce-surface-selection > div { mix-blend-mode: darken; // Adjust target colours to account for 50% opacity - background: ( #fce7fe - 0.8 * ( #fff ) ) / 0.2; + background: ( ( #fce7fe - 0.8 * ( #fff ) ) / 0.2 ); // border: 1px solid ( ( #d02aac - 0.8 * ( #fff ) ) / 0.2 ); border-radius: 2px; padding: 2px; @@ -229,7 +229,7 @@ > div { mix-blend-mode: darken; // Adjust target colours to account for 50% opacity - background: ( #fef6e7 - 0.8 * ( #fff ) ) / 0.2; + background: ( ( #fef6e7 - 0.8 * ( #fff ) ) / 0.2 ); // border: 1px solid ( ( #a66200 - 0.8 * ( #fff ) ) / 0.2 ); border-radius: 2px; padding: 2px; From e41a81a844909e4214a967348e5570d19f53693d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 14 Mar 2025 08:49:05 +0100 Subject: [PATCH 214/730] Localisation updates from https://translatewiki.net. Change-Id: If8343adfd0fb34d441599362d5995dab5634b241 --- i18n/ve-mw/cbk-zam.json | 2 +- i18n/ve-mw/ckb.json | 2 +- i18n/ve-mw/gl.json | 2 +- i18n/ve-mw/mwlanguagevariant/gl.json | 5 +++-- i18n/ve-mw/te.json | 2 +- i18n/ve-wmf/fr.json | 3 +++ i18n/ve-wmf/tsg.json | 9 +++++++++ 7 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 i18n/ve-wmf/tsg.json diff --git a/i18n/ve-mw/cbk-zam.json b/i18n/ve-mw/cbk-zam.json index 665e2b05ee..596cdffd4a 100644 --- a/i18n/ve-mw/cbk-zam.json +++ b/i18n/ve-mw/cbk-zam.json @@ -6,6 +6,6 @@ ] }, "visualeditor-ca-createsource": "Hace codigo", - "visualeditor-ca-editsource": "Revisa el codigo", + "visualeditor-ca-editsource": "Revisa con el codigo", "visualeditor-ca-editsource-section": "revisa codigo" } diff --git a/i18n/ve-mw/ckb.json b/i18n/ve-mw/ckb.json index 1cfae76771..1155b5cce4 100644 --- a/i18n/ve-mw/ckb.json +++ b/i18n/ve-mw/ckb.json @@ -198,7 +198,7 @@ "visualeditor-mweditmodeve-tool-unavailable": "دەستکاریکردنی دیداری لێرەدا بەردەست نییە", "visualeditor-mweditmodewt-popup-body": "ھەرکاتێک ویستت دەتوانیت بە کرتەکردن لەسەر ئەم وێنۆچکەیە بگەڕێیتەوە بۆ دەستکاریکردنی سەرچاوە.", "visualeditor-mweditmodewt-popup-title": "بۆ دەستکاریکردنی دیداری گوێزرایتەوە", - "visualeditor-mwgallerycontext-description": "$1 وێنە", + "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|وێنە}}", "visualeditor-mwgallerydialog-caption-field-label": "شرۆڤەی پێشانگا", "visualeditor-mwgallerydialog-card-images": "وێنەکان", "visualeditor-mwgallerydialog-card-options": "ھەڵبژاردەکان", diff --git a/i18n/ve-mw/gl.json b/i18n/ve-mw/gl.json index 96edc38858..868c34af63 100644 --- a/i18n/ve-mw/gl.json +++ b/i18n/ve-mw/gl.json @@ -114,7 +114,7 @@ "visualeditor-dialog-meta-categories-options": "Opcións", "visualeditor-dialog-meta-categories-section": "Categorías", "visualeditor-dialog-meta-categories-sortkey-label": "Ordenar esta páxina como se o seu nome fose", - "visualeditor-dialog-meta-languages-code-label": "Código da lingua", + "visualeditor-dialog-meta-languages-code-label": "Código de lingua", "visualeditor-dialog-meta-languages-label": "Linguas", "visualeditor-dialog-meta-languages-link-label": "Páxina ligada", "visualeditor-dialog-meta-languages-name-label": "Lingua", diff --git a/i18n/ve-mw/mwlanguagevariant/gl.json b/i18n/ve-mw/mwlanguagevariant/gl.json index dfa79bcffa..719385ad06 100644 --- a/i18n/ve-mw/mwlanguagevariant/gl.json +++ b/i18n/ve-mw/mwlanguagevariant/gl.json @@ -2,7 +2,8 @@ "@metadata": { "authors": [ "Banjo", - "Elisardojm" + "Elisardojm", + "Toliño" ] }, "visualeditor-mwlanguagevariant-disabled": "Conversión de variante desactivada", @@ -28,7 +29,7 @@ "visualeditor-mwlanguagevariantcontextitem-title-unknown": "Variante de lingua", "visualeditor-mwlanguagevariantinspector-disabled-placeholder": "Texto protexido contra a conversión en variante", "visualeditor-mwlanguagevariantinspector-filter-langs-label": "Linguas", - "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "Código da lingua", + "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "Código de lingua", "visualeditor-mwlanguagevariantinspector-filter-text-label": "Contidos", "visualeditor-mwlanguagevariantinspector-filter-text-placeholder": "Texto filtrado", "visualeditor-mwlanguagevariantinspector-oneway-add-button": "Engadir novo caso", diff --git a/i18n/ve-mw/te.json b/i18n/ve-mw/te.json index 6b6e794247..eb1c694397 100644 --- a/i18n/ve-mw/te.json +++ b/i18n/ve-mw/te.json @@ -73,7 +73,7 @@ "visualeditor-dialog-media-search-tab-search": "వెతుకు", "visualeditor-dialog-media-search-tab-upload": "ఎక్కించు", "visualeditor-dialog-media-size-section": "బొమ్మ పరిమాణం", - "visualeditor-dialog-media-size-section-help": "పేజీలో ఈ మీడియా అంశం ఎంత పెద్దదిగా కనబడాలో నిశ్చయించవచ్చు. దాదాపుగా అన్నివేళలా ఇది అప్రమెయం గానే ఉండాలి. ఎందుకంటే ఇతర పరిమాణాన్ని ఎంచుకుంటే అది పేజీ రూపాన్ని అడ్డుకుని పాఠకులకు అసౌకర్యం కలిగించవచ్చు.", + "visualeditor-dialog-media-size-section-help": "పేజీలో ఈ మీడియా అంశం ఎంత పెద్దదిగా కనబడాలో నిశ్చయించుకోవచ్చు. ఇది దాదాపుగా ఎప్పుడూ మామూలు (నార్మల్) గానే ఉండాలి. ఎందుకంటే వేరే పరిమాణాన్ని ఎంచుకుంటే అది పేజీ రూపాన్ని అడ్డుకుని పాఠకులకు అసౌకర్యం కలిగించవచ్చు.", "visualeditor-dialog-media-title": "మీడియా అమరికలు", "visualeditor-dialog-media-type-border": "సరిహద్దు రేఖ", "visualeditor-dialog-media-type-frame": "చట్రం", diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index edec88e242..7f8d21cea0 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -13,6 +13,7 @@ "Gomoko", "Guillom", "Hello71", + "JLTRY", "Jdforrester", "Jean-Frédéric", "Linedwell", @@ -44,6 +45,8 @@ "tag-editcheck-references-description": "EditCheck pense qu’une référence peut être nécessaire", "tag-editcheck-references-activated": "Vérification de modification (références) activé", "tag-editcheck-references-activated-description": "EditCheck pense qu’une référence peut être nécessaire, et l’IHM a été affichée", + "tag-editcheck-references-shown": "Vérification de modification (références) affichées", + "tag-editcheck-references-shown-description": "EditCheck pense qu’une référence peut être nécessaire, et l’IHM a été affichée", "tag-visualeditor": "Éditeur visuel", "tag-visualeditor-description": "Modification effectuée avec l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|éditeur visuel]]", "tag-visualeditor-needcheck": "Éditeur visuel : à vérifier", diff --git a/i18n/ve-wmf/tsg.json b/i18n/ve-wmf/tsg.json new file mode 100644 index 0000000000..9c5d293ac6 --- /dev/null +++ b/i18n/ve-wmf/tsg.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Zetareyy" + ] + }, + "tag-editcheck-references-shown": "Piyakita in Edit Check (manga agsuan)", + "tag-editcheck-references-shown-description": "Piyipikil sin EditCheck in kagunahan gana-gana in hambuuk agsuan, iban piyakita in UI." +} From 9d4dfe4259bd111ff7c1bc132223145dbe5deedb Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 14 Mar 2025 12:36:12 -0500 Subject: [PATCH 215/730] Edit check: set up the multi-check a/b test Bug: T384372 Change-Id: Ie7d75374da45a809d4b8a4df6d3dca8089594265 --- modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js index f06145c0a3..0c438e97d8 100644 --- a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js +++ b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js @@ -36,8 +36,8 @@ modules.push( 'ext.visualEditor.mwwikitext' ); } - // A/B test enrollment for edit check (T342930) - if ( conf.editCheckABTest ) { + // A/B test enrollment for edit check (T384372) + if ( conf.editCheck && conf.editCheckABTest ) { let inABTest; if ( mw.user.isAnon() ) { // can't just use mw.user.sessionId() because we need this to last across sessions @@ -48,9 +48,10 @@ } else { inABTest = mw.user.getId() % 2 === 1; } - conf.editCheck = inABTest; + // Test group gets edit check in multiple-checks mode + conf.editCheckSingle = !inABTest; // Communicate the bucket to instrumentation: - mw.config.set( 'wgVisualEditorEditCheckABTestBucket', '2024-02-editcheck-reference-' + ( inABTest ? 'test' : 'control' ) ); + mw.config.set( 'wgVisualEditorEditCheckABTestBucket', '2025-03-editcheck-multicheck-reference-' + ( inABTest ? 'test' : 'control' ) ); } const editCheck = conf.editCheck || !!url.searchParams.get( 'ecenable' ) || !!window.MWVE_FORCE_EDIT_CHECK_ENABLED; From 75cc65b1cb76fbe6c76f4b6b32d0bc01901172a4 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 17 Mar 2025 08:31:57 +0100 Subject: [PATCH 216/730] Localisation updates from https://translatewiki.net. Change-Id: I605e2643b78029ceb232b24db2f7e49399f4c73f --- i18n/ve-mw/ca.json | 3 +++ i18n/ve-mw/lv.json | 5 +++++ i18n/ve-mw/oc.json | 36 +++++++++++++++++++++++++++++++----- i18n/ve-mw/tsg.json | 9 +++++++++ i18n/ve-wmf/ia.json | 2 ++ i18n/ve-wmf/mk.json | 2 ++ 6 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 i18n/ve-mw/tsg.json diff --git a/i18n/ve-mw/ca.json b/i18n/ve-mw/ca.json index 3f40424933..02750efd69 100644 --- a/i18n/ve-mw/ca.json +++ b/i18n/ve-mw/ca.json @@ -12,6 +12,7 @@ "Galactic Thrasher", "Jmarchn", "Kippelboy", + "Lhanars", "Lluis Cat", "Maceleiro", "Macofe", @@ -157,9 +158,11 @@ "visualeditor-dialog-table-wikitable": "Amb estil (Wikitable)", "visualeditor-dialog-template-title": "Plantilla", "visualeditor-dialog-transclusion-template-title-nonexistent": "Aquesta plantilla no existeix.", + "visualeditor-dialog-transclusion-add-wikitext": "Afegeix el codi wiki", "visualeditor-dialog-transclusion-add-template": "Afegeix una plantilla", "visualeditor-dialog-transclusion-add-template-button": "Afegeix una plantilla", "visualeditor-dialog-transclusion-add-template-save": "Afegeix", + "visualeditor-dialog-transclusion-add-undocumented-param": "Afegeix un paràmetre no documentat.", "visualeditor-dialog-transclusion-close-confirmation-prompt": "Voleu tancar l'editor de plantilles? Perdreu tots els canvis. Aquesta acció no es pot desfer.", "visualeditor-dialog-transclusion-collapse-options": "Amaga les opcions", "visualeditor-dialog-transclusion-confirmation-discard": "Descarta les modificacions.", diff --git a/i18n/ve-mw/lv.json b/i18n/ve-mw/lv.json index 7944888c72..eca5742079 100644 --- a/i18n/ve-mw/lv.json +++ b/i18n/ve-mw/lv.json @@ -52,6 +52,7 @@ "visualeditor-changedesc-mwtransclusion": "Veidnes parametri izmainīti", "visualeditor-desc": "Vizuālais MediaWiki redaktors", "visualeditor-descriptionpagelink": "Project:Vizuālais redaktors", + "visualeditor-dialog-extension-abandonedit": "Vai tiešām vēlies aizvērt šo dialoglodziņu, nepielietojot izmaiņas?", "visualeditor-dialog-media-alttext-checkbox": "Izmantot parakstu kā alternatīvo tekstu", "visualeditor-dialog-media-alttext-section": "Alternatīvais teksts", "visualeditor-dialog-media-change-image": "Mainīt attēlu", @@ -169,6 +170,7 @@ "visualeditor-dialog-transclusion-filter-placeholder": "Atrast lauku", "visualeditor-dialog-transclusion-filter-show-all": "Rādīt visus", "visualeditor-dialog-transclusion-help-title": "Veidņu labošanas atbalsts", + "visualeditor-dialog-transclusion-help-message": "Veidnes nodrošina satura formatējumu. Šis redaktors kreisajā pusē parāda, kādas opcijas nodrošina veidne, un pēc tam šīm opcijām labajā pusē var pievienot vērtības.", "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates Palīdzība par veidņu labošanu]", "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions Īsinājumtaustiņi]", "visualeditor-dialog-transclusion-deprecated-parameter": "Novecojis lauks", @@ -176,8 +178,10 @@ "visualeditor-dialog-transclusion-loading": "Ielādē…", "visualeditor-dialog-transclusion-no-template-data-description": "Šai veidnei trūkst [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] informācija un tās parametri ir [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters automātiski ģenerēti]. Tā rezultātā veidnei un tās parametriem trūkst apraksta. [[$1|Veidnes lapā]] var būt pieejama papildu informācija.", "visualeditor-dialog-transclusion-no-template-description": "Veidnei \"$1\" vēl nav apraksta, bet informācija var būt atrodama [[$2|veidnes lapā]].", + "visualeditor-dialog-transclusion-no-template-parameters": "Šai veidnei nav dokumentētu parametru, un tā var būt paredzēta lietošanai bez tiem.", "visualeditor-dialog-transclusion-param-default": "Noklusējums: $1", "visualeditor-dialog-transclusion-param-example-long": "Piemērs: $1", + "visualeditor-dialog-transclusion-param-selection-aria-description": "Nospied atstarpes taustiņu, lai pievienotu vai noņemtu parametrus. Nospied Enter, lai pievienotu parametru un uzreiz labotu tā vērtību. Ja parametrs jau ir atlasīts, nospied taustiņu Enter, lai labotu vērtību.", "visualeditor-dialog-transclusion-param-selection-aria-label": "Parametri veidnē \"$1\"", "visualeditor-dialog-transclusion-param-undocumented": "(Nedokumentēts parametrs)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Atrast veidni", @@ -194,6 +198,7 @@ "visualeditor-dialog-transclusion-title-edit-transclusion": "Veidnes saturs", "visualeditor-dialog-transclusion-template-search": "Veidņu meklēšana", "visualeditor-dialog-transclusion-wikitext": "Vikiteksts", + "visualeditor-dialog-transclusion-wikitext-widget-aria": "Nospied atstarpes taustiņu, lai atlasītu vikiteksta elementu. Nospied Enter, lai atlasītu un rediģētu vikitekstu.", "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "Nospied Ctrl+Del, lai dzēstu vikiteksta elementu. Nospied Ctrl+Shift+bultiņas, lai pārvietotu elementu uz augšu vai leju.", "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "Nospied Ctrl+Del, lai dzēstu vikiteksta elementu.", "visualeditor-dialogbutton-media-tooltip": "Attēli un mediji", diff --git a/i18n/ve-mw/oc.json b/i18n/ve-mw/oc.json index f2e45cb931..f2a7e3c5ee 100644 --- a/i18n/ve-mw/oc.json +++ b/i18n/ve-mw/oc.json @@ -22,6 +22,7 @@ "tooltip-ca-editsource": "Modificar lo còdi font d'aquela pagina", "tooltip-ca-editsource-local": "Editar lo còdi font de la pagina de descripcion locala", "tooltip-ca-createsource": "Crear lo còdi font d'aquela pagina", + "tooltip-ca-createsource-local": "Crear lo còdi font de la pagina de descripcion locala", "visualeditor-advancedsettings-tool": "Paramètres avançats", "visualeditor-annotations-default-start": "Debuta de la gama anotada", "visualeditor-autosave-modified-prompt-accept": "Tornar editar", @@ -34,8 +35,9 @@ "visualeditor-ca-createlocaldescriptionsource": "Apondre una descripcion locala", "visualeditor-ca-createsource": "Crear lo còdi", "visualeditor-ca-editlocaldescriptionsource": "Modificar lo còdi de descripcion locala", - "visualeditor-ca-editsource": "Modificar lo còdi", - "visualeditor-ca-editsource-section": "Modificar lo còdi", + "visualeditor-ca-editsource": "modificar lo còdi", + "visualeditor-ca-editsource-section": "modificar lo còdi", + "visualeditor-ca-editsource-section-hint": "Editar lo còdi de la seccion seguenta: $1", "visualeditor-categories-tool": "Categorias", "visualeditor-changedesc-mwlanguagevariant": "Cambiament de varianta lingüistica", "visualeditor-desc": "Editor visual per MediaWiki", @@ -73,8 +75,10 @@ "visualeditor-dialog-media-upload": "Telecargar", "visualeditor-dialog-meta-advancedsettings-label": "Paramètres avançats", "visualeditor-dialog-meta-advancedsettings-section": "Paramètres avançats", + "visualeditor-dialog-meta-categories-addcategory-label": "Apondre una categoria a aquesta pagina", "visualeditor-dialog-meta-categories-category": "Categoria", "visualeditor-dialog-meta-categories-data-label": "Categorias", + "visualeditor-dialog-meta-categories-defaultsort-help": "Podètz modificar la manièra d'afichar aquesta pagina triada en categorias en definissent una nòva clau de classificacion. Aquò es sovent utilizat per far aparéisser las paginas de biografia ordenadas per nom de familha, mentre que dins lo títol lo prenom apareis d'en primièr.", "visualeditor-dialog-meta-categories-defaultsort-label": "Classar aquela pagina per manca coma", "visualeditor-dialog-meta-categories-hidden": "Aquesta categoria es marcada coma essent pas a afichar sus las paginas a las qualas es aponduda.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Categorias amagadas", @@ -102,12 +106,13 @@ "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Per defaut", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Non", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Òc", - "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Afichar un onglet sus aquesta pagina per apondre una seccion novèla", + "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Afichar un onglet sus aquesta pagina per apondre una seccion nòva", + "visualeditor-dialog-meta-settings-noeditsection-help": "Podètz evitar que los ligams d'edicion apareisson al costat de cada seccion dins de cases insolits ont aquò es apropriat.", "visualeditor-dialog-meta-settings-noeditsection-label": "Desactivar los ligams de modificacion prèp de cada títol sus aquesta pagina.", "visualeditor-dialog-meta-settings-nogallery-label": "Desactivar la galariá", "visualeditor-dialog-meta-settings-redirect-label": "Redirigir aquesta pagina cap a", "visualeditor-dialog-meta-settings-redirect-placeholder": "Pagina cibla per la redireccion", - "visualeditor-dialog-meta-settings-redirect-staticlabel": "Empachar aquesta redireccion d’èsser mesa a jorn quand la pagina cibla es desplaçada.", + "visualeditor-dialog-meta-settings-redirect-staticlabel": "Evitar aquesta redireccion d’èsser mesa a jorn quand la pagina cibla es desplaçada.", "visualeditor-dialog-meta-settings-section": "Paramètres de la pagina", "visualeditor-dialog-meta-settings-toc-default": "Se necessari", "visualeditor-dialog-meta-settings-toc-disable": "Pas jamai", @@ -117,7 +122,9 @@ "visualeditor-dialog-table-sortable": "Triable", "visualeditor-dialog-table-wikitable": "Amb estil (Wikitable)", "visualeditor-dialog-template-title": "Modèl", + "visualeditor-dialog-transclusion-add-wikitext": "Ajustar lo còdi wiki", "visualeditor-dialog-transclusion-add-template": "Apondre lo modèl", + "visualeditor-dialog-transclusion-add-undocumented-param": "Ajustar un paramètre non documentat.", "visualeditor-dialog-transclusion-collapse-options": "Amagar las opcions", "visualeditor-dialog-transclusion-confirmation-reject": "Contunhar la modificacion", "visualeditor-dialog-transclusion-contextitem-description": "Generat a partir de : $1", @@ -125,17 +132,25 @@ "visualeditor-dialog-transclusion-filter-hide-unused": "Amagar los inutilizats", "visualeditor-dialog-transclusion-filter-no-match": "Recèrcas infructuosas", "visualeditor-dialog-transclusion-filter-placeholder": "Trobar lo camp", + "visualeditor-dialog-transclusion-help-title": "Ajuda d'edicion de modèls", + "visualeditor-dialog-transclusion-help-message": "Los modèls donan una forma al contengut. A esquèrra, l'editor mòstra quinas opcions ofrisson los modèls e a dreita se pòt afichar las valors.", + "visualeditor-dialog-transclusion-help-page-help": "[//https://www.mediawiki.org/wiki/Help:VisualEditor/User_guide/ca#Editar_plantilles Ajuda d'edicion de modèls]", + "visualeditor-dialog-transclusion-help-page-shortcuts": "[//https://www.mediawiki.org/wiki/VisualEditor/Portal/Keyboard_shortcuts/ca#Template_editor_dialog_shortcuts_and_keyboard_interactions Acòrchis de clavièr]", "visualeditor-dialog-transclusion-deprecated-parameter": "Camp obsolèt", "visualeditor-dialog-transclusion-deprecated-parameter-description": "Lo camp es obsolèt. $1", "visualeditor-dialog-transclusion-loading": "Cargament...", + "visualeditor-dialog-transclusion-multipart-message": "Sètz vam de modificar un modèl e al mens una de las partidas del [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content contengut associat] (còdi wiki o modèls suplementairs).", "visualeditor-dialog-transclusion-no-template-data-description": "Aquel modèl non possedís de [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] e sos paramètres son estats generats [[mw:Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters|automaticament]]. Aital, i pòt aver una descripcion dins la pagina del modèl.", "visualeditor-dialog-transclusion-no-template-description": "Lo modèl «$1» non ten encara de descripcion, pasmens i pòt aver d'informacions complementàrias sus la [[$2|pagina del modèl]].", + "visualeditor-dialog-transclusion-no-template-parameters": "Aquel modèl non possedís cap de paramètres documentats e pòt èsser utilizat sens.", "visualeditor-dialog-transclusion-param-default": "Per defaut : $1", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Trobatz un modèl", "visualeditor-dialog-transclusion-required-parameter": "Camp obligatòri", "visualeditor-dialog-transclusion-required-parameter-description": "Lo camp es obligatòri.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Retorn", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Contunhar malgrat tot", "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Camp obligatòri mancant|Camps obligatòris mancants}}", + "visualeditor-dialog-transclusion-title-insert-template": "Inserir un modèl", "visualeditor-dialog-transclusion-template-search": "Recèrca de modèl", "visualeditor-dialog-transclusion-template-search-help": "Trobatz lo modèl que desiratz inserir en o recercant amb un mot-clau que l'identifica. Amb l'editor visual, la recèrca es mai susceptibla d'èsser en mesura d'identificar los modèls comportant una descripcion.", "visualeditor-dialogbutton-media-tooltip": "Supòrt", @@ -164,6 +179,7 @@ "visualeditor-linkinspector-educationpopup-text": "Ligar los mots importants a d’autres articles del wiki o quitament a d’autres sites web. Aquò ajudarà los lectors a comprene lo contèxte.", "visualeditor-linkinspector-educationpopup-title": "Ligams", "visualeditor-linkinspector-illegal-title": "Títol de pagina incorrècte", + "visualeditor-linkinspector-invalid-external": "Inserir una URL complèta, coma ara https://example.org", "visualeditor-linknodeinspector-add-label": "Apondre un libellat", "visualeditor-linknodeinspector-title": "Ligam simple", "visualeditor-magiclinknodeinspector-convert-link": "Convertir en ligam simple", @@ -182,13 +198,23 @@ "visualeditor-mweditmodeve-showagain": "Afichar pas mai aqueste messatge", "visualeditor-mweditmodewt-popup-body": "Podètz tornar a l’edicion de la font a tot moment en clicant sus aquesta icòna.", "visualeditor-mweditmodewt-popup-title": "Sètz passat a l'edicion visuala", + "visualeditor-mwgallerydialog-caption-field-label": "Títol de la galariá", "visualeditor-mwgallerydialog-card-images": "Imatges", "visualeditor-mwgallerydialog-card-options": "Opcions", + "visualeditor-mwgallerydialog-classes-field-label": "Classas CSS", + "visualeditor-mwgallerydialog-empty-gallery-message": "La galariá es vuèja.", + "visualeditor-mwgallerydialog-heights-field-label": "Auçada de l'imatge", + "visualeditor-mwgallerydialog-mode-field-label": "Mòde d'afichatge", + "visualeditor-mwgallerydialog-perrow-field-label": "Imatges per linha", "visualeditor-mwgallerydialog-remove-button-label": "Suprimir l'imatge", "visualeditor-mwgallerydialog-search-button-label": "Apondre un imatge novèl", + "visualeditor-mwgallerydialog-show-filename-field-label": "Mostrar los noms de fichièr", "visualeditor-mwgallerydialog-styles-field-label": "Estils CSS", "visualeditor-mwgallerydialog-title": "Galariá", + "visualeditor-mwgallerydialog-widths-field-label": "Largor de l'imatge", "visualeditor-mwsignature-tool": "Vòstra signatura", + "visualeditor-preference-visualeditor": "Activar l'editor visual", + "visualeditor-preference-newwikitexteditor-enable": "Utilizar lo mòde wikitext dins l'editor visual, en plaça d'un editor de wikitext diferent", "visualeditor-preference-tabs": "Onglets de modificacion:", "visualeditor-preference-tabs-multi-tab": "Afichar los dos onglets de modificacion", "visualeditor-preference-tabs-prefer-wt": "Totjorn utilizar l’editor en mòde font", @@ -210,7 +236,7 @@ "visualeditor-savedialog-title-preview": "Revision de vòstras modificacions", "visualeditor-savedialog-title-review": "Repassar vòstras modificacions", "visualeditor-savedialog-title-save": "Enregistrar vòstras modificacions", - "visualeditor-section-body-placeholder": "Seccion novèla", + "visualeditor-section-body-placeholder": "Seccion nòva", "visualeditor-section-title-placeholder": "Subjècte", "visualeditor-settings-tool": "Paramètres de la pagina", "visualeditor-special-characters-group-other": "Utilizat sovent", diff --git a/i18n/ve-mw/tsg.json b/i18n/ve-mw/tsg.json new file mode 100644 index 0000000000..2309901a08 --- /dev/null +++ b/i18n/ve-mw/tsg.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Zetareyy" + ] + }, + "visualeditor-ca-editsource": "Ba'guhun in papuun", + "visualeditor-ca-editsource-section": "ba'guhun in papuun" +} diff --git a/i18n/ve-wmf/ia.json b/i18n/ve-wmf/ia.json index 021b848989..72cf7822cd 100644 --- a/i18n/ve-wmf/ia.json +++ b/i18n/ve-wmf/ia.json @@ -9,6 +9,8 @@ "tag-editcheck-references-description": "EditCheck pensa que un referentia pote esser necessari", "tag-editcheck-references-activated": "Verification de modification (referentias) activate", "tag-editcheck-references-activated-description": "EditCheck pensa que un referentia poterea haber essite necessari, e le interfacie de usator graphic ha essite monstrate", + "tag-editcheck-references-shown": "Verification de modification (referentias) monstrate", + "tag-editcheck-references-shown-description": "EditCheck pensa que un referentia poterea haber essite necessari, e le interfacie de usator graphic ha essite monstrate", "tag-visualeditor": "Modification visual", "tag-visualeditor-description": "Modification facite con le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: a verificar", diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index 4fe914a165..8326857d25 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -13,6 +13,8 @@ "tag-editcheck-references-description": "EditCheck мисли дека треба навод", "tag-editcheck-references-activated": "Вклучена проверката на уредувања (наводи)", "tag-editcheck-references-activated-description": "Проверката на уредувања смета дека може да треба навод, и се покажа корисничкиот посредник", + "tag-editcheck-references-shown": "Прикажана проверка на уредување (наводи)", + "tag-editcheck-references-shown-description": "Проверката на уредувања смета дека може да треба навод, и се покажа корисничкиот посредник", "tag-visualeditor": "Нагледно уредување", "tag-visualeditor-description": "Уредување направено со [[{{MediaWiki:visualeditor-descriptionpagelink}}|нагледниот уредник]]", "tag-visualeditor-needcheck": "Нагледен уредник: Проверка", From 671beac493f51e16aadbd7b18085d158ed68aa02 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 17 Mar 2025 11:08:16 +0000 Subject: [PATCH 217/730] MWNoticesPopupTool: Fix setting of title attribute The getTitle method was never called due to an upstream bug in OOUI. With that bug about to be fixed, we've noticed that getTitle is broken, so just set the title in #setNotices. Change-Id: Ieaa59750f310e858144590fda205081e624b61d9 --- modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js b/modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js index e9de79178a..50c14bf24b 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWPopupTool.js @@ -107,10 +107,13 @@ ve.ui.MWNoticesPopupTool.static.autoAddToCatchall = false; ve.ui.MWNoticesPopupTool.prototype.setNotices = function ( notices ) { const count = notices.length; - this.popup.setLabel( ve.msg( + const noticeMsg = ve.msg( 'visualeditor-editnotices-tool', mw.language.convertNumber( count ) - ) ); + ); + + this.popup.setLabel( noticeMsg ); + this.setTitle( noticeMsg ); if ( this.$items ) { this.$items.remove(); @@ -141,18 +144,6 @@ ve.ui.MWNoticesPopupTool.prototype.setNotices = function ( notices ) { ve.track( 'activity.notices', { action: 'show' } ); }; -/** - * Get the tool title. - * - * @inheritdoc - */ -ve.ui.MWNoticesPopupTool.prototype.getTitle = function () { - const items = this.toolbar.getTarget().getEditNotices(); - - // eslint-disable-next-line mediawiki/msg-doc - return ve.msg( this.constructor.static.title, items.length ); -}; - /* Registration */ ve.ui.toolFactory.register( ve.ui.MWNoticesPopupTool ); From 0ed39b4d6c80f3b33a28c468a2b1d137e1a3c21d Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 13 Mar 2025 12:11:29 -0500 Subject: [PATCH 218/730] Edit check: mobile mid-edit clean up to avoid reflows and focus loss Bug: T383955 Change-Id: I0c64e6ca2885cad5afa56e1a03ddf4351b15a0a6 --- editcheck/modules/EditCheck.less | 55 +++++++++++-------- .../modules/EditCheckGutterSidebarDialog.js | 3 + .../ve.init.mw.MobileArticleTarget.less | 7 +++ 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 721e5c4354..c5b40ecd72 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -208,22 +208,8 @@ /* Mobile sidebar */ -.ve-ui-editCheck-gutter { - display: none; -} - .ve-ui-editCheck-gutter-active { - div.ve-init-mw-target-surface.ve-ui-surface-visual { - // margin-right: 52px; - } - div.ve-ui-editCheckGutterSidebarDialog { - // display: block; - // position: absolute; - // top: 0; - // right: -52px; - // width: 44px; - // height: 100%; background-color: @background-color-interactive-subtle; .ve-ui-editCheck-gutter-action { @@ -275,19 +261,42 @@ } } -.ve-editcheck-available .mw-mf { - .ve-init-mw-target-surface { - // 16 + (44 / 2) - margin: 0 38px; - } +.ve-editcheck-available .mw-mf .ve-ce-surface { + margin-right: 16px; +} + +@media all and ( max-width: 993.4px ) { + .ve-editcheck-available .mw-mf { + .ve-init-mw-target-surface { + margin: 0 0 1em; + } - .ve-ui-editCheck-sidebar-active .ve-init-mw-target-surface { - margin: 0 44px 0 16px; + .ve-ce-surface { + // Stop reflow during the transition + max-width: calc( 100% - (44px + 16px + 16px) ); + margin: 0 16px 0 32px; + } - .ve-ui-sidebarDialogWindowManager { + .ve-ui-editCheck-sidebar-active .ve-ce-surface { margin-left: 16px; - margin-right: -44px; } + + .ve-ui-editCheck-sidebar-active .ve-init-mw-target-surface { + margin: 0; + } + } +} + +@media all and ( min-width: 993.4px ) and ( max-width: @min-width-breakpoint-desktop ) { + .mw-mf .ve-ui-editCheck-sidebar-active .ve-ui-sidebarDialogWindowManager { + margin-right: -44px; + } +} + +@media all and ( min-width: @min-width-breakpoint-desktop ) { + /* stylelint-disable-next-line selector-class-pattern */ + .mw-mf .ve-ui-editCheck-sidebar-active .overlay-content { + width: auto; } } diff --git a/editcheck/modules/EditCheckGutterSidebarDialog.js b/editcheck/modules/EditCheckGutterSidebarDialog.js index 5728f19c8b..810ca13376 100644 --- a/editcheck/modules/EditCheckGutterSidebarDialog.js +++ b/editcheck/modules/EditCheckGutterSidebarDialog.js @@ -17,6 +17,9 @@ ve.ui.GutterSidebarEditCheckDialog.static.name = 'gutterSidebarEditCheckDialog'; ve.ui.GutterSidebarEditCheckDialog.static.size = 'gutter'; +// The gutter should never steal the focus, as it's intended to be a discreet notification +ve.ui.GutterSidebarEditCheckDialog.static.activeSurface = true; + ve.ui.GutterSidebarEditCheckDialog.prototype.initialize = function () { // Parent method ve.ui.GutterSidebarEditCheckDialog.super.prototype.initialize.call( this ); diff --git a/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less b/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less index 6aed63fec2..cd8c1fa841 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less +++ b/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less @@ -89,6 +89,13 @@ } } +@media all and ( min-width: @min-width-breakpoint-desktop ) { + .ve-init-mw-target-surface { + // This should be in-sync with .overlay-header rule in MinervaNeue's overlay.less + max-width: calc( 993.3px + ( 2 * 1em ) ); + } +} + .ve-ui-debugBar { margin: 0 -16px; padding: 0 16px; From 0bb38927491c2572b76ff5e6c40374d9fc00aaf4 Mon Sep 17 00:00:00 2001 From: David Chan Date: Fri, 21 Feb 2025 14:38:54 +0000 Subject: [PATCH 219/730] Encode U+0338 as a html numeric character reference Otherwise, addValue can break html tags when it converts to Unicode Normalization Form C. Bug: T382756 Change-Id: I201ab092edcfd382cea829d92f5b64ab9f3cf77b --- includes/ApiVisualEditor.php | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/includes/ApiVisualEditor.php b/includes/ApiVisualEditor.php index 44aad1cb14..d421ef73af 100644 --- a/includes/ApiVisualEditor.php +++ b/includes/ApiVisualEditor.php @@ -498,9 +498,40 @@ public function msg( $key, ...$params ) { break; } + if ( + is_array( $result ) && + isset( $result['content'] ) && + is_string( $result['content'] ) + ) { + // Protect content from being corrupted by conversion to Unicode NFC. + // Without this, MediaWiki::Api::ApiResult::addValue can break html tags. + // See T382756 + $result['content'] = $this->makeSafeHtmlForNfc( $result['content'] ); + } + $this->getResult()->addValue( null, $this->getModuleName(), $result ); } + /** + * Protect html-like content from being corrupted by conversion to Unicode NFC. + * + * Encodes U+0338 COMBINING LONG SOLIDUS OVERLAY as an html numeric character reference. + * Otherwise, conversion to Unicode NFC can break html tags by converting + * '>' + U+0338 to U+226F (NOT GREATER THAN), and + * '<' + U+0338 to U+226E (NOT LESS THAN) + * + * Note we cannot just search for those two combinations, because sequences of combining + * characters can get reordered, e.g. '>' + U+0339 + U+0338 will become U+226F + U+0339. + * See https://unicode.org/reports/tr15/ + * + * @param string $html + * @return string + */ + public static function makeSafeHtmlForNfc( string $html ) { + $html = str_replace( "\u{0338}", '̸', $html ); + return $html; + } + /** * Check if the configured allowed namespaces include the specified namespace * From 515663186e103e1b2e74b4ee7c7b113e82b0a759 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 18 Mar 2025 08:23:19 +0100 Subject: [PATCH 220/730] Localisation updates from https://translatewiki.net. Change-Id: Ifdd89593cdf57491271eb2f34d14fa8297e2ceff --- i18n/ve-mw/fi.json | 6 +++--- i18n/ve-wmf/br.json | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index b0c59575f7..99d844275a 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -155,7 +155,7 @@ "visualeditor-dialog-meta-settings-nocontentconvert-help": "Voit estää tämän sivun sisällön automaattisen muunnoksen toisiin kirjoitusjärjestelmiin.", "visualeditor-dialog-meta-settings-nocontentconvert-label": "Älä muunna sisältöä kielivarianttien välillä", "visualeditor-dialog-meta-settings-noeditsection-help": "Voit poistaa Muokkaa-linkit pääotsikoiden vierestä, jos se on jostain syystä tarpeellista.", - "visualeditor-dialog-meta-settings-noeditsection-label": "Poista tällä sivulla olevat Muokkaa-linkit kunkin otsikon vierestä", + "visualeditor-dialog-meta-settings-noeditsection-label": "Poista tällä sivulla olevat Muokkaa-linkit kunkin väliotsikon vierestä", "visualeditor-dialog-meta-settings-nogallery-help": "Voit estää tätä luokkaa näyttämästä siihen kuuluvia tiedostoja gallerian muodossa, jos sellainen olisi sopimatonta tässä tapauksessa.", "visualeditor-dialog-meta-settings-nogallery-label": "Poista galleria", "visualeditor-dialog-meta-settings-notitleconvert-help": "Voit estää tämän sivun otsikon automaattisen muunnoksen toisiin kirjoitusjärjestelmiin.", @@ -169,7 +169,7 @@ "visualeditor-dialog-meta-settings-toc-default": "Tarvittaessa", "visualeditor-dialog-meta-settings-toc-disable": "Ei koskaan", "visualeditor-dialog-meta-settings-toc-force": "Aina", - "visualeditor-dialog-meta-settings-toc-help": "Voit lisätä sisällysluettelon näkyviin sivulle, vaikka sivulla olisi vain neljä pääotsikkoa tai estää sen näkymisen kokonaan. Oletuksena sisällysluettelo lisätään sivulle automaattisesti, jos pääotsikoita on vähintään neljä.", + "visualeditor-dialog-meta-settings-toc-help": "Voit pakottaa sisällysluettelon näkyviin sivulle, vaikka sivulla olisi vain neljä väliotsikkoa tai estää sen näkymisen kokonaan. Oletuksena sisällysluettelo lisätään sivulle automaattisesti, kun väliotsikoita on vähintään neljä.", "visualeditor-dialog-meta-settings-toc-label": "Näytä sisällysluettelo", "visualeditor-dialog-meta-templatesused-noresults": "Mallineita ei löytynyt.", "visualeditor-dialog-meta-title": "Valinnat", @@ -258,7 +258,7 @@ "visualeditor-expandable-more": "Laajenna", "visualeditor-feedback-defaultmessage": "URL: $1", "visualeditor-formatdropdown-format-mw-heading1": "Sivun otsikko", - "visualeditor-formatdropdown-format-mw-heading2": "Otsikko", + "visualeditor-formatdropdown-format-mw-heading2": "Väliotsikko", "visualeditor-formatdropdown-format-mw-heading3": "Alaotsikko 1", "visualeditor-formatdropdown-format-mw-heading4": "Alaotsikko 2", "visualeditor-formatdropdown-format-mw-heading5": "Alaotsikko 3", diff --git a/i18n/ve-wmf/br.json b/i18n/ve-wmf/br.json index 3370d8cef7..8296208807 100644 --- a/i18n/ve-wmf/br.json +++ b/i18n/ve-wmf/br.json @@ -14,6 +14,8 @@ "tag-editcheck-references-description": "Hervez EditCheck e vefe ezhomm eus un daveenn", "tag-editcheck-references-activated": "Edit Check (daveoù) gweredekaet", "tag-editcheck-references-activated-description": "Hervez EditCheck e vefe ezhomm eus un daveenn, ha diskouezet eo bet an etrefas implijer", + "tag-editcheck-references-shown": "Edit Check (daveoù) diskouezet", + "tag-editcheck-references-shown-description": "Hervez EditCheck e vefe ezhomm eus un daveenn, ha diskouezet eo bet an etrefas implijer", "tag-visualeditor": "Gwelaozer", "tag-visualeditor-description": "Kemm graet gant ar [[{{MediaWiki:visualeditor-descriptionpagelink}}|gwelaozer]]", "tag-visualeditor-needcheck": "Gwelaozer: Da wiriañ", From e025c441c07c4e20ebf55d348bfd34c2b801d73c Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 19 Mar 2025 08:36:40 +0100 Subject: [PATCH 221/730] Localisation updates from https://translatewiki.net. Change-Id: I8eeccbf1eae33087b2b3f6c4f75cfd87cfcada46 --- editcheck/i18n/ms.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editcheck/i18n/ms.json b/editcheck/i18n/ms.json index 24a541c2a5..f16ee5309c 100644 --- a/editcheck/i18n/ms.json +++ b/editcheck/i18n/ms.json @@ -16,6 +16,9 @@ "editcheck-dialog-addref-success-notify": "Terima kasih kerana menambah sumber rujukan!", "editcheck-dialog-addref-title": "Tambah sumber rujukan", "editcheck-dialog-title": "Sebelum diterbitkan", + "editcheck-copyvio-title": "Kandungan yang ditampal", + "editcheck-copyvio-description": "Satu peraturan umum yang perlu diikut ialah: jangan salin teks daripada sumber lain. Penyalinan teks bulat-bulat biasanya melanggar hak cipta dan merupakan suatu aktiviti plagiarisme.", + "editcheck-review-title": "Semak perubahan", "tag-editcheck-reference-decline-common-knowledge": "Semak Suntingan (rujukan) ditolak (pengetahuan umum)", "tag-editcheck-reference-decline-common-knowledge-description": "Sumber rujukan SemakSuntingan ditolak kerana ia merupakan pengetahuan am", "tag-editcheck-reference-decline-irrelevant": "Semak Suntingan (rujukan) ditolak (tidak berkaitan)", From 736fe3f2e4a060c190a3a0e00811367379c433a2 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 19 Mar 2025 14:58:36 +0000 Subject: [PATCH 222/730] MWWikitextLinkAnnotationInspector: Improve external link behaviour * Use this.initialLabel which was since created upstream to support link label editing on mobile. * Ensure this.getInsertionData works by correctly setting this.isNew. * When dealing with external links behave more like upstream by inserting getInsertionData if shouldInsertText is true, then unconditionally annotating. This fixes inserting numbered links. Bug: T389361 Change-Id: Ie59cef83cca12eade9f0b67b24cc95f3562c8639 --- ...ve.ui.MWWikitextLinkAnnotationInspector.js | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js index 7c80aadfd0..d3c4bd54fb 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js @@ -123,20 +123,25 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getSetupProcess = function ( d this.initialSelection = fragment.getSelection(); this.fragment = fragment; - this.initialLabelText = this.fragment.getText(); + this.initialLabel = this.fragment.getText(); let title; if ( linkMatches ) { // Group 1 is the link target, group 2 is the label after | if present title = mw.Title.newFromText( linkMatches[ 1 ] ); - this.initialLabelText = linkMatches[ 2 ] || linkMatches[ 1 ]; + this.initialLabel = linkMatches[ 2 ] || linkMatches[ 1 ]; // HACK: Remove escaping probably added by this tool. // We should really do a full parse from wikitext to HTML if // we see any syntax - this.initialLabelText = this.initialLabelText.replace( /(\]{2,})<\/nowiki>/g, '$1' ); + this.initialLabel = this.initialLabel.replace( /(\]{2,})<\/nowiki>/g, '$1' ); } else { - title = mw.Title.newFromText( this.initialLabelText ); + title = mw.Title.newFromText( this.initialLabel ); } + + // We've skipped ve.ui.AnnotationInspector#getSetupProcess. Set isNew here so + // that getInsertionData works correctly. + this.isNew = !linkMatches; + if ( title ) { this.initialAnnotation = this.newInternalLinkAnnotationFromTitle( title ); } @@ -151,6 +156,8 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getSetupProcess = function ( d ); this.title.setLabel( inspectorTitle ).setTitle( inspectorTitle ); + this.labelInput.setValue( this.initialLabel ); + this.annotationInput.setReadOnly( this.isReadOnly() ); this.actions.setMode( this.getMode() ); @@ -173,21 +180,20 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function .first( () => { const wgNamespaceIds = mw.config.get( 'wgNamespaceIds' ), annotation = this.getAnnotation(), - fragment = this.getFragment(), - insertion = this.getInsertionText(); + fragment = this.getFragment(); - if ( data && data.action === 'done' && annotation ) { - const insert = this.initialSelection.isCollapsed() && insertion.length; - let labelText; - if ( insert ) { - fragment.insertContent( insertion ); - labelText = insertion; - } else { - labelText = this.initialLabelText; - } + const insertionText = this.getInsertionText(); + const insertText = this.initialSelection.isCollapsed() && insertionText.length; + if ( data && data.action === 'done' && annotation ) { // Build internal links locally if ( annotation instanceof ve.dm.MWInternalLinkAnnotation ) { + let labelText; + if ( insertText ) { + labelText = insertionText; + } else { + labelText = this.initialLabel; + } if ( labelText.indexOf( ']]' ) !== -1 ) { labelText = labelText.replace( /(\]{2,})/g, '$1' ); } @@ -214,6 +220,10 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function fragment.insertContent( '[[' + prefix + targetText + labelText + ']]' ); } else { + const replace = !this.isNew; + if ( replace || this.shouldInsertText() ) { + fragment.insertContent( this.getInsertionData() ); + } // Annotating the surface will send the content to Parsoid before // it is inserted into the wikitext document. It is slower but it // will handle all cases. @@ -223,7 +233,7 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function // Fix selection after annotating is complete fragment.getPending().then( () => { - if ( insert ) { + if ( insertText ) { fragment.collapseToEnd().select(); } else { fragment.select(); From 0650c86ad4c2dd10b26848b04ba9a8364ba85391 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 17 Mar 2025 18:10:38 -0500 Subject: [PATCH 223/730] Edit check: tweak the experimental check config to allow selective loads Change-Id: If02c62a739ead40676d75630475af47614fd3e18 --- editcheck/includes/Hooks.php | 6 +++++- extension.json | 2 +- includes/Hooks.php | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/editcheck/includes/Hooks.php b/editcheck/includes/Hooks.php index e391ec81f5..9442802351 100644 --- a/editcheck/includes/Hooks.php +++ b/editcheck/includes/Hooks.php @@ -24,13 +24,17 @@ class Hooks implements public function onResourceLoaderRegisterModules( ResourceLoader $resourceLoader ): void { $services = MediaWikiServices::getInstance(); $veConfig = $services->getConfigFactory()->makeConfig( 'visualeditor' ); + $experimentalConfig = $veConfig->get( 'VisualEditorEditCheckLoadExperimental' ); - if ( !$veConfig->get( 'VisualEditorEditCheckLoadExperimental' ) ) { + if ( !$experimentalConfig ) { return; } $experimentalDir = dirname( __DIR__ ) . '/modules/editchecks/experimental'; $files = array_diff( scandir( $experimentalDir ), [ '..', '.' ] ); + if ( is_array( $experimentalConfig ) ) { + $files = array_intersect( $files, $experimentalConfig ); + } $veResourceTemplate = [ 'localBasePath' => $experimentalDir, 'remoteExtPath' => 'VisualEditor', diff --git a/extension.json b/extension.json index 3304cf49e6..f6b8c93b27 100644 --- a/extension.json +++ b/extension.json @@ -142,7 +142,7 @@ }, "VisualEditorEditCheckLoadExperimental": { "value": false, - "description": "Load experimental edit checks" + "description": "Load experimental edit checks from the `editchecks/experimental` directory. Can be `false` to not load anything, `true` to load everything, or an array of filenames to load only those checks" }, "VisualEditorEditCheckABTest": { "value": false, diff --git a/includes/Hooks.php b/includes/Hooks.php index f568d00783..5f5d0306e8 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -1164,7 +1164,7 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf 'editCheckTagging' => $veConfig->get( 'VisualEditorEditCheckTagging' ), 'editCheck' => $veConfig->get( 'VisualEditorEditCheck' ), 'editCheckSingle' => $veConfig->get( 'VisualEditorEditCheckSingleCheckMode' ), - 'editCheckExperimental' => $veConfig->get( 'VisualEditorEditCheckLoadExperimental' ), + 'editCheckExperimental' => (bool)$veConfig->get( 'VisualEditorEditCheckLoadExperimental' ), 'editCheckABTest' => $veConfig->get( 'VisualEditorEditCheckABTest' ), 'editCheckReliabilityAvailable' => ApiEditCheckReferenceUrl::isAvailable(), 'namespacesWithSubpages' => $namespacesWithSubpagesEnabled, From 2ba8ddf933ce534b1837d1700341f835dab02582 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 19 Mar 2025 12:51:18 -0500 Subject: [PATCH 224/730] Edit check: return early in debounced methods if surface is gone Bug: T389394 Change-Id: I1839cace02e9d34cd0681fb8cf8491f0785f345a --- editcheck/modules/controller.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 7a788d9a07..26c0b1d7d9 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -54,6 +54,7 @@ Controller.prototype.setup = function () { this.surface.on( 'destroy', () => { this.off( 'actionsUpdated' ); + this.$highlights.empty(); this.surface = null; this.actionsByListener = {}; @@ -138,6 +139,10 @@ Controller.prototype.getActions = function ( listener ) { }; Controller.prototype.onSelect = function ( selection ) { + if ( !this.surface ) { + // This is debounced, and could potentially be called after teardown + return; + } if ( OO.ui.isMobile() ) { // On mobile we want to close the drawer if the keyboard is shown if ( this.surface.getView().hasNativeCursorSelection() ) { @@ -160,12 +165,21 @@ Controller.prototype.onSelect = function ( selection ) { }; Controller.prototype.onContextChange = function () { + if ( !this.surface ) { + // This is debounced, and could potentially be called after teardown + return; + } if ( this.surface.getContext().isVisible() ) { this.closeDialog(); } }; Controller.prototype.onPosition = function () { + if ( !this.surface ) { + // This is debounced, and could potentially be called after teardown + return; + } + this.updatePositions(); if ( this.getActions().length && this.focused && this.surface.getView().reviewMode ) { @@ -174,6 +188,10 @@ Controller.prototype.onPosition = function () { }; Controller.prototype.onDocumentChange = function () { + if ( !this.surface ) { + // This is debounced, and could potentially be called after teardown + return; + } if ( this.listener !== 'onBeforeSave' ) { this.updateForListener( 'onDocumentChange' ); } From 82604bcecc631d49e6d57c64b0e18c2ad71ebd7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Wed, 19 Mar 2025 21:12:56 +0100 Subject: [PATCH 225/730] Update VE core submodule to master (cf81e3d3f) New changes: f0b717a74 Add tests for TableSelection#getSelectionBoundingRect 6d89aec4a DesktopContext: Clip to the surface view ba550d799 Debug node attributes f58313619 ve.dm.Convert: Move variable declarations inline b27d9e0e5 Add unit tests for del/ins annotations 683cb9981 Introduce ve.dm.DiffAnnotation 23e1f5402 Add broken test for comparable link change 93219a170 Use simple annotation comparison in preview and diffs Localisation Updates: c3f939a52 Added files: - src/dm/annotations/ve.dm.DiffAnnotation.js Bug: T344927 Bug: T388803 Change-Id: Ic5764e05b28b745deb72ca304040fb0f8e0d2e29 --- extension.json | 1 + lib/ve | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/extension.json b/extension.json index 3304cf49e6..afdb6678fd 100644 --- a/extension.json +++ b/extension.json @@ -959,6 +959,7 @@ "lib/ve/src/dm/annotations/ve.dm.DatetimeAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.DefinitionAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.DeleteAnnotation.js", + "lib/ve/src/dm/annotations/ve.dm.DiffAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.FontAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.HighlightAnnotation.js", "lib/ve/src/dm/annotations/ve.dm.InsertAnnotation.js", diff --git a/lib/ve b/lib/ve index 9c1b1850f4..cf81e3d3f6 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 9c1b1850f40064966dd9f2b4d5590ccf7ac3e7dc +Subproject commit cf81e3d3f6cc89b8f60a46c61b4449756656491a From 2d10eda12f833ddf3629e5a8393c5d9e6e59b9d6 Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Wed, 19 Mar 2025 20:36:08 -0400 Subject: [PATCH 226/730] build: Update MediaWiki requirement to 1.44 All extensions in the MediaWiki tarball are expected to track MediaWiki's release directly. Change-Id: Idf32ccb79526a2dc83b5a35c4d055deb9faf02d1 --- extension.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/extension.json b/extension.json index 3304cf49e6..58899be8d4 100644 --- a/extension.json +++ b/extension.json @@ -23,7 +23,7 @@ "license-name": "MIT", "type": "editor", "requires": { - "MediaWiki": ">= 1.43" + "MediaWiki": ">= 1.44" }, "callback": "MediaWiki\\Extension\\VisualEditor\\Hooks::onRegistration", "ServiceWiringFiles": [ @@ -221,7 +221,10 @@ "RecentChange_save": "VisualEditorHooks", "RedirectSpecialArticleRedirectParams": "VisualEditorHooks", "ResourceLoaderGetConfigVars": "VisualEditorHooks", - "ResourceLoaderRegisterModules": [ "VisualEditorHooks", "EditCheckHooks" ], + "ResourceLoaderRegisterModules": [ + "VisualEditorHooks", + "EditCheckHooks" + ], "SkinEditSectionLinks": "VisualEditorHooks", "SkinTemplateNavigation::Universal": "VisualEditorHooks", "UserLoggedIn": "VisualEditorHooks" From 88216cdd96cbab82b2fb23dcf62bd20e795ddcaf Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 20 Mar 2025 08:25:44 +0100 Subject: [PATCH 227/730] Localisation updates from https://translatewiki.net. Change-Id: I3c2a713f192a262099f568a9bee9f4e93542b2c0 --- i18n/ve-wmf/nl.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/i18n/ve-wmf/nl.json b/i18n/ve-wmf/nl.json index 12e1e36af4..06424c9849 100644 --- a/i18n/ve-wmf/nl.json +++ b/i18n/ve-wmf/nl.json @@ -28,6 +28,8 @@ "tag-editcheck-references-description": "EditCheck denkt dat er een referentie nodig kan zijn", "tag-editcheck-references-activated": "EditCheck (referenties) geactiveerd", "tag-editcheck-references-activated-description": "EditCheck denkt dat er een referentie nodig kan zijn, en de gebruikersinterface is weergegeven", + "tag-editcheck-references-shown": "EditCheck (referenties) weergegeven", + "tag-editcheck-references-shown-description": "EditCheck denkt dat er een referentie nodig kan zijn, en de gebruikersinterface is weergegeven", "tag-visualeditor": "Visuele tekstverwerker", "tag-visualeditor-description": "Bewerking gedaan met de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwerker]]", "tag-visualeditor-needcheck": "Visuele tekstverwerker: nakijken", From 8cf8bfd9a3543cea4ac5df797711595b2e39aebf Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 20 Mar 2025 12:32:39 +0000 Subject: [PATCH 228/730] Update VE core submodule to master (29ebd972e) New changes: c18a1c1f8 SelectionManager: Update selections using SurfaceFragments Bug: T387456 Change-Id: Ic619b6f9f27aa4322eec6ae6258c0f66d9a07c9e --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index cf81e3d3f6..29ebd972e4 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit cf81e3d3f6cc89b8f60a46c61b4449756656491a +Subproject commit 29ebd972e4ba90b9198cab157e923684295766d1 From c38105df260168a9f4d597bc434b55ac225deb2c Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 20 Mar 2025 19:31:07 -0500 Subject: [PATCH 229/730] Edit check: gate setup behind checking whether checks are possible This will stop people who do not qualify to ever be shown an edit check from getting any check-related UI adjustments. Change-Id: I3a5723b764d85735bde80317d1c5964415c7e94a --- editcheck/modules/controller.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 26c0b1d7d9..2218a94a31 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -37,6 +37,9 @@ Controller.prototype.setup = function () { // has references added. As such, disable in source mode for now. return; } + if ( !this.editChecksArePossible() ) { + return; + } // ideally this would happen slightly earlier: document.documentElement.classList.add( 've-editcheck-available' ); @@ -79,6 +82,17 @@ Controller.prototype.setup = function () { } ); }; +Controller.prototype.editChecksArePossible = function () { + return [ 'onBeforeSave', 'onDocumentChange' ].some( + ( listener ) => mw.editcheck.editCheckFactory.getNamesByListener( listener ).some( + ( checkName ) => { + const check = mw.editcheck.editCheckFactory.create( checkName, this, mw.editcheck.config[ checkName ] ); + return check.canBeShown(); + } + ) + ); +}; + Controller.prototype.updatePositions = function () { this.drawSelections(); this.drawGutter(); From 36a62412d853913e664255d848fc3fde6c8f6a41 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 21 Mar 2025 08:54:48 +0100 Subject: [PATCH 230/730] Localisation updates from https://translatewiki.net. Change-Id: I0e822490292080a41788d0327f556952f62b19cc --- i18n/ve-mw/nan-hans.json | 1 + i18n/ve-mw/tsg.json | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/nan-hans.json b/i18n/ve-mw/nan-hans.json index 09e2987356..b3e4567b9d 100644 --- a/i18n/ve-mw/nan-hans.json +++ b/i18n/ve-mw/nan-hans.json @@ -4,6 +4,7 @@ "SupaplexTW" ] }, + "visualeditor-ca-createlocaldescriptionsource": "加这搭的说明原始码", "visualeditor-ca-createsource": "建立原始码", "visualeditor-ca-editsource": "改源代码", "visualeditor-ca-editsource-section": "改原始码", diff --git a/i18n/ve-mw/tsg.json b/i18n/ve-mw/tsg.json index 2309901a08..ea0c4038cf 100644 --- a/i18n/ve-mw/tsg.json +++ b/i18n/ve-mw/tsg.json @@ -4,6 +4,6 @@ "Zetareyy" ] }, - "visualeditor-ca-editsource": "Ba'guhun in papuun", - "visualeditor-ca-editsource-section": "ba'guhun in papuun" + "visualeditor-ca-editsource": "Ba'guhun in puunan", + "visualeditor-ca-editsource-section": "ba'guhun in puunan" } From 2da4c12b52837571ef7854927e02376aa900ca14 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 21 Mar 2025 13:22:08 +0000 Subject: [PATCH 231/730] Rename ve.ce.Surface.test -> ve.ce.ClipboardHandler.test We only test clipboard functionality and this has been moved to ClipboardHandler, so this matches the separation we have upstream. Change-Id: I7d43d80c50a60b4b96bc559aea4491de85230d10 --- extension.json | 2 +- .../{ve.ce.Surface.test.js => ve.ce.ClipboardHandler.test.js} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename modules/ve-mw/tests/ce/{ve.ce.Surface.test.js => ve.ce.ClipboardHandler.test.js} (96%) diff --git a/extension.json b/extension.json index afdb6678fd..2d75b3c57d 100644 --- a/extension.json +++ b/extension.json @@ -2640,9 +2640,9 @@ "lib/ve/tests/ce/ve.ce.Document.test.js", "modules/ve-mw/tests/ce/ve.ce.Document.test.js", "lib/ve/tests/ce/ve.ce.ClipboardHandler.test.js", + "modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js", "lib/ve/tests/ce/ve.ce.DragDropHandler.test.js", "lib/ve/tests/ce/ve.ce.Surface.test.js", - "modules/ve-mw/tests/ce/ve.ce.Surface.test.js", "lib/ve/tests/ce/ve.ce.RangeState.test.js", "lib/ve/tests/ce/ve.ce.TextState.test.js", "lib/ve/tests/ce/ve.ce.NodeFactory.test.js", diff --git a/modules/ve-mw/tests/ce/ve.ce.Surface.test.js b/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js similarity index 96% rename from modules/ve-mw/tests/ce/ve.ce.Surface.test.js rename to modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js index a619c62a47..89858e979d 100644 --- a/modules/ve-mw/tests/ce/ve.ce.Surface.test.js +++ b/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js @@ -1,11 +1,11 @@ /*! - * VisualEditor MediaWiki-specific ContentEditable Surface tests. + * VisualEditor MediaWiki-specific ContentEditable ClipboardHandler tests. * * @copyright See AUTHORS.txt * @license The MIT License (MIT); see LICENSE.txt */ -QUnit.module( 've.ce.Surface (MW)', ve.test.utils.newMwEnvironment() ); +QUnit.module( 've.ce.ClipboardHandler (MW)', ve.test.utils.newMwEnvironment() ); /* Tests */ From eaaee6f097da87df90f38fe8bc3391218b31657b Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 21 Mar 2025 13:23:43 +0000 Subject: [PATCH 232/730] ve.ce.ClipboardHandler tests: Remove Cite extension examples These will be moved downstream to the Cite extension. Change-Id: I2b14daf47e71b539f1a4459a11c21aafda522e29 --- .../tests/ce/ve.ce.ClipboardHandler.test.js | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js b/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js index 89858e979d..e069472a57 100644 --- a/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js +++ b/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js @@ -30,22 +30,6 @@ QUnit.test( 'beforePaste/afterPaste', ( assert ) => { expectedHtml: '

--

', msg: 'RESTBase IDs still stripped if used when important attributes dropped' }, - { - documentHtml: '

', - rangeOrSelection: new ve.Range( 1 ), - pasteHtml: 'a[1]b', - expectedRangeOrSelection: new ve.Range( 3 ), - expectedHtml: '

ab

', - msg: 'Read mode references stripped' - }, - { - documentHtml: '

', - rangeOrSelection: new ve.Range( 1 ), - pasteHtml: 'a[1]b', - expectedRangeOrSelection: new ve.Range( 5 ), - expectedHtml: '

a[1]b

', - msg: 'VE references not stripped' - }, { documentHtml: '

', rangeOrSelection: new ve.Range( 1 ), From 6afe111b826d8b0b1f064e9f1caaf8d39898492f Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 21 Mar 2025 11:15:50 -0500 Subject: [PATCH 233/730] Edit check: add tool logging to back button in overridden onSelect Depends-On: I81bb4cf6bac574ee33527506dfff27a908dba4f5 Change-Id: Ibddea13b5bcf423253ae570efd8356e6c6094d37 --- editcheck/modules/init.js | 1 + 1 file changed, 1 insertion(+) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index a68dcf4a3f..3aea5e0ab4 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -109,6 +109,7 @@ ve.ui.EditCheckBack.prototype.onSelect = function () { surface.getContext().hide(); surface.execute( 'window', 'close', 'fixedEditCheckDialog' ); this.setActive( false ); + ve.track( 'activity.' + this.getName(), { action: 'tool-used' } ); }; ve.ui.EditCheckBack.prototype.onUpdateState = function () { this.setDisabled( false ); From 7f7efd3d0c6fe1606e58a42af538fa1e4d209739 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 21 Mar 2025 11:01:03 -0500 Subject: [PATCH 234/730] MWWikitextLinkAnnotationInspector: expand to cover external links too Internal links are already noticed, and the selection expands to cover them. This makes external links be treated the same. Change-Id: I2819a6caa82c6feb990a0473b4da43898f7bc9c7 --- ...ve.ui.MWWikitextLinkAnnotationInspector.js | 131 +++++++++++++++--- 1 file changed, 115 insertions(+), 16 deletions(-) diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js index d3c4bd54fb..503028a17d 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js @@ -47,6 +47,16 @@ ve.ui.MWWikitextLinkAnnotationInspector.static.internalLinkParser = ( function ( ); }() ); +ve.ui.MWWikitextLinkAnnotationInspector.static.externalLinkParser = ( function () { + const protocols = ve.init.platform.getUnanchoredExternalLinkUrlProtocolsRegExp().source; + return new RegExp( '\\[(' + protocols + '\\S+) ?([^\\]]*)(\\])', 'ig' ); +}() ); + +ve.ui.MWWikitextLinkAnnotationInspector.static.magicLinkParser = ( function () { + const protocols = ve.init.platform.getUnanchoredExternalLinkUrlProtocolsRegExp().source; + return new RegExp( '\\b(' + protocols + '\\S+\\w)', 'ig' ); +}() ); + /* Methods */ /** @@ -58,7 +68,9 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getSetupProcess = function ( d return ve.ui.AnnotationInspector.super.prototype.getSetupProcess.call( this, data ) .next( () => { const wgNamespaceIds = mw.config.get( 'wgNamespaceIds' ), - internalLinkParser = this.constructor.static.internalLinkParser; + internalLinkParser = this.constructor.static.internalLinkParser, + externalLinkParser = this.constructor.static.externalLinkParser, + magicLinkParser = this.constructor.static.magicLinkParser; // Only supports linear selections if ( !( this.initialFragment && this.initialFragment.getSelection() instanceof ve.dm.LinearSelection ) ) { @@ -66,7 +78,7 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getSetupProcess = function ( d } let fragment = this.getFragment(); - let linkMatches; + let linkMatches, isExternal; // Initialize range if ( !data.noExpand ) { if ( !fragment.getSelection().isCollapsed() ) { @@ -107,6 +119,43 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getSetupProcess = function ( d break; } } + if ( !linkMatches ) { + externalLinkParser.lastIndex = 0; + while ( ( matches = externalLinkParser.exec( text ) ) !== null ) { + const matchURL = matches[ 1 ]; + if ( !matchURL ) { + continue; + } + const linkRange = new ve.Range( + contextRange.start + matches.index, + contextRange.start + matches.index + matches[ 0 ].length + ); + if ( linkRange.containsRange( range ) ) { + linkMatches = matches; + fragment = fragment.getSurface().getLinearFragment( linkRange ); + isExternal = true; + break; + } + } + } + if ( !linkMatches ) { + magicLinkParser.lastIndex = 0; + while ( ( matches = magicLinkParser.exec( text ) ) !== null ) { + if ( !matches[ 0 ] ) { + continue; + } + const linkRange = new ve.Range( + contextRange.start + matches.index, + contextRange.start + matches.index + matches[ 0 ].length + ); + if ( linkRange.containsRange( range ) ) { + linkMatches = matches; + fragment = fragment.getSurface().getLinearFragment( linkRange ); + isExternal = true; + break; + } + } + } } if ( !linkMatches ) { if ( !data.noExpand && fragment.getSelection().isCollapsed() ) { @@ -125,27 +174,62 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getSetupProcess = function ( d this.fragment = fragment; this.initialLabel = this.fragment.getText(); - let title; - if ( linkMatches ) { - // Group 1 is the link target, group 2 is the label after | if present - title = mw.Title.newFromText( linkMatches[ 1 ] ); - this.initialLabel = linkMatches[ 2 ] || linkMatches[ 1 ]; - // HACK: Remove escaping probably added by this tool. - // We should really do a full parse from wikitext to HTML if - // we see any syntax - this.initialLabel = this.initialLabel.replace( /(\]{2,})<\/nowiki>/g, '$1' ); + if ( isExternal ) { + // can't get here without linkMatches + // linkMatches: [ whole match, url, protocol, label, closing bracket ] + if ( linkMatches[ 4 ] ) { + // Link came in [] + this.initialLabel = linkMatches[ 3 ]; + this.initialLabel = this.initialLabel.replace( /(\]{2,})<\/nowiki>/g, '$1' ); + if ( !linkMatches[ 3 ] ) { + // Didn't have a label + this.initialAnnotation = this.newExternalLinkAnnotation( { + type: 'link/mwNumberedExternal', + attributes: { + href: linkMatches[ 1 ] + } + } ); + } else { + // Has a label + this.initialAnnotation = this.newExternalLinkAnnotation( { + type: 'link/mwExternal', + attributes: { + href: linkMatches[ 1 ] + } + } ); + } + } else { + // Just an autolinked URL + this.initialLabel = ''; + this.initialAnnotation = this.newExternalLinkAnnotation( { + type: 'link/mwMagic', + attributes: { + href: linkMatches[ 1 ] + } + } ); + } } else { - title = mw.Title.newFromText( this.initialLabel ); + let title; + if ( linkMatches ) { + // Group 1 is the link target, group 2 is the label after | if present + title = mw.Title.newFromText( linkMatches[ 1 ] ); + this.initialLabel = linkMatches[ 2 ] || linkMatches[ 1 ]; + // HACK: Remove escaping probably added by this tool. + // We should really do a full parse from wikitext to HTML if + // we see any syntax + this.initialLabel = this.initialLabel.replace( /(\]{2,})<\/nowiki>/g, '$1' ); + } else { + title = mw.Title.newFromText( this.initialLabel ); + } + if ( title ) { + this.initialAnnotation = this.newInternalLinkAnnotationFromTitle( title ); + } } // We've skipped ve.ui.AnnotationInspector#getSetupProcess. Set isNew here so // that getInsertionData works correctly. this.isNew = !linkMatches; - if ( title ) { - this.initialAnnotation = this.newInternalLinkAnnotationFromTitle( title ); - } - const inspectorTitle = ve.msg( this.isReadOnly() ? 'visualeditor-linkinspector-title' : ( @@ -219,6 +303,21 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function } fragment.insertContent( '[[' + prefix + targetText + labelText + ']]' ); + } else if ( annotation instanceof ve.dm.MWExternalLinkAnnotation ) { + if ( this.initialAnnotation.element.type === 'link/mwMagic' ) { + fragment.insertContent( annotation.element.attributes.href ); + } else { + let labelText = ''; + if ( insertText ) { + labelText = insertionText; + } else if ( annotation.name === 'link/mwExternal' ) { + labelText = this.initialLabel; + } + if ( labelText ) { + labelText = ' ' + labelText; + } + fragment.insertContent( '[' + annotation.element.attributes.href + labelText + ']' ); + } } else { const replace = !this.isNew; if ( replace || this.shouldInsertText() ) { From fba6ee4f6564fe9044acb37e10d17e6687fc9862 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 24 Mar 2025 08:28:54 +0100 Subject: [PATCH 235/730] Localisation updates from https://translatewiki.net. Change-Id: Ib32b5a42de3a38c87781344fa0a72c9f702d2419 --- i18n/ve-mw/ary.json | 3 ++- i18n/ve-mw/bug-bugi.json | 2 ++ i18n/ve-mw/kn.json | 3 ++- i18n/ve-mw/oc.json | 4 ++-- i18n/ve-wmf/ar.json | 2 ++ 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/i18n/ve-mw/ary.json b/i18n/ve-mw/ary.json index 309bdeb4a1..b60679dcdf 100644 --- a/i18n/ve-mw/ary.json +++ b/i18n/ve-mw/ary.json @@ -18,8 +18,9 @@ "visualeditor-ca-editsource": "بدل لكود", "visualeditor-ca-editsource-section": "بدل لكود", "visualeditor-descriptionpagelink": "Project:ليديتور د الشوفان", + "visualeditor-dialog-media-choose-image": "خدّم هاد التصويرة", "visualeditor-dialog-transclusion-no-template-description": "لموضيل \"$1\" ماعندوش شرح، والاكين يمكن تلقا معلومات عليه ف [[$2|صّفحة ديالو]].", - "visualeditor-dialogbutton-media-tooltip": "تصاور ؤ ملفات", + "visualeditor-dialogbutton-media-tooltip": "تصاور ؤ فيشيات", "visualeditor-mweditmodeve-popup-body": "تقدر ترجع مرة خرة ل التبدال ب الشوفان ف أي وقت يلا كليكيتي على هاد لإيكون.", "visualeditor-mweditmodeve-tool-current": "التبدال ب الشوفان", "visualeditor-mweditmodeve-tool-unavailable": "التبدال ب الشوفان مامتوفّرش هنا", diff --git a/i18n/ve-mw/bug-bugi.json b/i18n/ve-mw/bug-bugi.json index c684ec69b9..b608f8f5fc 100644 --- a/i18n/ve-mw/bug-bugi.json +++ b/i18n/ve-mw/bug-bugi.json @@ -5,5 +5,7 @@ ] }, "tooltip-ca-ve-edit": "ᨄᨉᨙᨌᨙᨂᨗ ᨕᨗᨐᨕᨙ ᨒᨛᨄᨂᨙ", + "visualeditor-ca-createsource": "ᨕᨙᨅᨘ ᨕᨄᨚᨒᨙ", + "visualeditor-ca-editsource": "ᨄᨉᨙᨌᨙ ᨕᨄᨚᨒᨙ", "visualeditor-ca-editsource-section": "ᨄᨉᨙᨌᨙ ᨕᨄᨚᨒᨙ" } diff --git a/i18n/ve-mw/kn.json b/i18n/ve-mw/kn.json index dc3f28521e..52eeddea7b 100644 --- a/i18n/ve-mw/kn.json +++ b/i18n/ve-mw/kn.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Ananth subray", + "Anzx", "Nayvik", "Omshivaprakash", "Shushruth", @@ -139,7 +140,7 @@ "visualeditor-mwgallerydialog-widths-field-label": "ಚಿತ್ರದ ಅಗಲ", "visualeditor-mwsignature-tool": "ನಿಮ್ಮ ಸಹಿ", "visualeditor-rebase-client-import-name": "ಪುಟದ ಶೀರ್ಷಿಕೆ", - "visualeditor-savedialog-label-publish-short": "ಪ್ರಕಟಿಸು", + "visualeditor-savedialog-label-publish-short": "ಪ್ರಕಟಿಸಿ", "visualeditor-savedialog-label-publish-short-start": "ಪ್ರಕಟಿಸು...", "visualeditor-savedialog-label-resolve-conflict": "ಸಮಸ್ಯೆಗಳನ್ನು ಸರೀಮಾಡಿ", "visualeditor-savedialog-label-resume-editing": "ಸಂಪಾದನೆ ಮುಂದುವರಿಸಿ", diff --git a/i18n/ve-mw/oc.json b/i18n/ve-mw/oc.json index f2a7e3c5ee..bdaaf32619 100644 --- a/i18n/ve-mw/oc.json +++ b/i18n/ve-mw/oc.json @@ -35,7 +35,7 @@ "visualeditor-ca-createlocaldescriptionsource": "Apondre una descripcion locala", "visualeditor-ca-createsource": "Crear lo còdi", "visualeditor-ca-editlocaldescriptionsource": "Modificar lo còdi de descripcion locala", - "visualeditor-ca-editsource": "modificar lo còdi", + "visualeditor-ca-editsource": "Modificar lo còdi", "visualeditor-ca-editsource-section": "modificar lo còdi", "visualeditor-ca-editsource-section-hint": "Editar lo còdi de la seccion seguenta: $1", "visualeditor-categories-tool": "Categorias", @@ -139,7 +139,7 @@ "visualeditor-dialog-transclusion-deprecated-parameter": "Camp obsolèt", "visualeditor-dialog-transclusion-deprecated-parameter-description": "Lo camp es obsolèt. $1", "visualeditor-dialog-transclusion-loading": "Cargament...", - "visualeditor-dialog-transclusion-multipart-message": "Sètz vam de modificar un modèl e al mens una de las partidas del [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content contengut associat] (còdi wiki o modèls suplementairs).", + "visualeditor-dialog-transclusion-multipart-message": "Sètz vam de modificar un modèl e al mens una de las partidas del [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content contengut associat] (còdi wiki o modèls suplementaris).", "visualeditor-dialog-transclusion-no-template-data-description": "Aquel modèl non possedís de [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] e sos paramètres son estats generats [[mw:Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters|automaticament]]. Aital, i pòt aver una descripcion dins la pagina del modèl.", "visualeditor-dialog-transclusion-no-template-description": "Lo modèl «$1» non ten encara de descripcion, pasmens i pòt aver d'informacions complementàrias sus la [[$2|pagina del modèl]].", "visualeditor-dialog-transclusion-no-template-parameters": "Aquel modèl non possedís cap de paramètres documentats e pòt èsser utilizat sens.", diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index f06fa9b83b..152d53faea 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -25,6 +25,8 @@ "tag-editcheck-references-description": "يعتقد (إديت تشيك) أنّه قد يكون هناك حاجة إلى مرجع", "tag-editcheck-references-activated": "فحص التحرير (أداة التحقق) مفعلّة", "tag-editcheck-references-activated-description": "يعتقد EditCheck أنه ربما كان هناك حاجة إلى مرجع، وتم عرض واجهة المستخدم", + "tag-editcheck-references-shown": "تم عرض التحقق من التحرير (المراجع)", + "tag-editcheck-references-shown-description": "يعتقد EditCheck أنه قد يكون هناك حاجة إلى مرجع، وقد تم عرض واجهة المستخدم", "tag-visualeditor": "تحرير مرئي", "tag-visualeditor-description": "تم التعديل باستخدام [[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", "tag-visualeditor-needcheck": "المحرر المرئي: تحقق", From 488450f1bc17555292c753bcd49fbf31b0db5a82 Mon Sep 17 00:00:00 2001 From: Sam Wilson Date: Wed, 19 Feb 2025 11:24:48 +0800 Subject: [PATCH 236/730] Optionally use new TemplateSearchLayout from TemplateData Use the new TemplateSearchLayout from TemplateData if the feature flag is enabled. Bug: T377417 Change-Id: Ib0b7f3820107377cce07d619960a48f4bf1d45da --- extension.json | 5 +- includes/Hooks.php | 37 +++-- .../pages/ve.ui.MWTemplatePlaceholderPage.js | 136 ++++++++++-------- tests/phpunit/integration/HooksTest.php | 42 +++++- 4 files changed, 147 insertions(+), 73 deletions(-) diff --git a/extension.json b/extension.json index 480a71f19a..b4348ccf6b 100644 --- a/extension.json +++ b/extension.json @@ -231,7 +231,10 @@ }, "HookHandlers": { "VisualEditorHooks": { - "class": "MediaWiki\\Extension\\VisualEditor\\Hooks" + "class": "MediaWiki\\Extension\\VisualEditor\\Hooks", + "services": [ + "ExtensionRegistry" + ] }, "EditCheckHooks": { "class": "MediaWiki\\Extension\\VisualEditor\\EditCheck\\Hooks" diff --git a/includes/Hooks.php b/includes/Hooks.php index f568d00783..cc6274f80a 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -113,6 +113,12 @@ class Hooks implements 'visualeditor-switched' ]; + private ExtensionRegistry $extensionRegistry; + + public function __construct( ExtensionRegistry $extensionRegistry ) { + $this->extensionRegistry = $extensionRegistry; + } + /** * Initialise the 'VisualEditorAvailableNamespaces' setting, and add content * namespaces to it. This will run after LocalSettings.php is processed. @@ -144,7 +150,7 @@ public function onBeforePageDisplay( $output, $skin ): void { return; } if ( !( - ExtensionRegistry::getInstance()->isLoaded( 'MobileFrontend' ) && + $this->extensionRegistry->isLoaded( 'MobileFrontend' ) && $services->getService( 'MobileFrontend.Context' ) ->shouldDisplayMobileView() ) ) { @@ -380,7 +386,7 @@ public function onCustomEditor( $article, $user ) { $urlUtils = $services->getUrlUtils(); $veConfig = $services->getConfigFactory()->makeConfig( 'visualeditor' ); - if ( ExtensionRegistry::getInstance()->isLoaded( 'MobileFrontend' ) ) { + if ( $this->extensionRegistry->isLoaded( 'MobileFrontend' ) ) { // If mobilefrontend is involved it can make its own decisions about this $mobFrontContext = MediaWikiServices::getInstance()->getService( 'MobileFrontend.Context' ); if ( $mobFrontContext->shouldDisplayMobileView() ) { @@ -522,7 +528,7 @@ public function onSkinTemplateNavigation__Universal( $skin, &$links ): void { self::onSkinTemplateNavigationSpecialPage( $skin, $links ); if ( - ExtensionRegistry::getInstance()->isLoaded( 'MobileFrontend' ) && + $this->extensionRegistry->isLoaded( 'MobileFrontend' ) && $services->getService( 'MobileFrontend.Context' )->shouldDisplayMobileView() ) { return; @@ -596,7 +602,7 @@ public function onSkinTemplateNavigation__Universal( $skin, &$links ): void { $skinHasEditIcons = in_array( $skin->getSkinName(), - ExtensionRegistry::getInstance()->getAttribute( 'VisualEditorIconSkins' ) + $this->extensionRegistry->getAttribute( 'VisualEditorIconSkins' ) ); foreach ( $links['views'] as $action => $data ) { @@ -817,7 +823,7 @@ public function onSkinEditSectionLinks( $skin, $title, $section, } if ( - ExtensionRegistry::getInstance()->isLoaded( 'MobileFrontend' ) && + $this->extensionRegistry->isLoaded( 'MobileFrontend' ) && $services->getService( 'MobileFrontend.Context' )->shouldDisplayMobileView() ) { return; @@ -874,7 +880,7 @@ public function onSkinEditSectionLinks( $skin, $title, $section, $skinHasEditIcons = in_array( $skin->getSkinName(), - ExtensionRegistry::getInstance()->getAttribute( 'VisualEditorIconSkins' ) + $this->extensionRegistry->getAttribute( 'VisualEditorIconSkins' ) ); // add VE edit section in VE available namespaces @@ -1106,11 +1112,10 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf $coreConfig = RequestContext::getMain()->getConfig(); $services = MediaWikiServices::getInstance(); $veConfig = $services->getConfigFactory()->makeConfig( 'visualeditor' ); - $extensionRegistry = ExtensionRegistry::getInstance(); $availableNamespaces = ApiVisualEditor::getAvailableNamespaceIds( $veConfig ); $availableContentModels = array_filter( array_merge( - $extensionRegistry->getAttribute( 'VisualEditorAvailableContentModels' ), + $this->extensionRegistry->getAttribute( 'VisualEditorAvailableContentModels' ), $veConfig->get( 'VisualEditorAvailableContentModels' ) ) ); @@ -1137,15 +1142,15 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf $defaultSortPrefix = preg_replace( '/:$/', '', $defaultSortPrefix ); $vars['wgVisualEditorConfig'] = [ - 'usePageImages' => $extensionRegistry->isLoaded( 'PageImages' ), - 'usePageDescriptions' => $extensionRegistry->isLoaded( 'WikibaseClient' ), + 'usePageImages' => $this->extensionRegistry->isLoaded( 'PageImages' ), + 'usePageDescriptions' => $this->extensionRegistry->isLoaded( 'WikibaseClient' ), 'isBeta' => $veConfig->get( 'VisualEditorEnableBetaFeature' ), 'disableForAnons' => $veConfig->get( 'VisualEditorDisableForAnons' ), 'preloadModules' => $veConfig->get( 'VisualEditorPreloadModules' ), 'namespaces' => $availableNamespaces, 'contentModels' => $availableContentModels, 'pluginModules' => array_merge( - $extensionRegistry->getAttribute( 'VisualEditorPluginModules' ), + $this->extensionRegistry->getAttribute( 'VisualEditorPluginModules' ), // @todo deprecate the global setting $veConfig->get( 'VisualEditorPluginModules' ) ), @@ -1175,9 +1180,17 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf 'sourceFeedbackTitle' => $veConfig->get( 'VisualEditorSourceFeedbackTitle' ), // TODO: Remove when all usages in .js files are removed 'transclusionDialogNewSidebar' => true, - 'cirrusSearchLookup' => $extensionRegistry->isLoaded( 'CirrusSearch' ), + 'cirrusSearchLookup' => $this->extensionRegistry->isLoaded( 'CirrusSearch' ), 'defaultSortPrefix' => $defaultSortPrefix, ]; + + // This can be removed and the module added in TemplateData's extension.json + // after the feature flag has been removed. T377976. + if ( $this->extensionRegistry->isLoaded( 'TemplateData' ) + && $coreConfig->get( 'TemplateDataEnableDiscovery' ) + ) { + $vars['wgVisualEditorConfig']['pluginModules'][] = 'ext.templateData.templateDiscovery'; + } } /** diff --git a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js index 0b1a4170ed..22516153cf 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js @@ -31,52 +31,62 @@ ve.ui.MWTemplatePlaceholderPage = function VeUiMWTemplatePlaceholderPage( placeh // Properties this.placeholder = placeholder; - this.addTemplateInput = new ve.ui.MWTemplateTitleInputWidget( { - $overlay: config.$overlay, - showDescriptions: true, - api: ve.init.target.getContentApi() - } ) - .connect( this, { - change: 'onTemplateInputChange', - enter: 'onAddTemplate' + this.usingTemplateDiscovery = mw.templateData !== undefined && mw.templateData.TemplateSearchLayout !== undefined; + if ( this.usingTemplateDiscovery ) { + // This variable name is slightly misleading here as this isn't a fieldset. + this.addTemplateFieldset = new mw.templateData.TemplateSearchLayout(); + this.addTemplateFieldset.connect( this, { choose: this.onAddTemplate } ); + // Expose the internal widget for now, but this will be removed once we've switched to the new widget. + this.addTemplateInput = this.addTemplateFieldset.searchWidget; + + } else { + this.addTemplateInput = new ve.ui.MWTemplateTitleInputWidget( { + $overlay: config.$overlay, + showDescriptions: true, + api: ve.init.target.getContentApi() + } ) + .connect( this, { + change: 'onTemplateInputChange', + enter: 'onAddTemplate' + } ); + + this.addTemplateInput.getLookupMenu().connect( this, { + choose: 'onAddTemplate' } ); - this.addTemplateInput.getLookupMenu().connect( this, { - choose: 'onAddTemplate' - } ); - - this.addTemplateButton = new OO.ui.ButtonWidget( { - label: ve.msg( 'visualeditor-dialog-transclusion-add-template-save' ), - flags: [ 'progressive' ], - classes: [ 've-ui-mwTransclusionDialog-addButton' ], - disabled: true - } ) - .connect( this, { click: 'onAddTemplate' } ); - - const addTemplateActionFieldLayout = new OO.ui.ActionFieldLayout( - this.addTemplateInput, - this.addTemplateButton, - { - label: ve.msg( 'visualeditor-dialog-transclusion-template-search-help' ), - align: 'top' - } - ); - - const dialogTitle = this.placeholder.getTransclusion().isSingleTemplate() ? - 'visualeditor-dialog-transclusion-template-search' : - 'visualeditor-dialog-transclusion-add-template'; - - const addTemplateFieldsetConfig = { - // The following messages are used here: - // * visualeditor-dialog-transclusion-template-search - // * visualeditor-dialog-transclusion-add-template - label: ve.msg( dialogTitle ), - icon: 'puzzle', - classes: [ 've-ui-mwTransclusionDialog-addTemplateFieldset' ], - items: [ addTemplateActionFieldLayout ] - }; - - this.addTemplateFieldset = new OO.ui.FieldsetLayout( addTemplateFieldsetConfig ); + this.addTemplateButton = new OO.ui.ButtonWidget( { + label: ve.msg( 'visualeditor-dialog-transclusion-add-template-save' ), + flags: [ 'progressive' ], + classes: [ 've-ui-mwTransclusionDialog-addButton' ], + disabled: true + } ) + .connect( this, { click: 'onAddTemplate' } ); + + const addTemplateActionFieldLayout = new OO.ui.ActionFieldLayout( + this.addTemplateInput, + this.addTemplateButton, + { + label: ve.msg( 'visualeditor-dialog-transclusion-template-search-help' ), + align: 'top' + } + ); + + const dialogTitle = this.placeholder.getTransclusion().isSingleTemplate() ? + 'visualeditor-dialog-transclusion-template-search' : + 'visualeditor-dialog-transclusion-add-template'; + + const addTemplateFieldsetConfig = { + // The following messages are used here: + // * visualeditor-dialog-transclusion-template-search + // * visualeditor-dialog-transclusion-add-template + label: ve.msg( dialogTitle ), + icon: 'puzzle', + classes: [ 've-ui-mwTransclusionDialog-addTemplateFieldset' ], + items: [ addTemplateActionFieldLayout ] + }; + + this.addTemplateFieldset = new OO.ui.FieldsetLayout( addTemplateFieldsetConfig ); + } // Initialization this.$element @@ -104,18 +114,24 @@ ve.ui.MWTemplatePlaceholderPage.prototype.focus = function () { /** * @private + * @param {Object|undefined} templateData The choosen template's data (if TemplateDiscovery is enabled). */ -ve.ui.MWTemplatePlaceholderPage.prototype.onAddTemplate = function () { - const transclusion = this.placeholder.getTransclusion(), - menu = this.addTemplateInput.getLookupMenu(); - - if ( menu.isVisible() ) { - menu.chooseItem( menu.findSelectedItem() ); - } - const name = this.addTemplateInput.getMWTitle(); - if ( !name ) { - // Invalid titles return null, so abort here. - return; +ve.ui.MWTemplatePlaceholderPage.prototype.onAddTemplate = function ( templateData ) { + const transclusion = this.placeholder.getTransclusion(); + + let name = null; + if ( !this.usingTemplateDiscovery ) { + const menu = this.addTemplateInput.getLookupMenu(); + if ( menu.isVisible() ) { + menu.chooseItem( menu.findSelectedItem() ); + } + name = this.addTemplateInput.getMWTitle(); + if ( !name ) { + // Invalid titles return null, so abort here. + return; + } + } else { + name = mw.Title.newFromText( templateData.title ); } // TODO tracking will only be implemented temporarily to answer questions on @@ -136,10 +152,12 @@ ve.ui.MWTemplatePlaceholderPage.prototype.onAddTemplate = function () { transclusion.replacePart( this.placeholder, part ).then( transclusion.addPromptedParameters.bind( transclusion ) ); - this.addTemplateInput.pushPending(); - // abort pending lookups, also, so the menu can't appear after we've left the page - this.addTemplateInput.closeLookupMenu(); - this.addTemplateButton.setDisabled( true ); + if ( !this.usingTemplateDiscovery ) { + this.addTemplateInput.pushPending(); + // abort pending lookups, also, so the menu can't appear after we've left the page + this.addTemplateInput.closeLookupMenu(); + this.addTemplateButton.setDisabled( true ); + } }; /** diff --git a/tests/phpunit/integration/HooksTest.php b/tests/phpunit/integration/HooksTest.php index caf9b5b391..414ba78e91 100644 --- a/tests/phpunit/integration/HooksTest.php +++ b/tests/phpunit/integration/HooksTest.php @@ -4,6 +4,7 @@ use MediaWiki\Config\HashConfig; use MediaWiki\Extension\VisualEditor\Hooks; +use MediaWiki\Registration\ExtensionRegistry; use MediaWikiIntegrationTestCase; /** @@ -19,7 +20,7 @@ public function testOnResourceLoaderGetConfigVars( array $config, array $expecte $this->overrideConfigValues( $config ); $vars = []; - ( new Hooks() )->onResourceLoaderGetConfigVars( $vars, '', new HashConfig() ); + ( new Hooks( ExtensionRegistry::getInstance() ) )->onResourceLoaderGetConfigVars( $vars, '', new HashConfig() ); $this->assertArrayHasKey( 'wgVisualEditorConfig', $vars ); $veConfig = $vars['wgVisualEditorConfig']; @@ -35,4 +36,43 @@ public static function provideOnResourceLoaderGetConfigVars() { // TODO: test a lot more config! } + /** + * @dataProvider provideLoadingTemplateDiscovery + */ + public function testLoadingTemplateDiscovery( bool $tdLoaded, bool $featureFlagEnabled, bool $hasModule ) { + $extensionRegistry = $this->createMock( ExtensionRegistry::class ); + $extensionRegistry->method( 'isLoaded' )->willReturnCallback( + static function ( $extension ) use ( $tdLoaded ) { + return $extension === 'TemplateData' && $tdLoaded; + } + ); + $extensionRegistry->method( 'getAttribute' ) + ->willReturn( [] ); + $this->overrideConfigValues( [ 'TemplateDataEnableDiscovery' => $featureFlagEnabled ] ); + + $vars = []; + ( new Hooks( $extensionRegistry ) )->onResourceLoaderGetConfigVars( $vars, '', new HashConfig() ); + + $this->assertArrayHasKey( 'wgVisualEditorConfig', $vars ); + if ( $hasModule ) { + $this->assertArrayContains( + [ 'ext.templateData.templateDiscovery' ], + $vars['wgVisualEditorConfig']['pluginModules'] + ); + } else { + $this->assertNotContains( + 'ext.templateData.templateDiscovery', + $vars['wgVisualEditorConfig']['pluginModules'] + ); + } + } + + public static function provideLoadingTemplateDiscovery(): array { + return [ + [ false, false, false ], + [ false, true, false ], + [ true, false, false ], + [ true, true, true ], + ]; + } } From 64066a6ee52fd043e7bebb9b4c07cc0f2a30c048 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 20 Mar 2025 14:05:36 +0000 Subject: [PATCH 237/730] Follow-up I652a1108: Ensure focusAction is called when no actions selected In I652a1108 the logic was changed to ensure we don't call focusAction unnecessarily if the focused action didn't change, but it also excluded every calling focusAction( null ) if the selection was in a place with no actions. Change-Id: I2680e55bd0c4abf620225db3c19a49e6664ac17b --- editcheck/modules/controller.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 26c0b1d7d9..5ba6385b7e 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -127,6 +127,11 @@ Controller.prototype.removeAction = function ( listener, action ) { }; Controller.prototype.focusAction = function ( action, scrollTo ) { + if ( !scrollTo && action === this.focused ) { + // Don't emit unnecessary events if there is no change or scroll + return; + } + this.focused = action; this.emit( 'focusAction', action, this.getActions().indexOf( action ), scrollTo ); @@ -158,10 +163,7 @@ Controller.prototype.onSelect = function ( selection ) { ( check ) => check.getHighlightSelections().some( ( highlight ) => highlight.getCoveringRange().containsRange( selection.getCoveringRange() ) ) ); - if ( actions.length > 0 && actions.indexOf( this.focused ) === -1 ) { - // If the currently focused action is within the selection, don't jump around - this.focusAction( actions[ 0 ] || null, false ); - } + this.focusAction( actions[ 0 ] || null, false ); }; Controller.prototype.onContextChange = function () { From efa18bcf456d49b3197b34e7faa7ab0d142287e2 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Mon, 27 Jan 2025 03:26:57 +0000 Subject: [PATCH 238/730] ve.ui.MWSaveDialogAction: Skip register() when in test When using Special:JavaScriptTest, the following warnings are logged to the browser console (and also on the CLI from `npm run qunit in core): ``` Invalid accesskey data? Failed to register ctrl+option+(accesskey-save) Error: Incomplete trigger Invalid accesskey data? Failed to register ctrl+option+(accesskey-diff) Error: Incomplete trigger Invalid accesskey data? Failed to register ctrl+option+(accesskey-preview) Error: Incomplete trigger Invalid accesskey data? Failed to register ctrl+option+(accesskey-minoredit) Error: Incomplete trigger Invalid accesskey data? Failed to register ctrl+option+(accesskey-watch) Error: Incomplete trigger ``` This was added in I9b4ef8504 (2bd34cebd4), with the try-catch added in 2017 with I7c3256247 (T153472, 17ced451f4) to avoid an uncaught error on uselang=qqx URLs. Then, in 2020 (as part of T250045) uselang=qqx became the default in test context. Without the try-catch, this would have never passed unit tests today, but... to avoid noise, it makes more sense to skip this so that we crawl back a bit from warning fatique in CI. `if (window.QUnit)` is the JS equivalent of `if (defined('MW_PHPUNIT_TEST'))` https://codesearch.wmcloud.org/deployed/?q=window.QUnit&excludeFiles=ResourceLoader%7C%5C.map I'm replacing the IIFE block with a conditional block, instead of indenting and wrapping it around, because the IIFE block only existed as a way to scope local variables, which, since this file was converted from `var` to `let/const` is now accomplished by the block scope of the conditional just as well. Bug: T250045 Change-Id: Id7cf10038d3ec3528bd5a17290f563e60c40416f --- modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js b/modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js index f1b8a25821..8827e969b0 100644 --- a/modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js +++ b/modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js @@ -129,7 +129,10 @@ ve.ui.commandRegistry.register( /* Triggers & command help */ -( function () { +// Avoid "Failed to register ctrl+option+(accesskey-save) Error: Incomplete trigger" +// given that tests run with uselang=qqx. +// TODO: Use content language? +if ( !window.QUnit ) { const accessKeyPrefix = $.fn.updateTooltipAccessKeys.getAccessKeyPrefix().replace( /-/g, '+' ), shortcuts = [ { @@ -186,4 +189,4 @@ ve.ui.commandRegistry.register( ve.ui.MWCommandHelpDialog.static.commandGroups.other.demote.push( shortcut.command ); } } ); -}() ); +} From aaccf758b7a4f4c977e732ac29adbe75881c3be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Tue, 28 Jan 2025 15:28:40 +0000 Subject: [PATCH 239/730] Add insert menu to MobileArticleTarget Bug: T385851 Bug: T382454 Change-Id: I2422c127ec1f52295614e6cdf198eaf9b9064c52 --- extension.json | 4 ++++ includes/Hooks.php | 1 + .../targets/ve.init.mw.MobileArticleTarget.js | 21 ++++++++++++++++--- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/extension.json b/extension.json index d591b9a2dd..9d703dd716 100644 --- a/extension.json +++ b/extension.json @@ -105,6 +105,10 @@ "VisualEditorSourceFeedbackTitle": { "value": false }, + "VisualEditorMobileInsertMenu": { + "description": "Temporary deployment flag for adding an insert menu on mobile.", + "value": false + }, "VisualEditorTabMessages": { "value": { "edit": null, diff --git a/includes/Hooks.php b/includes/Hooks.php index 4986ae79d8..c2af88e16c 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -1173,6 +1173,7 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf 'feedbackApiUrl' => $veConfig->get( 'VisualEditorFeedbackAPIURL' ), 'feedbackTitle' => $veConfig->get( 'VisualEditorFeedbackTitle' ), 'sourceFeedbackTitle' => $veConfig->get( 'VisualEditorSourceFeedbackTitle' ), + 'mobileInsertMenu' => $veConfig->get( 'VisualEditorMobileInsertMenu' ), // TODO: Remove when all usages in .js files are removed 'transclusionDialogNewSidebar' => true, 'cirrusSearchLookup' => $extensionRegistry->isLoaded( 'CirrusSearch' ), diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index 18979c27ab..b0e56df462 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -52,12 +52,10 @@ OO.inheritClass( ve.init.mw.MobileArticleTarget, ve.init.mw.ArticleTarget ); /* Static Properties */ ve.init.mw.MobileArticleTarget.static.toolbarGroups = [ - // History { name: 'history', include: [ 'undo' ] }, - // Style { name: 'style', classes: [ 've-test-toolbar-style' ], @@ -71,13 +69,30 @@ ve.init.mw.MobileArticleTarget.static.toolbarGroups = [ promote: [ 'bold', 'italic' ], demote: [ 'strikethrough', 'code', 'underline', 'language', 'clear' ] }, - // Link { name: 'link', include: [ 'link' ] } ]; +if ( mw.config.get( 'wgVisualEditorConfig' ).mobileInsertMenu ) { + ve.init.mw.MobileArticleTarget.static.toolbarGroups.push( + { + name: 'insert', + label: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), + title: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), + narrowConfig: { + invisibleLabel: true, + icon: 'add' + }, + include: '*', + forceExpand: [ 'transclusion', 'insertTable' ], + promote: [ 'transclusion', 'insertTable' ], + exclude: [ { group: 'format' }, { group: 'history' }, { group: 'structure' } ] + } + ); +} + ve.init.mw.MobileArticleTarget.static.trackingName = 'mobile'; // FIXME Some of these users will be on tablets, check for this From df0440b755bef72b38cbddbec3a76149388a3e39 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 24 Mar 2025 22:40:25 -0500 Subject: [PATCH 240/730] Edit check: add editcheck-references-shown to the allowed tags list Follow-up to c0d32f76c455bc1a238c6c4d00d09242e44a1b11 Bug: T373949 Change-Id: I82abad7f685d07f6068ac313c33cf7d73f4cdeb0 --- includes/Hooks.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/Hooks.php b/includes/Hooks.php index 08583fda86..455c985cf5 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -101,10 +101,11 @@ class Hooks implements 'visualeditor-wikitext', // Edit check 'editcheck-references', - 'editcheck-references-activated', + 'editcheck-references-shown', 'editcheck-newcontent', 'editcheck-newreference', // No longer in active use: + 'editcheck-references-activated', 'editcheck-reference-decline-common-knowledge', 'editcheck-reference-decline-irrelevant', 'editcheck-reference-decline-uncertain', From 9f6196b62b8cb81be248cf1e65858c36832c12c6 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 24 Mar 2025 23:16:27 -0500 Subject: [PATCH 241/730] Edit check: don't close the sidebar on context change on desktop On mobile it's needed to avoid the keyboard overlapping the dialog. On desktop it just breaks out of the presave moment incorrectly. Follow-up to 7fd73c8f81a427f724968fe6db55fd4cf2310a20 Bug: T389906 Change-Id: Ibdf4ffa1ee55ec33fab0315c6eea40b099cc9ec5 --- editcheck/modules/controller.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 5ba6385b7e..978993b195 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -171,7 +171,8 @@ Controller.prototype.onContextChange = function () { // This is debounced, and could potentially be called after teardown return; } - if ( this.surface.getContext().isVisible() ) { + if ( OO.ui.isMobile() && this.surface.getContext().isVisible() ) { + // The context overlaps the drawer on mobile, so we should get rid of the drawer this.closeDialog(); } }; From 930c984264f2b670cafb40458e425fd934a12035 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 25 Mar 2025 08:25:55 +0100 Subject: [PATCH 242/730] Localisation updates from https://translatewiki.net. Change-Id: Ib19d7b75ee7dc1f30f309a545eee6701f79948af --- i18n/ve-mw/ks-arab.json | 1 + i18n/ve-mw/mwlanguagevariant/ks-arab.json | 2 ++ 2 files changed, 3 insertions(+) diff --git a/i18n/ve-mw/ks-arab.json b/i18n/ve-mw/ks-arab.json index c5535ded87..5153fbb647 100644 --- a/i18n/ve-mw/ks-arab.json +++ b/i18n/ve-mw/ks-arab.json @@ -17,6 +17,7 @@ "visualeditor-autosave-modified-prompt-accept": "اؠڈِٹ تھٲوِو جٲری", "visualeditor-autosave-modified-prompt-reject": "نٔو اؠڈِٹ کٔرِو شُروٗع", "visualeditor-backbutton-tooltip": "واپَس گٔژھِو", + "visualeditor-ca-createlocaldescriptionsource": "مُقٲمی وَضاحَت آگُر لیٚکھِو", "visualeditor-ca-createsource": "کوڈ بَنٲیو", "visualeditor-ca-editsource": "کوڈ اؠڈِٹ کٔرِو", "visualeditor-ca-editsource-section": "کوڈ اؠڈِٹ کٔرِو", diff --git a/i18n/ve-mw/mwlanguagevariant/ks-arab.json b/i18n/ve-mw/mwlanguagevariant/ks-arab.json index dc2c7431ad..05780f1556 100644 --- a/i18n/ve-mw/mwlanguagevariant/ks-arab.json +++ b/i18n/ve-mw/mwlanguagevariant/ks-arab.json @@ -4,5 +4,7 @@ "Iflaq" ] }, + "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "زَبان کوڑ", + "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "زَبان", "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "آگُر" } From 0d132ae18068f4d694c6441c08ba6cfaeafe6a3b Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 25 Mar 2025 12:01:49 +0000 Subject: [PATCH 243/730] Update VE core submodule to master (3ca28e0da) New changes: ed74f1b2d ve.collab: fix remote selection logic 2473e7a9d Tests: Remove unused 'events' test in TransactionProcessor 9c83b98bd ClipboardHandler tests: Compare HTML with equalDomElements 257cc2e8c Instrument tool usage 6af8ead0c ElementLinearData: Rename getAnnotatedRangeFrom(Selection -> Range) ff601545b Add tests in ElementLinearData and LinearData 9029f75c3 Remove ve.init.Platform#getMediaSources Localisation Updates: 972e4eb3d Bug: T387989 Bug: T388589 Change-Id: Icdb056f0f8f3aef29bc81e3762e76197539a57c6 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 29ebd972e4..3ca28e0daa 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 29ebd972e4ba90b9198cab157e923684295766d1 +Subproject commit 3ca28e0daaf5bf8826df046f1afe519727ec5291 From 7927d02d362936ac093fa2d88950982f2cb025ea Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 21 Mar 2025 14:28:14 -0500 Subject: [PATCH 244/730] Edit check: add labels to different types of dialog-closures Change-Id: Id1719555f7357051dfe7aa4fb68b8387408c09e7 --- .../modules/EditCheckGutterSidebarDialog.js | 2 +- editcheck/modules/controller.js | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/editcheck/modules/EditCheckGutterSidebarDialog.js b/editcheck/modules/EditCheckGutterSidebarDialog.js index 810ca13376..29d983fb5c 100644 --- a/editcheck/modules/EditCheckGutterSidebarDialog.js +++ b/editcheck/modules/EditCheckGutterSidebarDialog.js @@ -64,7 +64,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.onPosition = function () { ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions ) { if ( actions.length === 0 ) { - return this.close(); + return this.close( 'complete' ); } const surfaceView = this.surface.getView(); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 2341cbd18d..f0e40fe322 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -166,7 +166,7 @@ Controller.prototype.onSelect = function ( selection ) { // On mobile we want to close the drawer if the keyboard is shown if ( this.surface.getView().hasNativeCursorSelection() ) { // A native cursor selection means the keyboard will be visible - this.closeDialog(); + this.closeDialog( 'mobile-keyboard' ); } } if ( this.getActions().length === 0 || selection.isNull() ) { @@ -187,7 +187,7 @@ Controller.prototype.onContextChange = function () { } if ( OO.ui.isMobile() && this.surface.getContext().isVisible() ) { // The context overlaps the drawer on mobile, so we should get rid of the drawer - this.closeDialog(); + this.closeDialog( 'context' ); } }; @@ -281,7 +281,7 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess ) { surface.context.popup.containerPadding = 20; } - saveProcess.next( () => this.closeSidebars().then( () => this.closeDialog().then( () => { + saveProcess.next( () => this.closeSidebars( 'saveProcess' ).then( () => this.closeDialog( 'saveProcess' ).then( () => { this.originalToolbar.toggle( false ); target.onContainerScroll(); const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); @@ -488,19 +488,17 @@ Controller.prototype.scrollActionIntoView = function ( action ) { } ); }; -Controller.prototype.closeDialog = function ( keepFocus ) { - if ( !keepFocus ) { - this.focusAction( undefined ); - } +Controller.prototype.closeDialog = function ( action ) { + this.focusAction( undefined ); const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); - return windowAction.close( 'fixedEditCheckDialog' ).closed.then( () => {}, () => {} ); + return windowAction.close( 'fixedEditCheckDialog', action ? { action: action } : undefined ).closed.then( () => {}, () => {} ); }; -Controller.prototype.closeSidebars = function () { +Controller.prototype.closeSidebars = function ( action ) { const currentWindow = this.surface.getSidebarDialogs().getCurrentWindow(); if ( currentWindow ) { // .always is not chainable - return currentWindow.close().closed.then( () => {}, () => {} ); + return currentWindow.close( action ? { action: action } : undefined ).closed.then( () => {}, () => {} ); } return ve.createDeferred().resolve().promise(); }; From c299d1b735cdb5e12b87db19d242b6b9f2e73734 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 25 Mar 2025 11:36:02 -0500 Subject: [PATCH 245/730] Edit check: don't react to selection changes in review mode Bug: T389904 Change-Id: I6d91ca70d163cccebed220a829d7b4df6ebe88aa --- editcheck/modules/controller.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index f0e40fe322..0197658be0 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -162,6 +162,10 @@ Controller.prototype.onSelect = function ( selection ) { // This is debounced, and could potentially be called after teardown return; } + if ( this.surface.getView().reviewMode ) { + // In review mode the selection and display of checks is being managed by the dialog + return; + } if ( OO.ui.isMobile() ) { // On mobile we want to close the drawer if the keyboard is shown if ( this.surface.getView().hasNativeCursorSelection() ) { From b46a6af2be59b63a58af1f8dc35fb4b9bd8a8206 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 25 Mar 2025 22:32:47 -0500 Subject: [PATCH 246/730] Edit check: in single action mode the fixed sidebar isn't allowed null offset Also, cleans up some checks from 5dfc5eba97c92558e3e0c7ab411f6fd6ff22fb01 which got rebased so they were incorrectly checking the wrong value. Bug: T389906 Change-Id: I775078c7b420191257562ecd4625f2e1557f7aea --- editcheck/modules/EditCheckDialog.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 399b46a4ac..c661750fc4 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -144,9 +144,10 @@ ve.ui.EditCheckDialog.prototype.refresh = function () { ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAction, internal ) { // TODO: work out how to tell the window to recalculate height here - if ( offset === null ) { + if ( offset === null || offset === -1 ) { /* That's valid, carry on */ - } else if ( !Number.isSafeInteger( offset ) || ( this.offset < 0 || this.offset > ( this.currentActions.length - 1 ) ) ) { + offset = null; + } else if ( !Number.isSafeInteger( offset ) || ( offset < 0 || offset > ( this.currentActions.length - 1 ) ) ) { throw new Error( `Bad offset ${ offset }, expected an integer between 0 and ${ this.currentActions.length - 1 }` ); } @@ -434,6 +435,15 @@ ve.ui.FixedEditCheckDialog.prototype.getTeardownProcess = function ( data ) { return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ); }; +ve.ui.FixedEditCheckDialog.prototype.onFocusAction = function ( action, index, scrollTo ) { + if ( this.singleAction && action === null ) { + // Can't unset the offset in single-action mode, because it hides the sidebar contents + return; + } + // Mixin method + return ve.ui.EditCheckDialog.prototype.onFocusAction.call( this, action, index, scrollTo ); +}; + /* Registration */ ve.ui.windowFactory.register( ve.ui.FixedEditCheckDialog ); From d360e0250f455fb403f81339a4effc2ad7524dc7 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 25 Mar 2025 18:44:59 +0000 Subject: [PATCH 247/730] MWWikitextLinkAnnotationInspector: Always replace label when editing This fixes editing link labels on mobile. Change-Id: I31d468ab4051d3501401a46a5a01193693605b59 --- .../inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js index 503028a17d..bfb1ff2a0b 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js @@ -267,13 +267,14 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function fragment = this.getFragment(); const insertionText = this.getInsertionText(); + const replace = !this.isNew; const insertText = this.initialSelection.isCollapsed() && insertionText.length; if ( data && data.action === 'done' && annotation ) { // Build internal links locally if ( annotation instanceof ve.dm.MWInternalLinkAnnotation ) { let labelText; - if ( insertText ) { + if ( replace || insertText ) { labelText = insertionText; } else { labelText = this.initialLabel; @@ -308,7 +309,7 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function fragment.insertContent( annotation.element.attributes.href ); } else { let labelText = ''; - if ( insertText ) { + if ( replace || insertText ) { labelText = insertionText; } else if ( annotation.name === 'link/mwExternal' ) { labelText = this.initialLabel; @@ -319,7 +320,6 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function fragment.insertContent( '[' + annotation.element.attributes.href + labelText + ']' ); } } else { - const replace = !this.isNew; if ( replace || this.shouldInsertText() ) { fragment.insertContent( this.getInsertionData() ); } From 2babe42d9b46982fd39a1160802364751f0c8501 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 26 Mar 2025 18:11:40 +0000 Subject: [PATCH 248/730] MWWikitextLinkAnnotationInspector: Add tests for label modification Depends-On: Ie3cd4039630924e41b27ccf694e99a1a68bb9fd0 Change-Id: I02d5e588faf21e9c9b449c0aeafdb68ce18f7b73 --- .../ve.ui.FragmentInspector.test.js | 67 +++++++++++++++++-- 1 file changed, 61 insertions(+), 6 deletions(-) diff --git a/modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js b/modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js index 59230ee6db..22216a35e5 100644 --- a/modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js +++ b/modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js @@ -93,6 +93,20 @@ QUnit.test( 'Wikitext link inspector', ( assert ) => { data.splice( 26, 0, ...[ ...'[[quux]]' ] ); } }, + { + msg: 'Link insertion with label (mobile)', + name: 'wikitextLink', + range: new ve.Range( 26 ), + isMobile: true, + input: function () { + this.annotationInput.getTextInputWidget().setValue( 'quux' ); + this.labelInput.setValue( 'whee' ); + }, + expectedRange: new ve.Range( 39 ), + expectedData: ( data ) => { + data.splice( 26, 0, ...[ ...'[[Quux|whee]]' ] ); + } + }, { msg: 'Link insertion to file page', name: 'wikitextLink', @@ -113,7 +127,7 @@ QUnit.test( 'Wikitext link inspector', ( assert ) => { expectedData: () => {} }, { - msg: 'Link modified', + msg: 'Link target modified', name: 'wikitextLink', range: new ve.Range( 5, 12 ), input: function () { @@ -121,11 +135,52 @@ QUnit.test( 'Wikitext link inspector', ( assert ) => { }, expectedRange: new ve.Range( 5, 17 ), expectedData: ( data ) => { - data.splice( 7, 3, ...[ ...'Quux|bar' ] ); + data.splice( 5, 7, ...[ ...'[[Quux|bar]]' ] ); + } + }, + { + msg: 'Link target and label modified (mobile)', + name: 'wikitextLink', + range: new ve.Range( 5, 12 ), + isMobile: true, + input: function () { + this.annotationInput.getTextInputWidget().setValue( 'quux' ); + this.labelInput.setValue( 'whee' ); + }, + expectedRange: new ve.Range( 5, 18 ), + expectedData: ( data ) => { + data.splice( 5, 7, ...[ ...'[[Quux|whee]]' ] ); + } + }, + { + msg: 'Link target modified and label cleared (mobile)', + name: 'wikitextLink', + range: new ve.Range( 5, 12 ), + isMobile: true, + input: function () { + this.annotationInput.getTextInputWidget().setValue( 'quux' ); + this.labelInput.setValue( '' ); + }, + expectedRange: new ve.Range( 5, 13 ), + expectedData: ( data ) => { + data.splice( 5, 7, ...[ ...'[[quux]]' ] ); + } + }, + { + msg: 'Link label modified (mobile)', + name: 'wikitextLink', + range: new ve.Range( 16 ), + isMobile: true, + input: function () { + this.labelInput.setValue( 'whee' ); + }, + expectedRange: new ve.Range( 13, 26 ), + expectedData: ( data ) => { + data.splice( 13, 12, ...[ ...'[[Quux|whee]]' ] ); } }, { - msg: 'Link modified with initial selection including whitespace', + msg: 'Link target modified with initial selection including whitespace', name: 'wikitextLink', range: new ve.Range( 4, 13 ), input: function () { @@ -133,11 +188,11 @@ QUnit.test( 'Wikitext link inspector', ( assert ) => { }, expectedRange: new ve.Range( 5, 17 ), expectedData: ( data ) => { - data.splice( 7, 3, ...[ ...'Quux|bar' ] ); + data.splice( 5, 7, ...[ ...'[[Quux|bar]]' ] ); } }, { - msg: 'Piped link modified', + msg: 'Target of labeled link modified', name: 'wikitextLink', range: new ve.Range( 16 ), input: function () { @@ -149,7 +204,7 @@ QUnit.test( 'Wikitext link inspector', ( assert ) => { } }, { - msg: 'Link modified', + msg: 'Wikitext in link label is escaped', name: 'wikitextLink', range: new ve.Range( 30, 36 ), input: function () { From 7a9b29a5756b1f0daa25700b521b532e9a446bed Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 27 Mar 2025 12:53:14 +0000 Subject: [PATCH 249/730] Update VE core submodule to master (28c6033b0) New changes: f731a546c Test: Replace hard-coded annotation hashes b5299e765 Deactivate/reactivate the surface when entering/leaving review mode 523bd8e86 Use more arrow functions in tests e65a17e32 Add tests for link label editing on mobile Localisation Updates: 28c6033b0 Bug: T389904 Change-Id: Ib62eaa1e9393f4e57a69511ab16333d344f23438 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 3ca28e0daa..28c6033b02 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 3ca28e0daaf5bf8826df046f1afe519727ec5291 +Subproject commit 28c6033b0230b9c1706adabc0c8db9fe1b07c5ae From 6565031f0aee8928afd6e3a32ef25a9f50b722ff Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 9 Jan 2025 20:12:10 -0600 Subject: [PATCH 250/730] EditCheck: move Reference check feedback to the sidebar Bug: T381610 Change-Id: I7b25cd96d9594b8df6fdbda5bf26697a1b34061d --- editcheck/modules/EditCheck.less | 10 ++ editcheck/modules/EditCheckInspector.js | 159 ------------------ .../editchecks/AddReferenceEditCheck.js | 108 ++++++++++-- editcheck/modules/init.js | 1 - extension.json | 1 - 5 files changed, 104 insertions(+), 175 deletions(-) delete mode 100644 editcheck/modules/EditCheckInspector.js diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 09d8c53ffb..7439572f18 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -142,6 +142,16 @@ background-color: @background-color-notice-subtle; } } + + .ve-ui-editCheckActionWidget-feedback { + .oo-ui-fieldLayout-header { + padding-bottom: @spacing-100; + } + + .oo-ui-labelElement-label { + font-size: inherit; + } + } } &.ve-ui-editCheckDialog-singleAction .ve-ui-editCheckActionWidget-collapsed { diff --git a/editcheck/modules/EditCheckInspector.js b/editcheck/modules/EditCheckInspector.js deleted file mode 100644 index 0021dc1fd6..0000000000 --- a/editcheck/modules/EditCheckInspector.js +++ /dev/null @@ -1,159 +0,0 @@ -/*! - * VisualEditor UserInterface EditCheckInspector class. - * - * @copyright See AUTHORS.txt - */ - -/** - * Edit check inspector - * - * @class - * @extends ve.ui.FragmentInspector - * - * @constructor - * @param {Object} [config] Configuration options - */ -ve.ui.EditCheckInspector = function VeUiEditCheckInspector( config ) { - // Parent constructor - ve.ui.EditCheckInspector.super.call( this, config ); - - // Pre-initialization - this.$element.addClass( 've-ui-editCheckInspector' ); -}; - -/* Inheritance */ - -OO.inheritClass( ve.ui.EditCheckInspector, ve.ui.FragmentInspector ); - -ve.ui.EditCheckInspector.static.name = 'editCheckReferencesInspector'; - -// ve.ui.EditCheckInspector.static.title = OO.ui.deferMsg( 'editcheck-dialog-title' ); -ve.ui.EditCheckInspector.static.title = OO.ui.deferMsg( 'editcheck-dialog-addref-title' ); - -// ve.ui.EditCheckInspector.static.size = 'context'; - -ve.ui.EditCheckInspector.static.actions = [ - { - label: OO.ui.deferMsg( 'visualeditor-dialog-action-cancel' ), - flags: [ 'safe', 'back' ], - modes: [ 'mobile', 'desktop' ] - }, - { - action: 'continue', - icon: 'next', - flags: [ 'primary', 'progressive' ], - modes: [ 'mobile' ] - } -]; - -/* Methods */ - -/** - * @inheritdoc - */ -ve.ui.EditCheckInspector.prototype.initialize = function () { - // Parent method - ve.ui.EditCheckInspector.super.prototype.initialize.call( this ); - - // Survey panel - this.answerRadioSelect = new OO.ui.RadioSelectWidget( { - items: [ - new OO.ui.RadioOptionWidget( { - data: 'uncertain', - label: ve.msg( 'editcheck-dialog-addref-reject-uncertain' ) - } ), - new OO.ui.RadioOptionWidget( { - data: 'common-knowledge', - label: ve.msg( 'editcheck-dialog-addref-reject-common-knowledge' ) - } ), - new OO.ui.RadioOptionWidget( { - data: 'irrelevant', - label: ve.msg( 'editcheck-dialog-addref-reject-irrelevant' ) - } ), - new OO.ui.RadioOptionWidget( { - data: 'other', - label: ve.msg( 'editcheck-dialog-addref-reject-other' ) - } ) - ] - } ); - this.answerRadioSelect.connect( this, { select: 'updateActions' } ); - - this.answerConfirm = new OO.ui.ButtonWidget( { - flags: [ 'progressive' ], - framed: false, - label: ve.msg( 'ooui-dialog-process-continue' ), - disabled: true - } ); - this.answerConfirm.toggle( !OO.ui.isMobile() ); - this.answerConfirm.connect( this, { click: [ 'executeAction', 'continue' ] } ); - - this.form.addItems( - new OO.ui.FieldsetLayout( { - label: ve.msg( 'editcheck-dialog-addref-reject-question' ), - items: [ - new OO.ui.FieldLayout( this.answerRadioSelect, { - label: ve.msg( 'editcheck-dialog-addref-reject-description' ), - align: 'top' - } ), - new OO.ui.FieldLayout( this.answerConfirm, { - align: 'left' - } ) - ] - } ) - ); -}; - -ve.ui.EditCheckInspector.prototype.updateActions = function () { - const isSelected = !!this.answerRadioSelect.findSelectedItem(); - // desktop - this.answerConfirm.setDisabled( !isSelected ); - // mobile - this.actions.setAbilities( { continue: isSelected } ); -}; - -/** - * @inheritdoc - */ -ve.ui.EditCheckInspector.prototype.getSetupProcess = function ( data ) { - data = data || {}; - return ve.ui.EditCheckInspector.super.prototype.getSetupProcess.call( this, data ) - .first( function () { - this.surface = data.surface; - this.answerRadioSelect.selectItem( null ); - }, this ); -}; - -/** - * @inheritdoc - */ -ve.ui.EditCheckInspector.prototype.getReadyProcess = function ( data ) { - return ve.ui.EditCheckInspector.super.prototype.getReadyProcess.call( this, data ) - .first( function () { - this.actions.setMode( OO.ui.isMobile() ? 'mobile' : 'desktop' ); - this.updateActions(); - }, this ); -}; - -/** - * @inheritdoc - */ -ve.ui.EditCheckInspector.prototype.getActionProcess = function ( action ) { - if ( action === '' ) { - return new OO.ui.Process( function () { - this.close(); - }, this ); - } - - if ( action === 'continue' ) { - return new OO.ui.Process( function () { - this.close( { action: 'reject', reason: this.answerRadioSelect.findSelectedItem().getData() } ); - ve.track( 'activity.editCheckReferences', { action: 'dialog-choose-' + this.answerRadioSelect.findSelectedItem().getData() } ); - }, this ); - } - - return ve.ui.EditCheckInspector.super.prototype.getActionProcess.call( this, action ); -}; - -/* Registration */ - -ve.ui.windowFactory.register( ve.ui.EditCheckInspector ); diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index 3c36e01ab4..e9a2ec8149 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -16,12 +16,28 @@ mw.editcheck.AddReferenceEditCheck.static.defaultConfig = ve.extendObject( {}, m beforePunctuation: false } ); +mw.editcheck.AddReferenceEditCheck.static.choices = [ ...mw.editcheck.BaseEditCheck.static.choices, + // Note: no `icon` fields on these, to better distinguish them from the non-feedback actions + { + action: 'feedback', + label: ve.msg( 'ooui-dialog-process-continue' ), + modes: [ 'feedback' ], + flags: [ 'progressive' ] + }, + { + action: 'reset', + label: ve.msg( 'visualeditor-dialog-action-cancel' ), + modes: [ 'feedback' ], + flags: [ 'safe', 'back' ] + } +]; + mw.editcheck.AddReferenceEditCheck.static.onlyCoveredNodes = true; mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceModel ) { return this.findAddedContent( surfaceModel.getDocument() ).filter( ( range ) => !this.isDismissedRange( range ) ) .map( - ( range ) => new mw.editcheck.EditCheckAction( { + ( range ) => new this.constructor.static.Action( { fragments: [ surfaceModel.getLinearFragment( range ) ], check: this } ) @@ -91,19 +107,22 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, su } ); case 'reject': ve.track( 'activity.editCheckReferences', { action: 'edit-check-reject' } ); - return windowAction.open( - 'editCheckReferencesInspector', - { - fragment: action.fragments[ 0 ] - } - // eslint-disable-next-line arrow-body-style - ).then( ( instance ) => { - return instance.closing; - } ).done( ( data ) => { - if ( data && data.action === 'reject' && data.reason ) { - this.dismiss( action ); - } - } ); + this.mode = 'feedback'; + return; // this will trigger a debounced update, which will redraw the widget + case 'reset': + this.mode = ''; + return; // again triggers a redraw + case 'feedback': + // eslint-disable-next-line no-case-declarations + const selectedItem = action.widget.answerRadioSelect.findSelectedItem(); + if ( selectedItem && selectedItem.getData() ) { + const reason = selectedItem.getData(); + ve.track( 'activity.editCheckReferences', { action: 'dialog-choose-' + reason } ); + this.dismiss( action ); + return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); + } + this.mode = ''; + break; } }; @@ -147,4 +166,65 @@ mw.editcheck.AddReferenceEditCheck.prototype.adjustForPunctuation = function ( i return insertionPointFragment; }; +// Support for the feedback panel + +const AddReferenceAction = function () { + AddReferenceAction.super.apply( this, arguments ); +}; +OO.inheritClass( AddReferenceAction, mw.editcheck.EditCheckAction ); + +AddReferenceAction.prototype.render = function () { + const widget = this.constructor.super.prototype.render.apply( this, arguments ); + + if ( this.check.mode === 'feedback' ) { + // Survey panel + widget.form = new OO.ui.FormLayout( { + classes: [ 've-ui-editCheckActionWidget-feedback' ] + } ); + widget.answerRadioSelect = new OO.ui.RadioSelectWidget( { + items: [ + new OO.ui.RadioOptionWidget( { + data: 'uncertain', + label: ve.msg( 'editcheck-dialog-addref-reject-uncertain' ) + } ), + new OO.ui.RadioOptionWidget( { + data: 'common-knowledge', + label: ve.msg( 'editcheck-dialog-addref-reject-common-knowledge' ) + } ), + new OO.ui.RadioOptionWidget( { + data: 'irrelevant', + label: ve.msg( 'editcheck-dialog-addref-reject-irrelevant' ) + } ), + new OO.ui.RadioOptionWidget( { + data: 'other', + label: ve.msg( 'editcheck-dialog-addref-reject-other' ) + } ) + ] + } ); + widget.answerRadioSelect.on( 'select', () => { + const isSelected = !!widget.answerRadioSelect.findSelectedItem(); + widget.actions.setAbilities( { feedback: isSelected } ); + } ); + widget.form.addItems( + new OO.ui.FieldsetLayout( { + label: ve.msg( 'editcheck-dialog-addref-reject-question' ), + items: [ + new OO.ui.FieldLayout( widget.answerRadioSelect, { + label: ve.msg( 'editcheck-dialog-addref-reject-description' ), + align: 'top' + } ) + ] + } ) + ); + widget.message.$element.empty().append( widget.form.$element ); + widget.actions.setAbilities( { feedback: false } ); + } + + return widget; +}; + +mw.editcheck.AddReferenceEditCheck.static.Action = AddReferenceAction; + +// Register + mw.editcheck.editCheckFactory.register( mw.editcheck.AddReferenceEditCheck ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index a68dcf4a3f..a8ca64f25f 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -3,7 +3,6 @@ mw.editcheck = { ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ) }; -require( './EditCheckInspector.js' ); require( './EditCheckDialog.js' ); require( './EditCheckGutterSidebarDialog.js' ); require( './EditCheckFactory.js' ); diff --git a/extension.json b/extension.json index 65350b9710..a2edc01fd2 100644 --- a/extension.json +++ b/extension.json @@ -631,7 +631,6 @@ "packageFiles": [ "editcheck/modules/init.js", "editcheck/modules/controller.js", - "editcheck/modules/EditCheckInspector.js", "editcheck/modules/EditCheckDialog.js", "editcheck/modules/EditCheckGutterSidebarDialog.js", "editcheck/modules/EditCheckFactory.js", From 3a5f39992f38522aca84caa184cf19f288dbf7a9 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Wed, 26 Feb 2025 15:52:31 +0000 Subject: [PATCH 251/730] build: Updating eslint-config-wikimedia to 0.29.1 The following rules are failing and were disabled: * editcheck/modules: * no-jquery/no-done-fail * modules: * no-jquery/no-done-fail * modules/ve-mw/dm: * no-jquery/no-done-fail * modules/ve-mw/preinit: * no-jquery/no-done-fail * modules/ve-mw/tests: * no-jquery/no-done-fail Change-Id: I4118bfb1fe55f4b44dab2f613cb0262dadc774d6 --- editcheck/modules/.eslintrc.json | 7 +++- editcheck/modules/BaseEditCheck.js | 2 +- .../modules/EditCheckGutterSidebarDialog.js | 8 ++--- editcheck/modules/controller.js | 2 +- modules/.eslintrc.json | 3 +- .../ve.ce.MWExternalLinkAnnotation.js | 2 +- modules/ve-mw/dm/.eslintrc.json | 3 +- .../ve.dm.MWExternalLinkAnnotation.js | 2 +- .../dm/metaitems/ve.dm.MWFlaggedMetaItem.js | 4 +-- .../dm/models/ve.dm.MWTransclusionModel.js | 2 +- .../dm/nodes/ve.dm.MWAlienAnnotationNode.js | 2 +- .../ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js | 2 +- modules/ve-mw/dm/nodes/ve.dm.MWEntityNode.js | 2 +- .../dm/nodes/ve.dm.MWGalleryCaptionNode.js | 2 +- .../dm/nodes/ve.dm.MWGalleryImageNode.js | 6 ++-- modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js | 2 +- .../ve-mw/dm/nodes/ve.dm.MWInlineImageNode.js | 10 +++--- .../nodes/ve.dm.MWNumberedExternalLinkNode.js | 2 +- modules/ve-mw/dm/nodes/ve.dm.MWTableNode.js | 2 +- .../dm/nodes/ve.dm.MWTransclusionNode.js | 2 +- .../init/ve.init.mw.ArticleTargetEvents.js | 2 +- modules/ve-mw/init/ve.init.mw.Platform.js | 2 +- modules/ve-mw/preinit/.eslintrc.json | 3 +- .../ve.init.mw.DesktopArticleTarget.init.js | 4 +-- modules/ve-mw/preinit/ve.utils.parsoid.js | 4 +-- modules/ve-mw/tests/.eslintrc.json | 3 +- .../ve.ui.MWAlienAnnotationContextItem.js | 4 +-- .../ve.ui.MWWikitextStringTransferHandler.js | 2 +- .../ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js | 2 +- .../ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js | 2 +- ...ve.ui.MWWikitextLinkAnnotationInspector.js | 2 +- ...ve.ui.MWTwoPaneTransclusionDialogLayout.js | 4 +-- .../ui/pages/ve.ui.MWAddParameterPage.js | 2 +- .../ve-mw/ui/pages/ve.ui.MWParameterPage.js | 4 +-- .../ve-mw/ui/pages/ve.ui.MWTemplatePage.js | 2 +- .../toolgroups/ve.ui.MWHelpListToolGroup.js | 2 +- .../ui/widgets/ve.ui.MWCategoryInputWidget.js | 4 +-- .../ui/widgets/ve.ui.MWCategoryWidget.js | 2 +- .../ve.ui.MWInternalLinkAnnotationWidget.js | 2 +- ....ui.MWTransclusionOutlineTemplateWidget.js | 2 +- package-lock.json | 35 +++++++++++-------- package.json | 2 +- 42 files changed, 86 insertions(+), 72 deletions(-) diff --git a/editcheck/modules/.eslintrc.json b/editcheck/modules/.eslintrc.json index 3f51c58354..a3e78aea9d 100644 --- a/editcheck/modules/.eslintrc.json +++ b/editcheck/modules/.eslintrc.json @@ -1,7 +1,12 @@ { "root": true, - "extends": [ "../../modules/.eslintrc" ], + "extends": [ + "../../modules/.eslintrc" + ], "parserOptions": { "sourceType": "commonjs" + }, + "rules": { + "no-jquery/no-done-fail": "warn" } } diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index e5eb6b9011..b0dd504187 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -318,5 +318,5 @@ mw.editcheck.BaseEditCheck.prototype.isDismissedRange = function ( range ) { */ mw.editcheck.BaseEditCheck.prototype.isDismissedId = function ( id ) { const ids = this.controller.dismissedIds[ this.constructor.static.name ]; - return ids && ids.indexOf( id ) !== -1; + return ids && ids.includes( id ); }; diff --git a/editcheck/modules/EditCheckGutterSidebarDialog.js b/editcheck/modules/EditCheckGutterSidebarDialog.js index 29d983fb5c..e539c42f4c 100644 --- a/editcheck/modules/EditCheckGutterSidebarDialog.js +++ b/editcheck/modules/EditCheckGutterSidebarDialog.js @@ -101,7 +101,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions let widget; const index = oldWidgets.findIndex( ( owidget ) => owidget.actions.length === section.actions.length && - owidget.actions.every( ( oact ) => section.actions.indexOf( oact ) !== -1 ) + owidget.actions.every( ( oact ) => section.actions.includes( oact ) ) ); if ( index !== -1 ) { widget = oldWidgets.splice( index, 1 )[ 0 ]; @@ -140,7 +140,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions actions: section.actions, footer: section.actions.length !== 1, // just filter out any discarded actions from the allowed set - updateFilter: ( updatedActions, newActions, discardedActions, prevActions ) => prevActions.filter( ( pact ) => discardedActions.indexOf( pact ) === -1 ) + updateFilter: ( updatedActions, newActions, discardedActions, prevActions ) => prevActions.filter( ( pact ) => !discardedActions.includes( pact ) ) } ); } else if ( section.actions.every( ( sact ) => currentWindow.hasAction( sact ) ) ) { @@ -156,7 +156,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions }; this.$body.append( widget.$element ); } - if ( widget.actions.indexOf( this.controller.focused ) !== -1 ) { + if ( widget.actions.includes( this.controller.focused ) ) { widget.icon.setFlags( action.getType() ); } else { widget.icon.clearFlags(); @@ -164,7 +164,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions widget.$element.css( { top: section.rect.top + 2, height: section.rect.height - } ).toggleClass( 've-ui-editCheck-gutter-action-inactive', section.actions.indexOf( this.controller.focused ) === -1 ); + } ).toggleClass( 've-ui-editCheck-gutter-action-inactive', !section.actions.includes( this.controller.focused ) ); this.widgets.push( widget ); } ); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 0197658be0..9c8a293929 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -223,7 +223,7 @@ Controller.prototype.onDocumentChange = function () { Controller.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions ) { // do we need to redraw anything? if ( newActions.length || discardedActions.length ) { - if ( this.focused && discardedActions.indexOf( this.focused ) !== -1 ) { + if ( this.focused && discardedActions.includes( this.focused ) ) { this.focused = undefined; } this.updatePositions(); diff --git a/modules/.eslintrc.json b/modules/.eslintrc.json index c5256085d3..2931d677e9 100644 --- a/modules/.eslintrc.json +++ b/modules/.eslintrc.json @@ -7,6 +7,7 @@ "./eslint-shared.json" ], "rules": { - "no-jquery/no-append-html": "warn" + "no-jquery/no-append-html": "warn", + "no-jquery/no-done-fail": "warn" } } diff --git a/modules/ve-mw/ce/annotations/ve.ce.MWExternalLinkAnnotation.js b/modules/ve-mw/ce/annotations/ve.ce.MWExternalLinkAnnotation.js index 6225d973ba..33c716cc6d 100644 --- a/modules/ve-mw/ce/annotations/ve.ce.MWExternalLinkAnnotation.js +++ b/modules/ve-mw/ce/annotations/ve.ce.MWExternalLinkAnnotation.js @@ -22,7 +22,7 @@ ve.ce.MWExternalLinkAnnotation = function VeCeMWExternalLinkAnnotation( model ) // DOM changes const rel = model.getAttribute( 'rel' ) || ''; const relValues = rel.split( /\s+/ ); - if ( relValues.indexOf( 'mw:WikiLink/Interwiki' ) >= 0 ) { + if ( relValues.includes( 'mw:WikiLink/Interwiki' ) ) { this.$anchor.addClass( 'extiw' ); } else { this.$anchor.addClass( 'external' ); diff --git a/modules/ve-mw/dm/.eslintrc.json b/modules/ve-mw/dm/.eslintrc.json index e115b9fda6..8820a89a94 100644 --- a/modules/ve-mw/dm/.eslintrc.json +++ b/modules/ve-mw/dm/.eslintrc.json @@ -10,6 +10,7 @@ "$": "off" }, "rules": { - "no-jquery/no-append-html": "warn" + "no-jquery/no-append-html": "warn", + "no-jquery/no-done-fail": "warn" } } diff --git a/modules/ve-mw/dm/annotations/ve.dm.MWExternalLinkAnnotation.js b/modules/ve-mw/dm/annotations/ve.dm.MWExternalLinkAnnotation.js index 34d6dc9080..94b6515a43 100644 --- a/modules/ve-mw/dm/annotations/ve.dm.MWExternalLinkAnnotation.js +++ b/modules/ve-mw/dm/annotations/ve.dm.MWExternalLinkAnnotation.js @@ -45,7 +45,7 @@ ve.dm.MWExternalLinkAnnotation.static.toDataElement = function ( domElements, co types = type.trim().split( /\s+/ ); // If the link doesn't have a known RDFa type... - if ( types.indexOf( 'mw:ExtLink' ) === -1 && types.indexOf( 'mw:WikiLink/Interwiki' ) === -1 ) { + if ( !types.includes( 'mw:ExtLink' ) && !types.includes( 'mw:WikiLink/Interwiki' ) ) { // ...when pasting: auto-convert it to the correct type (internal/external/span) if ( converter.isFromClipboard() ) { if ( domElement.hasAttribute( 'href' ) ) { diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWFlaggedMetaItem.js b/modules/ve-mw/dm/metaitems/ve.dm.MWFlaggedMetaItem.js index 454962abd4..ca8be46f93 100644 --- a/modules/ve-mw/dm/metaitems/ve.dm.MWFlaggedMetaItem.js +++ b/modules/ve-mw/dm/metaitems/ve.dm.MWFlaggedMetaItem.js @@ -32,7 +32,7 @@ ve.dm.MWFlaggedMetaItem.static.matchTagNames = [ 'meta' ]; ve.dm.MWFlaggedMetaItem.static.toDataElement = function ( domElements ) { let property = domElements[ 0 ].getAttribute( 'property' ); - if ( !property || this.matchRdfaTypes.indexOf( property ) === -1 ) { + if ( !property || !this.matchRdfaTypes.includes( property ) ) { // Fallback to first match if somehow unset property = this.matchRdfaTypes[ 0 ]; } @@ -44,7 +44,7 @@ ve.dm.MWFlaggedMetaItem.static.toDomElements = function ( dataElement, doc, conv let domElement; let property = OO.getProp( dataElement, 'attributes', 'property' ); - if ( !property || this.matchRdfaTypes.indexOf( property ) === -1 ) { + if ( !property || !this.matchRdfaTypes.includes( property ) ) { // Fallback to first item if somehow unset property = this.matchRdfaTypes[ 0 ]; } diff --git a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js index f4a05656ff..f1d0d0a6b4 100644 --- a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js +++ b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js @@ -303,7 +303,7 @@ // Skip already cached data !hasOwn.call( specCache, title ) && // Skip duplicate titles in the same batch - titles.indexOf( title ) === -1 + !titles.includes( title ) ) { titles.push( title ); } diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWAlienAnnotationNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWAlienAnnotationNode.js index 0fd9c14ac1..4ff950741f 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWAlienAnnotationNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWAlienAnnotationNode.js @@ -45,7 +45,7 @@ ve.dm.MWAlienAnnotationNode.static.toDataElement = function ( domElements ) { ve.dm.MWAlienAnnotationNode.prototype.getWikitextTag = function () { const type = this.getAttribute( 'type' ); - if ( type.indexOf( '/End', type.length - 4 ) !== -1 ) { + if ( type.includes( '/End', type.length - 4 ) ) { return ''; } return ''; diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js index cedef84b47..4dde33a67f 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js @@ -43,7 +43,7 @@ ve.dm.MWBlockImageNode.static.name = 'mwBlockImage'; ve.dm.MWBlockImageNode.static.preserveHtmlAttributes = function ( attribute ) { const attributes = [ 'typeof', 'class', 'src', 'resource', 'width', 'height', 'href', 'rel', 'data-mw', 'alt' ]; - return attributes.indexOf( attribute ) === -1; + return !attributes.includes( attribute ); }; ve.dm.MWBlockImageNode.static.handlesOwnChildren = true; diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWEntityNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWEntityNode.js index cb28673ad9..4a100788da 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWEntityNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWEntityNode.js @@ -40,7 +40,7 @@ ve.dm.MWEntityNode.static.toDataElement = function ( domElements ) { character: domElements[ 0 ].textContent } }; - if ( domElements[ 0 ].getAttribute( 'typeof' ).indexOf( 'mw:DisplaySpace' ) !== -1 ) { + if ( domElements[ 0 ].getAttribute( 'typeof' ).includes( 'mw:DisplaySpace' ) ) { dataElement.attributes.displaySpace = true; } return dataElement; diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWGalleryCaptionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWGalleryCaptionNode.js index 28d06fc542..3820564fb8 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWGalleryCaptionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWGalleryCaptionNode.js @@ -29,7 +29,7 @@ ve.dm.MWGalleryCaptionNode.static.matchTagNames = [ 'li' ]; ve.dm.MWGalleryCaptionNode.static.matchFunction = function ( element ) { const parentTypeof = ( element.parentNode && element.parentNode.getAttribute( 'typeof' ) ) || ''; return element.getAttribute( 'class' ) === 'gallerycaption' && - parentTypeof.trim().split( /\s+/ ).indexOf( 'mw:Extension/gallery' ) !== -1; + parentTypeof.trim().split( /\s+/ ).includes( 'mw:Extension/gallery' ); }; ve.dm.MWGalleryCaptionNode.static.parentNodeTypes = [ 'mwGallery' ]; diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWGalleryImageNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWGalleryImageNode.js index 961541255c..45245b5dab 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWGalleryImageNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWGalleryImageNode.js @@ -35,14 +35,14 @@ ve.dm.MWGalleryImageNode.static.childNodeTypes = [ 'mwGalleryImageCaption' ]; ve.dm.MWGalleryImageNode.static.matchFunction = function ( element ) { const parentTypeof = ( element.parentNode && element.parentNode.getAttribute( 'typeof' ) ) || ''; return element.getAttribute( 'class' ) === 'gallerybox' && - parentTypeof.trim().split( /\s+/ ).indexOf( 'mw:Extension/gallery' ) !== -1; + parentTypeof.trim().split( /\s+/ ).includes( 'mw:Extension/gallery' ); }; ve.dm.MWGalleryImageNode.static.parentNodeTypes = [ 'mwGallery' ]; ve.dm.MWGalleryImageNode.static.preserveHtmlAttributes = function ( attribute ) { const attributes = [ 'typeof', 'class', 'src', 'resource', 'width', 'height', 'href', 'rel', 'alt', 'data-mw' ]; - return attributes.indexOf( attribute ) === -1; + return !attributes.includes( attribute ); }; // By handling our own children we ensure that original DOM attributes // are deep copied back by the converter (in renderHtmlAttributeList) @@ -59,7 +59,7 @@ ve.dm.MWGalleryImageNode.static.textContentFromCaption = function textContentFro content += c.nodeValue; } else if ( c instanceof HTMLElement && - ( metaDataTags.indexOf( c.nodeName.toLowerCase() ) === -1 ) && + ( !metaDataTags.includes( c.nodeName.toLowerCase() ) ) && !/\bmw:Extension\/ref\b/.test( c.getAttribute( 'typeOf' ) ) ) { content += textContentFromCaption( c ); diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js index 974865ccdf..cf0fdb0682 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js @@ -154,7 +154,7 @@ ve.dm.MWImageNode.static.describeChanges = function ( attributeChanges, attribut ); } for ( const key in attributeChanges ) { - if ( customKeys.indexOf( key ) === -1 ) { + if ( !customKeys.includes( key ) ) { if ( key === 'borderImage' && !attributeChanges.borderImage.from && !attributeChanges.borderImage.to ) { // Skip noise from the data model continue; diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWInlineImageNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWInlineImageNode.js index 6923ae2f8f..49f40ce049 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWInlineImageNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWInlineImageNode.js @@ -40,7 +40,7 @@ ve.dm.MWInlineImageNode.static.name = 'mwInlineImage'; ve.dm.MWInlineImageNode.static.preserveHtmlAttributes = function ( attribute ) { const attributes = [ 'typeof', 'class', 'src', 'resource', 'width', 'height', 'href', 'data-mw' ]; - return attributes.indexOf( attribute ) === -1; + return !attributes.includes( attribute ); }; ve.dm.MWInlineImageNode.static.matchTagNames = [ 'span' ]; @@ -108,7 +108,7 @@ ve.dm.MWInlineImageNode.static.toDataElement = function ( domElements, converter classes = typeof classes === 'string' ? classes.trim().split( /\s+/ ) : []; // Deal with border flag - if ( classes.indexOf( 'mw-image-border' ) !== -1 ) { + if ( classes.includes( 'mw-image-border' ) ) { attributes.borderImage = true; recognizedClasses.push( 'mw-image-border' ); } @@ -117,7 +117,7 @@ ve.dm.MWInlineImageNode.static.toDataElement = function ( domElements, converter attributes.valign = 'default'; [ 'midde', 'baseline', 'sub', 'super', 'top', 'text-top', 'bottom', 'text-bottom' ].some( ( valign ) => { const className = 'mw-valign-' + valign; - if ( classes.indexOf( className ) !== -1 ) { + if ( classes.includes( className ) ) { attributes.valign = valign; recognizedClasses.push( className ); return true; @@ -126,13 +126,13 @@ ve.dm.MWInlineImageNode.static.toDataElement = function ( domElements, converter } ); // Border - if ( classes.indexOf( 'mw-image-border' ) !== -1 ) { + if ( classes.includes( 'mw-image-border' ) ) { attributes.borderImage = true; recognizedClasses.push( 'mw-image-border' ); } // Default-size - if ( classes.indexOf( 'mw-default-size' ) !== -1 ) { + if ( classes.includes( 'mw-default-size' ) ) { attributes.defaultSize = true; recognizedClasses.push( 'mw-default-size' ); } diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWNumberedExternalLinkNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWNumberedExternalLinkNode.js index 06c83e19bd..d5aa0d54fd 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWNumberedExternalLinkNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWNumberedExternalLinkNode.js @@ -51,7 +51,7 @@ ve.dm.MWNumberedExternalLinkNode.static.matchFunction = function ( domElement ) // contexts.) // Note that ve:NumberedLink is only used internally by VE for cross-document // pastes and is never sent to Parsoid. - return domElement.childNodes.length === 0 || domElement.getAttribute( 'rel' ).indexOf( 've:NumberedLink' ) !== -1; + return domElement.childNodes.length === 0 || domElement.getAttribute( 'rel' ).includes( 've:NumberedLink' ); }; ve.dm.MWNumberedExternalLinkNode.static.toDataElement = function ( domElements ) { diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWTableNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWTableNode.js index d5c0d380f8..2e6cff524e 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWTableNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWTableNode.js @@ -64,7 +64,7 @@ ve.dm.MWTableNode.static.toDataElement = function ( domElements ) { classAttr = domElement.getAttribute( 'class' ); const attributes = { - hasExpandedAttrs: ( domElement.getAttribute( 'typeof' ) || '' ).indexOf( 'mw:ExpandedAttrs' ) !== -1 + hasExpandedAttrs: ( domElement.getAttribute( 'typeof' ) || '' ).includes( 'mw:ExpandedAttrs' ) }; this.setClassAttributes( attributes, classAttr ); diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js index 8c282f34f7..5a0b174467 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js @@ -63,7 +63,7 @@ ve.dm.MWTransclusionNode.static.enableAboutGrouping = true; // We handle rendering ourselves, no need to render attributes from originalDomElements (T207325), // except for data-parsoid/RESTBase ID (T207325) ve.dm.MWTransclusionNode.static.preserveHtmlAttributes = function ( attribute ) { - return [ 'data-parsoid', 'id' ].indexOf( attribute ) !== -1; + return [ 'data-parsoid', 'id' ].includes( attribute ); }; ve.dm.MWTransclusionNode.static.getHashObject = function ( dataElement ) { diff --git a/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js b/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js index 44b70ab57b..fea9c127b3 100644 --- a/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js +++ b/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js @@ -150,7 +150,7 @@ ve.init.mw.ArticleTargetEvents.prototype.trackSaveError = function ( code ) { specialTypes = [ 'editconflict' ]; let key = 'performance.user.saveError'; - if ( specialTypes.indexOf( code ) !== -1 ) { + if ( specialTypes.includes( code ) ) { key += '.' + code; } this.trackTiming( key, { diff --git a/modules/ve-mw/init/ve.init.mw.Platform.js b/modules/ve-mw/init/ve.init.mw.Platform.js index 56b88fb5c9..d28ca9581c 100644 --- a/modules/ve-mw/init/ve.init.mw.Platform.js +++ b/modules/ve-mw/init/ve.init.mw.Platform.js @@ -319,7 +319,7 @@ ve.init.mw.Platform.prototype.fetchSpecialCharList = function () { characters[ groupName ] = { label: mw.msg( 'special-characters-group-' + groupName ), symbols: this.processSpecialCharSymbols( groupObject ), - attributes: { dir: rtlGroups.indexOf( groupName ) !== -1 ? 'rtl' : 'ltr' } + attributes: { dir: rtlGroups.includes( groupName ) ? 'rtl' : 'ltr' } }; } ); diff --git a/modules/ve-mw/preinit/.eslintrc.json b/modules/ve-mw/preinit/.eslintrc.json index 9835fab301..99f92384c0 100644 --- a/modules/ve-mw/preinit/.eslintrc.json +++ b/modules/ve-mw/preinit/.eslintrc.json @@ -5,6 +5,7 @@ "rules": { "no-jquery/no-extend": "off", "no-jquery/no-deferred": "off", - "no-jquery/no-when": "off" + "no-jquery/no-when": "off", + "no-jquery/no-done-fail": "warn" } } diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index 52ac88e266..61615acad9 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -1342,7 +1342,7 @@ // If forced by the URL parameter, skip the namespace check (T221892) and preference check ( url.searchParams.get( 'veaction' ) === 'edit' || ( // Only in enabled namespaces - conf.namespaces.indexOf( new mw.Title( mw.config.get( 'wgRelevantPageName' ) ).getNamespaceId() ) !== -1 && + conf.namespaces.includes( new mw.Title( mw.config.get( 'wgRelevantPageName' ) ).getNamespaceId() ) && // Enabled per user preferences enabledForUser @@ -1428,7 +1428,7 @@ const mode = veactionToMode[ editUrl.searchParams.get( 'veaction' ) ] || // Always load VE visual mode if collabSession is set ( editUrl.searchParams.has( 'collabSession' ) ? 'visual' : null ); - if ( mode && availableModes.indexOf( mode ) !== -1 ) { + if ( mode && availableModes.includes( mode ) ) { return mode; } } diff --git a/modules/ve-mw/preinit/ve.utils.parsoid.js b/modules/ve-mw/preinit/ve.utils.parsoid.js index 9a18d5f86f..89a1564313 100644 --- a/modules/ve-mw/preinit/ve.utils.parsoid.js +++ b/modules/ve-mw/preinit/ve.utils.parsoid.js @@ -147,7 +147,7 @@ mw.libs.ve.deduplicateStyles = function ( element ) { */ function isFosterablePosition( node ) { const fosterablePositions = [ 'table', 'thead', 'tbody', 'tfoot', 'tr' ]; - return node && fosterablePositions.indexOf( node.parentNode.nodeName.toLowerCase() ) !== -1; + return node && fosterablePositions.includes( node.parentNode.nodeName.toLowerCase() ); } const styleTagKeys = {}; @@ -318,7 +318,7 @@ mw.libs.ve.getTargetDataFromHref = function ( href, doc ) { const articleBaseRegex = new RegExp( regexEscape( articleBase ).replace( regexEscape( '$1' ), '(.*)' ) ); const matches = relativeHref.match( articleBaseRegex ); if ( matches ) { - if ( queryLength === 0 && matches && matches[ 1 ].split( '#' )[ 0 ].indexOf( '?' ) === -1 ) { + if ( queryLength === 0 && matches && !matches[ 1 ].split( '#' )[ 0 ].includes( '?' ) ) { // Take the relative path return returnInternalData( matches[ 1 ] ); } diff --git a/modules/ve-mw/tests/.eslintrc.json b/modules/ve-mw/tests/.eslintrc.json index 0f04043cb0..fde962120d 100644 --- a/modules/ve-mw/tests/.eslintrc.json +++ b/modules/ve-mw/tests/.eslintrc.json @@ -18,7 +18,8 @@ ], "indent": "off", "no-jquery/no-html": "off", - "no-jquery/no-parse-html-literal": "off" + "no-jquery/no-parse-html-literal": "off", + "no-jquery/no-done-fail": "warn" }, "parserOptions": { "ecmaVersion": 2018 diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWAlienAnnotationContextItem.js b/modules/ve-mw/ui/contextitems/ve.ui.MWAlienAnnotationContextItem.js index 5c3a6cb3b1..5aa26cabd3 100644 --- a/modules/ve-mw/ui/contextitems/ve.ui.MWAlienAnnotationContextItem.js +++ b/modules/ve-mw/ui/contextitems/ve.ui.MWAlienAnnotationContextItem.js @@ -36,7 +36,7 @@ ve.ui.MWAlienAnnotationContextItem.static.modelClasses = [ ve.ui.MWAlienAnnotationContextItem.prototype.getLabelMessage = function () { const type = this.model.getAttribute( 'type' ); - if ( type.indexOf( '/End', type.length - 4 ) !== -1 ) { + if ( type.includes( '/End', type.length - 4 ) ) { return mw.message( 'visualeditor-annotations-default-end' ).text(); } else { return mw.message( 'visualeditor-annotations-default-start' ).text(); @@ -45,7 +45,7 @@ ve.ui.MWAlienAnnotationContextItem.prototype.getLabelMessage = function () { ve.ui.MWAlienAnnotationContextItem.prototype.getDescriptionMessage = function () { const type = this.model.getAttribute( 'type' ); - if ( type.indexOf( '/End', type.length - 4 ) !== -1 ) { + if ( type.includes( '/End', type.length - 4 ) ) { return ''; } return mw.message( 'visualeditor-annotations-default-description' ).parseDom(); diff --git a/modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js b/modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js index 2549f046a6..a411203daa 100644 --- a/modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js +++ b/modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js @@ -62,7 +62,7 @@ ve.ui.MWWikitextStringTransferHandler.static.matchFunction = function ( item ) { if ( registry.registry[ i ].test( text ) ) { return true; } - } else if ( text.indexOf( rule ) !== -1 ) { + } else if ( text.includes( rule ) ) { return true; } } diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js index 234784fa3d..f92aac524f 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js @@ -227,7 +227,7 @@ ve.ui.MWMetaDialog.prototype.getSetupProcess = function ( data ) { selectWidget.findItemFromData( page ).setDisabled( isSource ); } ); - if ( isSource && visualOnlyPages.indexOf( data.page || 'categories' ) !== -1 ) { + if ( isSource && visualOnlyPages.includes( data.page || 'categories' ) ) { data.page = 'templatesUsed'; } diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js index 64262f4300..a6653153a0 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js @@ -284,7 +284,7 @@ ve.ui.MWSaveDialog.prototype.clearDiff = function () { * @throws {Error} Unknown saveDialog panel */ ve.ui.MWSaveDialog.prototype.swapPanel = function ( panel, noFocus ) { - if ( ( [ 'save', 'review', 'preview', 'conflict' ].indexOf( panel ) ) === -1 ) { + if ( ![ 'save', 'review', 'preview', 'conflict' ].includes( panel ) ) { throw new Error( 'Unknown saveDialog panel: ' + panel ); } diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js index bfb1ff2a0b..3b01727a16 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js @@ -279,7 +279,7 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function } else { labelText = this.initialLabel; } - if ( labelText.indexOf( ']]' ) !== -1 ) { + if ( labelText.includes( ']]' ) ) { labelText = labelText.replace( /(\]{2,})/g, '$1' ); } const labelTitle = mw.Title.newFromText( labelText ); diff --git a/modules/ve-mw/ui/layouts/ve.ui.MWTwoPaneTransclusionDialogLayout.js b/modules/ve-mw/ui/layouts/ve.ui.MWTwoPaneTransclusionDialogLayout.js index f6887505f1..73c1d02208 100644 --- a/modules/ve-mw/ui/layouts/ve.ui.MWTwoPaneTransclusionDialogLayout.js +++ b/modules/ve-mw/ui/layouts/ve.ui.MWTwoPaneTransclusionDialogLayout.js @@ -278,7 +278,7 @@ ve.ui.MWTwoPaneTransclusionDialogLayout.prototype.removePages = function ( pages this.stackLayout.getItems().forEach( ( page ) => { const pageName = page.getName(); - if ( pagesNamesToRemove.indexOf( pageName ) !== -1 ) { + if ( pagesNamesToRemove.includes( pageName ) ) { pagesToRemove.push( page ); delete this.pages[ pageName ]; if ( this.currentPageName === pageName ) { @@ -289,7 +289,7 @@ ve.ui.MWTwoPaneTransclusionDialogLayout.prototype.removePages = function ( pages } // Move the selection from a removed top-level part to another, but not to a parameter - if ( pageName.indexOf( '/' ) === -1 ) { + if ( !pageName.includes( '/' ) ) { if ( !isCurrentPageRemoved ) { // The last part before the removed one prevSelectionCandidate = pageName; diff --git a/modules/ve-mw/ui/pages/ve.ui.MWAddParameterPage.js b/modules/ve-mw/ui/pages/ve.ui.MWAddParameterPage.js index 289caa17e2..50a0876fdd 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWAddParameterPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWAddParameterPage.js @@ -184,7 +184,7 @@ ve.ui.MWAddParameterPage.prototype.getValidationErrors = function ( name ) { const spec = this.template.getSpec(); let key; - if ( spec.getParameterAliases( name ).indexOf( name ) !== -1 ) { + if ( spec.getParameterAliases( name ).includes( name ) ) { key = 'visualeditor-dialog-transclusion-add-param-error-alias'; } else if ( this.template.hasParameter( name ) ) { key = 'visualeditor-dialog-transclusion-add-param-error-exists-selected'; diff --git a/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js b/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js index 487e169905..9b0c917e7b 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js @@ -253,7 +253,7 @@ ve.ui.MWParameterPage.prototype.createValueInput = function () { ( suggestedValue ) => typeof suggestedValue === 'string' ).map( ( suggestedValue ) => ( { data: suggestedValue, label: suggestedValue || '\xA0' } ) ); return new OO.ui.ComboBoxInputWidget( valueInputConfig ); - } else if ( type !== 'line' || value.indexOf( '\n' ) !== -1 ) { + } else if ( type !== 'line' || value.includes( '\n' ) ) { // If the type is line, but there are already newlines in the provided // value, don't break the existing content by only providing a single- // line field. (This implies that the TemplateData for the field isn't @@ -277,7 +277,7 @@ ve.ui.MWParameterPage.prototype.createValueInput = function () { * @return {boolean} True if suggested values should be shown */ ve.ui.MWParameterPage.prototype.isSuggestedValueType = function ( type ) { - return [ 'unknown', 'content', 'line', 'string', 'number', 'unbalanced-wikitext' ].indexOf( type ) > -1; + return [ 'unknown', 'content', 'line', 'string', 'number', 'unbalanced-wikitext' ].includes( type ); }; /** diff --git a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js index 718e443640..a71391a149 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js @@ -67,7 +67,7 @@ ve.ui.MWTemplatePage = function VeUiMWTemplatePage( template, name, config ) { } catch ( e ) { } // When {{User:Foo}} can be parsed as "Foo", we know the ":" is not syntax. - key = title && title.getMain().indexOf( ':' ) === -1 ? + key = title && !title.getMain().includes( ':' ) ? 'visualeditor-dialog-transclusion-template-title-nonexistent' : 'visualeditor-dialog-transclusion-template-title-modifier'; } else { diff --git a/modules/ve-mw/ui/toolgroups/ve.ui.MWHelpListToolGroup.js b/modules/ve-mw/ui/toolgroups/ve.ui.MWHelpListToolGroup.js index 8403c85485..2ec87ffea6 100644 --- a/modules/ve-mw/ui/toolgroups/ve.ui.MWHelpListToolGroup.js +++ b/modules/ve-mw/ui/toolgroups/ve.ui.MWHelpListToolGroup.js @@ -124,7 +124,7 @@ ve.ui.MWUserGuideTool.prototype.onUpdateState = function () {}; ve.ui.MWUserGuideTool.prototype.onSelect = function () { this.setActive( false ); const urlOrTitle = ve.msg( 'visualeditor-help-link' ); - if ( urlOrTitle.indexOf( '//' ) !== -1 ) { + if ( urlOrTitle.includes( '//' ) ) { window.open( urlOrTitle ); } else { // This link used to be internal link to mw:, but that doesn't work diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js index b53d4ce436..470a1d4b58 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js @@ -105,7 +105,7 @@ ve.ui.MWCategoryInputWidget.prototype.getLookupCacheDataFromResponse = function } if ( linkCacheUpdate[ redirect.to ].redirectFrom && - linkCacheUpdate[ redirect.to ].redirectFrom.indexOf( redirect.from ) === -1 + !linkCacheUpdate[ redirect.to ].redirectFrom.includes( redirect.from ) ) { linkCacheUpdate[ redirect.to ].redirectFrom.push( redirect.from ); } else { @@ -157,7 +157,7 @@ ve.ui.MWCategoryInputWidget.prototype.getLookupMenuOptionsFromData = function ( linkCacheUpdate[ suggestedCategoryTitle ] = { missing: false }; } if ( - existingCategories.indexOf( suggestedCategory ) === -1 + !existingCategories.includes( suggestedCategory ) ) { if ( suggestedCacheEntry && suggestedCacheEntry.hidden ) { hiddenCategoryItems.push( suggestedCategory ); diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js index b0058d19d4..8853d21dd9 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js @@ -39,7 +39,7 @@ ve.ui.MWCategoryWidget = function VeUiMWCategoryWidget( config ) { this.normalizedTitles = {}; this.popup = new ve.ui.MWCategoryPopupWidget(); this.input = new ve.ui.MWCategoryInputWidget( this, { $overlay: config.$overlay } ); - this.forceCapitalization = mw.config.get( 'wgCaseSensitiveNamespaces' ).indexOf( categoryNamespace ) === -1; + this.forceCapitalization = !mw.config.get( 'wgCaseSensitiveNamespaces' ).includes( categoryNamespace ); this.categoryPrefix = mw.config.get( 'wgFormattedNamespaces' )[ categoryNamespace ] + ':'; this.expandedItem = null; diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWInternalLinkAnnotationWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWInternalLinkAnnotationWidget.js index 4e34618026..d3706e20fa 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWInternalLinkAnnotationWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWInternalLinkAnnotationWidget.js @@ -112,7 +112,7 @@ ve.ui.MWInternalLinkAnnotationWidget.prototype.onTextChange = function ( value ) value = targetData.title; this.input.query.setValue( targetData.title ); } - } else if ( namespacesWithSubpages.indexOf( basePageObj.namespace ) !== -1 && value[ 0 ] === '/' ) { + } else if ( namespacesWithSubpages.includes( basePageObj.namespace ) && value[ 0 ] === '/' ) { // This does make it more-difficult to deliberately link to a page in the // default namespace that starts with a / when you're on a subpage-allowing // namespace. However, the exact same trick you need to know to make it work diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineTemplateWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineTemplateWidget.js index 670bee03ab..c46dd3b60a 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineTemplateWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineTemplateWidget.js @@ -431,7 +431,7 @@ ve.ui.MWTransclusionOutlineTemplateWidget.prototype.filterParameters = function const foundSomeMatch = placesToSearch.some( // Aliases missed validation for a long time and aren't guaranteed to be strings - ( term ) => term && typeof term === 'string' && term.toLowerCase().indexOf( query ) !== -1 + ( term ) => term && typeof term === 'string' && term.toLowerCase().includes( query ) ); item.toggle( foundSomeMatch ); diff --git a/package-lock.json b/package-lock.json index b215750b4f..6384f073a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@wdio/mocha-framework": "7.33.0", "@wdio/spec-reporter": "7.16.13", "api-testing": "1.6.0", - "eslint-config-wikimedia": "0.28.2", + "eslint-config-wikimedia": "0.29.1", "grunt": "1.6.1", "grunt-banana-checker": "0.13.0", "grunt-contrib-watch": "1.1.0", @@ -4863,10 +4863,11 @@ } }, "node_modules/eslint-config-wikimedia": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.28.2.tgz", - "integrity": "sha512-5+rdnT7wH1gpKAO6tHYThg78eMhZMruJzvqku3Y5iaEY/A7kSKLFpA/vOj/snys9fKjDHC9BXmArQh+agkOoJQ==", + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.29.1.tgz", + "integrity": "sha512-4dbL5o3hKGSvreyrGZWLPoTDLFubZ575IQOPhUaTcpbTsi0u05TBEMsOyYkthTaK21vsFQqhSYtxp/xU93BSdA==", "dev": true, + "license": "MIT", "dependencies": { "browserslist-config-wikimedia": "^0.7.0", "eslint": "^8.57.0", @@ -4878,13 +4879,16 @@ "eslint-plugin-mediawiki": "^0.7.0", "eslint-plugin-mocha": "^10.4.3", "eslint-plugin-n": "^17.7.0", - "eslint-plugin-no-jquery": "^3.0.1", + "eslint-plugin-no-jquery": "^3.1.1", "eslint-plugin-qunit": "^8.1.1", "eslint-plugin-security": "^1.7.1", "eslint-plugin-unicorn": "^53.0.0", "eslint-plugin-vue": "^9.26.0", "eslint-plugin-wdio": "^8.24.12", "eslint-plugin-yml": "^1.14.0" + }, + "engines": { + "node": ">=18 <23" } }, "node_modules/eslint-plugin-compat": { @@ -5091,10 +5095,11 @@ } }, "node_modules/eslint-plugin-no-jquery": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.0.1.tgz", - "integrity": "sha512-GrzdjIxox/3x8hpSwpxiMuEQFipiJHTGiVsp0T1TI6GH+KVSbXa4z/56xTV1WiIe66u3iRgvCIipu9CRthecpQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.1.1.tgz", + "integrity": "sha512-LTLO3jH/Tjr1pmxCEqtV6qmt+OChv8La4fwgG470JRpgxyFF4NOzoC9CRy92GIWD3Yjl0qLEgPmD2FLQWcNEjg==", "dev": true, + "license": "MIT", "peerDependencies": { "eslint": ">=8.0.0" } @@ -17862,9 +17867,9 @@ } }, "eslint-config-wikimedia": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.28.2.tgz", - "integrity": "sha512-5+rdnT7wH1gpKAO6tHYThg78eMhZMruJzvqku3Y5iaEY/A7kSKLFpA/vOj/snys9fKjDHC9BXmArQh+agkOoJQ==", + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.29.1.tgz", + "integrity": "sha512-4dbL5o3hKGSvreyrGZWLPoTDLFubZ575IQOPhUaTcpbTsi0u05TBEMsOyYkthTaK21vsFQqhSYtxp/xU93BSdA==", "dev": true, "requires": { "browserslist-config-wikimedia": "^0.7.0", @@ -17877,7 +17882,7 @@ "eslint-plugin-mediawiki": "^0.7.0", "eslint-plugin-mocha": "^10.4.3", "eslint-plugin-n": "^17.7.0", - "eslint-plugin-no-jquery": "^3.0.1", + "eslint-plugin-no-jquery": "^3.1.1", "eslint-plugin-qunit": "^8.1.1", "eslint-plugin-security": "^1.7.1", "eslint-plugin-unicorn": "^53.0.0", @@ -18024,9 +18029,9 @@ } }, "eslint-plugin-no-jquery": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.0.1.tgz", - "integrity": "sha512-GrzdjIxox/3x8hpSwpxiMuEQFipiJHTGiVsp0T1TI6GH+KVSbXa4z/56xTV1WiIe66u3iRgvCIipu9CRthecpQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.1.1.tgz", + "integrity": "sha512-LTLO3jH/Tjr1pmxCEqtV6qmt+OChv8La4fwgG470JRpgxyFF4NOzoC9CRy92GIWD3Yjl0qLEgPmD2FLQWcNEjg==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index 7313de24ba..fce88e9c98 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@wdio/mocha-framework": "7.33.0", "@wdio/spec-reporter": "7.16.13", "api-testing": "1.6.0", - "eslint-config-wikimedia": "0.28.2", + "eslint-config-wikimedia": "0.29.1", "grunt": "1.6.1", "grunt-banana-checker": "0.13.0", "grunt-contrib-watch": "1.1.0", From 38437a15959f3306590e2a46f8fbdd55d89c83e6 Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Thu, 27 Mar 2025 19:39:52 -0400 Subject: [PATCH 252/730] build: Upgrade @wdio/* to 7.40.0 Mostly this is just to verify that the LibUp upgrade will work. Change-Id: Iddf48f7db4b46a074c130e0c8c8f5b3515dc0f11 --- package-lock.json | 1921 ++++++++++++++++++++++++++++----------------- package.json | 10 +- 2 files changed, 1219 insertions(+), 712 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6384f073a5..2f37be4298 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,11 @@ "name": "visualeditor", "version": "0.0.0", "devDependencies": { - "@wdio/cli": "7.16.13", - "@wdio/junit-reporter": "7.16.13", - "@wdio/local-runner": "7.16.13", - "@wdio/mocha-framework": "7.33.0", - "@wdio/spec-reporter": "7.16.13", + "@wdio/cli": "7.40.0", + "@wdio/junit-reporter": "7.40.0", + "@wdio/local-runner": "7.40.0", + "@wdio/mocha-framework": "7.40.0", + "@wdio/spec-reporter": "7.40.0", "api-testing": "1.6.0", "eslint-config-wikimedia": "0.29.1", "grunt": "1.6.1", @@ -161,17 +161,25 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "dev": true, + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, "node_modules/@csstools/css-parser-algorithms": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", @@ -903,6 +911,7 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -978,6 +987,7 @@ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", "dev": true, + "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -986,34 +996,42 @@ } }, "node_modules/@types/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-P+dkdFu0n08PDIvw+9nT9ByQnd+Udc8DaWPb9HKfaPwCvWvQpC5XaMRx2xLWECm9x1VKNps6vEAlirjA6+uNrQ==", - "dev": true + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-cache-semantics": "*", - "@types/keyv": "*", + "@types/keyv": "^3.1.4", "@types/node": "*", - "@types/responselike": "*" + "@types/responselike": "^1.0.0" } }, "node_modules/@types/diff": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.2.tgz", - "integrity": "sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg==", - "dev": true + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.3.tgz", + "integrity": "sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/easy-table": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-0.0.33.tgz", - "integrity": "sha512-/vvqcJPmZUfQwCgemL0/34G7bIQnCuvgls379ygRlcC1FqNqk3n+VZ15dAO51yl6JNDoWd8vsk+kT8zfZ1VZSw==", - "dev": true + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-1.2.3.tgz", + "integrity": "sha512-uT9nuF3D1+KgNXRCft0/Z4BL5S/73D7dZ+Ky4796MvWPgwUp6gLudt1YOfvtOuuet+buFk+WqUR7j1K77gMnAw==", + "deprecated": "This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.", + "dev": true, + "license": "MIT", + "dependencies": { + "easy-table": "*" + } }, "node_modules/@types/ejs": { "version": "3.1.0", @@ -1038,19 +1056,40 @@ "dev": true }, "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", + "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", "dev": true, + "license": "MIT", "dependencies": { + "@types/jsonfile": "*", "@types/node": "*" } }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@types/glob/node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/inquirer": { "version": "8.2.1", @@ -1098,11 +1137,22 @@ "integrity": "sha512-UUA1sH0RSRROdInuDOA1yoRzbi5xVFD1RHCoOvNRPTNwR8zBkJ/84PZ6NhKVDtKp0FTeIccJCdQz1X2aJPr4uw==", "dev": true }, + "node_modules/@types/jsonfile": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", + "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1176,10 +1226,14 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", - "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", - "dev": true + "version": "18.19.84", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.84.tgz", + "integrity": "sha512-ACYy2HGcZPHxEeWTqowTF7dhXN+JU1o7Gr4b41klnn6pj2LD6rsiGqSZojMdk1Jh2ys3m76ap+ae1vvE4+5+vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", @@ -1188,10 +1242,11 @@ "dev": true }, "node_modules/@types/object-inspect": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.8.1.tgz", - "integrity": "sha512-0JTdf3CGV0oWzE6Wa40Ayv2e2GhpP3pEJMcrlM74vBSJPuuNkVwfDnl0SZxyFCXETcB4oKA/MpTVfuYSMOelBg==", - "dev": true + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/q": { "version": "1.5.5", @@ -1209,10 +1264,11 @@ } }, "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1233,10 +1289,11 @@ } }, "node_modules/@types/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", - "dev": true + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", + "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/through": { "version": "0.0.30", @@ -1248,16 +1305,18 @@ } }, "node_modules/@types/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==", - "dev": true + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", + "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", - "dev": true + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/validator": { "version": "13.7.2", @@ -1269,7 +1328,8 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/yargs": { "version": "16.0.4", @@ -1287,10 +1347,11 @@ "dev": true }, "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -1424,36 +1485,38 @@ "dev": true }, "node_modules/@wdio/cli": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.16.13.tgz", - "integrity": "sha512-y0C/eLLyLCVWrsJVimozUQBQWD/goIUxmtB91rjMAqTjeLn5b0VoPhr+EKXGCHXz3ylvXGGJ3RaI0l1vz9Cf8w==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.40.0.tgz", + "integrity": "sha512-M0txYEqqamBvJe4FEuqwWq1jd879sElF047BXSv2GRu4R1/iEBPYJHjn9KuL60Fkkpp/L1NMHTl7gW9i445edQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/ejs": "^3.0.5", - "@types/fs-extra": "^9.0.4", + "@types/fs-extra": "^11.0.1", "@types/inquirer": "^8.1.2", "@types/lodash.flattendeep": "^4.4.6", "@types/lodash.pickby": "^4.6.6", "@types/lodash.union": "^4.6.6", - "@types/node": "^17.0.4", + "@types/node": "^18.0.0", "@types/recursive-readdir": "^2.2.0", - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/protocols": "7.27.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "async-exit-hook": "^2.0.1", "chalk": "^4.0.0", "chokidar": "^3.0.0", "cli-spinners": "^2.1.0", "ejs": "^3.0.1", - "fs-extra": "^10.0.0", - "inquirer": "8.1.5", + "fs-extra": "^11.1.1", + "inquirer": "8.2.4", "lodash.flattendeep": "^4.4.0", "lodash.pickby": "^4.6.0", "lodash.union": "^4.6.0", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.0", "recursive-readdir": "^2.2.2", - "webdriverio": "7.16.13", + "webdriverio": "7.40.0", "yargs": "^17.0.0", "yarn-install": "^1.0.0" }, @@ -1464,31 +1527,95 @@ "node": ">=12.0.0" } }, + "node_modules/@wdio/cli/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@wdio/config": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.16.13.tgz", - "integrity": "sha512-LSGoa83tWQIBppB+LeHjY40B9tuuvmDV1qdBLVXR1ROcOUWWz/oQP3NFLtLm3266LXoJUbwebzGcRIK1EcNk3Q==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.40.0.tgz", + "integrity": "sha512-ayQELXyxa+k9/2a509F5a1oTsCa/w8D1nDrd+hzm+1mYb4Te2lceWCCzm+atGKkMpvjLH4GvhrEBYLh3rIWk2A==", "dev": true, + "license": "MIT", "dependencies": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", + "@types/glob": "^8.1.0", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "deepmerge": "^4.0.0", - "glob": "^7.1.2" + "glob": "^8.0.3" }, "engines": { "node": ">=12.0.0" } }, + "node_modules/@wdio/config/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@wdio/config/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@wdio/config/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@wdio/junit-reporter": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.16.13.tgz", - "integrity": "sha512-VKhly72NZY2/SNnfbYXO/HHov9oj+pk0aaq5TNzIJJoqtH4uqDz+L2p7wu9nKnRnywmwvaTm7pbYZGlOuty26A==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.40.0.tgz", + "integrity": "sha512-nGxzvdCBHUQOtKbCrihO+MjLdfyeYPVeoCAWBNbPHP06nnjsoVDT7k1Ic7BwAbrDZn1SUOVhwdGOxqDdc1E8Fg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-stringify-safe": "^5.0.0", "@types/validator": "^13.1.3", - "@wdio/reporter": "7.16.13", - "@wdio/types": "7.16.13", + "@wdio/reporter": "7.40.0", + "@wdio/types": "7.40.0", "json-stringify-safe": "^5.0.1", "junit-report-builder": "^3.0.0", "validator": "^13.0.0" @@ -1501,16 +1628,17 @@ } }, "node_modules/@wdio/local-runner": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.16.13.tgz", - "integrity": "sha512-Ri8R6RHD5VjI4m2CramKO9w+4jD7VwEoQFWqFzUI1g31UAuN1zy67R3UiYv0ohiBTW4MZt90CMLgumQNk7C5kA==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.40.0.tgz", + "integrity": "sha512-OBuN7TlFhbPUH7Wbh2S8OKZOjeW4rHXOfuGzJfaKkzjHje2Dqide/uC3Gd25MwmzgZcVkOo9DUYiGFCHXc44ug==", "dev": true, + "license": "MIT", "dependencies": { "@types/stream-buffers": "^3.0.3", - "@wdio/logger": "7.16.0", - "@wdio/repl": "7.16.13", - "@wdio/runner": "7.16.13", - "@wdio/types": "7.16.13", + "@wdio/logger": "7.26.0", + "@wdio/repl": "7.40.0", + "@wdio/runner": "7.40.0", + "@wdio/types": "7.40.0", "async-exit-hook": "^2.0.1", "split2": "^4.0.0", "stream-buffers": "^3.0.2" @@ -1523,10 +1651,11 @@ } }, "node_modules/@wdio/logger": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz", - "integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz", + "integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "loglevel": "^1.6.0", @@ -1538,15 +1667,16 @@ } }, "node_modules/@wdio/mocha-framework": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.33.0.tgz", - "integrity": "sha512-y6+iBF+QrqeiXC+mNwW/o0vRsB+qaRznxoh+ds6Xz9V0tui55cn4kl2gYkBu3oHX8h+9R52ykLyaY9wv+r2aeg==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.40.0.tgz", + "integrity": "sha512-Pc+c4M07qhz3CdhitETWq8htMPb3xwmmQF5CKUpcy+F6nBTy4Q3wDOSLRQnFD7iP+JqnpJ2o3k1NPeuNYc7+CQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mocha": "^10.0.0", "@wdio/logger": "7.26.0", - "@wdio/types": "7.33.0", - "@wdio/utils": "7.33.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "expect-webdriverio": "^3.0.0", "mocha": "^10.0.0" }, @@ -1554,65 +1684,6 @@ "node": ">=12.0.0" } }, - "node_modules/@wdio/mocha-framework/node_modules/@types/node": { - "version": "18.19.68", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", - "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/@wdio/logger": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz", - "integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/@wdio/types": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.33.0.tgz", - "integrity": "sha512-tNcuN5Kl+i5CffaeTYV1omzAo4rVjiI1m9raIA8ph6iVteWdCzYv2/ImpGgFiBPb7Mf6VokU3+q9Slh5Jitaww==", - "dev": true, - "dependencies": { - "@types/node": "^18.0.0", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "^4.6.2" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.33.0.tgz", - "integrity": "sha512-4kQQ86EvEN6fBY5+u7M08cT6LfJtpk1rHd203xyxmbmV9lpNv/OCl4CsC+SD0jGT0aZZqYSIJ/Pil07pAh5K0g==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.26.0", - "@wdio/types": "7.33.0", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/@wdio/mocha-framework/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1749,40 +1820,43 @@ } }, "node_modules/@wdio/protocols": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.16.7.tgz", - "integrity": "sha512-Wv40pNQcLiPzQ3o98Mv4A8T1EBQ6k4khglz/e2r16CTm+F3DDYh8eLMAsU5cgnmuwwDKX1EyOiFwieykBn5MCg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz", + "integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" } }, "node_modules/@wdio/repl": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.16.13.tgz", - "integrity": "sha512-XWh3dzp6U8LLL4cNGWFra+quVyXZ25Ym38zpsBVtV0/z5NCHJmjRS4ytyvvkzbQ8SyqQ7Y3G8MjfGNi2sBNkIQ==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.40.0.tgz", + "integrity": "sha512-6tzT7lOMxBwdqMVdW4QxlzrQadGPta4HedFcJo4LyRz9PkXPTF68qeIGs0GyZvy/5AqspNWaAJvIR7f3T3tCyw==", "dev": true, + "license": "MIT", "dependencies": { - "@wdio/utils": "7.16.13" + "@wdio/utils": "7.40.0" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@wdio/reporter": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.16.13.tgz", - "integrity": "sha512-S7OH96yfSCJwmirsvT8khfWUfoMTiw0O1+UyiOYS/g0l+IideVK83kpyXYWfsALPahL2te0g57lPazriSfNAyA==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.40.0.tgz", + "integrity": "sha512-nWVh20JONsN4xf2PRWAS+81r1a6t6M5OtlVOti7G8/pODCul1kxmi9l07s0JaU9g64C1nDc4bOxvAPOWR3/wIw==", "dev": true, + "license": "MIT", "dependencies": { "@types/diff": "^5.0.0", - "@types/node": "^17.0.4", + "@types/node": "^18.0.0", "@types/object-inspect": "^1.8.0", "@types/supports-color": "^8.1.0", "@types/tmp": "^0.2.0", - "@wdio/types": "7.16.13", + "@wdio/types": "7.40.0", "diff": "^5.0.0", - "fs-extra": "^10.0.0", + "fs-extra": "^11.1.1", "object-inspect": "^1.10.3", "supports-color": "8.1.1" }, @@ -1791,33 +1865,35 @@ } }, "node_modules/@wdio/runner": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.16.13.tgz", - "integrity": "sha512-/PJUK+8orHsUd5v8edWv5XS3pKx/si7DoYkU8PsgQX9FnU2y3oRfHrQwzI8s3TOnGag79f+yrGzzGCZFmmW0cw==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.40.0.tgz", + "integrity": "sha512-3dGn8sU9Oc0kTq+hcxNSqkF1acqiTAzamyNWsWXAX7V0FOfZxp0wmD9aMqY+sVT6g8mUE5aePT1ydONE5o+6QA==", "dev": true, + "license": "MIT", "dependencies": { - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "deepmerge": "^4.0.0", "gaze": "^1.1.2", - "webdriver": "7.16.13", - "webdriverio": "7.16.13" + "webdriver": "7.40.0", + "webdriverio": "7.40.0" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@wdio/spec-reporter": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.16.13.tgz", - "integrity": "sha512-4gnflBJU+QDcmWgRy3tSRD47cqZmdjPLEJhsfhv/aBNtWPWMJtQru7nDFcLkxKLFPiN0D1F7gUMWbUMaDVlojg==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.40.0.tgz", + "integrity": "sha512-DhkfnWrN/X0DKpj/maIsk76yr5iG0t/ZbbajtBXLv9lMn8j+ALY34dfj0mvvTKX77wlzDtgeuC+8BzxPKBWU6g==", "dev": true, + "license": "MIT", "dependencies": { - "@types/easy-table": "^0.0.33", - "@wdio/reporter": "7.16.13", - "@wdio/types": "7.16.13", + "@types/easy-table": "^1.2.0", + "@wdio/reporter": "7.40.0", + "@wdio/types": "7.40.0", "chalk": "^4.0.0", "easy-table": "^1.1.1", "pretty-ms": "^7.0.0" @@ -1830,26 +1906,36 @@ } }, "node_modules/@wdio/types": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.13.tgz", - "integrity": "sha512-HIeXKCL+mUjyJxvnHSoaIo3NRgZLbeekyRIwo6USfd9qGlQ8dQ6fyCR3ZU9VqNz9j4+JIn+LRQ7imbz5SdnGbw==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.40.0.tgz", + "integrity": "sha512-MWMbU+8uk+JrF7ygP/TJDsaSvFozKauiW6EnG7rxx9+GvU1Q1B3l4UjAc7GDbgLKjwt8T2y5GDRiDoD3UOjVyw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "^17.0.4", + "@types/node": "^18.0.0", "got": "^11.8.1" }, "engines": { "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "^4.6.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@wdio/utils": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.13.tgz", - "integrity": "sha512-O6D89Ghtm5XtTv4DPKvCBKZOZYNONIcBM5/hmdr3V9mzVrTFq8Q3uE8pmmq303Oh91KcoN8Em5zoAG7Zpc5tRg==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.40.0.tgz", + "integrity": "sha512-jLF57xHmz5nnGuM6ZRWjVYa/LQb22CS7yG50dUFa9wJ509mC1HlUzaA01Gjk9TV5jf9vnwE/yZfUMCoecTgG9w==", "dev": true, + "license": "MIT", "dependencies": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.40.0", "p-iteration": "^1.1.8" }, "engines": { @@ -1898,6 +1984,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -1935,6 +2022,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -1950,6 +2038,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2055,16 +2144,17 @@ } }, "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", "dev": true, + "license": "MIT", "dependencies": { "archiver-utils": "^2.1.0", - "async": "^3.2.3", + "async": "^3.2.4", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", + "readdir-glob": "^1.1.2", "tar-stream": "^2.2.0", "zip-stream": "^4.1.0" }, @@ -2077,6 +2167,7 @@ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", "dev": true, + "license": "MIT", "dependencies": { "glob": "^7.1.4", "graceful-fs": "^4.2.0", @@ -2094,10 +2185,11 @@ } }, "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2112,28 +2204,32 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/archiver-utils/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/archiver/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" }, "node_modules/archiver/node_modules/tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -2161,12 +2257,13 @@ "dev": true }, "node_modules/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.0" + "node": ">= 0.4" } }, "node_modules/array-differ": { @@ -2768,6 +2865,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3146,15 +3244,17 @@ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.6.0" } }, "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, + "license": "MIT", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -3325,7 +3425,8 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/check-error": { "version": "1.0.2", @@ -3367,13 +3468,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/chrome-launcher": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.0.tgz", - "integrity": "sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", @@ -3428,6 +3531,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -3436,10 +3540,11 @@ } }, "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -3452,6 +3557,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10" } @@ -3637,10 +3743,11 @@ "dev": true }, "node_modules/compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", "dev": true, + "license": "MIT", "dependencies": { "buffer-crc32": "^0.2.13", "crc32-stream": "^4.0.2", @@ -3747,6 +3854,7 @@ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, + "license": "Apache-2.0", "bin": { "crc32": "bin/crc32.njs" }, @@ -3755,10 +3863,11 @@ } }, "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", "dev": true, + "license": "MIT", "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" @@ -3772,6 +3881,7 @@ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "2.6.7" } @@ -3828,10 +3938,11 @@ } }, "node_modules/css-shorthand-properties": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz", - "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", + "integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==", + "dev": true, + "license": "MIT" }, "node_modules/css-tokenize": { "version": "1.0.1", @@ -3896,7 +4007,7 @@ "node_modules/css-value": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", - "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=", + "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", "dev": true }, "node_modules/css-what": { @@ -4061,6 +4172,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -4076,6 +4188,7 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4210,10 +4323,11 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4232,6 +4346,7 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -4271,44 +4386,136 @@ } }, "node_modules/devtools": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.16.13.tgz", - "integrity": "sha512-jm/DL5tlOUUMe0pUgahDqixw3z+NANLN6DYDeZPFv7z0CBtmnaTyOe2zbT0apLxCBpi800VeXaISVZwmKE2NiQ==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.40.0.tgz", + "integrity": "sha512-hiDPCNG/mpD+bSgegxoe5nwyxWav+QpIvT+7H9D0dUwjB0q04OF473qGflSQ1QpGig6l4qG92tA7dVnLsdP75A==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "^17.0.4", + "@types/node": "^18.0.0", "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/protocols": "7.27.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "chrome-launcher": "^0.15.0", "edge-paths": "^2.1.0", - "puppeteer-core": "^13.0.0", + "puppeteer-core": "13.1.3", "query-selector-shadow-dom": "^1.0.0", "ua-parser-js": "^1.0.1", - "uuid": "^8.0.0" + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1260888", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1260888.tgz", + "integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/devtools/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, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/devtools/node_modules/devtools-protocol": { + "version": "0.0.948846", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", + "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/devtools/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/devtools/node_modules/puppeteer-core": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.1.3.tgz", + "integrity": "sha512-96pzvVBzq5lUGt3L/QrIH3mxn3NfZylHeusNhq06xBAHPI0Upc0SC/9u7tXjL0oRnmcExeVRJivr1lj7Ah/yDQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "4.3.2", + "devtools-protocol": "0.0.948846", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "node-fetch": "2.6.7", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" }, "engines": { - "node": ">=12.0.0" + "node": ">=10.18.1" } }, - "node_modules/devtools-protocol": { - "version": "0.0.953906", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.953906.tgz", - "integrity": "sha512-Z2vAafCNnl0Iw/u7TUjqOXW1sOhAMDOviflmUoUIxfq2rgfsoCO3qruB/LUJCdqF9aTJ32DUjXyMsX3+if6kDQ==", - "dev": true - }, "node_modules/devtools/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, + "node_modules/devtools/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -4628,6 +4835,7 @@ "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz", "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==", "dev": true, + "license": "MIT", "dependencies": { "@types/which": "^1.3.2", "which": "^2.0.2" @@ -5654,6 +5862,7 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -5668,6 +5877,7 @@ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -5815,6 +6025,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -5828,8 +6039,9 @@ "node_modules/figures/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -6146,17 +6358,18 @@ "dev": true }, "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, "node_modules/fs.realpath": { @@ -6238,18 +6451,6 @@ "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", "dev": true }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", @@ -6276,6 +6477,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -6459,15 +6661,17 @@ } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -6630,6 +6834,7 @@ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -6660,7 +6865,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/graphemer": { "version": "1.4.0", @@ -7372,7 +7578,8 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http-parser-js": { "version": "0.5.6", @@ -7400,6 +7607,7 @@ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "dev": true, + "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -7413,6 +7621,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -7426,6 +7635,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -7549,10 +7759,11 @@ "dev": true }, "node_modules/inquirer": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.5.tgz", - "integrity": "sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -7564,13 +7775,14 @@ "mute-stream": "0.0.8", "ora": "^5.4.1", "run-async": "^2.4.0", - "rxjs": "^7.2.0", + "rxjs": "^7.5.5", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" } }, "node_modules/internal-slot": { @@ -7724,6 +7936,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -7808,6 +8021,7 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8094,6 +8308,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -8426,6 +8641,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -8540,10 +8756,11 @@ "license": "MIT" }, "node_modules/ky": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.28.7.tgz", - "integrity": "sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", + "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8556,6 +8773,7 @@ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "^2.0.5" }, @@ -8564,10 +8782,11 @@ } }, "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8582,13 +8801,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lazystream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -8650,10 +8871,11 @@ } }, "node_modules/lighthouse-logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", - "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "debug": "^2.6.9", "marky": "^1.2.2" @@ -8664,6 +8886,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -8671,8 +8894,9 @@ "node_modules/lighthouse-logger/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" }, "node_modules/lines-and-columns": { "version": "1.2.4", @@ -8784,26 +9008,30 @@ "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.difference": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.flattendeep": { "version": "4.4.0", @@ -8814,14 +9042,16 @@ "node_modules/lodash.isobject": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", - "dev": true + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -8857,8 +9087,9 @@ "node_modules/lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", - "dev": true + "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", @@ -8912,10 +9143,11 @@ } }, "node_modules/loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" }, @@ -8928,7 +9160,8 @@ "version": "0.8.4", "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/longest": { "version": "1.0.1", @@ -8966,6 +9199,7 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9109,10 +9343,11 @@ } }, "node_modules/marky": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.4.tgz", - "integrity": "sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w==", - "dev": true + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/mathml-tag-names": { "version": "2.1.3", @@ -9301,6 +9536,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9366,7 +9602,8 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mocha": { "version": "5.2.0", @@ -9544,7 +9781,8 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/mwbot": { "version": "2.1.3", @@ -9596,6 +9834,7 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -9665,6 +9904,7 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -9925,6 +10165,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -9988,6 +10229,7 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10027,6 +10269,7 @@ "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -10377,6 +10620,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -10389,6 +10633,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -10402,6 +10647,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -10414,6 +10660,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -10429,6 +10676,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -10775,6 +11023,7 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -10789,7 +11038,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pseudomap": { "version": "1.0.2", @@ -10836,6 +11086,7 @@ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "cross-fetch": "3.1.5", "debug": "4.3.4", @@ -10858,7 +11109,8 @@ "version": "0.0.981744", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/q": { "version": "1.5.1", @@ -10886,10 +11138,11 @@ } }, "node_modules/query-selector-shadow-dom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", - "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", + "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", + "dev": true, + "license": "MIT" }, "node_modules/query-string": { "version": "5.1.1", @@ -10930,6 +11183,7 @@ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -11094,12 +11348,36 @@ } }, "node_modules/readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/readdirp": { @@ -11325,7 +11603,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve-dir": { "version": "1.0.1", @@ -11401,19 +11680,24 @@ } }, "node_modules/responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, + "license": "MIT", "dependencies": { "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/resq": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.2.tgz", - "integrity": "sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", + "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^2.0.1" } @@ -11421,14 +11705,16 @@ "node_modules/resq/node_modules/fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", + "dev": true, + "license": "MIT" }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -11442,6 +11728,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -11466,7 +11753,8 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", @@ -11494,6 +11782,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -11750,6 +12039,7 @@ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -12927,6 +13217,7 @@ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, + "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -12939,6 +13230,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -13094,6 +13386,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -13135,8 +13428,9 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" }, "node_modules/trim-newlines": { "version": "1.0.0", @@ -13252,9 +13546,9 @@ } }, "node_modules/ua-parser-js": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.34.tgz", - "integrity": "sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew==", + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", "dev": true, "funding": [ { @@ -13264,8 +13558,16 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } @@ -13333,13 +13635,15 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -13549,19 +13853,20 @@ } }, "node_modules/webdriver": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.16.13.tgz", - "integrity": "sha512-Vfr952W1uIgDeWHPGzqH43dYLeRSZshh3TzA9ICUkvnC+Q7YziQdv/8xI8tuuyvb7lSr3VsuB2cGzyCRoC/NWw==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.40.0.tgz", + "integrity": "sha512-CKi3cDWgNVE/ibcsBfdtA+pQVeZ4oYlecLlwemulVxJdgr4l5bv+nXuoIhnYeVb6aAI4naK772vmWQ0XuRYhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "^17.0.4", - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@types/node": "^18.0.0", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/protocols": "7.27.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "got": "^11.0.2", - "ky": "^0.28.5", + "ky": "0.30.0", "lodash.merge": "^4.6.1" }, "engines": { @@ -13569,49 +13874,76 @@ } }, "node_modules/webdriverio": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.16.13.tgz", - "integrity": "sha512-jl1VRZYL1+cPeG6klskKX7mCEBWNQWDFaNtaIl5pwWgtKWPau6fCzKntSARzfNV8+hKJKwJ2mZn5Nsxfw28Oeg==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.40.0.tgz", + "integrity": "sha512-UswBOjpWwk7ziGi9beZGX/XFrp4m1Ws0ni5HI9mzAkOlpKKKWhnX6i95pWQV6sPF4Urv4RJf8WXayHhTbzXzdA==", "dev": true, + "license": "MIT", "dependencies": { "@types/aria-query": "^5.0.0", - "@types/node": "^17.0.4", - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/repl": "7.16.13", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@types/node": "^18.0.0", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/protocols": "7.27.0", + "@wdio/repl": "7.40.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "archiver": "^5.0.0", - "aria-query": "^5.0.0", + "aria-query": "^5.2.1", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools": "7.16.13", - "devtools-protocol": "^0.0.953906", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", + "devtools": "7.40.0", + "devtools-protocol": "^0.0.1260888", + "fs-extra": "^11.1.1", "grapheme-splitter": "^1.0.2", "lodash.clonedeep": "^4.5.0", "lodash.isobject": "^3.0.2", "lodash.isplainobject": "^4.0.6", "lodash.zip": "^4.2.0", - "minimatch": "^3.0.4", - "puppeteer-core": "^13.0.0", + "minimatch": "^6.0.4", + "puppeteer-core": "^13.1.3", "query-selector-shadow-dom": "^1.0.0", "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^8.0.0", - "webdriver": "7.16.13" + "webdriver": "7.40.0" }, "engines": { "node": ">=12.0.0" } }, + "node_modules/webdriverio/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/webdriverio/node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/websocket-driver": { "version": "0.7.4", @@ -13639,8 +13971,9 @@ "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -13736,6 +14069,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -14090,18 +14424,41 @@ "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" } }, - "node_modules/zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", "dev": true, + "license": "MIT", "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", "readable-stream": "^3.6.0" }, "engines": { @@ -14225,12 +14582,20 @@ "dev": true }, "@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + } } }, "@csstools/css-parser-algorithms": { @@ -14816,34 +15181,37 @@ } }, "@types/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-P+dkdFu0n08PDIvw+9nT9ByQnd+Udc8DaWPb9HKfaPwCvWvQpC5XaMRx2xLWECm9x1VKNps6vEAlirjA6+uNrQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true }, "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dev": true, "requires": { "@types/http-cache-semantics": "*", - "@types/keyv": "*", + "@types/keyv": "^3.1.4", "@types/node": "*", - "@types/responselike": "*" + "@types/responselike": "^1.0.0" } }, "@types/diff": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.2.tgz", - "integrity": "sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.3.tgz", + "integrity": "sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==", "dev": true }, "@types/easy-table": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-0.0.33.tgz", - "integrity": "sha512-/vvqcJPmZUfQwCgemL0/34G7bIQnCuvgls379ygRlcC1FqNqk3n+VZ15dAO51yl6JNDoWd8vsk+kT8zfZ1VZSw==", - "dev": true + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-1.2.3.tgz", + "integrity": "sha512-uT9nuF3D1+KgNXRCft0/Z4BL5S/73D7dZ+Ky4796MvWPgwUp6gLudt1YOfvtOuuet+buFk+WqUR7j1K77gMnAw==", + "dev": true, + "requires": { + "easy-table": "*" + } }, "@types/ejs": { "version": "3.1.0", @@ -14868,18 +15236,37 @@ "dev": true }, "@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", + "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", + "dev": true, + "requires": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, + "@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", "dev": true, "requires": { + "@types/minimatch": "^5.1.2", "@types/node": "*" + }, + "dependencies": { + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + } } }, "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", "dev": true }, "@types/inquirer": { @@ -14928,6 +15315,15 @@ "integrity": "sha512-UUA1sH0RSRROdInuDOA1yoRzbi5xVFD1RHCoOvNRPTNwR8zBkJ/84PZ6NhKVDtKp0FTeIccJCdQz1X2aJPr4uw==", "dev": true }, + "@types/jsonfile": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", + "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", @@ -15005,10 +15401,13 @@ "dev": true }, "@types/node": { - "version": "17.0.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", - "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", - "dev": true + "version": "18.19.84", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.84.tgz", + "integrity": "sha512-ACYy2HGcZPHxEeWTqowTF7dhXN+JU1o7Gr4b41klnn6pj2LD6rsiGqSZojMdk1Jh2ys3m76ap+ae1vvE4+5+vg==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "@types/normalize-package-data": { "version": "2.4.4", @@ -15017,9 +15416,9 @@ "dev": true }, "@types/object-inspect": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.8.1.tgz", - "integrity": "sha512-0JTdf3CGV0oWzE6Wa40Ayv2e2GhpP3pEJMcrlM74vBSJPuuNkVwfDnl0SZxyFCXETcB4oKA/MpTVfuYSMOelBg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w==", "dev": true }, "@types/q": { @@ -15038,9 +15437,9 @@ } }, "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dev": true, "requires": { "@types/node": "*" @@ -15062,9 +15461,9 @@ } }, "@types/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", + "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", "dev": true }, "@types/through": { @@ -15077,15 +15476,15 @@ } }, "@types/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", + "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", "dev": true }, "@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==", "dev": true }, "@types/validator": { @@ -15116,9 +15515,9 @@ "dev": true }, "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "requires": { @@ -15206,87 +15605,131 @@ "dev": true }, "@wdio/cli": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.16.13.tgz", - "integrity": "sha512-y0C/eLLyLCVWrsJVimozUQBQWD/goIUxmtB91rjMAqTjeLn5b0VoPhr+EKXGCHXz3ylvXGGJ3RaI0l1vz9Cf8w==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.40.0.tgz", + "integrity": "sha512-M0txYEqqamBvJe4FEuqwWq1jd879sElF047BXSv2GRu4R1/iEBPYJHjn9KuL60Fkkpp/L1NMHTl7gW9i445edQ==", "dev": true, "requires": { "@types/ejs": "^3.0.5", - "@types/fs-extra": "^9.0.4", + "@types/fs-extra": "^11.0.1", "@types/inquirer": "^8.1.2", "@types/lodash.flattendeep": "^4.4.6", "@types/lodash.pickby": "^4.6.6", "@types/lodash.union": "^4.6.6", - "@types/node": "^17.0.4", + "@types/node": "^18.0.0", "@types/recursive-readdir": "^2.2.0", - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/protocols": "7.27.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "async-exit-hook": "^2.0.1", "chalk": "^4.0.0", "chokidar": "^3.0.0", "cli-spinners": "^2.1.0", "ejs": "^3.0.1", - "fs-extra": "^10.0.0", - "inquirer": "8.1.5", + "fs-extra": "^11.1.1", + "inquirer": "8.2.4", "lodash.flattendeep": "^4.4.0", "lodash.pickby": "^4.6.0", "lodash.union": "^4.6.0", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.0", "recursive-readdir": "^2.2.2", - "webdriverio": "7.16.13", + "webdriverio": "7.40.0", "yargs": "^17.0.0", "yarn-install": "^1.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true + } } }, "@wdio/config": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.16.13.tgz", - "integrity": "sha512-LSGoa83tWQIBppB+LeHjY40B9tuuvmDV1qdBLVXR1ROcOUWWz/oQP3NFLtLm3266LXoJUbwebzGcRIK1EcNk3Q==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.40.0.tgz", + "integrity": "sha512-ayQELXyxa+k9/2a509F5a1oTsCa/w8D1nDrd+hzm+1mYb4Te2lceWCCzm+atGKkMpvjLH4GvhrEBYLh3rIWk2A==", "dev": true, "requires": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", + "@types/glob": "^8.1.0", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "deepmerge": "^4.0.0", - "glob": "^7.1.2" + "glob": "^8.0.3" + }, + "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" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "@wdio/junit-reporter": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.16.13.tgz", - "integrity": "sha512-VKhly72NZY2/SNnfbYXO/HHov9oj+pk0aaq5TNzIJJoqtH4uqDz+L2p7wu9nKnRnywmwvaTm7pbYZGlOuty26A==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.40.0.tgz", + "integrity": "sha512-nGxzvdCBHUQOtKbCrihO+MjLdfyeYPVeoCAWBNbPHP06nnjsoVDT7k1Ic7BwAbrDZn1SUOVhwdGOxqDdc1E8Fg==", "dev": true, "requires": { "@types/json-stringify-safe": "^5.0.0", "@types/validator": "^13.1.3", - "@wdio/reporter": "7.16.13", - "@wdio/types": "7.16.13", + "@wdio/reporter": "7.40.0", + "@wdio/types": "7.40.0", "json-stringify-safe": "^5.0.1", "junit-report-builder": "^3.0.0", "validator": "^13.0.0" } }, "@wdio/local-runner": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.16.13.tgz", - "integrity": "sha512-Ri8R6RHD5VjI4m2CramKO9w+4jD7VwEoQFWqFzUI1g31UAuN1zy67R3UiYv0ohiBTW4MZt90CMLgumQNk7C5kA==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.40.0.tgz", + "integrity": "sha512-OBuN7TlFhbPUH7Wbh2S8OKZOjeW4rHXOfuGzJfaKkzjHje2Dqide/uC3Gd25MwmzgZcVkOo9DUYiGFCHXc44ug==", "dev": true, "requires": { "@types/stream-buffers": "^3.0.3", - "@wdio/logger": "7.16.0", - "@wdio/repl": "7.16.13", - "@wdio/runner": "7.16.13", - "@wdio/types": "7.16.13", + "@wdio/logger": "7.26.0", + "@wdio/repl": "7.40.0", + "@wdio/runner": "7.40.0", + "@wdio/types": "7.40.0", "async-exit-hook": "^2.0.1", "split2": "^4.0.0", "stream-buffers": "^3.0.2" } }, "@wdio/logger": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz", - "integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz", + "integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==", "dev": true, "requires": { "chalk": "^4.0.0", @@ -15296,61 +15739,19 @@ } }, "@wdio/mocha-framework": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.33.0.tgz", - "integrity": "sha512-y6+iBF+QrqeiXC+mNwW/o0vRsB+qaRznxoh+ds6Xz9V0tui55cn4kl2gYkBu3oHX8h+9R52ykLyaY9wv+r2aeg==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.40.0.tgz", + "integrity": "sha512-Pc+c4M07qhz3CdhitETWq8htMPb3xwmmQF5CKUpcy+F6nBTy4Q3wDOSLRQnFD7iP+JqnpJ2o3k1NPeuNYc7+CQ==", "dev": true, "requires": { "@types/mocha": "^10.0.0", "@wdio/logger": "7.26.0", - "@wdio/types": "7.33.0", - "@wdio/utils": "7.33.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "expect-webdriverio": "^3.0.0", "mocha": "^10.0.0" }, "dependencies": { - "@types/node": { - "version": "18.19.68", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", - "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", - "dev": true, - "requires": { - "undici-types": "~5.26.4" - } - }, - "@wdio/logger": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz", - "integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - } - }, - "@wdio/types": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.33.0.tgz", - "integrity": "sha512-tNcuN5Kl+i5CffaeTYV1omzAo4rVjiI1m9raIA8ph6iVteWdCzYv2/ImpGgFiBPb7Mf6VokU3+q9Slh5Jitaww==", - "dev": true, - "requires": { - "@types/node": "^18.0.0", - "got": "^11.8.1" - } - }, - "@wdio/utils": { - "version": "7.33.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.33.0.tgz", - "integrity": "sha512-4kQQ86EvEN6fBY5+u7M08cT6LfJtpk1rHd203xyxmbmV9lpNv/OCl4CsC+SD0jGT0aZZqYSIJ/Pil07pAh5K0g==", - "dev": true, - "requires": { - "@wdio/logger": "7.26.0", - "@wdio/types": "7.33.0", - "p-iteration": "^1.1.8" - } - }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -15455,86 +15856,86 @@ } }, "@wdio/protocols": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.16.7.tgz", - "integrity": "sha512-Wv40pNQcLiPzQ3o98Mv4A8T1EBQ6k4khglz/e2r16CTm+F3DDYh8eLMAsU5cgnmuwwDKX1EyOiFwieykBn5MCg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz", + "integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==", "dev": true }, "@wdio/repl": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.16.13.tgz", - "integrity": "sha512-XWh3dzp6U8LLL4cNGWFra+quVyXZ25Ym38zpsBVtV0/z5NCHJmjRS4ytyvvkzbQ8SyqQ7Y3G8MjfGNi2sBNkIQ==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.40.0.tgz", + "integrity": "sha512-6tzT7lOMxBwdqMVdW4QxlzrQadGPta4HedFcJo4LyRz9PkXPTF68qeIGs0GyZvy/5AqspNWaAJvIR7f3T3tCyw==", "dev": true, "requires": { - "@wdio/utils": "7.16.13" + "@wdio/utils": "7.40.0" } }, "@wdio/reporter": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.16.13.tgz", - "integrity": "sha512-S7OH96yfSCJwmirsvT8khfWUfoMTiw0O1+UyiOYS/g0l+IideVK83kpyXYWfsALPahL2te0g57lPazriSfNAyA==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.40.0.tgz", + "integrity": "sha512-nWVh20JONsN4xf2PRWAS+81r1a6t6M5OtlVOti7G8/pODCul1kxmi9l07s0JaU9g64C1nDc4bOxvAPOWR3/wIw==", "dev": true, "requires": { "@types/diff": "^5.0.0", - "@types/node": "^17.0.4", + "@types/node": "^18.0.0", "@types/object-inspect": "^1.8.0", "@types/supports-color": "^8.1.0", "@types/tmp": "^0.2.0", - "@wdio/types": "7.16.13", + "@wdio/types": "7.40.0", "diff": "^5.0.0", - "fs-extra": "^10.0.0", + "fs-extra": "^11.1.1", "object-inspect": "^1.10.3", "supports-color": "8.1.1" } }, "@wdio/runner": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.16.13.tgz", - "integrity": "sha512-/PJUK+8orHsUd5v8edWv5XS3pKx/si7DoYkU8PsgQX9FnU2y3oRfHrQwzI8s3TOnGag79f+yrGzzGCZFmmW0cw==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.40.0.tgz", + "integrity": "sha512-3dGn8sU9Oc0kTq+hcxNSqkF1acqiTAzamyNWsWXAX7V0FOfZxp0wmD9aMqY+sVT6g8mUE5aePT1ydONE5o+6QA==", "dev": true, "requires": { - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "deepmerge": "^4.0.0", "gaze": "^1.1.2", - "webdriver": "7.16.13", - "webdriverio": "7.16.13" + "webdriver": "7.40.0", + "webdriverio": "7.40.0" } }, "@wdio/spec-reporter": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.16.13.tgz", - "integrity": "sha512-4gnflBJU+QDcmWgRy3tSRD47cqZmdjPLEJhsfhv/aBNtWPWMJtQru7nDFcLkxKLFPiN0D1F7gUMWbUMaDVlojg==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.40.0.tgz", + "integrity": "sha512-DhkfnWrN/X0DKpj/maIsk76yr5iG0t/ZbbajtBXLv9lMn8j+ALY34dfj0mvvTKX77wlzDtgeuC+8BzxPKBWU6g==", "dev": true, "requires": { - "@types/easy-table": "^0.0.33", - "@wdio/reporter": "7.16.13", - "@wdio/types": "7.16.13", + "@types/easy-table": "^1.2.0", + "@wdio/reporter": "7.40.0", + "@wdio/types": "7.40.0", "chalk": "^4.0.0", "easy-table": "^1.1.1", "pretty-ms": "^7.0.0" } }, "@wdio/types": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.13.tgz", - "integrity": "sha512-HIeXKCL+mUjyJxvnHSoaIo3NRgZLbeekyRIwo6USfd9qGlQ8dQ6fyCR3ZU9VqNz9j4+JIn+LRQ7imbz5SdnGbw==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.40.0.tgz", + "integrity": "sha512-MWMbU+8uk+JrF7ygP/TJDsaSvFozKauiW6EnG7rxx9+GvU1Q1B3l4UjAc7GDbgLKjwt8T2y5GDRiDoD3UOjVyw==", "dev": true, "requires": { - "@types/node": "^17.0.4", + "@types/node": "^18.0.0", "got": "^11.8.1" } }, "@wdio/utils": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.13.tgz", - "integrity": "sha512-O6D89Ghtm5XtTv4DPKvCBKZOZYNONIcBM5/hmdr3V9mzVrTFq8Q3uE8pmmq303Oh91KcoN8Em5zoAG7Zpc5tRg==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.40.0.tgz", + "integrity": "sha512-jLF57xHmz5nnGuM6ZRWjVYa/LQb22CS7yG50dUFa9wJ509mC1HlUzaA01Gjk9TV5jf9vnwE/yZfUMCoecTgG9w==", "dev": true, "requires": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.13", + "@wdio/logger": "7.26.0", + "@wdio/types": "7.40.0", "p-iteration": "^1.1.8" } }, @@ -15672,24 +16073,24 @@ } }, "archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", "dev": true, "requires": { "archiver-utils": "^2.1.0", - "async": "^3.2.3", + "async": "^3.2.4", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", + "readdir-glob": "^1.1.2", "tar-stream": "^2.2.0", "zip-stream": "^4.1.0" }, "dependencies": { "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, "tar-stream": { @@ -15726,9 +16127,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -15770,9 +16171,9 @@ "dev": true }, "aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true }, "array-differ": { @@ -16530,9 +16931,9 @@ "dev": true }, "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, "requires": { "clone-response": "^1.0.2", @@ -16689,9 +17090,9 @@ "dev": true }, "chrome-launcher": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.0.tgz", - "integrity": "sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", "dev": true, "requires": { "@types/node": "*", @@ -16733,9 +17134,9 @@ } }, "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true }, "cli-width": { @@ -16894,9 +17295,9 @@ "dev": true }, "compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", "dev": true, "requires": { "buffer-crc32": "^0.2.13", @@ -16982,9 +17383,9 @@ "dev": true }, "crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", "dev": true, "requires": { "crc-32": "^1.2.0", @@ -17047,9 +17448,9 @@ "dev": true }, "css-shorthand-properties": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz", - "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", + "integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==", "dev": true }, "css-tokenize": { @@ -17109,7 +17510,7 @@ "css-value": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", - "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=", + "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", "dev": true }, "css-what": { @@ -17344,9 +17745,9 @@ "dev": true }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, "defaults": { @@ -17387,38 +17788,90 @@ "dev": true }, "devtools": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.16.13.tgz", - "integrity": "sha512-jm/DL5tlOUUMe0pUgahDqixw3z+NANLN6DYDeZPFv7z0CBtmnaTyOe2zbT0apLxCBpi800VeXaISVZwmKE2NiQ==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.40.0.tgz", + "integrity": "sha512-hiDPCNG/mpD+bSgegxoe5nwyxWav+QpIvT+7H9D0dUwjB0q04OF473qGflSQ1QpGig6l4qG92tA7dVnLsdP75A==", "dev": true, "requires": { - "@types/node": "^17.0.4", + "@types/node": "^18.0.0", "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/protocols": "7.27.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "chrome-launcher": "^0.15.0", "edge-paths": "^2.1.0", - "puppeteer-core": "^13.0.0", + "puppeteer-core": "13.1.3", "query-selector-shadow-dom": "^1.0.0", "ua-parser-js": "^1.0.1", - "uuid": "^8.0.0" + "uuid": "^9.0.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" + } + }, + "devtools-protocol": { + "version": "0.0.948846", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", + "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "puppeteer-core": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.1.3.tgz", + "integrity": "sha512-96pzvVBzq5lUGt3L/QrIH3mxn3NfZylHeusNhq06xBAHPI0Upc0SC/9u7tXjL0oRnmcExeVRJivr1lj7Ah/yDQ==", + "dev": true, + "requires": { + "debug": "4.3.2", + "devtools-protocol": "0.0.948846", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.0", + "node-fetch": "2.6.7", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" + } + }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} } } }, "devtools-protocol": { - "version": "0.0.953906", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.953906.tgz", - "integrity": "sha512-Z2vAafCNnl0Iw/u7TUjqOXW1sOhAMDOviflmUoUIxfq2rgfsoCO3qruB/LUJCdqF9aTJ32DUjXyMsX3+if6kDQ==", + "version": "0.0.1260888", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1260888.tgz", + "integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==", "dev": true }, "diff": { @@ -18556,7 +19009,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true } } @@ -18802,9 +19255,9 @@ "dev": true }, "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -18869,12 +19322,6 @@ "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", "dev": true }, - "get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true - }, "get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", @@ -19031,15 +19478,15 @@ } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -19851,9 +20298,9 @@ "dev": true }, "inquirer": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.5.tgz", - "integrity": "sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -19866,10 +20313,11 @@ "mute-stream": "0.0.8", "ora": "^5.4.1", "run-async": "^2.4.0", - "rxjs": "^7.2.0", + "rxjs": "^7.5.5", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" } }, "internal-slot": { @@ -20611,9 +21059,9 @@ "dev": true }, "ky": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.28.7.tgz", - "integrity": "sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", + "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", "dev": true }, "lazystream": { @@ -20626,9 +21074,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -20707,9 +21155,9 @@ } }, "lighthouse-logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", - "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", "dev": true, "requires": { "debug": "^2.6.9", @@ -20728,7 +21176,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -20829,25 +21277,25 @@ "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "dev": true }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", "dev": true }, "lodash.difference": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", "dev": true }, "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", "dev": true }, "lodash.flattendeep": { @@ -20859,13 +21307,13 @@ "lodash.isobject": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", "dev": true }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true }, "lodash.memoize": { @@ -20901,7 +21349,7 @@ "lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", + "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", "dev": true }, "log-symbols": { @@ -20943,9 +21391,9 @@ } }, "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true }, "loglevel-plugin-prefix": { @@ -21088,9 +21536,9 @@ "dev": true }, "marky": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.4.tgz", - "integrity": "sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", "dev": true }, "mathml-tag-names": { @@ -22406,9 +22854,9 @@ } }, "query-selector-shadow-dom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", - "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", + "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", "dev": true }, "query-string": { @@ -22561,12 +23009,32 @@ } }, "readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "^5.1.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" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "readdirp": { @@ -22802,18 +23270,18 @@ "dev": true }, "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, "requires": { "lowercase-keys": "^2.0.0" } }, "resq": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.2.tgz", - "integrity": "sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", + "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1" @@ -22822,7 +23290,7 @@ "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", "dev": true } } @@ -24098,7 +24566,7 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "trim-newlines": { @@ -24181,9 +24649,9 @@ "peer": true }, "ua-parser-js": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.34.tgz", - "integrity": "sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew==", + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", "dev": true }, "uc.micro": { @@ -24243,9 +24711,9 @@ "dev": true }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true }, "unquote": { @@ -24397,62 +24865,81 @@ } }, "webdriver": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.16.13.tgz", - "integrity": "sha512-Vfr952W1uIgDeWHPGzqH43dYLeRSZshh3TzA9ICUkvnC+Q7YziQdv/8xI8tuuyvb7lSr3VsuB2cGzyCRoC/NWw==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.40.0.tgz", + "integrity": "sha512-CKi3cDWgNVE/ibcsBfdtA+pQVeZ4oYlecLlwemulVxJdgr4l5bv+nXuoIhnYeVb6aAI4naK772vmWQ0XuRYhDQ==", "dev": true, "requires": { - "@types/node": "^17.0.4", - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@types/node": "^18.0.0", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/protocols": "7.27.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "got": "^11.0.2", - "ky": "^0.28.5", + "ky": "0.30.0", "lodash.merge": "^4.6.1" } }, "webdriverio": { - "version": "7.16.13", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.16.13.tgz", - "integrity": "sha512-jl1VRZYL1+cPeG6klskKX7mCEBWNQWDFaNtaIl5pwWgtKWPau6fCzKntSARzfNV8+hKJKwJ2mZn5Nsxfw28Oeg==", + "version": "7.40.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.40.0.tgz", + "integrity": "sha512-UswBOjpWwk7ziGi9beZGX/XFrp4m1Ws0ni5HI9mzAkOlpKKKWhnX6i95pWQV6sPF4Urv4RJf8WXayHhTbzXzdA==", "dev": true, "requires": { "@types/aria-query": "^5.0.0", - "@types/node": "^17.0.4", - "@wdio/config": "7.16.13", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/repl": "7.16.13", - "@wdio/types": "7.16.13", - "@wdio/utils": "7.16.13", + "@types/node": "^18.0.0", + "@wdio/config": "7.40.0", + "@wdio/logger": "7.26.0", + "@wdio/protocols": "7.27.0", + "@wdio/repl": "7.40.0", + "@wdio/types": "7.40.0", + "@wdio/utils": "7.40.0", "archiver": "^5.0.0", - "aria-query": "^5.0.0", + "aria-query": "^5.2.1", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools": "7.16.13", - "devtools-protocol": "^0.0.953906", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", + "devtools": "7.40.0", + "devtools-protocol": "^0.0.1260888", + "fs-extra": "^11.1.1", "grapheme-splitter": "^1.0.2", "lodash.clonedeep": "^4.5.0", "lodash.isobject": "^3.0.2", "lodash.isplainobject": "^4.0.6", "lodash.zip": "^4.2.0", - "minimatch": "^3.0.4", - "puppeteer-core": "^13.0.0", + "minimatch": "^6.0.4", + "puppeteer-core": "^13.1.3", "query-selector-shadow-dom": "^1.0.0", "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^8.0.0", - "webdriver": "7.16.13" + "webdriver": "7.40.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" + } + }, + "minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "websocket-driver": { @@ -24475,7 +24962,7 @@ "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -24812,14 +25299,34 @@ "dev": true }, "zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", "dev": true, "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", "readable-stream": "^3.6.0" + }, + "dependencies": { + "archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dev": true, + "requires": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + } } }, "zopflipng-bin": { diff --git a/package.json b/package.json index fce88e9c98..4ba531c26a 100644 --- a/package.json +++ b/package.json @@ -14,11 +14,11 @@ "test": "grunt test && node build/checkModules.js" }, "devDependencies": { - "@wdio/cli": "7.16.13", - "@wdio/junit-reporter": "7.16.13", - "@wdio/local-runner": "7.16.13", - "@wdio/mocha-framework": "7.33.0", - "@wdio/spec-reporter": "7.16.13", + "@wdio/cli": "7.40.0", + "@wdio/junit-reporter": "7.40.0", + "@wdio/local-runner": "7.40.0", + "@wdio/mocha-framework": "7.40.0", + "@wdio/spec-reporter": "7.40.0", "api-testing": "1.6.0", "eslint-config-wikimedia": "0.29.1", "grunt": "1.6.1", From 248b0d35431740472086e77b5258605c12bb134c Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Thu, 27 Mar 2025 19:41:38 -0400 Subject: [PATCH 253/730] build: Upgrade mocha to 11.1.0 Change-Id: I53217eb799d7cf548a482868ef159f1656845385 --- package-lock.json | 781 ++++++++++++++++++++++++++++++++++------------ package.json | 2 +- 2 files changed, 578 insertions(+), 205 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2f37be4298..12d0622d80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "jimp": "0.13.0", "jsdoc": "4.0.4", "jsdoc-wmf-theme": "1.1.0", - "mocha": "5.2.0", + "mocha": "11.1.0", "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", @@ -364,6 +364,109 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/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, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -906,6 +1009,17 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -1730,15 +1844,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wdio/mocha-framework/node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, "node_modules/@wdio/mocha-framework/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -4808,6 +4913,13 @@ "node": ">=0.10.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/easy-table": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", @@ -6278,6 +6390,36 @@ "node": ">=0.10.0" } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/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, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -6874,15 +7016,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/grunt": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", @@ -7451,10 +7584,11 @@ } }, "node_modules/he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } @@ -8356,6 +8490,22 @@ "node": ">= 4" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -9234,6 +9384,13 @@ "node": ">=0.10.0" } }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", @@ -9586,6 +9743,16 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -9606,132 +9773,125 @@ "license": "MIT" }, "node_modules/mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "dependencies": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 4.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/mocha/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "node_modules/mocha/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, + "license": "MIT", "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/mocha/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" + "balanced-match": "^1.0.0" } }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/mocha/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/mocha/node_modules/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/mocha/node_modules/glob/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, + "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", - "dev": true - }, - "node_modules/mocha/node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { - "minimist": "0.0.8" + "brace-expansion": "^2.0.1" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=10" } }, "node_modules/mocha/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT" }, "node_modules/mozjpeg": { "version": "6.0.1", @@ -10346,6 +10506,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -10518,6 +10685,23 @@ "node": ">=0.10.0" } }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -12417,6 +12601,22 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trimend": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", @@ -12471,6 +12671,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", @@ -14033,6 +14247,25 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -14699,6 +14932,71 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "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 + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "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" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -15122,6 +15420,13 @@ "fastq": "^1.6.0" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -15783,12 +16088,6 @@ "once": "^1.3.0" } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, "minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -18102,6 +18401,12 @@ "set-immediate-shim": "^1.0.0" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "easy-table": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", @@ -19183,6 +19488,24 @@ "for-in": "^1.0.1" } }, + "foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.6", + "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 + } + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -19643,12 +19966,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, "grunt": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", @@ -20080,9 +20397,9 @@ } }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, "homedir-polyfill": { @@ -20716,6 +21033,16 @@ "is-object": "^1.0.1" } }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -21456,6 +21783,12 @@ } } }, + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, "lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", @@ -21721,6 +22054,12 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -21734,103 +22073,90 @@ "dev": true }, "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", "dev": true, "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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": { - "ms": "2.0.0" + "balanced-match": "^1.0.0" } }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ms": "^2.1.3" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "dependencies": { + "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" + } + } } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { - "minimist": "0.0.8" + "brace-expansion": "^2.0.1" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -22270,6 +22596,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -22405,6 +22737,16 @@ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", "dev": true }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -23824,6 +24166,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "string.prototype.trimend": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", @@ -23866,6 +24219,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", @@ -25008,6 +25370,17 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@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", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 4ba531c26a..a16afa237e 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "jimp": "0.13.0", "jsdoc": "4.0.4", "jsdoc-wmf-theme": "1.1.0", - "mocha": "5.2.0", + "mocha": "11.1.0", "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", From 9fdda1d90e55469c0a948a21f7c051681c2a6942 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 28 Mar 2025 11:18:32 +0000 Subject: [PATCH 254/730] Fix overlay and padding for desktop context Bug: T388803 Change-Id: I8bb98e58c07f9d992f0ace45e5a40b1baa0f09c6 --- .../ve.init.mw.DesktopArticleTarget.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index b798d92399..164369d365 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -181,17 +181,16 @@ ve.init.mw.DesktopArticleTarget.static.platformType = 'desktop'; * @inheritdoc */ ve.init.mw.DesktopArticleTarget.prototype.addSurface = function ( dmDoc, config ) { + const skinPadding = { + // Vector-2022 content area less padding, so popups can render too close + // to the edge of the text (T258501). The default of 10px is reduced to 3px. + // We still need a bit of padding to keep popups from touching the sidebar. + 'vector-2022': 3, + monobook: -10 + }; + const skin = mw.config.get( 'skin' ); config = ve.extendObject( { - $overlayContainer: $( - document.querySelector( '[data-mw-ve-target-container]' ) || - document.getElementById( 'content' ) - ), - // Vector-2022 content area has no padding itself, so popups render too close - // to the edge of the text (T258501). Use a negative value to allow popups to - // position slightly outside the content. Padding elsewhere means we are - // guaranteed 30px of space between the content and the edge of the viewport. - // Other skins pass 'undefined' to use the default padding of +10px. - overlayPadding: mw.config.get( 'skin' ) === 'vector-2022' ? -10 : undefined + overlayPadding: skin in skinPadding ? skinPadding[ skin ] : undefined }, config ); return ve.init.mw.DesktopArticleTarget.super.prototype.addSurface.call( this, dmDoc, config ); }; From 16d9aad245dd68b01946e6f36942aba49cc06ed9 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 31 Mar 2025 09:23:36 +0200 Subject: [PATCH 255/730] Localisation updates from https://translatewiki.net. Change-Id: I9b4570ca88900661165b797084d617cb469184fa --- i18n/ve-mw/bug.json | 1 + i18n/ve-mw/pa.json | 10 +++++----- i18n/ve-wmf/et.json | 2 ++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/i18n/ve-mw/bug.json b/i18n/ve-mw/bug.json index caece7ea6d..9cf3744c73 100644 --- a/i18n/ve-mw/bug.json +++ b/i18n/ve-mw/bug.json @@ -5,6 +5,7 @@ ] }, "visualeditor-ca-editsource-section": "padéccéng apoléng", + "visualeditor-dialog-template-title": "Accuwang", "visualeditor-dialog-transclusion-add-param-save": "Tambai", "visualeditor-dialog-transclusion-add-template": "Tambai accuwang", "visualeditor-dialog-transclusion-add-template-save": "Tambai" diff --git a/i18n/ve-mw/pa.json b/i18n/ve-mw/pa.json index 963aa90491..d440415fb2 100644 --- a/i18n/ve-mw/pa.json +++ b/i18n/ve-mw/pa.json @@ -25,7 +25,7 @@ "tooltip-ca-editsource-local": "ਸਥਾਨਕ ਵੇਰਵਾ ਸਫ਼ੇ ਦੇ ਸਰੋਤ ਕੋਡ ਨੂੰ ਸੋਧੋ", "tooltip-ca-createsource": "ਇਸ ਸਫ਼ੇ ਦੇ ਸਰੋਤ ਦਾ ਕੋਡ ਬਣਾਉ", "tooltip-ca-createsource-local": "ਸਥਾਨਕ ਵੇਰਵਾ ਸਫ਼ੇ ਦਾ ਸਰੋਤ ਕੋਡ ਬਣਾਓ", - "visualeditor-advancedsettings-tool": "ਉੱਨਤ ਸੈਟਿੰਗਾਂ", + "visualeditor-advancedsettings-tool": "ਵਧੇਰੇ ਤਰਜੀਹਾਂ", "visualeditor-autosave-modified-prompt-accept": "ਉਥੋਂ ਹੀ ਸੋਧਣਾ ਜਾਰੀ ਰੱਖੋ", "visualeditor-autosave-modified-prompt-reject": "ਨਵਾਂ ਸੋਧ ਸ਼ੁਰੂ ਕਰੋ", "visualeditor-autosave-modified-prompt-title": "ਕੀ {{GENDER:|ਤੁਹਾਡੇ}} ਸੋਧ ਨੂੰ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨਾ ਐ?", @@ -69,7 +69,7 @@ "visualeditor-dialog-media-search-tab-search": "ਖੋਜ", "visualeditor-dialog-media-search-tab-upload": "ਚੜ੍ਹਾਉ", "visualeditor-dialog-media-size-section": "ਤਸਵੀਰ ਦਾ ਅਕਾਰ", - "visualeditor-dialog-media-title": "ਮੀਡੀਆ ਸੈਟਿੰਗਾਂ", + "visualeditor-dialog-media-title": "ਮੀਡੀਆ ਤਰਜੀਹਾਂ", "visualeditor-dialog-media-type-border": "ਹੱਦ", "visualeditor-dialog-media-type-frame": "ਚੌਕਾਠ", "visualeditor-dialog-media-type-frameless": "ਚੌਕਾਠ-ਰਹਿਤ", @@ -100,7 +100,7 @@ "visualeditor-dialog-meta-settings-index-default": "ਮੂਲ", "visualeditor-dialog-meta-settings-index-disable": "ਨਹੀਂ", "visualeditor-dialog-meta-settings-index-force": "ਹਾਂ", - "visualeditor-dialog-meta-settings-label": "ਸਫ਼ੇ ਦੀਆਂ ਸੈਟਿੰਗਾਂ", + "visualeditor-dialog-meta-settings-label": "ਸਫ਼ੇ ਦੀਆਂ ਤਰਜੀਹਾਂ", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "ਮੂਲ", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "ਨਹੀਂ", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "ਹਾਂ", @@ -109,7 +109,7 @@ "visualeditor-dialog-meta-settings-notitleconvert-label": "ਸਿਰਲੇਖ ਨੂੰ ਭਾਸ਼ਾ ਦੇ ਰੂਪਾਂ ਵਿੱਚਕਾਰ ਨਾ ਬਦਲੋ", "visualeditor-dialog-meta-settings-redirect-label": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਉੱਤੇ ਵਾਪਸ ਕਰੋ", "visualeditor-dialog-meta-settings-redirect-placeholder": "ਵਾਪਸੀ ਟੀਚੇ ਲਈ ਸਫ਼ੇ", - "visualeditor-dialog-meta-settings-section": "ਸਫ਼ੇ ਦੀਆਂ ਸੈਟਿੰਗਾਂ", + "visualeditor-dialog-meta-settings-section": "ਸਫ਼ੇ ਦੀਆਂ ਤਰਜੀਹਾਂ", "visualeditor-dialog-meta-settings-toc-default": "ਜੇ ਲੋੜ ਪਵੇ ਤਾਂ", "visualeditor-dialog-meta-settings-toc-disable": "ਕਦੇ ਨਹੀਂ", "visualeditor-dialog-meta-settings-toc-force": "ਹਮੇਸ਼ਾਂ", @@ -231,7 +231,7 @@ "visualeditor-savedialog-title-save": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ", "visualeditor-section-body-placeholder": "ਨਵਾਂ ਭਾਗ", "visualeditor-section-title-placeholder": "ਵਿਸ਼ਾ", - "visualeditor-settings-tool": "ਸਫ਼ੇ ਦੀਆਂ ਸੈਟਿੰਗਾਂ", + "visualeditor-settings-tool": "ਸਫ਼ੇ ਦੀਆਂ ਤਰਜੀਹਾਂ", "visualeditor-special-characters-group-other": "ਅਕਸਰ ਵਰਤਿਆ ਗਿਆ", "visualeditor-templatesused-tool": "ਵਰਤੇ ਗਏ ਫਰਮੇ", "visualeditor-title-error": "ਗਲਤ ਸਿਰਲੇਖ।", diff --git a/i18n/ve-wmf/et.json b/i18n/ve-wmf/et.json index efa0ed488b..0acdd1faef 100644 --- a/i18n/ve-wmf/et.json +++ b/i18n/ve-wmf/et.json @@ -12,6 +12,8 @@ "tag-editcheck-references-description": "EditCheck arvab, et vaja võis olla viidet", "tag-editcheck-references-activated": "Muudatuse kontroll (viited) aktiveeritud", "tag-editcheck-references-activated-description": "EditCheck arvab, et vaja võis olla viidet ning näidati selle kasutajaliidest.", + "tag-editcheck-references-shown": "Muudatuse kontroll (viited) näidatud", + "tag-editcheck-references-shown-description": "EditCheck arvab, et vaja võis olla viidet ning näidati selle kasutajaliidest.", "tag-visualeditor": "Visuaalmuudatus", "tag-visualeditor-description": "Muudatus tehtud [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuaaltoimetiga]]", "tag-visualeditor-needcheck": "Visuaalmuudatus: kontrollida", From 9ab1066be95f61272f38acd15cc80cba7215e8ca Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 24 Mar 2025 15:25:33 -0500 Subject: [PATCH 256/730] DesktopArticleTarget.init: don't clobber spans when updating single-tab When in single tab mode with the pref set to remember-last, switching your editor preference immediately updates the text of the edit links on the page. The link HTML structure varies between different skins, but we were assuming that the contents of the `` could be replaced with text. This lightly breaks rendering when the structure is a>span. Instead, check first for a nested span, and fall back on just an a. Follow-up to be36f1fab16d9adfbe8dce6946ecd2a10e55f30f Bug: T389579 Change-Id: Ic323217e9d4325b52b34d67a3517cacbc51ac32a --- .../preinit/ve.init.mw.DesktopArticleTarget.init.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index 61615acad9..e60e1d33e2 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -444,8 +444,14 @@ sectionKey += 'source'; } - $( '#ca-edit a' ).text( getTabMessage( key ) ); - $( '.mw-editsection a' ).text( getTabMessage( sectionKey ) ); + const fallbackSelector = function ( selector, fallback ) { + const $result = $( selector ); + return $result.length > 0 ? $result : $( fallback ); + }; + + // Depending on skin these might contain text nested in a span + fallbackSelector( '#ca-edit a span', '#ca-edit a' ).text( getTabMessage( key ) ); + fallbackSelector( '.mw-editsection a span', '.mw-editsection a' ).text( getTabMessage( sectionKey ) ); } mw.cookie.set( 'VEE', editor, { path: '/', expires: 30 * 86400, prefix: '' } ); From 83f2bdabd2eb918d737e995745169100b747a692 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 1 Apr 2025 09:21:05 +0200 Subject: [PATCH 257/730] Localisation updates from https://translatewiki.net. Change-Id: I58ded08d2219194d191e798dfc0e53f4a46a4ce1 --- i18n/ve-mw/crh-latn.json | 1 + i18n/ve-wmf/tr.json | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/crh-latn.json b/i18n/ve-mw/crh-latn.json index 04c75e5546..b93cc5fc2f 100644 --- a/i18n/ve-mw/crh-latn.json +++ b/i18n/ve-mw/crh-latn.json @@ -10,6 +10,7 @@ "visualeditor-ca-createsource": "Kodunı yarat", "visualeditor-ca-editsource": "Kodunı deñiştir", "visualeditor-ca-editsource-section": "kodunı deñiştir", + "visualeditor-desc": "MediaViki içün vizual türlendirgiç", "visualeditor-descriptionpagelink": "Project:Vizual türlendirgiç", "visualeditor-dialog-meta-categories-addcategory-label": "Bu saifege bir kategoriya qoş", "visualeditor-dialog-meta-categories-input-placeholder": "Bir kategoriya qoş", diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index 04040e6200..7294950f6e 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -27,8 +27,8 @@ "tag-editcheck-references-description": "DüzenlemeKontrolü bir kaynağın gerekli olabileceğini düşünüyor", "tag-editcheck-references-activated": "Düzenleme Kontrolü (kaynakça) etkinleştirildi", "tag-editcheck-references-activated-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", - "tag-editcheck-references-shown": "Düzenleme Denetimi (kaynakça) gösterildi", - "tag-editcheck-references-shown-description": "DüzenlemeDenetimi bir kaynağın gerekebileceğini düşünüyor ve kullanıcı arayüzünün gösterildi", + "tag-editcheck-references-shown": "Düzenleme Kontrolü (kaynakça) gösterildi", + "tag-editcheck-references-shown-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", "tag-visualeditor": "Görsel düzenleme", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleyiciyi]] kullanarak düzenleyin", "tag-visualeditor-needcheck": "Görsel düzenleme: Doğrula", From ee8265d3c789d33f8657b9aff7b9753bbbd90147 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 2 Apr 2025 12:30:36 -0700 Subject: [PATCH 258/730] tests: Remove ve.test.utils.mwEnvironment Deprecated long ago. No matches in Codesearch Everywhere. Change-Id: I7a805a0cc89ec181f1f76df14aa49da8202e7237 --- modules/ve-mw/tests/ve.test.utils.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/ve-mw/tests/ve.test.utils.js b/modules/ve-mw/tests/ve.test.utils.js index 43fde14214..104f1e10e9 100644 --- a/modules/ve-mw/tests/ve.test.utils.js +++ b/modules/ve-mw/tests/ve.test.utils.js @@ -106,11 +106,6 @@ // On load, teardown overrides so the first core tests run correctly teardownOverrides(); - // Deprecated, use ve.test.utils.newMwEnvironment - ve.test.utils.mwEnvironment = { - beforeEach: setupOverrides, - afterEach: teardownOverrides - }; ve.test.utils.newMwEnvironment = function ( env ) { env = env || {}; return QUnit.newMwEnvironment( ve.extendObject( {}, env, { From 4972d63e6b150f1ee2e262ef8789241479bf2f0c Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 2 Apr 2025 12:30:36 -0700 Subject: [PATCH 259/730] tests: Remove ve.test.utils.mwEnvironment Follows-up Ib20c1f5277c5d5a99f5117c82b7cb. Deprecated since 2022. No matches in Codesearch Everywhere. Also remove redundant `.call(this)` in ve.test.utils.newMwEnvironment, since neither `setupOverrides` nor `teardownOverrides` makes reference to "this", so a regular function call is sufficient. Change-Id: I7b729ef5759e4b316b72533684a7d3c194725446 --- modules/ve-mw/tests/ve.test.utils.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/modules/ve-mw/tests/ve.test.utils.js b/modules/ve-mw/tests/ve.test.utils.js index 43fde14214..0730bafd76 100644 --- a/modules/ve-mw/tests/ve.test.utils.js +++ b/modules/ve-mw/tests/ve.test.utils.js @@ -106,22 +106,17 @@ // On load, teardown overrides so the first core tests run correctly teardownOverrides(); - // Deprecated, use ve.test.utils.newMwEnvironment - ve.test.utils.mwEnvironment = { - beforeEach: setupOverrides, - afterEach: teardownOverrides - }; ve.test.utils.newMwEnvironment = function ( env ) { env = env || {}; return QUnit.newMwEnvironment( ve.extendObject( {}, env, { beforeEach: function () { - setupOverrides.call( this ); + setupOverrides(); if ( env.beforeEach ) { env.beforeEach.call( this ); } }, afterEach: function () { - teardownOverrides.call( this ); + teardownOverrides(); if ( env.afterEach ) { env.afterEach.call( this ); } From 3303c278f502c99475843998efc2dc7b13768e53 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 2 Apr 2025 15:08:37 -0500 Subject: [PATCH 260/730] Don't show the VE switcher on pages using unsupported params The switcher was being offered on the undo-revision page, but would silently discard changes if used because VE doesn't support that action. Bug: T390801 Change-Id: Ie234c2c14c989257f0f35861c22bf2f50bd1dae7 --- .../ve.init.mw.DesktopArticleTarget.init.js | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index 61615acad9..c15c9aaf65 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -1304,6 +1304,16 @@ } }; + /** + * Check if a URL doesn't contain any params which would prevent VE from loading, e.g. 'undo' + * + * @param {URL} editUrl + * @return {boolean} URL contains no unsupported params + */ + function isSupportedEditPage( editUrl ) { + return configData.unsupportedEditParams.every( ( param ) => !editUrl.searchParams.has( param ) ); + } + init.isSingleEditTab = conf.singleEditTab && tabPreference !== 'multi-tab'; // On a view page, extend the current URL so extra parameters are carried over @@ -1348,6 +1358,9 @@ enabledForUser ) ) && + // Only if the current page isn't using unsupported URL parameters + isSupportedEditPage( url ) && + // Only for pages with a supported content model Object.prototype.hasOwnProperty.call( conf.contentModels, mw.config.get( 'wgPageContentModel' ) ) ); @@ -1402,16 +1415,6 @@ // for e.g. "Edit" > "Edit source" even when VE is not available. } - /** - * Check if a URL doesn't contain any params which would prevent VE from loading, e.g. 'undo' - * - * @param {URL} editUrl - * @return {boolean} URL contains no unsupported params - */ - function isSupportedEditPage( editUrl ) { - return configData.unsupportedEditParams.every( ( param ) => !editUrl.searchParams.has( param ) ); - } - /** * Get the edit mode for the given URL * From 7a723897147d9df0c7d9eb23c48dfa414600fe28 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 2 Apr 2025 15:09:19 -0500 Subject: [PATCH 261/730] Source mode: don't offer to switch to visual mode in unsupported namespaces Change-Id: Id1ba04a8f691396954cc677e7a192e50033b0047 --- modules/ve-mw/preinit/ve.init.MWEditModeTool.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js index 5c10f117ad..37ba0bd418 100644 --- a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js +++ b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js @@ -120,9 +120,14 @@ mw.libs.ve.MWEditModeVisualTool.static.unavailableTooltip = */ mw.libs.ve.MWEditModeVisualTool.prototype.isModeAvailable = function ( mode ) { // Adding a new section is not supported in visual mode - // eslint-disable-next-line no-jquery/no-global-selector - if ( mode === 'visual' && $( 'input[name=wpSection]' ).val() === 'new' ) { - return false; + if ( mode === 'visual' ) { + // eslint-disable-next-line no-jquery/no-global-selector + if ( $( 'input[name=wpSection]' ).val() === 'new' ) { + return false; + } + if ( !mw.config.get( 'wgVisualEditorConfig' ).namespaces.includes( new mw.Title( mw.config.get( 'wgRelevantPageName' ) ).getNamespaceId() ) ) { + return false; + } } return mw.libs.ve.MWEditModeVisualTool.super.prototype.isModeAvailable( mode ); }; From 3de6c515f21d85d7e6a3fe2e5ec86a6cb8c39d94 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 3 Apr 2025 18:40:42 +0100 Subject: [PATCH 262/730] Mobile insert menu: Exclude media and signature tools Bug: T385851 Change-Id: I53a5629d835e8450586b49d24b3f7d1bda090aea --- modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index b0e56df462..35f6ce55ce 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -88,7 +88,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).mobileInsertMenu ) { include: '*', forceExpand: [ 'transclusion', 'insertTable' ], promote: [ 'transclusion', 'insertTable' ], - exclude: [ { group: 'format' }, { group: 'history' }, { group: 'structure' } ] + exclude: [ { group: 'format' }, { group: 'history' }, { group: 'structure' }, 'gallery', 'media', 'mwSignature' ] } ); } From cf0c00096f53808882f76dd21cb550abddf223f6 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 4 Apr 2025 09:52:16 +0200 Subject: [PATCH 263/730] Localisation updates from https://translatewiki.net. Change-Id: I222904b9bf33a4051c9e23ce224efbaa2852597c --- i18n/ve-wmf/crh-latn.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 i18n/ve-wmf/crh-latn.json diff --git a/i18n/ve-wmf/crh-latn.json b/i18n/ve-wmf/crh-latn.json new file mode 100644 index 0000000000..25a989561a --- /dev/null +++ b/i18n/ve-wmf/crh-latn.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Don Alessandro" + ] + }, + "tag-visualeditor": "Vizual türlendirgiç ile", + "tag-visualeditor-needcheck": "Vizual türlendirgiç: Teşker", + "tag-visualeditor-switched": "Vizual türlendirgiçten vazçgeçildi" +} From 30a2b91c231bbabd156f96aaeef037c343a8434c Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 4 Apr 2025 10:55:12 +0100 Subject: [PATCH 264/730] EditCheckAction: Simplify loop in #equals Change-Id: Ia9e5c02e4bacecfc68f30c42119ebdbed375f7f5 --- editcheck/modules/EditCheckAction.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index c267275f38..9e1a11ff98 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -124,12 +124,7 @@ mw.editcheck.EditCheckAction.prototype.equals = function ( other ) { // Now they're the same if every fragment is found in both actions return this.fragments.every( ( fragment ) => { const selection = fragment.getSelection(); - for ( let i = other.fragments.length - 1; i >= 0; i-- ) { - if ( selection.equals( other.fragments[ i ].getSelection() ) ) { - return true; - } - } - return false; + return other.fragments.some( ( otherFragment ) => otherFragment.getSelection().equals( selection ) ); } ); }; From 9eb2d2fc06a17f033e6c176f392b724ec22e597d Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 4 Apr 2025 11:21:53 +0100 Subject: [PATCH 265/730] EditCheckDialog: Don't set null selection when acting This dates back to when we used a PersistentContext for showing the check inline. Now the dialog manages selection, and prefers deactivation over setNull. Change-Id: I493ba8568e8cf956f60eac0e4c61ec5e161e92e4 --- editcheck/modules/EditCheckDialog.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index c661750fc4..d91304dd20 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -242,11 +242,6 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { widget.setDisabled( false ); this.nextButton.setDisabled( false ); this.previousButton.setDisabled( false ); - this.surface.getModel().setNullSelection(); - if ( OO.ui.isMobile() ) { - // Delay on mobile means we need to rehide this - setTimeout( () => this.surface.getModel().setNullSelection(), 300 ); - } if ( data && this.listener === 'onBeforeSave' ) { // If an action has been taken, we want to linger for a brief moment From 133459a521b5809386e56885e49c8c4356b6cdbc Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Fri, 4 Apr 2025 09:55:28 +0000 Subject: [PATCH 266/730] build: Updating wdio-mediawiki to 2.7.1 Change-Id: I511bb80054d35a25dc1b496eacca2cfe059d9abf --- 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 12d0622d80..8f0a29c7d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", - "wdio-mediawiki": "2.6.0" + "wdio-mediawiki": "2.7.1" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -14058,9 +14058,9 @@ } }, "node_modules/wdio-mediawiki": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.6.0.tgz", - "integrity": "sha512-aYUyuDhygB27ZbXBLGlyGdQb0wsY1JS75wPFaCZ7yss2FVoHiLdaiH4yNViJ4PBUo4Kr4fvUxjZtAo3cd5L5bA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.7.1.tgz", + "integrity": "sha512-GMNnz/TIdASuD0Ufo76P7EkUCAW8Cs1c/T9XAVG2PgBWrw7KDM0oOqRRuXKcuCOKqn6VwNXTDkXwiL4u4AU7Fg==", "dev": true, "dependencies": { "mwbot": "2.1.3" @@ -25218,9 +25218,9 @@ } }, "wdio-mediawiki": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.6.0.tgz", - "integrity": "sha512-aYUyuDhygB27ZbXBLGlyGdQb0wsY1JS75wPFaCZ7yss2FVoHiLdaiH4yNViJ4PBUo4Kr4fvUxjZtAo3cd5L5bA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.7.1.tgz", + "integrity": "sha512-GMNnz/TIdASuD0Ufo76P7EkUCAW8Cs1c/T9XAVG2PgBWrw7KDM0oOqRRuXKcuCOKqn6VwNXTDkXwiL4u4AU7Fg==", "dev": true, "requires": { "mwbot": "2.1.3" diff --git a/package.json b/package.json index a16afa237e..0089b4f89d 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,6 @@ "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", - "wdio-mediawiki": "2.6.0" + "wdio-mediawiki": "2.7.1" } } From 2b99bea61d9f3e20266534866fcc11c49d0633e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Sun, 6 Apr 2025 22:32:53 +0200 Subject: [PATCH 267/730] ve.dm.MWIncludesNode: Preserve HTML attributes 'preserveHtmlAttributes' is true by default, but we inherited false from ve.dm.AlienNode. Bug: T283353 Change-Id: I02b70ebc9d7a45a56efa5961d8eee72b4c046b96 --- modules/ve-mw/dm/nodes/ve.dm.MWIncludesNode.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWIncludesNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWIncludesNode.js index a99080ee19..f5b240919e 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWIncludesNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWIncludesNode.js @@ -26,6 +26,8 @@ OO.inheritClass( ve.dm.MWIncludesNode, ve.dm.AlienInlineNode ); ve.dm.MWIncludesNode.static.name = 'mwIncludes'; +ve.dm.MWIncludesNode.static.preserveHtmlAttributes = true; + ve.dm.MWIncludesNode.static.matchRdfaTypes = [ /^mw:Includes\// ]; From e4b54e82a23242dae1b641bedeef845a585b8875 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 7 Apr 2025 09:30:14 +0200 Subject: [PATCH 268/730] Localisation updates from https://translatewiki.net. Change-Id: If7e350b17aef22664be50f52594b235d44964a5e --- i18n/ve-mw/bug.json | 2 +- i18n/ve-mw/crh-latn.json | 16 +++++++++++++++- i18n/ve-mw/ext.json | 2 +- i18n/ve-mw/ike-latn.json | 2 ++ i18n/ve-wmf/ext.json | 5 +++-- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/i18n/ve-mw/bug.json b/i18n/ve-mw/bug.json index 9cf3744c73..a3ad7cbb29 100644 --- a/i18n/ve-mw/bug.json +++ b/i18n/ve-mw/bug.json @@ -4,7 +4,7 @@ "Rdwnnr" ] }, - "visualeditor-ca-editsource-section": "padéccéng apoléng", + "visualeditor-ca-editsource-section": "padéccéng pabbéré", "visualeditor-dialog-template-title": "Accuwang", "visualeditor-dialog-transclusion-add-param-save": "Tambai", "visualeditor-dialog-transclusion-add-template": "Tambai accuwang", diff --git a/i18n/ve-mw/crh-latn.json b/i18n/ve-mw/crh-latn.json index b93cc5fc2f..04450471d3 100644 --- a/i18n/ve-mw/crh-latn.json +++ b/i18n/ve-mw/crh-latn.json @@ -14,5 +14,19 @@ "visualeditor-descriptionpagelink": "Project:Vizual türlendirgiç", "visualeditor-dialog-meta-categories-addcategory-label": "Bu saifege bir kategoriya qoş", "visualeditor-dialog-meta-categories-input-placeholder": "Bir kategoriya qoş", - "visualeditor-dialog-meta-languages-link-label": "Bağlanğan saife" + "visualeditor-dialog-meta-languages-link-label": "Bağlanğan saife", + "visualeditor-preference-visualeditor": "Vizual türlendirgiçni işlet", + "visualeditor-preference-newwikitexteditor-enable": "Ayrı bir vikimetin türlendirgiçi yerine vizual türlendirgiçniñ içindeki vikimetin rejimini qullan", + "visualeditor-preference-newwikitexteditor-help": "Bu funktsiyağa bazıda \"2017 vikimetin türlendirgiçi\" de aytıla.", + "visualeditor-preference-tabs": "Deñiştirüv rejimi:", + "visualeditor-preference-tabs-multi-tab": "Maña er eki türlendirgiç variantını da köster", + "visualeditor-preference-tabs-prefer-ve": "Mümkün olğan er vaqıt vizual türlendirgiçni qullan", + "visualeditor-preference-tabs-prefer-wt": "Er vaqıt menba kodu türlendirgiçini qullan", + "visualeditor-preference-tabs-remember-last": "Soñki türlendirgiçimni hatırla", + "visualeditor-preference-collab-label": "İşbirlikçi deñiştirüv", + "visualeditor-preference-collab-description": "Başqa qullanıcılarnı vizual türlendirgiçteki deñiştirüv oturımıñızğa qoşulmağa çağırıñız.", + "visualeditor-savedialog-review-visual": "Vizual", + "visualeditor-savedialog-review-wikitext": "Vikimetin", + "visualeditor-savedialog-title-conflict": "Çatışma", + "visualeditor-savedialog-title-preview": "Yapqan deñiştirmeleriñizni baqıp çıqıñız" } diff --git a/i18n/ve-mw/ext.json b/i18n/ve-mw/ext.json index 10672de87c..df12dc9b92 100644 --- a/i18n/ve-mw/ext.json +++ b/i18n/ve-mw/ext.json @@ -10,6 +10,6 @@ "tooltip-ca-ve-edit": "Edital esta página", "visualeditor-ca-createsource": "Crial huenti", "visualeditor-ca-editsource": "Editá'l códigu", - "visualeditor-ca-editsource-section": "Editá'l códigu", + "visualeditor-ca-editsource-section": "Dital códigu", "visualeditor-descriptionpagelink": "Project:EitolVisual" } diff --git a/i18n/ve-mw/ike-latn.json b/i18n/ve-mw/ike-latn.json index d0829a0dc6..310cc4dc46 100644 --- a/i18n/ve-mw/ike-latn.json +++ b/i18n/ve-mw/ike-latn.json @@ -4,6 +4,8 @@ "MysticVoyager" ] }, + "visualeditor-ca-createlocaldescriptionsource": "tukisigiarutiksat aullaqattarnirmut nakinngaarmangaata", + "visualeditor-ca-createsource": "saqqittinirmik tukisigiarviksanik", "visualeditor-ca-editsource": "asijjiqpagit", "visualeditor-ca-editsource-section": "asijjiqpagit" } diff --git a/i18n/ve-wmf/ext.json b/i18n/ve-wmf/ext.json index c3564189af..26fe52ba0d 100644 --- a/i18n/ve-wmf/ext.json +++ b/i18n/ve-wmf/ext.json @@ -1,8 +1,9 @@ { "@metadata": { "authors": [ - "Crucifunked" + "Crucifunked", + "HackerPunki" ] }, - "tag-visualeditor": "Eición visual" + "tag-visualeditor": "Dición visual" } From 3f021a48f3adee51affbe748e553d3ae50fd0d0f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 8 Apr 2025 09:25:43 +0200 Subject: [PATCH 269/730] Localisation updates from https://translatewiki.net. Change-Id: I52aa22cc8f744b2fbdbfb8ef5255de1a41a70a19 --- i18n/ve-mw/ar.json | 2 -- i18n/ve-mw/ast.json | 2 -- i18n/ve-mw/ban.json | 2 -- i18n/ve-mw/bg.json | 1 - i18n/ve-mw/br.json | 1 - i18n/ve-mw/ca.json | 2 -- i18n/ve-mw/ce.json | 1 - i18n/ve-mw/cs.json | 1 - i18n/ve-mw/es.json | 2 -- i18n/ve-mw/eu.json | 2 -- i18n/ve-mw/fa.json | 2 -- i18n/ve-mw/fi.json | 2 -- i18n/ve-mw/fr.json | 1 - i18n/ve-mw/gl.json | 2 -- i18n/ve-mw/hy.json | 2 -- i18n/ve-mw/ia.json | 2 +- i18n/ve-mw/id.json | 2 -- i18n/ve-mw/ja.json | 2 -- i18n/ve-mw/ka.json | 1 - i18n/ve-mw/kk-cyrl.json | 2 -- i18n/ve-mw/krc.json | 2 -- i18n/ve-mw/ku-latn.json | 2 -- i18n/ve-mw/ky.json | 1 - i18n/ve-mw/lb.json | 2 -- i18n/ve-mw/lt.json | 2 -- i18n/ve-mw/mad.json | 1 - i18n/ve-mw/mk.json | 2 -- i18n/ve-mw/mt.json | 1 - i18n/ve-mw/ne.json | 2 -- i18n/ve-mw/nl.json | 1 - i18n/ve-mw/pl.json | 2 -- i18n/ve-mw/ps.json | 1 - i18n/ve-mw/pt-br.json | 2 -- i18n/ve-mw/pt.json | 1 - i18n/ve-mw/qqq.json | 2 +- i18n/ve-mw/ru.json | 2 -- i18n/ve-mw/sd.json | 2 -- i18n/ve-mw/se.json | 2 -- i18n/ve-mw/sl.json | 2 -- i18n/ve-mw/sq.json | 2 -- i18n/ve-mw/te.json | 2 -- i18n/ve-mw/uk.json | 2 -- i18n/ve-mw/vec.json | 1 - i18n/ve-mw/vi.json | 2 -- i18n/ve-mw/zh-hans.json | 2 -- i18n/ve-wmf/ko.json | 1 + 46 files changed, 3 insertions(+), 75 deletions(-) diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index ec76211cbe..6eac71d10b 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -94,11 +94,9 @@ "visualeditor-dialog-media-info-artist": "رُفع بواسطة $1", "visualeditor-dialog-media-info-audiofile": "ملف صوتي", "visualeditor-dialog-media-info-created": "أنشأ بواسطة: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "المؤلف: $1", "visualeditor-dialog-media-info-moreinfo": "مزيد من المعلومات", "visualeditor-dialog-media-info-readmore": "اقرأ المزيد", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "رفع في: $1", "visualeditor-dialog-media-page-advanced": "متقدم", "visualeditor-dialog-media-page-general": "عام", diff --git a/i18n/ve-mw/ast.json b/i18n/ve-mw/ast.json index 369eb3f1f8..4034d6d72c 100644 --- a/i18n/ve-mw/ast.json +++ b/i18n/ve-mw/ast.json @@ -49,11 +49,9 @@ "visualeditor-dialog-media-info-artist": "Xubida por $1", "visualeditor-dialog-media-info-audiofile": "Ficheru de soníu", "visualeditor-dialog-media-info-created": "Creada: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Artista: $1", "visualeditor-dialog-media-info-moreinfo": "Más información", "visualeditor-dialog-media-info-readmore": "Lleer más", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Xubida: $1", "visualeditor-dialog-media-page-advanced": "Avanzao", "visualeditor-dialog-media-page-general": "Xeneral", diff --git a/i18n/ve-mw/ban.json b/i18n/ve-mw/ban.json index 7007e2b12f..d661911328 100644 --- a/i18n/ve-mw/ban.json +++ b/i18n/ve-mw/ban.json @@ -45,11 +45,9 @@ "visualeditor-dialog-media-info-artist": "Kaunggah olih $1", "visualeditor-dialog-media-info-audiofile": "Berkas swara", "visualeditor-dialog-media-info-created": "Kakardi:$1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Pangripta: $1", "visualeditor-dialog-media-info-moreinfo": "Pidarta lianan", "visualeditor-dialog-media-info-readmore": "Wacén malih", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Kaunggahang:$1", "visualeditor-dialog-media-page-advanced": "Lanturan", "visualeditor-dialog-media-page-general": "Umum", diff --git a/i18n/ve-mw/bg.json b/i18n/ve-mw/bg.json index 166051fdb1..b62359ce2f 100644 --- a/i18n/ve-mw/bg.json +++ b/i18n/ve-mw/bg.json @@ -54,7 +54,6 @@ "visualeditor-dialog-media-info-meta-artist": "Автор: $1", "visualeditor-dialog-media-info-moreinfo": "Допълнителна информация", "visualeditor-dialog-media-info-readmore": "Прочетете повече", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Качено: $1", "visualeditor-dialog-media-page-advanced": "Разширени", "visualeditor-dialog-media-page-general": "Основни", diff --git a/i18n/ve-mw/br.json b/i18n/ve-mw/br.json index 048ff49e46..e6e75a6540 100644 --- a/i18n/ve-mw/br.json +++ b/i18n/ve-mw/br.json @@ -62,7 +62,6 @@ "visualeditor-dialog-media-info-artist": "Bet karget gant $1", "visualeditor-dialog-media-info-audiofile": "Restr son", "visualeditor-dialog-media-info-created": "Krouet : $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Aozer : $1", "visualeditor-dialog-media-info-moreinfo": "Muioc'h a ditouroù", "visualeditor-dialog-media-info-readmore": "Lenn muioc'h", diff --git a/i18n/ve-mw/ca.json b/i18n/ve-mw/ca.json index 02750efd69..39a760af6f 100644 --- a/i18n/ve-mw/ca.json +++ b/i18n/ve-mw/ca.json @@ -69,11 +69,9 @@ "visualeditor-dialog-media-info-artist": "Pujat per $1", "visualeditor-dialog-media-info-audiofile": "Fitxer d'àudio", "visualeditor-dialog-media-info-created": "Creat: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Autor: $1", "visualeditor-dialog-media-info-moreinfo": "Més informació", "visualeditor-dialog-media-info-readmore": "Més informació", - "visualeditor-dialog-media-info-separator": ".", "visualeditor-dialog-media-info-uploaded": "Carregat: $1", "visualeditor-dialog-media-page-advanced": "Avançat", "visualeditor-dialog-media-page-general": "General", diff --git a/i18n/ve-mw/ce.json b/i18n/ve-mw/ce.json index 9ad135e0ba..62bfd3b766 100644 --- a/i18n/ve-mw/ce.json +++ b/i18n/ve-mw/ce.json @@ -53,7 +53,6 @@ "visualeditor-dialog-media-info-artist": "Чуйаьккхина: $1", "visualeditor-dialog-media-info-audiofile": "Аудиофайл", "visualeditor-dialog-media-info-created": "Кхоьллина: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Автор: $1", "visualeditor-dialog-media-info-moreinfo": "Ма-дарра", "visualeditor-dialog-media-info-readmore": "Ма-дарра", diff --git a/i18n/ve-mw/cs.json b/i18n/ve-mw/cs.json index 3c7ffbb878..a0c61f384f 100644 --- a/i18n/ve-mw/cs.json +++ b/i18n/ve-mw/cs.json @@ -84,7 +84,6 @@ "visualeditor-dialog-media-info-meta-artist": "Autor: $1", "visualeditor-dialog-media-info-moreinfo": "Další informace", "visualeditor-dialog-media-info-readmore": "Číst dál", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Načteno: $1", "visualeditor-dialog-media-page-advanced": "Pokročilá nastavení", "visualeditor-dialog-media-page-general": "Obecná nastavení", diff --git a/i18n/ve-mw/es.json b/i18n/ve-mw/es.json index 5178c08887..f41fb8ef63 100644 --- a/i18n/ve-mw/es.json +++ b/i18n/ve-mw/es.json @@ -110,11 +110,9 @@ "visualeditor-dialog-media-info-artist": "Subido por $1", "visualeditor-dialog-media-info-audiofile": "Archivo de audio", "visualeditor-dialog-media-info-created": "Creado el: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Autor: $1", "visualeditor-dialog-media-info-moreinfo": "Más información", "visualeditor-dialog-media-info-readmore": "Más información", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Subido el: $1", "visualeditor-dialog-media-page-advanced": "Avanzado", "visualeditor-dialog-media-page-general": "General", diff --git a/i18n/ve-mw/eu.json b/i18n/ve-mw/eu.json index 7bb9689df6..81dadb6cec 100644 --- a/i18n/ve-mw/eu.json +++ b/i18n/ve-mw/eu.json @@ -52,11 +52,9 @@ "visualeditor-dialog-media-info-artist": "Nork igota:$1", "visualeditor-dialog-media-info-audiofile": "Audio fitxategia", "visualeditor-dialog-media-info-created": "Sortze-data: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Egilea:$1", "visualeditor-dialog-media-info-moreinfo": "Informazio gehiago", "visualeditor-dialog-media-info-readmore": "Irakurri gehiago", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Noiz igota:$1", "visualeditor-dialog-media-page-advanced": "Aurreratua", "visualeditor-dialog-media-page-general": "Orokorra", diff --git a/i18n/ve-mw/fa.json b/i18n/ve-mw/fa.json index 94f10d2e6b..cc89e525a4 100644 --- a/i18n/ve-mw/fa.json +++ b/i18n/ve-mw/fa.json @@ -89,11 +89,9 @@ "visualeditor-dialog-media-info-artist": "بارگذاری‌شده توسط $1", "visualeditor-dialog-media-info-audiofile": "پرونده صوتی", "visualeditor-dialog-media-info-created": "ایجادشده: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "مؤلف: $1", "visualeditor-dialog-media-info-moreinfo": "اطلاعات بیشتر", "visualeditor-dialog-media-info-readmore": "بیشتر بخوانید", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "بارگذاری‌شده: $1", "visualeditor-dialog-media-page-advanced": "پیشرفته", "visualeditor-dialog-media-page-general": "عمومی", diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 99d844275a..7bc9bdcdfb 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -88,11 +88,9 @@ "visualeditor-dialog-media-info-artist": "Tallentanut $1", "visualeditor-dialog-media-info-audiofile": "Äänitiedosto", "visualeditor-dialog-media-info-created": "Luotu: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Tekijä: $1", "visualeditor-dialog-media-info-moreinfo": "Lisätietoja", "visualeditor-dialog-media-info-readmore": "Lue lisää", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Tallennettu $1", "visualeditor-dialog-media-page-advanced": "Lisäasetukset", "visualeditor-dialog-media-page-general": "Yleiset", diff --git a/i18n/ve-mw/fr.json b/i18n/ve-mw/fr.json index 8736e9cc9b..1998909407 100644 --- a/i18n/ve-mw/fr.json +++ b/i18n/ve-mw/fr.json @@ -120,7 +120,6 @@ "visualeditor-dialog-media-info-meta-artist": "Auteur : $1", "visualeditor-dialog-media-info-moreinfo": "Davantage d’informations", "visualeditor-dialog-media-info-readmore": "Lire la suite", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Téléversé : $1", "visualeditor-dialog-media-page-advanced": "Avancé", "visualeditor-dialog-media-page-general": "Général", diff --git a/i18n/ve-mw/gl.json b/i18n/ve-mw/gl.json index 868c34af63..aded6e0fea 100644 --- a/i18n/ve-mw/gl.json +++ b/i18n/ve-mw/gl.json @@ -71,11 +71,9 @@ "visualeditor-dialog-media-info-artist": "Subido por $1", "visualeditor-dialog-media-info-audiofile": "Ficheiro de son", "visualeditor-dialog-media-info-created": "Creado o $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Autoría: $1", "visualeditor-dialog-media-info-moreinfo": "Máis información", "visualeditor-dialog-media-info-readmore": "Ler máis", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Subido o $1", "visualeditor-dialog-media-page-advanced": "Avanzado", "visualeditor-dialog-media-page-general": "Xeral", diff --git a/i18n/ve-mw/hy.json b/i18n/ve-mw/hy.json index 1c96a201ed..e3513350c1 100644 --- a/i18n/ve-mw/hy.json +++ b/i18n/ve-mw/hy.json @@ -53,11 +53,9 @@ "visualeditor-dialog-media-info-artist": "Վերբեռնել է $1 մասնակիցը", "visualeditor-dialog-media-info-audiofile": "Աուդիո նիշք", "visualeditor-dialog-media-info-created": "Ստեղծել է՝ $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Նկարիչ` $1", "visualeditor-dialog-media-info-moreinfo": "Մանրամասն տեղեկատվություն", "visualeditor-dialog-media-info-readmore": "Կարդալ ավելին", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Վերբեռնել է՝ $1", "visualeditor-dialog-media-page-advanced": "Ընդլայնված", "visualeditor-dialog-media-page-general": "Հիմնական", diff --git a/i18n/ve-mw/ia.json b/i18n/ve-mw/ia.json index 131d90ad52..4b58813566 100644 --- a/i18n/ve-mw/ia.json +++ b/i18n/ve-mw/ia.json @@ -20,7 +20,7 @@ "visualeditor-annotations-default-description": "Iste parte del pagina face parte de un intervallo annotate.", "visualeditor-annotations-default-end": "Fin del intervallo annotate", "visualeditor-annotations-default-start": "Initio del intervallo annotate", - "visualeditor-annotations-extended-documentation": "Iste rango annotate ha essite extendite perque le contento que illo includeva non esseva ben annidate. Es recommendate assecurar se que le contento annotate es ben annidate ante de modificar lo; alteremente, un intervallo plus grande que expectate poterea esser annotate.", + "visualeditor-annotations-extended-documentation": "Iste intervallo de annotation ha essite extendite perque le contento que illo includeva non esseva ben annidate. Es recommendate assecurar se que le contento annotate es ben annidate ante de modificar lo; alteremente, un intervallo plus grande que expectate poterea esser annotate.", "visualeditor-autosave-modified-prompt-accept": "Reprender modification", "visualeditor-autosave-modified-prompt-message": "Iste pagina ha essite modificate post que tu lo cargava pro le ultime vice. Vole tu reprender tu modification del version ancian, o comenciar un nove modification del ultime version?", "visualeditor-autosave-modified-prompt-reject": "Comenciar un nove modification", diff --git a/i18n/ve-mw/id.json b/i18n/ve-mw/id.json index 259b40257b..b067e4ed89 100644 --- a/i18n/ve-mw/id.json +++ b/i18n/ve-mw/id.json @@ -75,11 +75,9 @@ "visualeditor-dialog-media-info-artist": "Diunggah oleh $1", "visualeditor-dialog-media-info-audiofile": "Berkas audio", "visualeditor-dialog-media-info-created": "Dibuat: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Pembuat: $1", "visualeditor-dialog-media-info-moreinfo": "Informasi selengkapnya", "visualeditor-dialog-media-info-readmore": "Pelajari selengkapnya", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Diunggah: $1", "visualeditor-dialog-media-page-advanced": "Lanjutan", "visualeditor-dialog-media-page-general": "Umum", diff --git a/i18n/ve-mw/ja.json b/i18n/ve-mw/ja.json index 1832ffc5ee..c70d83a488 100644 --- a/i18n/ve-mw/ja.json +++ b/i18n/ve-mw/ja.json @@ -96,11 +96,9 @@ "visualeditor-dialog-media-info-artist": "アップロード: $1", "visualeditor-dialog-media-info-audiofile": "音声ファイル", "visualeditor-dialog-media-info-created": "作成: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "作者: $1", "visualeditor-dialog-media-info-moreinfo": "詳細情報", "visualeditor-dialog-media-info-readmore": "さらに読む", - "visualeditor-dialog-media-info-separator": "。", "visualeditor-dialog-media-info-uploaded": "アップロード: $1", "visualeditor-dialog-media-page-advanced": "詳細", "visualeditor-dialog-media-page-general": "全般", diff --git a/i18n/ve-mw/ka.json b/i18n/ve-mw/ka.json index 10892d12cb..7d55c25397 100644 --- a/i18n/ve-mw/ka.json +++ b/i18n/ve-mw/ka.json @@ -52,7 +52,6 @@ "visualeditor-dialog-media-info-meta-artist": "ავტორი: $1", "visualeditor-dialog-media-info-moreinfo": "მეტი ინფორმაცია", "visualeditor-dialog-media-info-readmore": "წაიკითხე მეტი", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "ატვირთულია: $1", "visualeditor-dialog-media-page-advanced": "გაფართოებული", "visualeditor-dialog-media-page-general": "ძირითადი", diff --git a/i18n/ve-mw/kk-cyrl.json b/i18n/ve-mw/kk-cyrl.json index a3b0047a8b..b5ccdb81eb 100644 --- a/i18n/ve-mw/kk-cyrl.json +++ b/i18n/ve-mw/kk-cyrl.json @@ -37,11 +37,9 @@ "visualeditor-dialog-media-info-artist": "$1 жүктеген", "visualeditor-dialog-media-info-audiofile": "Дыбыстық файл", "visualeditor-dialog-media-info-created": "Құрылған кезі: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Әртіс: $1", "visualeditor-dialog-media-info-moreinfo": "Толығырақ мәлімет", "visualeditor-dialog-media-info-readmore": "Көбірек оқу", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Жүктелген кезі: $1", "visualeditor-dialog-media-page-advanced": "Кеңейтілген баптаулар", "visualeditor-dialog-media-page-general": "Негізгі баптаулар", diff --git a/i18n/ve-mw/krc.json b/i18n/ve-mw/krc.json index 8f1fe5e37d..bf553b9a4b 100644 --- a/i18n/ve-mw/krc.json +++ b/i18n/ve-mw/krc.json @@ -60,11 +60,9 @@ "visualeditor-dialog-media-info-artist": "$1 джюкледи", "visualeditor-dialog-media-info-audiofile": "Аудиофайл", "visualeditor-dialog-media-info-created": "Къуралгъаны: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Автор: $1", "visualeditor-dialog-media-info-moreinfo": "Аслам информация", "visualeditor-dialog-media-info-readmore": "Энтда окъу", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Джюкленнгенди: $1", "visualeditor-dialog-media-page-advanced": "Къошакъ", "visualeditor-dialog-media-page-general": "Баш", diff --git a/i18n/ve-mw/ku-latn.json b/i18n/ve-mw/ku-latn.json index 0a03bd00fa..5e12db134b 100644 --- a/i18n/ve-mw/ku-latn.json +++ b/i18n/ve-mw/ku-latn.json @@ -29,10 +29,8 @@ "visualeditor-dialog-media-goback": "Paşve", "visualeditor-dialog-media-info-artist": "Ji aliyê $1 hate barkirin", "visualeditor-dialog-media-info-audiofile": "Pela dengê", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-moreinfo": "Zêdetir agahî", "visualeditor-dialog-media-info-readmore": "Zêdetir bixwîne", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Hat barkirinː $1", "visualeditor-dialog-media-page-advanced": "Pêşketî", "visualeditor-dialog-media-position-section": "Pozisyon", diff --git a/i18n/ve-mw/ky.json b/i18n/ve-mw/ky.json index 173a2fddfc..20b425b042 100644 --- a/i18n/ve-mw/ky.json +++ b/i18n/ve-mw/ky.json @@ -44,7 +44,6 @@ "visualeditor-dialog-media-info-meta-artist": "Автор: $1", "visualeditor-dialog-media-info-moreinfo": "Толук маалымат", "visualeditor-dialog-media-info-readmore": "Толук маалымат", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "$1 жүктөлгөн", "visualeditor-dialog-media-page-advanced": "Кошумча", "visualeditor-dialog-media-page-general": "Негизги", diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index 0e6ec0de73..964e50a227 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -60,11 +60,9 @@ "visualeditor-dialog-media-info-artist": "Eropgeluede vum $1", "visualeditor-dialog-media-info-audiofile": "Audiofichier", "visualeditor-dialog-media-info-created": "Ugeluecht: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Auteur: $1", "visualeditor-dialog-media-info-moreinfo": "Méi Informatiounen", "visualeditor-dialog-media-info-readmore": "Liest méi", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Eropgelueden: $1", "visualeditor-dialog-media-page-advanced": "Erweidert", "visualeditor-dialog-media-page-general": "Allgemeng", diff --git a/i18n/ve-mw/lt.json b/i18n/ve-mw/lt.json index 6979794b1e..bc8d00fc54 100644 --- a/i18n/ve-mw/lt.json +++ b/i18n/ve-mw/lt.json @@ -52,11 +52,9 @@ "visualeditor-dialog-media-info-artist": "Įkėlė $1", "visualeditor-dialog-media-info-audiofile": "Garso failas", "visualeditor-dialog-media-info-created": "Sukūrė: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Kūrėjas: $1", "visualeditor-dialog-media-info-moreinfo": "Daugiau informacijos", "visualeditor-dialog-media-info-readmore": "Skaityti daugiau", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Įkelta: $1", "visualeditor-dialog-media-page-advanced": "Išplėstiniai", "visualeditor-dialog-media-page-general": "Bendrieji", diff --git a/i18n/ve-mw/mad.json b/i18n/ve-mw/mad.json index f0c82b9e67..d7af98c743 100644 --- a/i18n/ve-mw/mad.json +++ b/i18n/ve-mw/mad.json @@ -46,7 +46,6 @@ "visualeditor-dialog-media-info-ellipsis": "...", "visualeditor-dialog-media-info-moreinfo": "Bâberta saghenna'na", "visualeditor-dialog-media-info-readmore": "Bâca terros", - "visualeditor-dialog-media-info-separator": ".", "visualeditor-dialog-media-page-advanced": "Terrosan", "visualeditor-dialog-media-page-general": "Omom", "visualeditor-dialog-media-position-checkbox": "Bhundhu' tèks è sakobhengnga butèr arèya", diff --git a/i18n/ve-mw/mk.json b/i18n/ve-mw/mk.json index 107419e824..f11c343c28 100644 --- a/i18n/ve-mw/mk.json +++ b/i18n/ve-mw/mk.json @@ -62,11 +62,9 @@ "visualeditor-dialog-media-info-artist": "Подигнато од $1", "visualeditor-dialog-media-info-audiofile": "Звучна снимка", "visualeditor-dialog-media-info-created": "Создадено: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Автор: $1", "visualeditor-dialog-media-info-moreinfo": "Повеќе информации", "visualeditor-dialog-media-info-readmore": "Прочитајте повеќе", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Подигнато: $1", "visualeditor-dialog-media-page-advanced": "Напредни", "visualeditor-dialog-media-page-general": "Општи", diff --git a/i18n/ve-mw/mt.json b/i18n/ve-mw/mt.json index 9d56ba4438..68e4ead5e4 100644 --- a/i18n/ve-mw/mt.json +++ b/i18n/ve-mw/mt.json @@ -28,7 +28,6 @@ "visualeditor-dialog-media-info-meta-artist": "Artista: $1", "visualeditor-dialog-media-info-moreinfo": "Iżjed informazzjoni", "visualeditor-dialog-media-info-readmore": "Aqra iżjed", - "visualeditor-dialog-media-info-separator": ".", "visualeditor-dialog-media-info-uploaded": "Tella': $1", "visualeditor-dialog-media-page-advanced": "Konfigurazzjonijiet avvanzati", "visualeditor-dialog-media-page-general": "Ġenerali", diff --git a/i18n/ve-mw/ne.json b/i18n/ve-mw/ne.json index deceb54620..7aaee62009 100644 --- a/i18n/ve-mw/ne.json +++ b/i18n/ve-mw/ne.json @@ -54,11 +54,9 @@ "visualeditor-dialog-media-info-artist": "$1को उर्ध्वभरणहरूको सूची", "visualeditor-dialog-media-info-audiofile": "श्रब्य फाइल", "visualeditor-dialog-media-info-created": "सिर्जना गरिएको: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "लेखक: $1", "visualeditor-dialog-media-info-moreinfo": "थप जानकारी", "visualeditor-dialog-media-info-readmore": "थप पढ्नुहोस्", - "visualeditor-dialog-media-info-separator": "।", "visualeditor-dialog-media-info-uploaded": "अपलोड गरेको : $1", "visualeditor-dialog-media-page-advanced": "विकसित", "visualeditor-dialog-media-page-general": "सामान्य", diff --git a/i18n/ve-mw/nl.json b/i18n/ve-mw/nl.json index 188558929e..118f727ff4 100644 --- a/i18n/ve-mw/nl.json +++ b/i18n/ve-mw/nl.json @@ -103,7 +103,6 @@ "visualeditor-dialog-media-info-artist": "Geüpload door $1", "visualeditor-dialog-media-info-audiofile": "Geluidsbestand", "visualeditor-dialog-media-info-created": "Aangemaakt: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Auteur: $1", "visualeditor-dialog-media-info-moreinfo": "Meer informatie", "visualeditor-dialog-media-info-readmore": "Meer lezen", diff --git a/i18n/ve-mw/pl.json b/i18n/ve-mw/pl.json index c03ff18867..a15a2a5b0b 100644 --- a/i18n/ve-mw/pl.json +++ b/i18n/ve-mw/pl.json @@ -87,11 +87,9 @@ "visualeditor-dialog-media-info-artist": "Przesłano przez $1", "visualeditor-dialog-media-info-audiofile": "Plik audio", "visualeditor-dialog-media-info-created": "Utworzono: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Autor: $1", "visualeditor-dialog-media-info-moreinfo": "Więcej informacji", "visualeditor-dialog-media-info-readmore": "Czytaj więcej", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Przesłano: $1", "visualeditor-dialog-media-page-advanced": "Zaawansowane", "visualeditor-dialog-media-page-general": "Podstawowe", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index af8869b92b..d24981474f 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -35,7 +35,6 @@ "visualeditor-dialog-media-info-meta-artist": "لیکوال: $1", "visualeditor-dialog-media-info-moreinfo": "نور مالومات", "visualeditor-dialog-media-info-readmore": "نور لوستل", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "ورپورته شوی: $1", "visualeditor-dialog-media-page-advanced": "پرمختللی", "visualeditor-dialog-media-page-general": "ټولگړی", diff --git a/i18n/ve-mw/pt-br.json b/i18n/ve-mw/pt-br.json index f52b7018db..f550fbd29e 100644 --- a/i18n/ve-mw/pt-br.json +++ b/i18n/ve-mw/pt-br.json @@ -87,11 +87,9 @@ "visualeditor-dialog-media-info-artist": "Carregado por $1", "visualeditor-dialog-media-info-audiofile": "Arquivo de áudio", "visualeditor-dialog-media-info-created": "Criada: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Autoria: $1", "visualeditor-dialog-media-info-moreinfo": "Mais informações", "visualeditor-dialog-media-info-readmore": "Leia mais", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Enviado: $1", "visualeditor-dialog-media-page-advanced": "Avançado", "visualeditor-dialog-media-page-general": "Geral", diff --git a/i18n/ve-mw/pt.json b/i18n/ve-mw/pt.json index 76e94b6009..760b94bf60 100644 --- a/i18n/ve-mw/pt.json +++ b/i18n/ve-mw/pt.json @@ -85,7 +85,6 @@ "visualeditor-dialog-media-info-meta-artist": "Autor: $1", "visualeditor-dialog-media-info-moreinfo": "Mais informações", "visualeditor-dialog-media-info-readmore": "Ler mais", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Carregamento: $1", "visualeditor-dialog-media-page-advanced": "Avançadas", "visualeditor-dialog-media-page-general": "Gerais", diff --git a/i18n/ve-mw/qqq.json b/i18n/ve-mw/qqq.json index bb46e06c96..3a696956cc 100644 --- a/i18n/ve-mw/qqq.json +++ b/i18n/ve-mw/qqq.json @@ -106,7 +106,7 @@ "visualeditor-dialog-media-info-meta-artist": "Label for the author information for the image in the media dialog.\n\nParameters:\n* $1 - Author name.", "visualeditor-dialog-media-info-moreinfo": "Label for the link to more information in the image data panel.\n{{Identical|More information}}", "visualeditor-dialog-media-info-readmore": "Label for the link to expand the text in the image data panel.\n{{Identical|Read more}}", - "visualeditor-dialog-media-info-separator": "Character separating information in the image info panel in the media dialog.\n{{Optional}}", + "visualeditor-dialog-media-info-separator": "{{Optional}}\nCharacter separating information in the image info panel in the media dialog.", "visualeditor-dialog-media-info-uploaded": "Label for the image upload date in the media dialog.\n\nParameters:\n* $1 - Date of last upload.\n{{Identical|Uploaded}}", "visualeditor-dialog-media-page-advanced": "Label for the advanced settings page in the media edit dialog.\n{{Identical|Advanced settings}}", "visualeditor-dialog-media-page-general": "Label for the general settings page in the media edit dialog.\n{{Identical|General settings}}", diff --git a/i18n/ve-mw/ru.json b/i18n/ve-mw/ru.json index 5395b22e08..ce32218423 100644 --- a/i18n/ve-mw/ru.json +++ b/i18n/ve-mw/ru.json @@ -110,11 +110,9 @@ "visualeditor-dialog-media-info-artist": "Загружено: $1", "visualeditor-dialog-media-info-audiofile": "Аудиофайл", "visualeditor-dialog-media-info-created": "Создано: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Автор: $1", "visualeditor-dialog-media-info-moreinfo": "Подробнее", "visualeditor-dialog-media-info-readmore": "Подробнее", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Загружено: $1", "visualeditor-dialog-media-page-advanced": "Дополнительно", "visualeditor-dialog-media-page-general": "Общие", diff --git a/i18n/ve-mw/sd.json b/i18n/ve-mw/sd.json index 413bd75e59..bc734e7271 100644 --- a/i18n/ve-mw/sd.json +++ b/i18n/ve-mw/sd.json @@ -40,11 +40,9 @@ "visualeditor-dialog-media-info-artist": "$1 پاران چاڙهيل", "visualeditor-dialog-media-info-audiofile": "آوازي فائيل", "visualeditor-dialog-media-info-created": "سرجيل: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "مصنف: $1", "visualeditor-dialog-media-info-moreinfo": "وڌيڪ معلومات", "visualeditor-dialog-media-info-readmore": "وڌيڪ پڙهو", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "چاڙھيل:$1", "visualeditor-dialog-media-page-advanced": "متقدم", "visualeditor-dialog-media-page-general": "عام", diff --git a/i18n/ve-mw/se.json b/i18n/ve-mw/se.json index ae22a462a7..3ca3755a26 100644 --- a/i18n/ve-mw/se.json +++ b/i18n/ve-mw/se.json @@ -65,11 +65,9 @@ "visualeditor-dialog-media-info-artist": "Vurken: $1", "visualeditor-dialog-media-info-audiofile": "Jietnafiila", "visualeditor-dialog-media-info-created": "Ráhkaduvvon: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Ráhkadeaddji: $1", "visualeditor-dialog-media-info-moreinfo": "Lassedieđut", "visualeditor-dialog-media-info-readmore": "Loga eambbo", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Vurken: $1", "visualeditor-dialog-media-page-advanced": "Lasseásahusat", "visualeditor-dialog-media-page-general": "Obbalaš", diff --git a/i18n/ve-mw/sl.json b/i18n/ve-mw/sl.json index 828ec55086..8e0e04e4e2 100644 --- a/i18n/ve-mw/sl.json +++ b/i18n/ve-mw/sl.json @@ -63,11 +63,9 @@ "visualeditor-dialog-media-info-artist": "Naložil $1", "visualeditor-dialog-media-info-audiofile": "Zvočna datoteka", "visualeditor-dialog-media-info-created": "Ustvarjeno: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Avtor: $1", "visualeditor-dialog-media-info-moreinfo": "Več informacij", "visualeditor-dialog-media-info-readmore": "Preberi več", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Naloženo: $1", "visualeditor-dialog-media-page-advanced": "Napredno", "visualeditor-dialog-media-page-general": "Splošno", diff --git a/i18n/ve-mw/sq.json b/i18n/ve-mw/sq.json index 98afbd9b0f..dfd6e5b74b 100644 --- a/i18n/ve-mw/sq.json +++ b/i18n/ve-mw/sq.json @@ -58,11 +58,9 @@ "visualeditor-dialog-media-info-artist": "Ngarkuar nga $1", "visualeditor-dialog-media-info-audiofile": "Kartelë audio", "visualeditor-dialog-media-info-created": "Krijuar më: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Artist: $1", "visualeditor-dialog-media-info-moreinfo": "Më tepër të dhëna", "visualeditor-dialog-media-info-readmore": "Lexoni më tepër", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Ngarkuar më: $1", "visualeditor-dialog-media-page-advanced": "Të mëtejshme", "visualeditor-dialog-media-page-general": "Të përgjithshme", diff --git a/i18n/ve-mw/te.json b/i18n/ve-mw/te.json index eb1c694397..3061aebbfe 100644 --- a/i18n/ve-mw/te.json +++ b/i18n/ve-mw/te.json @@ -57,11 +57,9 @@ "visualeditor-dialog-media-info-artist": "$1 ఎక్కించారు", "visualeditor-dialog-media-info-audiofile": "ఆడియో దస్త్రం", "visualeditor-dialog-media-info-created": "సృష్టించిన తేదీ: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "కర్త: $1", "visualeditor-dialog-media-info-moreinfo": "మరింత సమాచారం", "visualeditor-dialog-media-info-readmore": "మరింత చదువండి", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "ఎక్కించిన తేదీ: $1", "visualeditor-dialog-media-page-advanced": "ఉన్నత", "visualeditor-dialog-media-page-general": "సాధారణ", diff --git a/i18n/ve-mw/uk.json b/i18n/ve-mw/uk.json index 9ecbf85d4c..1af2a50004 100644 --- a/i18n/ve-mw/uk.json +++ b/i18n/ve-mw/uk.json @@ -83,11 +83,9 @@ "visualeditor-dialog-media-info-artist": "Завантажено: $1", "visualeditor-dialog-media-info-audiofile": "Аудіофайл", "visualeditor-dialog-media-info-created": "Створено: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Автор: $1", "visualeditor-dialog-media-info-moreinfo": "Додаткова інформація", "visualeditor-dialog-media-info-readmore": "Читати далі", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Завантажено: $1", "visualeditor-dialog-media-page-advanced": "Додатково", "visualeditor-dialog-media-page-general": "Загальне", diff --git a/i18n/ve-mw/vec.json b/i18n/ve-mw/vec.json index 5391784f1b..92f262e6e4 100644 --- a/i18n/ve-mw/vec.json +++ b/i18n/ve-mw/vec.json @@ -51,7 +51,6 @@ "visualeditor-dialog-media-info-meta-artist": "Artista: $1", "visualeditor-dialog-media-info-moreinfo": "Pì informasion", "visualeditor-dialog-media-info-readmore": "Lèxi de pi", - "visualeditor-dialog-media-info-separator": ".", "visualeditor-dialog-media-info-uploaded": "Cargà: $1", "visualeditor-dialog-media-page-advanced": "Inpostasion avansae", "visualeditor-dialog-media-page-general": "Inpostasion xenerałi", diff --git a/i18n/ve-mw/vi.json b/i18n/ve-mw/vi.json index 392cd3e063..7b2ad6278c 100644 --- a/i18n/ve-mw/vi.json +++ b/i18n/ve-mw/vi.json @@ -83,11 +83,9 @@ "visualeditor-dialog-media-info-artist": "Tải lên bởi $1", "visualeditor-dialog-media-info-audiofile": "Tập tin âm thanh", "visualeditor-dialog-media-info-created": "Đã tạo: $1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Tác giả: $1", "visualeditor-dialog-media-info-moreinfo": "Thêm thông tin", "visualeditor-dialog-media-info-readmore": "Đọc thêm", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Đã tải lên: $1", "visualeditor-dialog-media-page-advanced": "Nâng cao", "visualeditor-dialog-media-page-general": "Tổng quát", diff --git a/i18n/ve-mw/zh-hans.json b/i18n/ve-mw/zh-hans.json index 4ca08f7a70..5922f4ca00 100644 --- a/i18n/ve-mw/zh-hans.json +++ b/i18n/ve-mw/zh-hans.json @@ -113,11 +113,9 @@ "visualeditor-dialog-media-info-artist": "上传者:$1", "visualeditor-dialog-media-info-audiofile": "音频文件", "visualeditor-dialog-media-info-created": "创建时间:$1", - "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "作者:$1", "visualeditor-dialog-media-info-moreinfo": "更多信息", "visualeditor-dialog-media-info-readmore": "阅读更多", - "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "上传时间:$1", "visualeditor-dialog-media-page-advanced": "高级", "visualeditor-dialog-media-page-general": "常规", diff --git a/i18n/ve-wmf/ko.json b/i18n/ve-wmf/ko.json index 9fc61a9a67..8669f64b65 100644 --- a/i18n/ve-wmf/ko.json +++ b/i18n/ve-wmf/ko.json @@ -21,6 +21,7 @@ "tag-editcheck-references-description": "EditCheck는 출처가 필요할 수 있다고 간주합니다", "tag-editcheck-references-activated": "편집 검사(출처)를 활성화함", "tag-editcheck-references-activated-description": "EditCheck는 출처가 필요할 수 있다고 간주하며 UI를 표시합니다", + "tag-editcheck-references-shown": "편집 검사(출처)를 표시함", "tag-visualeditor": "시각 편집", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|시각편집기]]를 사용한 편집", "tag-visualeditor-needcheck": "시각편집기: 확인 필요", From a895b091b2492e18129d640a4a68403af86add73 Mon Sep 17 00:00:00 2001 From: Jack Phoenix Date: Tue, 8 Apr 2025 11:04:29 +0300 Subject: [PATCH 270/730] Unbreak QuizGame compatibility QuizGame (and some other extensions in the social tools family) intentionally creates an "edit" tab on a NS_SPECIAL page (Special:QuizGameHome). The WikiPageFactory#newFromTitle call here fatals if $title points to a NS_SPECIAL page. To work around that, let's just not call the method in question if we're on NS_SPECIAL. Bug: T376487 Change-Id: I7c79c8ca1093ec01e7f516c66bdd5ed1d5057fd2 --- includes/Hooks.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/includes/Hooks.php b/includes/Hooks.php index 36e4204364..792b2d1b53 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -599,7 +599,15 @@ public function onSkinTemplateNavigation__Universal( $skin, &$links ): void { // us to splice into the middle of an associative array. $newViews = []; $wikiPageFactory = $services->getWikiPageFactory(); - $isRemote = !$wikiPageFactory->newFromTitle( $title )->isLocal(); + if ( $title->inNamespace( NS_SPECIAL ) ) { + // @see https://phabricator.wikimedia.org/T376487 + // The WikiPageFactory call would fatal if $title points to a special page, but sometimes, + // as unusual as it might be, a special page *can* call the relevant hooks to add an "edit" + // tab to itself. Luckily most special pages are smarter than that. + $isRemote = false; + } else { + $isRemote = !$wikiPageFactory->newFromTitle( $title )->isLocal(); + } $skinHasEditIcons = in_array( $skin->getSkinName(), From af3a9c97eec95c16c1587344093771ba5f5befe1 Mon Sep 17 00:00:00 2001 From: TheresNoTime Date: Mon, 24 Mar 2025 14:33:47 +0000 Subject: [PATCH 271/730] ve.ui.MWTemplatePage: Add Favorite button if enabled If TemplateData's template favoriting feature is enabled, add a favorite button to the VE TemplatePage. Bug: T385845 Depends-On: Id62320288f5ecd3e57d49034c293fda2f3a435e6 Change-Id: I98664430f91f87526010cb9ec7f523e89dd2979d --- .../dm/models/ve.dm.MWTransclusionModel.js | 4 +++- modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js | 17 +++++++++++++++++ .../pages/ve.ui.MWTemplatePage-default.less | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js index f1d0d0a6b4..59fc1e0608 100644 --- a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js +++ b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js @@ -363,9 +363,11 @@ } else if ( data.pages[ id ].notemplatedata && !OO.isPlainObject( data.pages[ id ].params ) ) { // (T243868) Prevent asking again for templates that have neither user-provided specs // nor automatically detected params - specCache[ title ] = null; + specCache[ title ] = {}; + specCache[ title ].pageId = id; } else { specCache[ title ] = data.pages[ id ]; + specCache[ title ].pageId = id; } } diff --git a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js index a71391a149..7d06f01b1f 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js @@ -39,6 +39,23 @@ ve.ui.MWTemplatePage = function VeUiMWTemplatePage( template, name, config ) { label: this.spec.getLabel(), icon: 'puzzle' } ); + this.pageId = this.spec.templateData.pageId; + + // Add favorite button + this.usingTemplateDiscovery = mw.templateData !== undefined && mw.templateData.FavoriteButton !== undefined; + if ( this.usingTemplateDiscovery ) { + this.favoritesStore = new mw.templateData.FavoritesStore(); + this.favoriteButton = new mw.templateData.FavoriteButton( { + pageId: this.pageId, + favoritesStore: this.favoritesStore + } ); + + this.$element.prepend( + $( '
' ) + .addClass( 've-ui-mwTemplatePage-favorite' ) + .append( this.favoriteButton.$element ) + ); + } // Initialization const description = this.spec.getDescription(); diff --git a/modules/ve-mw/ui/styles/pages/ve.ui.MWTemplatePage-default.less b/modules/ve-mw/ui/styles/pages/ve.ui.MWTemplatePage-default.less index 4114673182..11b84d81b5 100644 --- a/modules/ve-mw/ui/styles/pages/ve.ui.MWTemplatePage-default.less +++ b/modules/ve-mw/ui/styles/pages/ve.ui.MWTemplatePage-default.less @@ -15,3 +15,7 @@ font-style: italic; } } + +.ve-ui-mwTemplatePage-favorite { + text-align: end; +} From ac7d0b6e5137addb38db28fd9301a62b6072d598 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 9 Apr 2025 09:32:00 +0200 Subject: [PATCH 272/730] Localisation updates from https://translatewiki.net. Change-Id: I5b61023d866a9e7495ba7b441c5d62eac2d6ed4e --- i18n/ve-mw/bs.json | 2 +- i18n/ve-mw/nr.json | 8 ++++++++ i18n/ve-wmf/ps.json | 23 ++++++++++++++++++----- 3 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 i18n/ve-mw/nr.json diff --git a/i18n/ve-mw/bs.json b/i18n/ve-mw/bs.json index 80ffed4ecd..9f09e5d168 100644 --- a/i18n/ve-mw/bs.json +++ b/i18n/ve-mw/bs.json @@ -272,7 +272,7 @@ "visualeditor-section-body-placeholder": "Novi odlomak", "visualeditor-section-title-placeholder": "Naslov", "visualeditor-settings-tool": "Postavke stranice", - "visualeditor-special-characters-group-other": "Često korišteni", + "visualeditor-special-characters-group-other": "Često korišteno", "visualeditor-templatesused-tool": "Korišteni šabloni", "visualeditor-toload": "Uređivač će se sad učitati. Ako i nakon nekoliko sekundi budete vidjeli ovu poruku, [$1 osvježite stranicu].", "visualeditor-version-label": "Verzija", diff --git a/i18n/ve-mw/nr.json b/i18n/ve-mw/nr.json new file mode 100644 index 0000000000..d952941a0c --- /dev/null +++ b/i18n/ve-mw/nr.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Phoebeplays49292" + ] + }, + "visualeditor-ca-editsource-section": "hlela umthombo" +} diff --git a/i18n/ve-wmf/ps.json b/i18n/ve-wmf/ps.json index 663c10297f..a966b7d224 100644 --- a/i18n/ve-wmf/ps.json +++ b/i18n/ve-wmf/ps.json @@ -1,19 +1,32 @@ { "@metadata": { "authors": [ - "Ahmed-Najib-Biabani-Ibrahimkhel" + "Ahmed-Najib-Biabani-Ibrahimkhel", + "شاه زمان پټان" ] }, + "tag-editcheck-newcontent-description": "سمون‌کتنه فکر کوي چې دې مخ کې نوې منځپانگه ورگډه شوې", + "tag-editcheck-newreference-description": "مخ کې يوه سرچينه ورگډه شوې", + "tag-editcheck-references-description": "سمون‌کتنه فکر کوي چې يوې سرچينې ته شايد اړتيا وي", + "tag-editcheck-references-activated": "سمون کتنې (سرچينې) چارن شوې", + "tag-editcheck-references-activated-description": "سمون‌کتنه فکر کوي چې شايد يوې سرچينې ته اړتيا کېدای شي او ک‌م ښودل شوې", + "tag-editcheck-references-shown": "سمون کتنې (سرچينې) ښودل شوې", + "tag-editcheck-references-shown-description": "سمون کتنه فکر کوي چې يوې سرچينې ته شايد اړتيا وي او ک‌م شودل شوې", "tag-visualeditor": "ليدنيز سمون", "tag-visualeditor-description": "دا سمون د [[{{MediaWiki:visualeditor-descriptionpagelink}}|ليدنيز سمونگر]] په مرسته شوی", "tag-visualeditor-needcheck": "ليدنيز سمون: کره کتنه", - "visualeditor-feedback-link": "Project:ليدنيزسمونگر/ستاسې نظرونه", - "visualeditor-feedback-tool": "د دې ساوترې اړونده نظر پرېښودل", + "tag-visualeditor-needcheck-description": "دا سمون د [[{{MediaWiki:visualeditor-descriptionpagelink}}|ليدنيز سمونگر]] په وسيله شوی چېرته چې غونډال د ويکي‌ليک شوني غيرارادي بدلونونه وموندل.", + "tag-visualeditor-wikitext": "۲۰۱۷ سرچينې سمون", + "tag-visualeditor-wikitext-description": "دا سمون د ۲۰۱۷ ويکي‌ليک سمونگر کارولو سره شوی", + "tag-visualeditor-switched": "ليدنيز سمون: چارن شوی", + "tag-visualeditor-switched-description": "کارن د ليدنيز سمونگر په کارولو سره سمون پيل کړی، وروسته يې ويکي‌ليک سمونگر ته بدل کړی دی.", + "visualeditor-feedback-link": "پروژه:ليدنيزسمونگر/غبرگون", + "visualeditor-feedback-tool": "د دې پوستغالي اړوند خپل غبرگون پرېښودل", "visualeditor-help-label": "کارن لارښود ولولئ", "visualeditor-welcomedialog-action": "سمون پيلول", "visualeditor-welcomedialog-content": "هر څوک يې سمولی شي، او هر پرمختگ مرسته کوي.", "visualeditor-welcomedialog-content-thanks": "د نړۍ سره د ډېر نور څه پېژندلو په مرسته کې له تاسې څخه مننه کوو!", - "visualeditor-welcomedialog-switch": "د سرچينې سمونگر ته ور اړول", - "visualeditor-welcomedialog-switch-ve": "ليدنيز سمونگر ته ور اړول", + "visualeditor-welcomedialog-switch": "سرچينې سمونگر چارنول", + "visualeditor-welcomedialog-switch-ve": "ليدنيز سمونگر چارنول", "visualeditor-welcomedialog-title": "$2 ته {{GENDER:$1|ښه راغلې}}" } From 540331c64bed5d675296d5ee63aa1bb2cdbdfec4 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 9 Apr 2025 09:06:07 -0400 Subject: [PATCH 273/730] userGuide: Use the correct toolbar dialog manager Change-Id: I6380b9777c429ae312e590e2101d5f2cec07401f --- build/screenshots-client/userGuide.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/screenshots-client/userGuide.js b/build/screenshots-client/userGuide.js index 759e0955a6..603883d66c 100644 --- a/build/screenshots-client/userGuide.js +++ b/build/screenshots-client/userGuide.js @@ -136,7 +136,7 @@ module.exports = { const done = arguments[ arguments.length - 1 ], surface = ve.init.target.surface; - surface.getToolbarDialogs().once( 'opening', ( win, opening ) => { + surface.getToolbarDialogs( 'above' ).once( 'opening', ( win, opening ) => { opening.then( () => { setTimeout( () => { done( @@ -153,7 +153,7 @@ module.exports = { specialCharactersTeardown: function () { const done = arguments[ arguments.length - 1 ], surface = ve.init.target.surface; - surface.getToolbarDialogs().currentWindow.close().closed.then( done ); + surface.getToolbarDialogs( 'above' ).currentWindow.close().closed.then( done ); }, formula: function () { const done = arguments[ arguments.length - 1 ], From c03056ebe5f4d879f19f02b577f58b956ee3b321 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 9 Apr 2025 11:00:59 -0400 Subject: [PATCH 274/730] Update VE core submodule to master (9fbc4d884) New changes: 627527d1b ve.ce.FocusableNode: Add an image mask to "invisible icon" to show selection a98442eee Follow-up If677fa2c1: Always call getToolbarDialogs with the correct position eaf2d328a ve.ce.Surface: Ensure surface is activated before focussing 182dbebb4 Disable embedded context for first 500ms after showing 7c822999d Toolbar: Always use narrow mode on mobile Bug: T390733 Bug: T391088 Bug: T391095 Bug: T391399 Change-Id: I53b6463d4b81b266aaa26ae90fa2fce76e59401c --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 28c6033b02..9fbc4d8849 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 28c6033b0230b9c1706adabc0c8db9fe1b07c5ae +Subproject commit 9fbc4d88498f5923a14b384a415ebd18b976b23c From 3aad2af54a1ab29b0fe1d0938d8072be455b0503 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 9 Apr 2025 12:23:20 -0400 Subject: [PATCH 275/730] Move 'veswitched' from unsupported_edit_params to getEditPageEditor veswitched does not indicate that VE is not supported, just that it shouldn't be loaded immediately. After Ie234c2c14, this means that you can't switch back from the 2010 editor to VE after switching from VE. Bug: T391498 Change-Id: I3ce2c666154df0af8b7e0c0fa46dde4b29e70da9 --- includes/Hooks.php | 5 ++++- .../ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/includes/Hooks.php b/includes/Hooks.php index 792b2d1b53..f06ce108a4 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -93,7 +93,6 @@ class Hooks implements // Only for WTE. This parameter is not supported right now, and NWE has a very different design // for previews, so we might not want to support this at all. 'preview', - 'veswitched' ]; private const TAGS = [ @@ -447,6 +446,10 @@ private static function getEditPageEditor( User $user, WebRequest $req ): string if ( $req->getRawVal( 'section' ) === 'new' ) { return 'wikitext'; } + // Force switched from VE + if ( $req->getVal( 'veswitched' ) !== null ) { + return 'wikitext'; + } return self::getPreferredEditor( $user, $req, !$isRedLink ); } diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index b3e685c61a..e3dc451549 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -767,6 +767,10 @@ if ( url.searchParams.get( 'section' ) === 'new' ) { return 'wikitext'; } + // Force switched from VE + if ( url.searchParams.has( 'veswitched' ) ) { + return 'wikitext'; + } switch ( tabPreference ) { case 'prefer-ve': From ebe3914b9e247eca9f226b43f9f1cb1bbb61e828 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 10 Apr 2025 09:27:44 +0200 Subject: [PATCH 276/730] Localisation updates from https://translatewiki.net. Change-Id: I3ecb05f89bd6bcebfbf26e26bc0ec1f9ffd2f873 --- i18n/ve-mw/ps.json | 11 +++++++++++ i18n/ve-wmf/crh-latn.json | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index d24981474f..0ea9c9e77b 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -10,10 +10,21 @@ "عثمان منصور انصاري" ] }, + "collabpad-doctitle": "گډون‌پاڼه: $1", + "collabpad-import-subtitle": "له $1 څخه راوړل شوی", + "collabpad": "گډون‌پاڼه", "tooltip-ca-ve-edit": "دا مخ سمول", + "tooltip-ca-ve-edit-local": "د ځايي سپيناوي مخ سمول", + "tooltip-ca-ve-create": "دا مخ جوړول", + "tooltip-ca-ve-create-local": "ځايي سپيناوي مخ جوړول", "tooltip-ca-editsource": "د دې مخ د سرچينې کوډ سمول", + "tooltip-ca-editsource-local": "د ځايي سپيناوي مخ سرچينو کوډ سمول", "tooltip-ca-createsource": "د دې مخ د سرچينې کوډ جوړول", + "tooltip-ca-createsource-local": "د ځايي سپيناوي مخ سرچينې کوډ جوړول", "visualeditor-advancedsettings-tool": "پرمختللې امستنې", + "visualeditor-annotations-default-description": "د پاڼې دا برخه د سپيناوي لړۍ برخه ده.", + "visualeditor-annotations-default-end": "د سپيناوي لړۍ پای", + "visualeditor-annotations-default-start": "سپيناوي لړۍ پيلول", "visualeditor-backbutton-tooltip": "پر شا تلل", "visualeditor-ca-createlocaldescriptionsource": "د سيمه ييزې څرگندونې سرچينې ورگډول", "visualeditor-ca-createsource": "سرچينه جوړول", diff --git a/i18n/ve-wmf/crh-latn.json b/i18n/ve-wmf/crh-latn.json index 25a989561a..35e1129a8e 100644 --- a/i18n/ve-wmf/crh-latn.json +++ b/i18n/ve-wmf/crh-latn.json @@ -6,5 +6,11 @@ }, "tag-visualeditor": "Vizual türlendirgiç ile", "tag-visualeditor-needcheck": "Vizual türlendirgiç: Teşker", - "tag-visualeditor-switched": "Vizual türlendirgiçten vazçgeçildi" + "tag-visualeditor-switched": "Vizual türlendirgiçten vazçgeçildi", + "visualeditor-welcomedialog-action": "Yazmağa başla", + "visualeditor-welcomedialog-content": "Er kes deñiştirip ola ve er eyileştirüv leyhağa yardım ete.", + "visualeditor-welcomedialog-content-thanks": "Er kesniñ daa çoq şey ögrenmesine yardım etkeniñiz içün sağ oluñız!", + "visualeditor-welcomedialog-switch": "Viki-metin türlendirgiçine keç", + "visualeditor-welcomedialog-switch-ve": "Vizual türlendirgiçke keç", + "visualeditor-welcomedialog-title": "$2 saytına {{GENDER:$1|hoş keldiñiz}}" } From 95b70e3567d22d041eed1de5606e0120d3a7947e Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 10 Apr 2025 09:17:58 -0400 Subject: [PATCH 277/730] EditCheck: fixes for issues when canceling the saveProcess early Triggering leaving VE during the saveProcess left various things in unexpected states. This caused errors ranging from not letting the teardown finish to stopping the save button from working after starting a new VE session. Bug: T344382 Change-Id: I9ae85f1c9f07fea5724ae221970c94d6d85ba109 --- editcheck/modules/controller.js | 9 +++++++++ modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 9c8a293929..3702e91ec3 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -101,6 +101,9 @@ Controller.prototype.updatePositions = function () { }; Controller.prototype.refresh = function () { + if ( this.target.deactivating || !this.target.active ) { + return; + } if ( this.listener === 'onBeforeSave' ) { // These shouldn't be recalculated this.emit( 'actionsUpdated', this.listener, this.getActions( this.listener ), [], [] ); @@ -303,6 +306,12 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess ) { this.refresh(); } ); return instance.closing.then( ( data ) => { + if ( target.deactivating || !target.active ) { + // Someone clicking "read" to leave the article + // will trigger the closing of this; in that + // case, just abandon what we're doing + return ve.createDeferred().reject().promise(); + } this.restoreToolbar( target ); if ( $contextContainer ) { diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index eabf1e36ff..ad363e07ee 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -2003,6 +2003,12 @@ ve.init.mw.ArticleTarget.prototype.showSaveDialog = function ( action, checkboxN this.emit( 'saveWorkflowBegin' ); saveProcess.execute().done( () => { + if ( this.deactivating || !this.active ) { + // It's possible to trigger deactivating VE during the + // saveProcess (e.g. by clicking the "read" tab), and in that + // case we should immediately discard what we're doing. + return; + } // Preload the serialization this.prepareCacheKey( this.getDocToSave() ); From b540aa57e6bec50e66773947ac806b9e2b54c59a Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Thu, 10 Apr 2025 14:56:33 +0000 Subject: [PATCH 278/730] build: Updating api-testing to 1.7.1 Change-Id: I99582498c6a309831297060197414fda4c6c604e --- package-lock.json | 729 +++++++++++++++++++++++++++++++++++----------- package.json | 2 +- 2 files changed, 558 insertions(+), 173 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f0a29c7d8..22a8c50130 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@wdio/local-runner": "7.40.0", "@wdio/mocha-framework": "7.40.0", "@wdio/spec-reporter": "7.40.0", - "api-testing": "1.6.0", + "api-testing": "1.7.1", "eslint-config-wikimedia": "0.29.1", "grunt": "1.6.1", "grunt-banana-checker": "0.13.0", @@ -2195,16 +2195,16 @@ } }, "node_modules/api-testing": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/api-testing/-/api-testing-1.6.0.tgz", - "integrity": "sha512-zcpMaH4gYgTmiTGJIsxQAXBdkATNufiqAMQF5KID/g7PvMH/dug1wVXN8yM7nQvWjoTzSP4+x9/tX2xyc4Px6g==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/api-testing/-/api-testing-1.7.1.tgz", + "integrity": "sha512-h6eqLa9uOOpbBXGN6/s91GquV1YprC1XLVtWIRv/25XWFRqHibIBwuXjqcUqFSsU1fgYvfclSMRXuUcCvEmX6A==", "dev": true, "dependencies": { - "chai": "^4.2.0", - "supertest": "^5.0.0-0" + "chai": "4.5.0", + "supertest": "7.1.0" }, "engines": { - "node": ">= 10.0.0" + "node": ">= 14.18.0" } }, "node_modules/arch": { @@ -2427,6 +2427,12 @@ "node": ">=8" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -3386,6 +3392,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3481,18 +3516,18 @@ } }, "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" @@ -3534,10 +3569,13 @@ "license": "MIT" }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -3842,10 +3880,13 @@ } }, "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "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/compress-commons": { "version": "4.1.2", @@ -4410,15 +4451,15 @@ } }, "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=6" } }, "node_modules/deep-is": { @@ -4621,6 +4662,16 @@ } } }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -4881,6 +4932,20 @@ "node": ">=0.10.0" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -5073,6 +5138,51 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -6444,11 +6554,15 @@ } }, "node_modules/formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", + "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", "dev": true, + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^2.0.0", + "once": "^1.4.0" + }, "funding": { "url": "https://ko-fi.com/tunnckoCore/commissions" } @@ -6574,14 +6688,24 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6593,6 +6717,19 @@ "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", "dev": true }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", @@ -6971,6 +7108,18 @@ "node": "*" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", @@ -7533,9 +7682,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "engines": { "node": ">= 0.4" @@ -7557,12 +7706,12 @@ } }, "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==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7572,9 +7721,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "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" @@ -7593,6 +7742,15 @@ "he": "bin/he" } }, + "node_modules/hexoid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", + "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -9336,12 +9494,12 @@ } }, "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lowercase-keys": { @@ -9506,6 +9664,15 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -10152,10 +10319,13 @@ } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11307,12 +11477,12 @@ } }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -12280,14 +12450,72 @@ } }, "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.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13113,36 +13341,34 @@ } }, "node_modules/superagent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", - "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", - "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", + "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", "dev": true, "dependencies": { "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^3.5.1", "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", - "readable-stream": "^3.6.0", - "semver": "^7.3.2" + "mime": "2.6.0", + "qs": "^6.11.0" }, "engines": { - "node": ">= 7.0.0" + "node": ">=14.18.0" } }, "node_modules/superagent/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -13162,16 +13388,16 @@ } }, "node_modules/supertest": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-5.0.0.tgz", - "integrity": "sha512-2JAWpPrUOZF4hHH5ZTCN2xjKXvJS3AEwPNXl0HUseHsfcXFvMy9kcsufIHCNAmQ5hlGCvgeAqaR5PBEouN3hlQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.0.tgz", + "integrity": "sha512-5QeSO8hSrKghtcWEoPiO036fxH0Ii2wVQfFZSP0oqQhmjk8bOLhDFXr4JrvaFmPuEWUoq4znY3uSi8UzLKxGqw==", "dev": true, "dependencies": { - "methods": "1.1.2", - "superagent": "6.1.0" + "methods": "^1.1.2", + "superagent": "^9.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=14.18.0" } }, "node_modules/supports-color": { @@ -13725,9 +13951,9 @@ } }, "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "engines": { "node": ">=4" @@ -16339,13 +16565,13 @@ } }, "api-testing": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/api-testing/-/api-testing-1.6.0.tgz", - "integrity": "sha512-zcpMaH4gYgTmiTGJIsxQAXBdkATNufiqAMQF5KID/g7PvMH/dug1wVXN8yM7nQvWjoTzSP4+x9/tX2xyc4Px6g==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/api-testing/-/api-testing-1.7.1.tgz", + "integrity": "sha512-h6eqLa9uOOpbBXGN6/s91GquV1YprC1XLVtWIRv/25XWFRqHibIBwuXjqcUqFSsU1fgYvfclSMRXuUcCvEmX6A==", "dev": true, "requires": { - "chai": "^4.2.0", - "supertest": "^5.0.0-0" + "chai": "4.5.0", + "supertest": "7.1.0" } }, "arch": { @@ -16511,6 +16737,12 @@ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -17254,6 +17486,26 @@ "get-intrinsic": "^1.0.2" } }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -17319,18 +17571,18 @@ } }, "chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "requires": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.1.0" } }, "chalk": { @@ -17361,10 +17613,13 @@ "dev": true }, "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } }, "chokidar": { "version": "3.5.3", @@ -17588,9 +17843,9 @@ "dev": true }, "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "dev": true }, "compress-commons": { @@ -18029,9 +18284,9 @@ } }, "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -18173,6 +18428,16 @@ "integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==", "dev": true }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -18373,6 +18638,17 @@ } } }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -18535,6 +18811,39 @@ "unbox-primitive": "^1.0.1" } }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -19524,10 +19833,15 @@ } }, "formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "dev": true + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", + "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", + "dev": true, + "requires": { + "dezalgo": "^1.0.4", + "hexoid": "^2.0.0", + "once": "^1.4.0" + } }, "from2": { "version": "2.3.0", @@ -19629,14 +19943,21 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" } }, "get-own-enumerable-property-symbols": { @@ -19645,6 +19966,16 @@ "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", "dev": true }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, "get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", @@ -19929,6 +20260,12 @@ } } }, + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true + }, "got": { "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", @@ -20364,9 +20701,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true }, "has-to-string-tag-x": { @@ -20379,18 +20716,18 @@ } }, "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==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "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" @@ -20402,6 +20739,12 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "hexoid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", + "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", + "dev": true + }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -21746,12 +22089,12 @@ } }, "loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "requires": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "lowercase-keys": { @@ -21874,6 +22217,12 @@ "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", "dev": true }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true + }, "mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -22345,9 +22694,9 @@ "dev": true }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true }, "object-keys": { @@ -23187,12 +23536,12 @@ "dev": true }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.1.0" } }, "query-selector-shadow-dom": { @@ -23916,14 +24265,51 @@ "dev": true }, "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.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" } }, "signal-exit": { @@ -24495,32 +24881,31 @@ "dev": true }, "superagent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", - "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", + "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", "dev": true, "requires": { "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^3.5.1", "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", - "readable-stream": "^3.6.0", - "semver": "^7.3.2" + "mime": "2.6.0", + "qs": "^6.11.0" }, "dependencies": { "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" } }, @@ -24533,13 +24918,13 @@ } }, "supertest": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-5.0.0.tgz", - "integrity": "sha512-2JAWpPrUOZF4hHH5ZTCN2xjKXvJS3AEwPNXl0HUseHsfcXFvMy9kcsufIHCNAmQ5hlGCvgeAqaR5PBEouN3hlQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.0.tgz", + "integrity": "sha512-5QeSO8hSrKghtcWEoPiO036fxH0Ii2wVQfFZSP0oqQhmjk8bOLhDFXr4JrvaFmPuEWUoq4znY3uSi8UzLKxGqw==", "dev": true, "requires": { - "methods": "1.1.2", - "superagent": "6.1.0" + "methods": "^1.1.2", + "superagent": "^9.0.1" } }, "supports-color": { @@ -24992,9 +25377,9 @@ } }, "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true }, "type-fest": { diff --git a/package.json b/package.json index 0089b4f89d..cae09c157a 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@wdio/local-runner": "7.40.0", "@wdio/mocha-framework": "7.40.0", "@wdio/spec-reporter": "7.40.0", - "api-testing": "1.6.0", + "api-testing": "1.7.1", "eslint-config-wikimedia": "0.29.1", "grunt": "1.6.1", "grunt-banana-checker": "0.13.0", From 43a6af0ad240c53a652e181db4fb2a25a109c42d Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 10 Apr 2025 12:32:23 -0400 Subject: [PATCH 279/730] Invert logic for disabling edit check alignment By default checks should align, unless they are in a specified list, currently just 'onBeforeSave'. Change-Id: I949616f005cf3acdd350df7c728226018fdb07ae --- editcheck/modules/EditCheckDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index d91304dd20..f4ec9d76b2 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -354,7 +354,7 @@ ve.ui.SidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { }; ve.ui.SidebarEditCheckDialog.prototype.onPosition = function () { - if ( this.listener !== 'onDocumentChange' ) { + if ( this.listener === 'onBeforeSave' ) { return; } const surfaceView = this.surface.getView(); From 1eb3bdea6d075eec2984e78a0090140775853087 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 17 Dec 2024 12:45:50 +0000 Subject: [PATCH 280/730] ve.ui.MWMediaDialog: Empty infoPanelWrapper inside buildMediaInfoPanel Bug: T364419 Change-Id: I039592c4d5a378db9560c5e2b3ff5f571d82d74e --- modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js index 6a45cb0573..69e1c7063e 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js @@ -677,7 +677,7 @@ ve.ui.MWMediaDialog.prototype.buildMediaInfoPanel = function ( imageinfo ) { $thumbContainer .append( $image.prop( 'src', imageinfo.thumburl ) ); - this.$infoPanelWrapper.append( + this.$infoPanelWrapper.empty().append( $thumbContainer, $info ); @@ -877,7 +877,6 @@ ve.ui.MWMediaDialog.prototype.onSearchQueryClear = function () { * @param {Object} info Image info */ ve.ui.MWMediaDialog.prototype.chooseImageInfo = function ( info ) { - this.$infoPanelWrapper.empty(); // Switch panels this.selectedImageInfo = info; this.switchPanels( 'imageInfo' ); From e0c322976e4c7effddf96d26aa7f30ac4c8d39fa Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 11 Apr 2025 09:32:51 -0400 Subject: [PATCH 281/730] Update VE core submodule to master (dfd3119ae) New changes: fa822edeb Use CSS 'mix-blend-mode: multiply' for fake selections Localisation Updates: 640d24774 Bug: T269145 Change-Id: Ib900aff55e3d9415a339c0a76f9784ba86a94a05 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 9fbc4d8849..dfd3119ae0 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 9fbc4d88498f5923a14b384a415ebd18b976b23c +Subproject commit dfd3119ae02ebb15300236206ae5b9ecbc36de60 From a8a2ea9837cc29c3e30a0dbcd26f2b84a5db78ac Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 11 Apr 2025 10:36:03 -0400 Subject: [PATCH 282/730] EditCheckDialog: Fix logic for deciding if to pause before showing save dialog If the last-closed check is rejected, then don't pause before opening the save dialog, otherwise wait 2s for UX reasons. Change-Id: Id5adc50bf3d838e7ffcb1f81bd78ba160f314608 --- editcheck/modules/EditCheckDialog.js | 11 ++++++----- editcheck/modules/controller.js | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index f4ec9d76b2..768f6fd2fd 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -89,20 +89,20 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { this.$body.append( this.closeButton.$element, this.$actions, this.footer.$element ); }; -ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions ) { +ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions, rejected ) { if ( listener !== this.listener ) { return; } if ( this.updateFilter ) { actions = this.updateFilter( actions, newActions, discardedActions, this.currentActions ); } - this.showActions( actions, newActions ); + this.showActions( actions, newActions, rejected ); }; -ve.ui.EditCheckDialog.prototype.showActions = function ( actions, newActions ) { +ve.ui.EditCheckDialog.prototype.showActions = function ( actions, newActions, lastActionRejected ) { this.currentActions = actions; if ( actions.length === 0 ) { - return this.close( 'complete' ); + return this.close( { action: lastActionRejected ? 'reject' : 'complete' } ); } // This just adjusts so the previously selected check remains selected: @@ -250,7 +250,8 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { // more generic const pause = data.action !== 'reject' ? 500 : 0; setTimeout( () => { - this.controller.removeAction( this.listener, action ); + const rejected = [ 'feedback', 'reject', 'dismiss' ].includes( data.action ); + this.controller.removeAction( this.listener, action, rejected ); }, pause ); } else { this.controller.refresh(); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 3702e91ec3..c9c7b286bc 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -106,7 +106,7 @@ Controller.prototype.refresh = function () { } if ( this.listener === 'onBeforeSave' ) { // These shouldn't be recalculated - this.emit( 'actionsUpdated', this.listener, this.getActions( this.listener ), [], [] ); + this.emit( 'actionsUpdated', this.listener, this.getActions( this.listener ), [], [], false ); } else { this.updateForListener( this.listener, true ); } @@ -123,12 +123,12 @@ Controller.prototype.updateForListener = function ( listener, always ) { const newActions = actions.filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); const discardedActions = existing.filter( ( action ) => actions.every( ( newAction ) => !action.equals( newAction ) ) ); if ( always || actions.length !== existing.length || newActions.length || discardedActions.length ) { - this.emit( 'actionsUpdated', listener, actions, newActions, discardedActions ); + this.emit( 'actionsUpdated', listener, actions, newActions, discardedActions, false ); } return actions; }; -Controller.prototype.removeAction = function ( listener, action ) { +Controller.prototype.removeAction = function ( listener, action, rejected ) { const actions = this.getActions( listener ); const index = actions.indexOf( action ); if ( index === -1 ) { @@ -140,7 +140,7 @@ Controller.prototype.removeAction = function ( listener, action ) { this.focused = undefined; } - this.emit( 'actionsUpdated', listener, actions, [], removed ); + this.emit( 'actionsUpdated', listener, actions, [], removed, rejected ); }; Controller.prototype.focusAction = function ( action, scrollTo ) { @@ -324,7 +324,8 @@ Controller.prototype.onPreSaveProcess = function ( saveProcess ) { if ( data ) { const delay = ve.createDeferred(); // If they inserted, wait 2 seconds on desktop - // before showing save dialog to make sure insertions are finialized + // before showing save dialog to give user time + // to see success notification. setTimeout( () => { ve.track( 'counter.editcheck.preSaveChecksCompleted' ); delay.resolve(); From 9e8806f3c1bfdd38e8815ded20c71cdc162d4f94 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 11 Apr 2025 10:49:46 -0400 Subject: [PATCH 283/730] EditCheck: Allow checks to define a focus fragment Change-Id: I2bd72a50a23260fa4daf19e5529fff444ffca40b --- editcheck/modules/EditCheckAction.js | 6 ++++++ editcheck/modules/EditCheckDialog.js | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 9e1a11ff98..8ce858d095 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -13,6 +13,7 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.check = config.check; this.fragments = config.fragments; + this.focusFragment = config.focusFragment; this.message = config.message; this.id = config.id; this.title = config.title; @@ -50,6 +51,11 @@ mw.editcheck.EditCheckAction.prototype.getHighlightSelections = function () { return this.fragments.map( ( fragment ) => fragment.getSelection() ); }; +mw.editcheck.EditCheckAction.prototype.getFocusSelection = function () { + // TOOD: Instead of fragments[0], create a fragment that covers all fragments? + return ( this.focusFragment || this.fragments[ 0 ] ).getSelection(); +}; + /** * Get a description of the check * diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index f4ec9d76b2..6fb0af1fe7 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -271,16 +271,16 @@ ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, col this.setCurrentOffset( this.currentActions.indexOf( action ), true ); if ( !OO.ui.isMobile() ) { const surfaceModel = this.surface.getModel(); - const checkRange = action.getHighlightSelections()[ 0 ].getCoveringRange(); + const checkRange = action.getFocusSelection().getCoveringRange(); const surfaceRange = surfaceModel.getSelection().getCoveringRange(); // Collapse and move the selection to the nearest part of the check range // Don't alter it if it touches the check range if ( surfaceRange === null || surfaceRange.end < checkRange.start ) { - surfaceModel.setSelection( new ve.dm.LinearSelection( new ve.Range( checkRange.start ) ) ); + surfaceModel.setLinearSelection( new ve.Range( checkRange.start ) ); this.surface.getView().activate(); this.surface.getView().focus(); } else if ( surfaceRange.start > checkRange.end ) { - surfaceModel.setSelection( new ve.dm.LinearSelection( new ve.Range( checkRange.end ) ) ); + surfaceModel.setLinearSelection( new ve.Range( checkRange.end ) ); this.surface.getView().activate(); this.surface.getView().focus(); } From 1897f5418a75fdde701d1121cd0fd945a3682cfd Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 11 Apr 2025 10:55:57 -0400 Subject: [PATCH 284/730] Edit check: when giving feedback for add references always reset mode Otherwise the next edit check would go immediately to feedback Change-Id: I2d67da3c808b65abaee4dab8237928e2f7a8554a --- editcheck/modules/editchecks/AddReferenceEditCheck.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index e9a2ec8149..611ca9cca8 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -113,6 +113,7 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, su this.mode = ''; return; // again triggers a redraw case 'feedback': + this.mode = ''; // eslint-disable-next-line no-case-declarations const selectedItem = action.widget.answerRadioSelect.findSelectedItem(); if ( selectedItem && selectedItem.getData() ) { @@ -121,7 +122,6 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, su this.dismiss( action ); return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); } - this.mode = ''; break; } }; From 17d95aeb3b1f778fb7aca11e982794d9e852a459 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 11 Apr 2025 09:36:23 -0400 Subject: [PATCH 285/730] Replace ve.preSaveProcess hook with getPreSaveProcess Change-Id: Ifb5f678d97c1b8a059e3434609ddd57f9ffd52e8 --- editcheck/modules/controller.js | 173 +++++++++--------- .../init/targets/ve.init.mw.ArticleTarget.js | 19 +- 2 files changed, 101 insertions(+), 91 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index c9c7b286bc..d487659236 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -30,7 +30,9 @@ OO.mixinClass( Controller, OO.EventEmitter ); Controller.prototype.setup = function () { const target = this.target; target.on( 'surfaceReady', () => { - if ( target.getSurface().getMode() !== 'visual' ) { + this.surface = target.getSurface(); + + if ( this.surface.getMode() !== 'visual' ) { // Some checks will entirely work in source mode for most cases. // But others will fail spectacularly -- e.g. reference check // isn't aware of tags and so will suggest that all content @@ -43,8 +45,6 @@ Controller.prototype.setup = function () { // ideally this would happen slightly earlier: document.documentElement.classList.add( 've-editcheck-available' ); - this.surface = target.getSurface(); - this.surface.getView().on( 'position', this.onPositionDebounced ); this.surface.getModel().on( 'undoStackChange', this.onDocumentChangeDebounced ); this.surface.getModel().on( 'select', this.onSelectDebounced ); @@ -73,13 +73,7 @@ Controller.prototype.setup = function () { document.documentElement.classList.remove( 've-editcheck-available' ); }, null, this ); - mw.hook( 've.preSaveProcess' ).add( ( saveProcess, saveTarget ) => { - // This being a global hook means that it could fire on a different - // target, or on our target when it's not in visual mode. - if ( saveTarget === this.target && this.surface ) { - this.onPreSaveProcess( saveProcess ); - } - } ); + this.setupPreSaveProcess(); }; Controller.prototype.editChecksArePossible = function () { @@ -264,87 +258,92 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions } ); }; -Controller.prototype.onPreSaveProcess = function ( saveProcess ) { +Controller.prototype.setupPreSaveProcess = function () { const target = this.target; - const surface = target.getSurface(); - - ve.track( 'counter.editcheck.preSaveChecksAvailable' ); - - const oldFocused = this.focused; - this.listener = 'onBeforeSave'; - const actions = this.updateForListener( 'onBeforeSave' ); - if ( actions.length ) { - ve.track( 'counter.editcheck.preSaveChecksShown' ); - mw.editcheck.refCheckShown = mw.editcheck.refCheckShown || - actions.some( ( action ) => action.getName() === 'addReference' ); - - this.setupToolbar( target ); - - let $contextContainer, contextPadding; - if ( surface.context.popup ) { - contextPadding = surface.context.popup.containerPadding; - $contextContainer = surface.context.popup.$container; - surface.context.popup.$container = surface.$element; - surface.context.popup.containerPadding = 20; + const preSaveProcess = target.getPreSaveProcess(); + preSaveProcess.next( () => { + const surface = target.getSurface(); + if ( surface.getMode() !== 'visual' ) { + return; } + ve.track( 'counter.editcheck.preSaveChecksAvailable' ); + + const oldFocused = this.focused; + this.listener = 'onBeforeSave'; + const actions = this.updateForListener( 'onBeforeSave' ); + if ( actions.length ) { + ve.track( 'counter.editcheck.preSaveChecksShown' ); + mw.editcheck.refCheckShown = mw.editcheck.refCheckShown || + actions.some( ( action ) => action.getName() === 'addReference' ); + + this.setupToolbar( target ); + + let $contextContainer, contextPadding; + if ( surface.context.popup ) { + contextPadding = surface.context.popup.containerPadding; + $contextContainer = surface.context.popup.$container; + surface.context.popup.$container = surface.$element; + surface.context.popup.containerPadding = 20; + } - saveProcess.next( () => this.closeSidebars( 'saveProcess' ).then( () => this.closeDialog( 'saveProcess' ).then( () => { - this.originalToolbar.toggle( false ); - target.onContainerScroll(); - const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); - return windowAction.open( 'fixedEditCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) - .then( ( instance ) => { - ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); - actions.forEach( ( action ) => { - ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); - } ); - instance.closed.then( () => {}, () => {} ).then( () => { - surface.getView().setReviewMode( false ); - this.listener = 'onDocumentChange'; - this.focused = oldFocused; - // Re-open the mid-edit sidebar if necessary. - this.refresh(); - } ); - return instance.closing.then( ( data ) => { - if ( target.deactivating || !target.active ) { - // Someone clicking "read" to leave the article - // will trigger the closing of this; in that - // case, just abandon what we're doing - return ve.createDeferred().reject().promise(); - } - this.restoreToolbar( target ); - - if ( $contextContainer ) { - surface.context.popup.$container = $contextContainer; - surface.context.popup.containerPadding = contextPadding; - } - - target.onContainerScroll(); - - if ( data ) { - const delay = ve.createDeferred(); - // If they inserted, wait 2 seconds on desktop - // before showing save dialog to give user time - // to see success notification. - setTimeout( () => { - ve.track( 'counter.editcheck.preSaveChecksCompleted' ); - delay.resolve(); - }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); - return delay.promise(); - } else { - // closed via "back" or otherwise - ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); - return ve.createDeferred().reject().promise(); - } + return this.closeSidebars( 'preSaveProcess' ).then( () => this.closeDialog( 'preSaveProcess' ).then( () => { + this.originalToolbar.toggle( false ); + target.onContainerScroll(); + const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); + return windowAction.open( 'fixedEditCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) + .then( ( instance ) => { + ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); + actions.forEach( ( action ) => { + ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); + } ); + instance.closed.then( () => {}, () => {} ).then( () => { + surface.getView().setReviewMode( false ); + this.listener = 'onDocumentChange'; + this.focused = oldFocused; + // Re-open the mid-edit sidebar if necessary. + this.refresh(); + } ); + return instance.closing.then( ( data ) => { + if ( target.deactivating || !target.active ) { + // Someone clicking "read" to leave the article + // will trigger the closing of this; in that + // case, just abandon what we're doing + return ve.createDeferred().reject().promise(); + } + this.restoreToolbar( target ); + + if ( $contextContainer ) { + surface.context.popup.$container = $contextContainer; + surface.context.popup.containerPadding = contextPadding; + } + + target.onContainerScroll(); + + if ( data ) { + const delay = ve.createDeferred(); + // If they inserted, wait 2 seconds on desktop + // before showing save dialog to give user time + // to see success notification. + setTimeout( () => { + ve.track( 'counter.editcheck.preSaveChecksCompleted' ); + delay.resolve(); + }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); + return delay.promise(); + } else { + // closed via "back" or otherwise + ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); + return ve.createDeferred().reject().promise(); + } + } ); } ); - } ); - } ) ) ); - } else { - this.listener = 'onDocumentChange'; - // Counterpart to earlier preSaveChecksShown, for use in tracking - // errors in check-generation: - ve.track( 'counter.editcheck.preSaveChecksNotShown' ); - } + } ) ); + } else { + this.listener = 'onDocumentChange'; + // Counterpart to earlier preSaveChecksShown, for use in tracking + // errors in check-generation: + ve.track( 'counter.editcheck.preSaveChecksNotShown' ); + } + } ); }; Controller.prototype.setupToolbar = function ( target ) { diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index ad363e07ee..a76c98d57c 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -57,6 +57,7 @@ ve.init.mw.ArticleTarget = function VeInitMwArticleTarget( config ) { this.editSummaryValue = null; this.initialEditSummary = null; this.initialCheckboxes = {}; + this.preSaveProcess = new OO.ui.Process(); this.viewUrl = new URL( mw.util.getUrl( this.getPageName() ), location.href ); this.isViewPage = ( @@ -1970,6 +1971,17 @@ ve.init.mw.ArticleTarget.prototype.updateToolbarSaveButtonState = function () { } }; +/** + * Get the pre-save process, which is executed before opening the save dialog + * + * If the process rejects, the save dialog is not opened. + * + * @return {OO.ui.Process} + */ +ve.init.mw.ArticleTarget.prototype.getPreSaveProcess = function () { + return this.preSaveProcess; +}; + /** * Show a save dialog * @@ -1997,15 +2009,14 @@ ve.init.mw.ArticleTarget.prototype.showSaveDialog = function ( action, checkboxN this.saveDialogIsOpening = true; - const saveProcess = new OO.ui.Process(); - mw.hook( 've.preSaveProcess' ).fire( saveProcess, this ); + mw.hook( 've.preSaveProcess' ).deprecate( 'Use target.getPreSaveProcess() instead.' ).fire( this.preSaveProcess, this ); this.emit( 'saveWorkflowBegin' ); - saveProcess.execute().done( () => { + this.preSaveProcess.execute().done( () => { if ( this.deactivating || !this.active ) { // It's possible to trigger deactivating VE during the - // saveProcess (e.g. by clicking the "read" tab), and in that + // preSaveProcess (e.g. by clicking the "read" tab), and in that // case we should immediately discard what we're doing. return; } From dc4756750ad548df2450d68b7656da3af3d27ea0 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 14 Apr 2025 09:32:55 +0200 Subject: [PATCH 286/730] Localisation updates from https://translatewiki.net. Change-Id: I1cf2356d6e9ee4af11550b9dcff3965cd5d836be --- i18n/ve-mw/hoc-latn.json | 9 +++++++++ i18n/ve-mw/hoc.json | 5 +---- i18n/ve-mw/ln.json | 3 +++ 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 i18n/ve-mw/hoc-latn.json diff --git a/i18n/ve-mw/hoc-latn.json b/i18n/ve-mw/hoc-latn.json new file mode 100644 index 0000000000..08ca19e96f --- /dev/null +++ b/i18n/ve-mw/hoc-latn.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [] + }, + "visualeditor-ca-createlocaldescriptionsource": "Local Kajisartal Namsaṅ olmisaè", + "visualeditor-ca-createsource": "Namsaṅ baiè", + "visualeditor-ca-editsource": "Namsaṅ olruaaè", + "visualeditor-ca-editsource-section": "Namsaṅ olruaaè" +} diff --git a/i18n/ve-mw/hoc.json b/i18n/ve-mw/hoc.json index fbca9247db..e860519686 100644 --- a/i18n/ve-mw/hoc.json +++ b/i18n/ve-mw/hoc.json @@ -4,8 +4,5 @@ "Singkiring57" ] }, - "tooltip-ca-ve-edit": "𑢳𑣈𑣓 𑣞𑣌𑣈𑣓 𑣕𑣋𑣈𑣓𑣈", - "visualeditor-ca-createsource": "𑢧𑣓𑣔𑣃𑣗-𑣞𑣁𑣓𑣆 𑣗𑣆𑣂", - "visualeditor-ca-editsource": "𑢧𑣓𑣔𑣃𑣗-𑣞𑣁𑣓𑣆 𑣉𑣚-𑣞𑣁𑣋𑣉𑣖 𑣜𑣃𑣈𑣈", - "visualeditor-ca-editsource-section": "𑣇𑣓𑣔𑣃𑣗-𑣞𑣁𑣓𑣁𑣆 𑣉𑣚-𑣞𑣁𑣋𑣉𑣖 𑣜𑣃𑣈𑣈" + "tooltip-ca-ve-edit": "𑢳𑣈𑣓 𑣞𑣌𑣈𑣓 𑣕𑣋𑣈𑣓𑣈" } diff --git a/i18n/ve-mw/ln.json b/i18n/ve-mw/ln.json index 4dd138fc86..b55453aeaa 100644 --- a/i18n/ve-mw/ln.json +++ b/i18n/ve-mw/ln.json @@ -1,9 +1,12 @@ { "@metadata": { "authors": [ + "Lydie maliki", "Moyogo" ] }, + "visualeditor-ca-createlocaldescriptionsource": "Bakisa source ya description ya esika", + "visualeditor-ca-createsource": "Bosala source", "visualeditor-ca-editsource": "Kobɔngisa mosólo", "visualeditor-ca-editsource-section": "kobɔngisa mosólo", "visualeditor-dialog-transclusion-contextitem-description": "Ekelámí útá: $1" From 497639d60f6bc7f7b7f1c79c26f6146f2701f506 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 15 Apr 2025 09:26:52 +0200 Subject: [PATCH 287/730] Localisation updates from https://translatewiki.net. Change-Id: I73829f3dc0735d318d7349e2c6b21d2037a140c1 --- i18n/ve-mw/ps.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 0ea9c9e77b..6311bc097a 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -25,13 +25,23 @@ "visualeditor-annotations-default-description": "د پاڼې دا برخه د سپيناوي لړۍ برخه ده.", "visualeditor-annotations-default-end": "د سپيناوي لړۍ پای", "visualeditor-annotations-default-start": "سپيناوي لړۍ پيلول", + "visualeditor-autosave-modified-prompt-accept": "سمون بياپيلول", + "visualeditor-autosave-modified-prompt-reject": "نوی سمون پيلول", + "visualeditor-autosave-modified-prompt-title": "{{GENDER:|ستاسو}} سمون بيا پيل کړي؟", + "visualeditor-autosave-not-recovered-text": "ستاسو ناخوندي شوي بدلونونه نشي ترلاسه کېدای.", + "visualeditor-autosave-not-recovered-title": "بدلون بياترلاسنه نابريالۍ شوه", + "visualeditor-autosave-recovered-text": "ستاسو ناخوندي شوي سمونونه په خپلکاري ډول بېرته ترلاسه شول.", + "visualeditor-autosave-recovered-title": "بدلونونه بېرته ترلاسه شول", "visualeditor-backbutton-tooltip": "پر شا تلل", "visualeditor-ca-createlocaldescriptionsource": "د سيمه ييزې څرگندونې سرچينې ورگډول", "visualeditor-ca-createsource": "سرچينه جوړول", "visualeditor-ca-editlocaldescriptionsource": "د سيمه ايزې څرگندونې سرچينه سمول", "visualeditor-ca-editsource": "سرچينه سمول", "visualeditor-ca-editsource-section": "سرچينه سمول", + "visualeditor-ca-editsource-section-hint": "سمون برخې سرچينې کوډ: $1", "visualeditor-categories-tool": "وېشنيزې", + "visualeditor-changedesc-mwcategory-sortkey-changed": "ترتيبولو کونجي له $1 څخه $2 ته بدله شوې", + "visualeditor-changedesc-mwcategory-sortkey-set": "ترتيبولو کونجي $1 ته ټاکل شوې", "visualeditor-desc": "د مېډياويکي لپاره ليدنيز سمونگر", "visualeditor-descriptionpagelink": "Project:ليدنيز سمونگر", "visualeditor-dialog-media-alttext-section": "انډوليز متن", @@ -197,5 +207,6 @@ "visualeditor-settings-tool": "مخ امستنې", "visualeditor-special-characters-group-other": "اکثر کارېدونکی", "visualeditor-version-label": "بڼه", - "visualeditor-wikitext-progress": "ويکي متن ته اړونه" + "visualeditor-wikitext-progress": "ويکي متن ته اړونه", + "visualeditor-wikitextconvert-convert": "ويکي‌ليک ته اړول" } From f891efd2e0582d45127f3175402fb9a025138158 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 17 Apr 2025 09:27:46 +0200 Subject: [PATCH 288/730] Localisation updates from https://translatewiki.net. Change-Id: I3fd46b8951764a38eff0fb0a767034b681f87a1f --- editcheck/i18n/ka.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/editcheck/i18n/ka.json b/editcheck/i18n/ka.json index 8e2ef054a7..3d2812e000 100644 --- a/editcheck/i18n/ka.json +++ b/editcheck/i18n/ka.json @@ -6,6 +6,17 @@ }, "editcheck-dialog-action-no": "არა", "editcheck-dialog-action-yes": "დიახ", - "editcheck-dialog-addref-description": "დამოწმების დამატებით დაეხმარეთ მკითხველებს გაიგონ, საიდან მოდის ეს ინფორმაცია.", - "editcheck-dialog-addref-reject-question": "დამოწმებას რატომ არ ამატებთ?" + "editcheck-dialog-addref-description": "წყაროს დამატებით დაეხმარეთ მკითხველებს გაიგონ, საიდან მოდის ეს ინფორმაცია.", + "editcheck-dialog-addref-reject-question": "წყაროს რატომ არ ამატებთ?", + "editcheck-dialog-addref-reject-description": "სხვა რედაქტორებისათვის სასარგებლო იქნება გაიგონ, თუ რატომ გადაწყვიტეთ, რომ წყარო არ დაგემატებინათ.", + "editcheck-dialog-addref-reject-irrelevant": "არ მგონია, რომ წყარო იყოს შესაბამისი იმ ცვლილებასთან, რომელიც მე გავაკეთე", + "editcheck-dialog-addref-reject-common-knowledge": "ინფორმაცია, რომელიც დავამატე, ფართოდაა ცნობილია.", + "editcheck-dialog-addref-reject-uncertain": "არ ვიცი რომელი წყარო დავამატო", + "editcheck-dialog-addref-reject-other": "სხვა", + "editcheck-dialog-addref-success-notify": "გმადლობთ წყაროს დამატებისთვის!", + "editcheck-dialog-addref-title": "წყაროს დამატება", + "editcheck-dialog-title": "გამოქვეყნებამდე", + "editcheck-copyvio-title": "ჩასმული შიგთავსი", + "editcheck-copyvio-description": "ზოგადი წესია, რომ არ უნდა გადმოწეროთ ტექსტი სხვა წყაროებიდან. ამგვარი ქმედება როგორც საავტორო უფლებების დარღვევას, ისე პლაგიატიზმს წარმოადგენს.", + "editcheck-review-title": "ცვლილებების გადახედვა" } From 5d2188d62d371b630b4a79da2e62e062c7e90553 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 18 Apr 2025 09:58:44 +0200 Subject: [PATCH 289/730] Localisation updates from https://translatewiki.net. Change-Id: Ia82f0b5121be77d2d41a30fb613b5cea847c943f --- i18n/ve-mw/ext.json | 4 ++-- i18n/ve-mw/hke.json | 2 +- i18n/ve-mw/ka.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/ve-mw/ext.json b/i18n/ve-mw/ext.json index df12dc9b92..711b910e48 100644 --- a/i18n/ve-mw/ext.json +++ b/i18n/ve-mw/ext.json @@ -9,7 +9,7 @@ }, "tooltip-ca-ve-edit": "Edital esta página", "visualeditor-ca-createsource": "Crial huenti", - "visualeditor-ca-editsource": "Editá'l códigu", - "visualeditor-ca-editsource-section": "Dital códigu", + "visualeditor-ca-editsource": "Dital cóigu", + "visualeditor-ca-editsource-section": "dital cóigu", "visualeditor-descriptionpagelink": "Project:EitolVisual" } diff --git a/i18n/ve-mw/hke.json b/i18n/ve-mw/hke.json index 3c949635fb..3ada28618b 100644 --- a/i18n/ve-mw/hke.json +++ b/i18n/ve-mw/hke.json @@ -4,7 +4,7 @@ "Muisha wiki hke" ] }, - "visualeditor-ca-createlocaldescriptionsource": "Ongerera xoko ̃ya bushonchomotsi", + "visualeditor-ca-createlocaldescriptionsource": "Ongerera nganuliro y'abinwa ibyo", "visualeditor-ca-createsource": "Tangira xoko", "visualeditor-ca-editsource": "Hingya axoko", "visualeditor-ca-editsource-section": "hingya axoko", diff --git a/i18n/ve-mw/ka.json b/i18n/ve-mw/ka.json index 7d55c25397..47567aa03e 100644 --- a/i18n/ve-mw/ka.json +++ b/i18n/ve-mw/ka.json @@ -29,8 +29,8 @@ "visualeditor-ca-createlocaldescriptionsource": "ლოკალური აღწერის წყაროს დამატება", "visualeditor-ca-createsource": "წყაროს შექმნა", "visualeditor-ca-editlocaldescriptionsource": "ლოკალური აღწერის რედაქტირება", - "visualeditor-ca-editsource": "წყაროს რედაქტირება", - "visualeditor-ca-editsource-section": "წყაროს რედაქტირება", + "visualeditor-ca-editsource": "წყაროს ჩასწორება", + "visualeditor-ca-editsource-section": "წყაროს ჩასწორება", "visualeditor-categories-tool": "კატეგორიები", "visualeditor-changedesc-mwredirect": "გადამისამართების სამიზნე შეცვალა $1-დან $2-ზე", "visualeditor-changedesc-mwtransclusion": "შეიცვალა თარგის პარამეტრი", From e43b48a21fac8ca7ba59afb6bf8abb878c1cabc6 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 21 Apr 2025 09:35:15 +0200 Subject: [PATCH 290/730] Localisation updates from https://translatewiki.net. Change-Id: Ie2fc72d956e6ab86b9ab0e819ac06405e40373ab --- i18n/ve-mw/crh-latn.json | 5 ++++- i18n/ve-mw/fi.json | 4 ++-- i18n/ve-mw/io.json | 2 ++ i18n/ve-mw/lb.json | 3 +++ i18n/ve-mw/ps.json | 2 ++ 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/i18n/ve-mw/crh-latn.json b/i18n/ve-mw/crh-latn.json index 04450471d3..bda0373707 100644 --- a/i18n/ve-mw/crh-latn.json +++ b/i18n/ve-mw/crh-latn.json @@ -15,6 +15,8 @@ "visualeditor-dialog-meta-categories-addcategory-label": "Bu saifege bir kategoriya qoş", "visualeditor-dialog-meta-categories-input-placeholder": "Bir kategoriya qoş", "visualeditor-dialog-meta-languages-link-label": "Bağlanğan saife", + "visualeditor-mweditmodesource-tool-current": "Viki metnini deñiştirüv", + "visualeditor-mweditmodeve-tool-current": "Vizual deñiştirüv", "visualeditor-preference-visualeditor": "Vizual türlendirgiçni işlet", "visualeditor-preference-newwikitexteditor-enable": "Ayrı bir vikimetin türlendirgiçi yerine vizual türlendirgiçniñ içindeki vikimetin rejimini qullan", "visualeditor-preference-newwikitexteditor-help": "Bu funktsiyağa bazıda \"2017 vikimetin türlendirgiçi\" de aytıla.", @@ -28,5 +30,6 @@ "visualeditor-savedialog-review-visual": "Vizual", "visualeditor-savedialog-review-wikitext": "Vikimetin", "visualeditor-savedialog-title-conflict": "Çatışma", - "visualeditor-savedialog-title-preview": "Yapqan deñiştirmeleriñizni baqıp çıqıñız" + "visualeditor-savedialog-title-preview": "Yapqan deñiştirmeleriñizni baqıp çıqıñız", + "visualeditor-special-characters-group-other": "Sıq qullanılğan" } diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 7bc9bdcdfb..8fdeb62145 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -60,9 +60,9 @@ "visualeditor-autosave-recovered-text": "Tallentamattomat muutoksesi on palautettu automaattisesti.", "visualeditor-autosave-recovered-title": "Muutokset palautettu", "visualeditor-backbutton-tooltip": "Siirry takaisin", - "visualeditor-ca-createlocaldescriptionsource": "Luo paikallisen kuvauksen lähdeteksti", + "visualeditor-ca-createlocaldescriptionsource": "Luo paikallisen kuvauksen wikiteksti", "visualeditor-ca-createsource": "Luo wikiteksti", - "visualeditor-ca-editlocaldescriptionsource": "Muokkaa paikallisen kuvauksen lähdetekstiä", + "visualeditor-ca-editlocaldescriptionsource": "Muokkaa paikallisen kuvauksen wikitekstiä", "visualeditor-ca-editsource": "Muokkaa wikitekstiä", "visualeditor-ca-editsource-section": "muokkaa wikitekstiä", "visualeditor-ca-editsource-section-hint": "Muokkaa osion lähdekoodia: $1", diff --git a/i18n/ve-mw/io.json b/i18n/ve-mw/io.json index ce5b050b68..37555a8a8a 100644 --- a/i18n/ve-mw/io.json +++ b/i18n/ve-mw/io.json @@ -183,7 +183,9 @@ "visualeditor-mwgallerydialog-widths-field-label": "Imajo-larjeso", "visualeditor-mwgallerydialog-widths-input-placeholder": "Normala larjeso: $1 px", "visualeditor-mwsignature-tool": "Vua signaturo", + "visualeditor-preference-visualeditor": "Kapabligar la redaktilo vidala (''visual editor'')", "visualeditor-preference-newwikitexteditor-enable": "Uzez \"wikitext mode\" che visuala redaktilo, vice altra redaktilo diferanta.", + "visualeditor-preference-newwikitexteditor-help": "To kelkafoye nomizesas 'redaktilo di wikitexto de 2017'.", "visualeditor-preference-tabs": "Redakto-maniero:", "visualeditor-preference-tabs-prefer-ve": "Me volas sempre uzar VisualEditor se posibla", "visualeditor-preference-tabs-prefer-wt": "Me volas sempre uzar la bazala redaktilo", diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index 964e50a227..2fa0511aa8 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -142,12 +142,14 @@ "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "Dréckt CTrl+Del fir d'Schabloun nat hire Parameteren a Wäerter ze läschen.", "visualeditor-dialog-transclusion-add-wikitext": "Wikitext derbäisetzen", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "De Parameter \"$2\" kann net zweemol derbäigesat ginn.", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 ass e verbuedent Zeechen. Huelt et wgl. ewech fir de Parameter derbäizesetzen.", "visualeditor-dialog-transclusion-add-param-placeholder": "Numm vum Parameter", "visualeditor-dialog-transclusion-add-param-save": "Derbäisetzen", "visualeditor-dialog-transclusion-add-template": "Schabloun derbäisetzen", "visualeditor-dialog-transclusion-add-template-button": "Schabloun derbäisetzen", "visualeditor-dialog-transclusion-add-template-save": "Derbäisetzen", "visualeditor-dialog-transclusion-add-undocumented-param": "Net dokumentéierte Parameter derbäisetzen", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "Zréck bei d'Sich goen? Är Ännerunge gi verluer an dat kann net réckgängeg gemaach ginn.", "visualeditor-dialog-transclusion-close-confirmation-prompt": "Den Editeur vun der Schabloun zoumaachen? Är Ännerunge gi verluer a kënnen net méi restauréiert ginn.", "visualeditor-dialog-transclusion-collapse-options": "Optioune verstoppen", "visualeditor-dialog-transclusion-confirmation-discard": "Ännerungen ignoréieren", @@ -257,6 +259,7 @@ "visualeditor-mwgallerydialog-search-button-label": "Neit Bild derbäisetzen", "visualeditor-mwgallerydialog-show-filename-field-label": "Nimm vun de Fichiere weisen", "visualeditor-mwgallerydialog-styles-field-label": "CSS-Stiler", + "visualeditor-mwgallerydialog-styles-input-placeholder": "CSS-Reegelen, semikolongetrennt", "visualeditor-mwgallerydialog-title": "Gallerie", "visualeditor-mwgallerydialog-widths-field-label": "Breet vum Bild", "visualeditor-mwgallerydialog-widths-input-placeholder": "Standardbreet: $1 Pixel", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 6311bc097a..b4e463170d 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -206,7 +206,9 @@ "visualeditor-section-title-placeholder": "سکالو", "visualeditor-settings-tool": "مخ امستنې", "visualeditor-special-characters-group-other": "اکثر کارېدونکی", + "visualeditor-tooltip-non-breaking-space": "نه ماتېدونکی واټن", "visualeditor-version-label": "بڼه", "visualeditor-wikitext-progress": "ويکي متن ته اړونه", + "visualeditor-wikitextconvert-title": "ويکي‌ليک ته يې بڼه بدلول؟", "visualeditor-wikitextconvert-convert": "ويکي‌ليک ته اړول" } From 0c40a9ac6d1dd1de2cae98d79f9afd1f541e52b5 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 22 Apr 2025 09:29:29 +0200 Subject: [PATCH 291/730] Localisation updates from https://translatewiki.net. Change-Id: I968c82696994f874295bed331d799aa452a39347 --- i18n/ve-mw/ext.json | 1 + i18n/ve-mw/lb.json | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/ext.json b/i18n/ve-mw/ext.json index 711b910e48..76d42b34f4 100644 --- a/i18n/ve-mw/ext.json +++ b/i18n/ve-mw/ext.json @@ -8,6 +8,7 @@ ] }, "tooltip-ca-ve-edit": "Edital esta página", + "visualeditor-ca-createlocaldescriptionsource": "Añidil huenti de descrición local", "visualeditor-ca-createsource": "Crial huenti", "visualeditor-ca-editsource": "Dital cóigu", "visualeditor-ca-editsource-section": "dital cóigu", diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index 2fa0511aa8..ea699a80b3 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -44,6 +44,9 @@ "visualeditor-ca-editsource": "Quelltext änneren", "visualeditor-ca-editsource-section": "Quelltext änneren", "visualeditor-categories-tool": "Kategorien", + "visualeditor-changedesc-mwcategory-sortkey-changed": "Zortéierschlëssel vu(n) $1 op $2 geännert", + "visualeditor-changedesc-mwcategory-sortkey-set": "Zortéierschlëssel op $1 gesat", + "visualeditor-changedesc-mwcategory-sortkey-unset": "Zortéierschlëssel $1 ewechgeholl", "visualeditor-changedesc-mwredirect": "Zil vun der Viruleedung vu(n) $1 op $2 geännert", "visualeditor-changedesc-mwtransclusion": "Parametere vun der Schabloun geännert", "visualeditor-desc": "Visuellen Editeur fir MediaWiki", @@ -135,6 +138,7 @@ "visualeditor-dialog-table-collapsed": "Fir d'éischt zougeklappt", "visualeditor-dialog-table-collapsible": "Aklappbar", "visualeditor-dialog-table-sortable": "Zortéierbar", + "visualeditor-dialog-table-wikitable": "Stiliséiert (wikitable)", "visualeditor-dialog-template-title": "Schabloun", "visualeditor-dialog-transclusion-action-save": "Späicheren", "visualeditor-dialog-transclusion-template-title-nonexistent": "Dës Schabloun gëtt et net.", @@ -163,10 +167,12 @@ "visualeditor-dialog-transclusion-filter-show-all": "All weisen", "visualeditor-dialog-transclusion-filter-title": "No Parametere siche fir $1", "visualeditor-dialog-transclusion-help-title": "Ënnerstëtzung fir d'Ännere vu Schablounen", + "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates Hëllef fir Schablounen z'änneren]", + "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions Tastekombinatiounen]", "visualeditor-dialog-transclusion-deprecated-parameter": "Vereelzt Feld", "visualeditor-dialog-transclusion-deprecated-parameter-description": "Feld ass vereelzt. $1", "visualeditor-dialog-transclusion-loading": "Lueden...", - "visualeditor-dialog-transclusion-no-template-data-description": "Dëser Schabloun feelen [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters Donnéeë vun de Parameter], an d'Parameter waren [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters autogenereréiert]. Als Resultat feelen der Schabloun hir Parameteren Beschreiwungen. Et kéint zousätzlech Informatiounen op der [[$1|Schabloune Säit]] ginn.", + "visualeditor-dialog-transclusion-no-template-data-description": "Bei dëser Schabloun feelen d'[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] an hir Parameter goufen [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters automatesch generéiert]. Dohier feelen d'Beschreiwunge vun der Schabloun an hire Parameteren. Méiglecherweis gëtt et zousätzlech Informatiounen op der [[$1|Schablounesäit]].", "visualeditor-dialog-transclusion-no-template-description": "D'Schabloun \"$1\" huet nach keng Beschreiwung, awer e puer Informatioune kënnen op der [[$2|Säit vun der Schabloun]] disponibel sinn.", "visualeditor-dialog-transclusion-no-template-parameters": "Dës Schabloun huet keng dokumentéiert Parameteren a ka geduecht si fir ouni si benotzt ze ginn.", "visualeditor-dialog-transclusion-param-default": "Standard: $1", @@ -210,6 +216,7 @@ "visualeditor-formatdropdown-format-mw-heading6": "Ënneriwwerschrëft 4", "visualeditor-generating-wikitext-progress": "Wikitext gëtt generéiert", "visualeditor-includes-includeonly": "Inhalt deen nëmmen dragesat gëtt", + "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Gitt méi iwwer partiell Transklusioun gewuer]", "visualeditor-languages-tool": "Sproochen", "visualeditor-linkinspector-button-link-external": "Externe Site", "visualeditor-linkinspector-button-link-internal": "Op Interne Säite sichen", @@ -272,6 +279,7 @@ "visualeditor-preference-tabs-prefer-wt": "Mir ëmmer de Wikitext-Editeur proposéieren", "visualeditor-preference-tabs-remember-last": "Mäi leschten Auteur verhalen", "visualeditor-preference-collab-label": "Kollaborativ änneren", + "visualeditor-preference-collab-description": "Invitéiert aner Benotzer fir bei Ärer Ännerungssessioun am Visuellen Editeur matzemaachen.", "visualeditor-rebase-client-export": "Exportéieren", "visualeditor-rebase-client-export-start": "Exportéieren...", "visualeditor-rebase-client-import": "Importéieren", From da92796f508e2f3a1df84f59920a849e706373f6 Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Thu, 24 Apr 2025 00:16:28 +0200 Subject: [PATCH 292/730] Use namespaced classes Changes to the use statements done automatically via script Change-Id: Ia9a4028c3acebfbbbd43860905249a84b8375d6f --- includes/ApiVisualEditor.php | 2 +- includes/ApiVisualEditorEdit.php | 2 +- includes/Hooks.php | 8 ++++---- includes/VisualEditorBeforeEditorHook.php | 2 +- includes/VisualEditorHookRunner.php | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/includes/ApiVisualEditor.php b/includes/ApiVisualEditor.php index 94c33c2355..8e5fff378b 100644 --- a/includes/ApiVisualEditor.php +++ b/includes/ApiVisualEditor.php @@ -10,7 +10,6 @@ namespace MediaWiki\Extension\VisualEditor; -use Article; use MediaWiki\Api\ApiBase; use MediaWiki\Api\ApiBlockInfoTrait; use MediaWiki\Api\ApiMain; @@ -28,6 +27,7 @@ use MediaWiki\Language\RawMessage; use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; +use MediaWiki\Page\Article; use MediaWiki\Page\PageReference; use MediaWiki\Page\WikiPageFactory; use MediaWiki\Permissions\PermissionManager; diff --git a/includes/ApiVisualEditorEdit.php b/includes/ApiVisualEditorEdit.php index 8cdc2d46cf..2c9275b49a 100644 --- a/includes/ApiVisualEditorEdit.php +++ b/includes/ApiVisualEditorEdit.php @@ -26,11 +26,11 @@ use MediaWiki\Registration\ExtensionRegistry; use MediaWiki\Request\DerivativeRequest; use MediaWiki\Revision\SlotRecord; +use MediaWiki\Skin\SkinFactory; use MediaWiki\SpecialPage\SpecialPageFactory; use MediaWiki\Storage\PageEditStash; use MediaWiki\Title\Title; use MediaWiki\User\UserIdentity; -use SkinFactory; use Wikimedia\ObjectCache\BagOStuff; use Wikimedia\ParamValidator\ParamValidator; use Wikimedia\Rdbms\IDBAccessObject; diff --git a/includes/Hooks.php b/includes/Hooks.php index f06ce108a4..db41800192 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -10,7 +10,6 @@ namespace MediaWiki\Extension\VisualEditor; -use Article; use MediaWiki\Actions\ActionEntryPoint; use MediaWiki\Auth\Hook\UserLoggedInHook; use MediaWiki\ChangeTags\Hook\ChangeTagsListActiveHook; @@ -38,13 +37,17 @@ use MediaWiki\Output\Hook\MakeGlobalVariablesScriptHook; use MediaWiki\Output\Hook\OutputPageBodyAttributesHook; use MediaWiki\Output\OutputPage; +use MediaWiki\Page\Article; use MediaWiki\Preferences\Hook\GetPreferencesHook; use MediaWiki\Preferences\Hook\PreferencesFormPreSaveHook; +use MediaWiki\RecentChanges\RecentChange; use MediaWiki\Registration\ExtensionRegistry; use MediaWiki\Request\WebRequest; use MediaWiki\ResourceLoader\Hook\ResourceLoaderGetConfigVarsHook; use MediaWiki\ResourceLoader\Hook\ResourceLoaderRegisterModulesHook; use MediaWiki\ResourceLoader\ResourceLoader; +use MediaWiki\Skin\Skin; +use MediaWiki\Skin\SkinTemplate; use MediaWiki\SpecialPage\Hook\RedirectSpecialArticleRedirectParamsHook; use MediaWiki\SpecialPage\SpecialPage; use MediaWiki\Title\Title; @@ -52,9 +55,6 @@ use MediaWiki\User\UserIdentity; use OOUI\ButtonGroupWidget; use OOUI\ButtonWidget; -use RecentChange; -use Skin; -use SkinTemplate; use TextSlotDiffRenderer; /** diff --git a/includes/VisualEditorBeforeEditorHook.php b/includes/VisualEditorBeforeEditorHook.php index 285223cc92..ede3554fb1 100644 --- a/includes/VisualEditorBeforeEditorHook.php +++ b/includes/VisualEditorBeforeEditorHook.php @@ -3,7 +3,7 @@ namespace MediaWiki\Extension\VisualEditor; use MediaWiki\Output\OutputPage; -use Skin; +use MediaWiki\Skin\Skin; /** * VisualEditorBeforeEditorHook diff --git a/includes/VisualEditorHookRunner.php b/includes/VisualEditorHookRunner.php index 2a5b547005..1a3b5634d0 100644 --- a/includes/VisualEditorHookRunner.php +++ b/includes/VisualEditorHookRunner.php @@ -14,8 +14,8 @@ use MediaWiki\HookContainer\HookContainer; use MediaWiki\Output\OutputPage; use MediaWiki\Page\ProperPageIdentity; +use MediaWiki\Skin\Skin; use MediaWiki\User\UserIdentity; -use Skin; class VisualEditorHookRunner implements VisualEditorApiVisualEditorEditPreSaveHook, From e2804ae56ef9fe6fb86542518f9c1402af222f8d Mon Sep 17 00:00:00 2001 From: Sam Wilson Date: Thu, 24 Apr 2025 09:30:35 +0800 Subject: [PATCH 293/730] Change TemplateSearchLayout to padded=false The default is to add extra padding. Bug: T392215 Change-Id: I413cf0e98605484b65d2c8bda2520f912b2674cd --- modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js index 22516153cf..b04ccb3d00 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePlaceholderPage.js @@ -34,7 +34,7 @@ ve.ui.MWTemplatePlaceholderPage = function VeUiMWTemplatePlaceholderPage( placeh this.usingTemplateDiscovery = mw.templateData !== undefined && mw.templateData.TemplateSearchLayout !== undefined; if ( this.usingTemplateDiscovery ) { // This variable name is slightly misleading here as this isn't a fieldset. - this.addTemplateFieldset = new mw.templateData.TemplateSearchLayout(); + this.addTemplateFieldset = new mw.templateData.TemplateSearchLayout( { padded: false } ); this.addTemplateFieldset.connect( this, { choose: this.onAddTemplate } ); // Expose the internal widget for now, but this will be removed once we've switched to the new widget. this.addTemplateInput = this.addTemplateFieldset.searchWidget; From df0f9ae69849e2ec1369c0c78f00977da6c3929e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 25 Apr 2025 14:08:18 +0100 Subject: [PATCH 294/730] Update VE core submodule to master (c1183f876) New changes: 85d358941 Use surfaceModel.setLinearSelection shortcut when appropriate 1126f1fac Tests: Complete coverage of ve.ui.AnnotationAction b54d92814 build: Upgrade stylelint-config-wikimedia to 0.18.0 and make pass 2b137d74e build: Upgrade eslint-config-wikimedia to 0.29.1 and make pass c1183f876 build: Upgrade qunit to 2.24.1 Localisation Updates: 0252790e1, 5336244e1 Change-Id: I8ce91eea7d5cc45d7fc870face2dbb90af2f4408 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index dfd3119ae0..c1183f876d 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit dfd3119ae02ebb15300236206ae5b9ecbc36de60 +Subproject commit c1183f876d1b2089e2510ef35d51a469eff003f8 From 9c016efae736ddf4133b2221d994dedb2050bb28 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 28 Apr 2025 09:36:16 +0200 Subject: [PATCH 295/730] Localisation updates from https://translatewiki.net. Change-Id: Id94ff34edb8947d885b6f698952437ae0d128077 --- editcheck/i18n/be-tarask.json | 30 ++++++++++++++++++++++++++++++ i18n/ve-mw/hav.json | 8 ++++++++ i18n/ve-mw/mfa.json | 12 ++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 editcheck/i18n/be-tarask.json create mode 100644 i18n/ve-mw/hav.json create mode 100644 i18n/ve-mw/mfa.json diff --git a/editcheck/i18n/be-tarask.json b/editcheck/i18n/be-tarask.json new file mode 100644 index 0000000000..373d53b5ab --- /dev/null +++ b/editcheck/i18n/be-tarask.json @@ -0,0 +1,30 @@ +{ + "@metadata": { + "authors": [ + "Renessaince" + ] + }, + "editcheck-dialog-action-no": "Не", + "editcheck-dialog-action-yes": "Так", + "editcheck-dialog-addref-description": "Дапамажыце чытачам зразумець, адкуль узятая гэтая інфармацыя, дадаўшы крыніцу.", + "editcheck-dialog-addref-reject-question": "Чаму вы не дадалі крыніцу?", + "editcheck-dialog-addref-reject-description": "Іншыя рэдактары хацелі б даведацца прычыны, зь якіх вы не дадалі крыніцу.", + "editcheck-dialog-addref-reject-irrelevant": "Я не лічу, што да маіх зьмяненьняў прыдатныя крыніцы", + "editcheck-dialog-addref-reject-common-knowledge": "Дададзеная мною інфармацыя шырока вядомая", + "editcheck-dialog-addref-reject-uncertain": "Я пэўна ня ведаю, якую крыніцу дадаць", + "editcheck-dialog-addref-reject-other": "Іншае", + "editcheck-dialog-addref-success-notify": "Дзякуем, што дадалі крыніцу!", + "editcheck-dialog-addref-title": "Дадаць цытату", + "editcheck-dialog-title": "Перад публікацыяй", + "editcheck-copyvio-title": "Устаўлены зьмест", + "editcheck-copyvio-description": "Звычайна тэкст зь іншых крыніцаў не капіюецца. Такі ўчынак адначасна будзе і парушэньнем аўтарскіх правоў, і плягіятам.", + "editcheck-review-title": "Праверце зьмены", + "tag-editcheck-reference-decline-common-knowledge": "Праверка рэдагаваньня (крыніцы) адхіленая (агульныя веды)", + "tag-editcheck-reference-decline-common-knowledge-description": "Праверка рэдагаваньня была адхіленая, бо гэта агульныя веды", + "tag-editcheck-reference-decline-irrelevant": "Праверка рэдагаваньня (крыніцы) адхіленая (не датычыцца)", + "tag-editcheck-reference-decline-irrelevant-description": "Праверка рэдагаваньня была адхіленая, бо не датычыць", + "tag-editcheck-reference-decline-other": "Праверка рэдагаваньня (крыніцы) адхіленая (іншае)", + "tag-editcheck-reference-decline-other-description": "Праверка рэдагаваньня (крыніцы) адхіленая зь іншай прычыны", + "tag-editcheck-reference-decline-uncertain": "Праверка рэдагаваньня (крыніцы) адхіленая (няпэўна)", + "tag-editcheck-reference-decline-uncertain-description": "Праверка рэдагаваньня (крыніцы) адхіленая як няпэўная" +} diff --git a/i18n/ve-mw/hav.json b/i18n/ve-mw/hav.json new file mode 100644 index 0000000000..a862ce9c9b --- /dev/null +++ b/i18n/ve-mw/hav.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Joeamj" + ] + }, + "visualeditor-ca-editsource-section": "hindura isoko" +} diff --git a/i18n/ve-mw/mfa.json b/i18n/ve-mw/mfa.json new file mode 100644 index 0000000000..1f10f70e6b --- /dev/null +++ b/i18n/ve-mw/mfa.json @@ -0,0 +1,12 @@ +{ + "@metadata": { + "authors": [ + "Lam Takuma", + "Mirlim" + ] + }, + "visualeditor-ca-createlocaldescriptionsource": "Wak sumbo ttere hok stepak", + "visualeditor-ca-createsource": "Buwak sumbo", + "visualeditor-ca-editsource": "Suténg sumbo", + "visualeditor-ca-editsource-section": "suténg sumbo" +} From 2a21ca34714b1f110db58696bc441037c4b7a55b Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 28 Apr 2025 14:21:10 +0100 Subject: [PATCH 296/730] Invert deactivated selection color in dark mode Bug: T374347 Change-Id: I5325c7f8f674d9bf2e78e0a85da4ed4798c5a260 --- modules/ve-mw/init/styles/ve.init.mw.Target.less | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/ve-mw/init/styles/ve.init.mw.Target.less b/modules/ve-mw/init/styles/ve.init.mw.Target.less index 55891bee46..8b9b3722a9 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.Target.less +++ b/modules/ve-mw/init/styles/ve.init.mw.Target.less @@ -105,6 +105,10 @@ a[ rel~='mw:PageProp/Category' ] { body p.ve-ce-branchNode-newSlug { background-color: rgba( 241, 247, 251, 0.1 ); } + + .ve-ce-surface-selections-deactivated-showAsDeactivated .ve-ce-surface-selection > div { + background: #fff; + } } /* stylelint-disable-next-line plugin/no-unsupported-browser-features */ @@ -114,5 +118,9 @@ a[ rel~='mw:PageProp/Category' ] { body p.ve-ce-branchNode-newSlug { background-color: rgba( 241, 247, 251, 0.1 ); } + + .ve-ce-surface-selections-deactivated-showAsDeactivated .ve-ce-surface-selection > div { + background: #fff; + } } } From 8e61ae75ff0f3fe7251d1d46f5bfda28c2bff087 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 28 Apr 2025 14:50:20 +0100 Subject: [PATCH 297/730] Remove mw-editsection styles upstreamed to core Bug: T392817 Depends-On: I0e994b1f2be3b467d3564edbcb1c7af9af8f569a Change-Id: I1ee4d70ec512a8cce8db4edc93df7630ca5daffd --- .../styles/ve.init.mw.DesktopArticleTarget.init.less | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less index 3d4c8cb464..b31a0907ee 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less @@ -140,15 +140,3 @@ .oo-ui-element-hidden { display: none !important; /* stylelint-disable-line declaration-no-important */ } - -/* Section edit links */ - -.mw-editsection { - &::before { - content: '\200B'; - } - - a { - white-space: nowrap; - } -} From d595618502c46737e836e6a0755df15fca2366bc Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 29 Apr 2025 09:28:33 +0200 Subject: [PATCH 298/730] Localisation updates from https://translatewiki.net. Change-Id: I9494d9d62bc664f141dd6a2e19ed17a71155ea0b --- i18n/ve-mw/ps.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index b4e463170d..01f7e82f13 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -129,7 +129,14 @@ "visualeditor-dialog-transclusion-required-parameter": "غوښتلی ډاگی", "visualeditor-dialog-transclusion-required-parameter-description": "دې ډاگي ته اړتيا ده.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "پر شا تلل", + "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "هرڅنگه چې وي دوام ورکړئ", + "visualeditor-dialog-transclusion-required-parameter-dialog-title": "اړين {{PLURAL:$1|ډگر تش دی|ډگرونه تش دي}}", + "visualeditor-dialog-transclusion-required-parameter-is-blank": "ډاډه ياست چې د $1 {{PLURAL:$2|ډگر|ډگرونو}} ډکولو پرته دوام ورکړئ؟", + "visualeditor-dialog-transclusion-title-insert-template": "يوه کينډۍ ورټومبل", + "visualeditor-dialog-transclusion-title-insert-known-template": "ورټومبل: $1", "visualeditor-dialog-transclusion-title-edit-known-template": "سمون: $1", + "visualeditor-dialog-transclusion-title-edit-transclusion": "د کينډۍ منځپانگه", + "visualeditor-dialog-transclusion-template-search": "کينډۍ لټون", "visualeditor-dialog-transclusion-wikitext": "ویکي‌ليک", "visualeditor-dialogbutton-media-tooltip": "رسنۍ", "visualeditor-dialogbutton-template-tooltip": "کينډۍ", From 7edee7a72d7fc6d8f5939bf861e578e2c7c4989f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 29 Apr 2025 13:12:52 +0100 Subject: [PATCH 299/730] ESLint: Remove redundnant sourcetype:commonjs This is the default when using the mediawiki ruleset. Also remove URL(SearchParams) polyfills as these are also now available globally. Change-Id: Ia35adf70d4ef65dc5560575f2eceb31a8e0d197e --- editcheck/modules/.eslintrc.json | 3 --- modules/eslint-shared.json | 5 ----- 2 files changed, 8 deletions(-) diff --git a/editcheck/modules/.eslintrc.json b/editcheck/modules/.eslintrc.json index a3e78aea9d..2320d1888b 100644 --- a/editcheck/modules/.eslintrc.json +++ b/editcheck/modules/.eslintrc.json @@ -3,9 +3,6 @@ "extends": [ "../../modules/.eslintrc" ], - "parserOptions": { - "sourceType": "commonjs" - }, "rules": { "no-jquery/no-done-fail": "warn" } diff --git a/modules/eslint-shared.json b/modules/eslint-shared.json index fc637a62f4..989aa32c43 100644 --- a/modules/eslint-shared.json +++ b/modules/eslint-shared.json @@ -22,10 +22,5 @@ "security/detect-non-literal-regexp": "off", "max-len": "off", "mediawiki/valid-package-file-require": "warn" - }, - "settings": { - "polyfills": [ - "URL" - ] } } From 1ca693ee5cff5e691320263b7528eb201fd561be Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 29 Apr 2025 13:24:19 +0100 Subject: [PATCH 300/730] EditCheck: Avoid promise.done Change-Id: I4fcd30979860371a6fcffebaf2eb37ccdbe03e28 --- editcheck/modules/editchecks/AddReferenceEditCheck.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index 611ca9cca8..097f2ae81e 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -97,13 +97,15 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, su // use the data form the Citoid closing promise. citoidOrCiteDataDeferred.resolve( citoidData ); } - return citoidOrCiteDataDeferred.promise().done( ( data ) => { + const citoidOrCiteDataPromise = citoidOrCiteDataDeferred.promise(); + citoidOrCiteDataPromise.then( ( data ) => { if ( data ) { // Edit check inspector is already closed by this point, but // we need to end the workflow. mw.notify( ve.msg( 'editcheck-dialog-addref-success-notify' ), { type: 'success' } ); } } ); + return citoidOrCiteDataPromise; } ); case 'reject': ve.track( 'activity.editCheckReferences', { action: 'edit-check-reject' } ); From 70b220291f83eeb4109407b4df5eb640b9d8c125 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Wed, 30 Apr 2025 05:27:05 +0000 Subject: [PATCH 301/730] build: Updating formidable to 3.5.4 * https://github.com/advisories/GHSA-75v8-2h7p-7m2m Change-Id: Idf3896033baa84597f48b95256a09d602cda5552 --- package-lock.json | 70 +++++++++++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 22a8c50130..e657cb0525 100644 --- a/package-lock.json +++ b/package-lock.json @@ -974,6 +974,18 @@ "integrity": "sha512-rD1yrH+vrinzmdgtLjj7qeE4FmYh0VezWQaB3DqVrLSBcGtz61pqV/yCO7piJQc8XmgOIKQIF9Go3LUdS9ORHg==", "dev": true }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1009,6 +1021,15 @@ "node": ">= 8" } }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -6554,15 +6575,18 @@ } }, "node_modules/formidable": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", - "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", "dev": true, "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", "dezalgo": "^1.0.4", - "hexoid": "^2.0.0", "once": "^1.4.0" }, + "engines": { + "node": ">=14.0.0" + }, "funding": { "url": "https://ko-fi.com/tunnckoCore/commissions" } @@ -7742,15 +7766,6 @@ "he": "bin/he" } }, - "node_modules/hexoid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", - "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -15620,6 +15635,12 @@ "integrity": "sha512-rD1yrH+vrinzmdgtLjj7qeE4FmYh0VezWQaB3DqVrLSBcGtz61pqV/yCO7piJQc8XmgOIKQIF9Go3LUdS9ORHg==", "dev": true }, + "@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -15646,6 +15667,15 @@ "fastq": "^1.6.0" } }, + "@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, + "requires": { + "@noble/hashes": "^1.1.5" + } + }, "@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -19833,13 +19863,13 @@ } }, "formidable": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", - "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", "dev": true, "requires": { + "@paralleldrive/cuid2": "^2.2.2", "dezalgo": "^1.0.4", - "hexoid": "^2.0.0", "once": "^1.4.0" } }, @@ -20739,12 +20769,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "hexoid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", - "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", - "dev": true - }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", From a2756b1e52117b1de8c7d256fd10b50554857a99 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 1 May 2025 09:32:03 +0200 Subject: [PATCH 302/730] Localisation updates from https://translatewiki.net. Change-Id: Ieca99a28d76c5f90bd88dd448dcf9ecf9938a90e --- i18n/ve-mw/ng.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 i18n/ve-mw/ng.json diff --git a/i18n/ve-mw/ng.json b/i18n/ve-mw/ng.json new file mode 100644 index 0000000000..49f004b204 --- /dev/null +++ b/i18n/ve-mw/ng.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "!!asa,njgh" + ] + }, + "visualeditor-ca-createsource": "Shita okoode", + "visualeditor-ca-editsource": "Lundulula nokoode", + "visualeditor-ca-editsource-section": "lundulula nokoode" +} From ba09ea040551bfb4c3d8b86cfa3ac7de25f809eb Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 30 Apr 2025 18:18:25 +0100 Subject: [PATCH 303/730] LinkCache: Fetch and store linkclasses Bug: T389961 Change-Id: I63c087d2498ed3467cf6b0ebc2bda8c83f056304 --- .../ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js b/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js index 562c48d10c..0d538575c1 100644 --- a/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js +++ b/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js @@ -51,6 +51,7 @@ ve.init.mw.LinkCache.static.processPage = function ( page ) { missing: page.missing !== undefined, known: page.known !== undefined, redirect: page.redirect !== undefined, + linkclasses: page.linkclasses || [], disambiguation: ve.getProp( page, 'pageprops', 'disambiguation' ) !== undefined, hidden: ve.getProp( page, 'pageprops', 'hiddencat' ) !== undefined, imageUrl: ve.getProp( page, 'thumbnail', 'source' ), @@ -79,6 +80,8 @@ ve.init.mw.LinkCache.prototype.styleElement = function ( title, $element, hasFra } promise.done( ( data ) => { + // eslint-disable-next-line mediawiki/class-doc + $element.addClass( data.linkclasses ); if ( data.missing && !data.known ) { $element.addClass( 'new' ); } else { @@ -86,6 +89,10 @@ ve.init.mw.LinkCache.prototype.styleElement = function ( title, $element, hasFra if ( !hasFragment && this.constructor.static.normalizeTitle( title ) === this.constructor.static.normalizeTitle( mw.config.get( 'wgRelevantPageName' ) ) ) { $element.addClass( 'mw-selflink' ); } + + // The following two classes should already be added by data.linkclasses + // TODO: Decide if the linkclasses or the pageprop is canonical, and only use one. + // Provided by core MediaWiki, no styles by default. if ( data.redirect ) { $element.addClass( 'mw-redirect' ); @@ -167,6 +174,7 @@ ve.init.mw.LinkCache.prototype.getRequestPromise = function ( subqueue ) { return this.api.get( { action: 'query', prop: 'info|pageprops|pageimages|description', + inprop: 'linkclasses', pithumbsize: 80, pilimit: subqueue.length, ppprop: 'disambiguation|hiddencat', From 5d96b777acc0f49f99fae0c20401619dcbb9bf0e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 2 May 2025 09:51:46 +0200 Subject: [PATCH 304/730] Localisation updates from https://translatewiki.net. Change-Id: Idf4a5d2c418c76d3f157fe2171495badb4e5efc8 --- i18n/ve-mw/ka.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/ka.json b/i18n/ve-mw/ka.json index 47567aa03e..7d55c25397 100644 --- a/i18n/ve-mw/ka.json +++ b/i18n/ve-mw/ka.json @@ -29,8 +29,8 @@ "visualeditor-ca-createlocaldescriptionsource": "ლოკალური აღწერის წყაროს დამატება", "visualeditor-ca-createsource": "წყაროს შექმნა", "visualeditor-ca-editlocaldescriptionsource": "ლოკალური აღწერის რედაქტირება", - "visualeditor-ca-editsource": "წყაროს ჩასწორება", - "visualeditor-ca-editsource-section": "წყაროს ჩასწორება", + "visualeditor-ca-editsource": "წყაროს რედაქტირება", + "visualeditor-ca-editsource-section": "წყაროს რედაქტირება", "visualeditor-categories-tool": "კატეგორიები", "visualeditor-changedesc-mwredirect": "გადამისამართების სამიზნე შეცვალა $1-დან $2-ზე", "visualeditor-changedesc-mwtransclusion": "შეიცვალა თარგის პარამეტრი", From 3c532aae412018eed3aea1f6a7f04ebae539c6ef Mon Sep 17 00:00:00 2001 From: Derick Alangi Date: Fri, 2 May 2025 16:52:17 +0100 Subject: [PATCH 305/730] Migrate VisualEditor away from the Graphite PHP interface to Prometheus This patch removes the use of PrefixingStatsdDataFactoryProxy under the hood which makes use of the StatsdDataFactoryInterface and appends a key prefix. NOTE: No need to keep the old keys because Graphite is now read only. This patch migrates to the new prometheus interface (stats lib) which is now the recommended way today. In the future, I want to deprecate and delete the PrefixingStatsdDataFactoryProxy class. Change-Id: I7a61e965f5491f6686569f1192c7ebc5e0d3f262 --- extension.json | 4 ++-- includes/ApiParsoidTrait.php | 23 +++++++++++------------ includes/ApiVisualEditor.php | 6 +++--- includes/ApiVisualEditorEdit.php | 18 ++++++++++++------ 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/extension.json b/extension.json index 6bcfd634e2..b50971a609 100644 --- a/extension.json +++ b/extension.json @@ -166,7 +166,7 @@ "UserOptionsLookup", "WatchlistManager", "ContentTransformer", - "StatsdDataFactory", + "StatsFactory", "WikiPageFactory", "IntroMessageBuilder", "PreloadedContentBuilder", @@ -178,7 +178,7 @@ "class": "MediaWiki\\Extension\\VisualEditor\\ApiVisualEditorEdit", "services": [ "HookContainer", - "StatsdDataFactory", + "StatsFactory", "PageEditStash", "SkinFactory", "WikiPageFactory", diff --git a/includes/ApiParsoidTrait.php b/includes/ApiParsoidTrait.php index 897b4e1bed..1225d6ecec 100644 --- a/includes/ApiParsoidTrait.php +++ b/includes/ApiParsoidTrait.php @@ -10,7 +10,6 @@ namespace MediaWiki\Extension\VisualEditor; -use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface; use MediaWiki\Api\ApiUsageException; use MediaWiki\Language\Language; use MediaWiki\MediaWikiServices; @@ -23,13 +22,13 @@ use Psr\Log\NullLogger; use Throwable; use Wikimedia\Message\MessageSpecifier; -use Wikimedia\Stats\NullStatsdDataFactory; -use Wikimedia\Stats\PrefixingStatsdDataFactoryProxy; +use Wikimedia\Stats\StatsFactory; trait ApiParsoidTrait { private ?LoggerInterface $logger = null; - private ?StatsdDataFactoryInterface $stats = null; + /** @var StatsFactory|null */ + private $stats = null; protected function getLogger(): LoggerInterface { return $this->logger ?: new NullLogger(); @@ -39,12 +38,12 @@ protected function setLogger( LoggerInterface $logger ): void { $this->logger = $logger; } - protected function getStats(): StatsdDataFactoryInterface { - return $this->stats ?: new NullStatsdDataFactory(); + protected function getStatsFactory(): StatsFactory { + return $this->stats ?: StatsFactory::newNull(); } - protected function setStats( StatsdDataFactoryInterface $stats ): void { - $this->stats = new PrefixingStatsdDataFactoryProxy( $stats, 'VE' ); + protected function setStatsFactory( StatsFactory $statsFactory ): void { + $this->stats = $statsFactory; } /** @@ -60,7 +59,7 @@ private function statsGetStartTime(): float { */ private function statsRecordTiming( string $key, float $startTime ): void { $duration = ( microtime( true ) - $startTime ) * 1000; - $this->getStats()->timing( $key, $duration ); + $this->getStatsFactory()->getTiming( $key )->observe( $duration ); } /** @@ -93,7 +92,7 @@ protected function requestRestbasePageHtml( RevisionRecord $revision ): array { } catch ( HttpException $ex ) { $this->dieWithRestHttpException( $ex ); } - $this->statsRecordTiming( 'ApiVisualEditor.ParsoidClient.getPageHtml', $startTime ); + $this->statsRecordTiming( 'ApiVisualEditor_ParsoidClient_getPageHtml_seconds', $startTime ); return $response; } @@ -120,7 +119,7 @@ protected function transformHTML( } catch ( HttpException $ex ) { $this->dieWithRestHttpException( $ex ); } - $this->statsRecordTiming( 'ApiVisualEditor.ParsoidClient.transformHTML', $startTime ); + $this->statsRecordTiming( 'ApiVisualEditor_ParsoidClient_transformHTML_seconds', $startTime ); return $response; } @@ -155,7 +154,7 @@ protected function transformWikitext( } catch ( HttpException $ex ) { $this->dieWithRestHttpException( $ex ); } - $this->statsRecordTiming( 'ApiVisualEditor.ParsoidClient.transformWikitext', $startTime ); + $this->statsRecordTiming( 'ApiVisualEditor_ParsoidClient_transformWikitext_seconds', $startTime ); return $response; } diff --git a/includes/ApiVisualEditor.php b/includes/ApiVisualEditor.php index 8e5fff378b..94b29245ee 100644 --- a/includes/ApiVisualEditor.php +++ b/includes/ApiVisualEditor.php @@ -45,7 +45,7 @@ use MessageLocalizer; use Wikimedia\Assert\Assert; use Wikimedia\ParamValidator\ParamValidator; -use Wikimedia\Stats\IBufferingStatsdDataFactory; +use Wikimedia\Stats\StatsFactory; class ApiVisualEditor extends ApiBase { use ApiBlockInfoTrait; @@ -72,7 +72,7 @@ public function __construct( UserOptionsLookup $userOptionsLookup, WatchlistManager $watchlistManager, ContentTransformer $contentTransformer, - IBufferingStatsdDataFactory $statsdDataFactory, + StatsFactory $statsFactory, WikiPageFactory $wikiPageFactory, IntroMessageBuilder $introMessageBuilder, PreloadedContentBuilder $preloadedContentBuilder, @@ -81,7 +81,7 @@ public function __construct( ) { parent::__construct( $main, $name ); $this->setLogger( LoggerFactory::getInstance( 'VisualEditor' ) ); - $this->setStats( $statsdDataFactory ); + $this->setStatsFactory( $statsFactory ); $this->revisionLookup = $revisionLookup; $this->tempUserCreator = $tempUserCreator; $this->userFactory = $userFactory; diff --git a/includes/ApiVisualEditorEdit.php b/includes/ApiVisualEditorEdit.php index 2c9275b49a..7ba70d3aeb 100644 --- a/includes/ApiVisualEditorEdit.php +++ b/includes/ApiVisualEditorEdit.php @@ -34,7 +34,7 @@ use Wikimedia\ObjectCache\BagOStuff; use Wikimedia\ParamValidator\ParamValidator; use Wikimedia\Rdbms\IDBAccessObject; -use Wikimedia\Stats\IBufferingStatsdDataFactory; +use Wikimedia\Stats\StatsFactory; class ApiVisualEditorEdit extends ApiBase { use ApiParsoidTrait; @@ -53,7 +53,7 @@ public function __construct( ApiMain $main, string $name, HookContainer $hookContainer, - IBufferingStatsdDataFactory $statsdDataFactory, + StatsFactory $statsFactory, PageEditStash $pageEditStash, SkinFactory $skinFactory, WikiPageFactory $wikiPageFactory, @@ -62,7 +62,7 @@ public function __construct( ) { parent::__construct( $main, $name ); $this->setLogger( LoggerFactory::getInstance( 'VisualEditor' ) ); - $this->setStats( $statsdDataFactory ); + $this->setStatsFactory( $statsFactory ); $this->hookRunner = new VisualEditorHookRunner( $hookContainer ); $this->pageEditStash = $pageEditStash; $this->skinFactory = $skinFactory; @@ -277,7 +277,9 @@ protected function storeInSerializationCache( Title $title, $wikitext ) { } $status = $ok ? 'ok' : 'failed'; - $this->getStats()->increment( "editstash.ve_serialization_cache.set_" . $status ); + $this->getStatsFactory()->getCounter( 'VE_editstash_serialization_cache_set_total' ) + ->setLabel( 'status', $status ) + ->increment(); // Also parse and prepare the edit in case it might be saved later $pageUpdater = $this->wikiPageFactory->newFromTitle( $title )->newPageUpdater( $this->getUser() ); @@ -288,7 +290,9 @@ protected function storeInSerializationCache( Title $title, $wikitext ) { $logger = LoggerFactory::getInstance( 'StashEdit' ); $logger->debug( "Cached parser output for VE content key '$key'." ); } - $this->getStats()->increment( "editstash.ve_cache_stores.$status" ); + $this->getStatsFactory()->getCounter( 'VE_editstash_cache_store_total' ) + ->setLabel( 'status', $status ) + ->increment(); return $hash; } @@ -318,7 +322,9 @@ protected function trySerializationCache( $hash ) { $value = $cache->get( $key ); $status = ( $value !== false ) ? 'hit' : 'miss'; - $this->getStats()->increment( "editstash.ve_serialization_cache.get_$status" ); + $this->getStatsFactory()->getCounter( 'VE_editstash_serialization_cache_get_total' ) + ->setLabel( 'status', $status ) + ->increment(); return $value; } From eb642320aed586c3ed7d74bd3443757e259cee3d Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Sat, 3 May 2025 16:31:46 +0300 Subject: [PATCH 306/730] Update VE core submodule to master (663f766db) New changes: f32501cda Rebaser: Remove unused/unset this.rebaserUrl c53b3704c Use wikimediaui instead of apex for rebaser and tests 994a996f0 modules.json: Add missing OOUI icon packs 191b674cb Copy align and text-align when inserting a new row d3c0547a8 Copy align and text-align to when inserting a new row 663f766db Copy valign and vertical-align when inserting a new row Localisation Updates: 2dab20911, 139b3212b Bug: T393163 Change-Id: I7b702239cc55d79cf2579b0704538683e2c6685d --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index c1183f876d..663f766dbe 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit c1183f876d1b2089e2510ef35d51a469eff003f8 +Subproject commit 663f766dbe440d6698014be1d0c6d4b8b85e0a6a From 6ed9664f9cb9e120f5a637e0d62e5f9ddc7e614a Mon Sep 17 00:00:00 2001 From: David Lynch Date: Sun, 4 May 2025 09:40:06 +0300 Subject: [PATCH 307/730] Filter out /sandbox pages from template search results Also, update the /doc filter to use endsWith since we support ES6 now. Bug: T390005 Change-Id: Idd91c4ac6705108ddb3d13e1d3131ad652899975 --- extension.json | 3 ++- i18n/ve-mw/en.json | 1 + i18n/ve-mw/qqq.json | 1 + .../widgets/ve.ui.MWTemplateTitleInputWidget.test.js | 7 +++++-- .../ui/widgets/ve.ui.MWTemplateTitleInputWidget.js | 10 +++++----- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/extension.json b/extension.json index 6bcfd634e2..9888cbc741 100644 --- a/extension.json +++ b/extension.json @@ -2194,7 +2194,8 @@ "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single", "visualeditor-dialogbutton-template-tooltip", "visualeditor-expandable-less", - "visualeditor-expandable-more" + "visualeditor-expandable-more", + "visualeditor-template-sandbox-subpage" ] }, "treeDiffer": { diff --git a/i18n/ve-mw/en.json b/i18n/ve-mw/en.json index 532491a8e8..2ba1167b80 100644 --- a/i18n/ve-mw/en.json +++ b/i18n/ve-mw/en.json @@ -371,6 +371,7 @@ "visualeditor-loaderror-wrongmode": "Tried to load the editor in wrong mode (data type: \"$1\", editor mode: \"$2\").", "visualeditor-settings-tool": "Page settings", "visualeditor-special-characters-group-other": "Often used", + "visualeditor-template-sandbox-subpage": "sandbox", "visualeditor-template-tools-definition.json": "null", "visualeditor-templatesused-tool": "Templates used", "visualeditor-title-error": "Invalid title.", diff --git a/i18n/ve-mw/qqq.json b/i18n/ve-mw/qqq.json index 3a696956cc..09a396b927 100644 --- a/i18n/ve-mw/qqq.json +++ b/i18n/ve-mw/qqq.json @@ -394,6 +394,7 @@ "visualeditor-loaderror-wrongmode": "Error message shown when loading the editor.\n\nParameters:\n* $1 and $2: names for editing modes (not translateable)", "visualeditor-settings-tool": "Text of tool in the toolbar the lets users set specific page settings.\n{{Identical|Page settings}}", "visualeditor-special-characters-group-other": "Label of the special character group shown if the wiki has visualeditor-quick-access-characters.json set up.", + "visualeditor-template-sandbox-subpage": "{{notranslate}}\nSub-page of template where sandbox testing is done by convention on the wiki.", "visualeditor-template-tools-definition.json": "{{notranslate}}\n{{ignored}}\n\nJSON object mapping context items to templates. See ve.ui.MWDefinedTransclusionContextItem.js.", "visualeditor-templatesused-tool": "Label of toolbar tool that shows templates used on this page.", "visualeditor-title-error": "Error displayed when a page title is invalid.", diff --git a/modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js b/modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js index 2583b34263..35f8afef66 100644 --- a/modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js +++ b/modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js @@ -6,7 +6,8 @@ QUnit.module( 've.ui.MWTemplateTitleInputWidget', ve.test.utils.newMwEnvironment( { messages: { // Force `templateDataInstalled` condition - 'templatedata-doc-subpage': '(templatedata-doc-subpage)' + 'templatedata-doc-subpage': '(templatedata-doc-subpage)', + 'visualeditor-template-sandbox-subpage': '(template-sandbox-subpage)' }, // Config will be reset by newMwEnvironment's teardown beforeEach: function () { @@ -160,7 +161,9 @@ { pageid: 101, title: 'B' }, { pageid: 102, title: 'A' }, // Documentation subpage, expected to be stripped - { pageid: 103, title: 'A/(templatedata-doc-subpage)', index: 2 } + { pageid: 103, title: 'A/(templatedata-doc-subpage)', index: 2 }, + // Sandbox subpage, expected to be stripped + { pageid: 104, title: 'A/(template-sandbox-subpage)', index: 3 } ], redirects: [ // Alternative source for indexes, expected to be copied to the pages array diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js index 03fa822b1e..eaffec84f1 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js @@ -122,13 +122,13 @@ ve.ui.MWTemplateTitleInputWidget.prototype.getLookupRequest = function () { // T54448: Filter out matches which end in /doc or as configured on-wiki if ( templateDataInstalled ) { - newPages = newPages.filter( - // Can't use String.endsWith() as that's ES6. - // page.title.endsWith( templateDocPageFragment ) - ( page ) => page.title.slice( -templateDocPageFragment.length ) !== templateDocPageFragment - ); + newPages = newPages.filter( ( page ) => !page.title.endsWith( templateDocPageFragment ) ); } + // T390005: Filter out matches which end in /sandbox or as configured on-wiki + const sandboxPageFragment = '/' + mw.message( 'visualeditor-template-sandbox-subpage' ).text(); + newPages = newPages.filter( ( page ) => !page.title.endsWith( sandboxPageFragment ) ); + // Ensure everything goes into the order defined by the page's index key newPages.sort( ( a, b ) => { // T366299: Avoid unstable sort. From e5d4a1d798b8792e1ce01aea411f93cf6cc750c6 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Sun, 4 May 2025 16:40:25 +0300 Subject: [PATCH 308/730] Document VisualEditorEnableVisualSectionEditing config Change-Id: I24acdb0bed90d8295a8f51f91567a100bbb03f64 --- extension.json | 1 + 1 file changed, 1 insertion(+) diff --git a/extension.json b/extension.json index 6bcfd634e2..70b1a49a56 100644 --- a/extension.json +++ b/extension.json @@ -62,6 +62,7 @@ "value": true }, "VisualEditorEnableVisualSectionEditing": { + "description": "When opened from a section edit link, only show that section in the editor (like in the wikitext editor). Can be boolean true for desktop and mobile, or 'mobile' for just mobile.", "value": "mobile" }, "VisualEditorEnableWikitext": { From c37ffaa7640a948beece50c657e140053e97e705 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Sun, 4 May 2025 15:34:52 +0000 Subject: [PATCH 309/730] build: Updating mediawiki/mediawiki-codesniffer to 47.0.0 Change-Id: Ib62bd5ae15908082cdad0b976fff6d9ec36939a1 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index c26c89b34c..b4ac963a62 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "require-dev": { - "mediawiki/mediawiki-codesniffer": "46.0.0", + "mediawiki/mediawiki-codesniffer": "47.0.0", "mediawiki/mediawiki-phan-config": "0.15.1", "mediawiki/minus-x": "1.1.3", "php-parallel-lint/php-console-highlighter": "1.0.0", From 60f401b3ab56664dc9c27d48fe31c7108cdf7bf2 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 5 May 2025 09:38:25 +0200 Subject: [PATCH 310/730] Localisation updates from https://translatewiki.net. Change-Id: Id31a7211ed752e25df3387babf4b1855ec35de11 --- i18n/ve-mw/hoc-latn.json | 8 +++++--- i18n/ve-mw/ko.json | 2 +- i18n/ve-mw/lb.json | 2 +- i18n/ve-mw/pt-br.json | 1 + i18n/ve-mw/tr.json | 2 +- i18n/ve-wmf/pt-br.json | 1 + 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/i18n/ve-mw/hoc-latn.json b/i18n/ve-mw/hoc-latn.json index 08ca19e96f..65c338a37e 100644 --- a/i18n/ve-mw/hoc-latn.json +++ b/i18n/ve-mw/hoc-latn.json @@ -1,9 +1,11 @@ { "@metadata": { - "authors": [] + "authors": [ + "Singkiring57" + ] }, "visualeditor-ca-createlocaldescriptionsource": "Local Kajisartal Namsaṅ olmisaè", "visualeditor-ca-createsource": "Namsaṅ baiè", - "visualeditor-ca-editsource": "Namsaṅ olruaaè", - "visualeditor-ca-editsource-section": "Namsaṅ olruaaè" + "visualeditor-ca-editsource": "Namsaṅ olùraaè", + "visualeditor-ca-editsource-section": "Namsaṅ olùraaè" } diff --git a/i18n/ve-mw/ko.json b/i18n/ve-mw/ko.json index 16b475c23d..3077dae9a1 100644 --- a/i18n/ve-mw/ko.json +++ b/i18n/ve-mw/ko.json @@ -319,7 +319,7 @@ "visualeditor-rebase-client-export-start": "내보내기...", "visualeditor-rebase-client-import": "가져오기", "visualeditor-rebase-client-import-name": "문서 제목", - "visualeditor-rebase-client-title-help": "저장하기 전에 변경 사항을 검토할 수 있습니다.", + "visualeditor-rebase-client-title-help": "저장하기 전에 변경사항을 검토할 수 있습니다.", "visualeditor-recreate": "문서가 편집을 시작한 이후로 삭제되었습니다. 다시 만드려면 \"$1\"을 누르세요.", "visualeditor-redirect-description": "$1 문서로 넘겨주기", "visualeditor-savedialog-identify-anon": "더 이상 로그인되어 있지 않습니다. 계속하면 당신의 IP 주소가 이 문서의 편집 역사에 기록됩니다.", diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index ea699a80b3..06650b0f2d 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -106,7 +106,7 @@ "visualeditor-dialog-meta-languages-name-label": "Sprooch", "visualeditor-dialog-meta-languages-readonlynote": "Dëst ass eng Lëscht vu Säiten an anere Sproochen déi mat dëser verlinkt sinn; déi kënne fir den Ament nëmmen am Quellmodus oder op Wikidata geännert ginn.", "visualeditor-dialog-meta-languages-section": "Sproochen", - "visualeditor-dialog-meta-settings-displaytitle": "Titel dee gewise gëtt", + "visualeditor-dialog-meta-settings-displaytitle": "Titel, dee gewise gëtt", "visualeditor-dialog-meta-settings-hiddencat-help": "Dir kënnt verhënneren datt dës Kategorie an der Lëscht vun de Kategorien op Membersäite gewise gëtt. Dat ass nëtzlech fir Kategorien déi fir Auteure vun Interessi sinn awer net fir déi meescht Lieser, zum Beispill Säiten op deenen eng Illustratioun feelt.", "visualeditor-dialog-meta-settings-hiddencat-label": "Verstoppt Kategorie", "visualeditor-dialog-meta-settings-index-default": "Standard", diff --git a/i18n/ve-mw/pt-br.json b/i18n/ve-mw/pt-br.json index f550fbd29e..b9aa83be34 100644 --- a/i18n/ve-mw/pt-br.json +++ b/i18n/ve-mw/pt-br.json @@ -7,6 +7,7 @@ "Cainamarques", "Dianakc", "Duke of Wikipädia", + "EGobi", "Eduardo Addad de Oliveira", "Eduardoaddad", "Elival", diff --git a/i18n/ve-mw/tr.json b/i18n/ve-mw/tr.json index 582e404d83..6e3a3c82b2 100644 --- a/i18n/ve-mw/tr.json +++ b/i18n/ve-mw/tr.json @@ -380,7 +380,7 @@ "visualeditor-savedialog-title-save": "Değişikliklerinizi kaydedin", "visualeditor-section-body-placeholder": "Yeni bölüm", "visualeditor-section-title-placeholder": "Konu", - "visualeditor-loaderror-revidconflict": "Sunucu tarafından döndürülen düzeltme kimlikleri eşleşmiyor (belge: $1, meta veri: $2)", + "visualeditor-loaderror-revidconflict": "Sunucu tarafından döndürülen düzeltme kimlikleri eşleşmiyor (belge: $1, üstveri: $2)", "visualeditor-loaderror-wrongmode": "Düzenleyiciyi yanlış modda yüklemeyi denedi (veri türü: \"$1\", düzenleyici modu: \"$2\").", "visualeditor-settings-tool": "Sayfa ayarları", "visualeditor-special-characters-group-other": "Sık kullanılan", diff --git a/i18n/ve-wmf/pt-br.json b/i18n/ve-wmf/pt-br.json index c7fc3a36b8..96c81c2a9a 100644 --- a/i18n/ve-wmf/pt-br.json +++ b/i18n/ve-wmf/pt-br.json @@ -5,6 +5,7 @@ "555", "Cainamarques", "Dianakc", + "EGobi", "Felipe L. Ewald", "Fúlvio", "He7d3r", From 6e1fa5742233a3acea9e7cec5b689addacf3305f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 6 May 2025 09:29:11 +0200 Subject: [PATCH 311/730] Localisation updates from https://translatewiki.net. Change-Id: If3bad8970ec77bd9e039d2b9b471209c92b7d3e0 --- i18n/ve-mw/cbk-zam.json | 7 ++++--- i18n/ve-mw/ja.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/i18n/ve-mw/cbk-zam.json b/i18n/ve-mw/cbk-zam.json index 596cdffd4a..503cbd01d0 100644 --- a/i18n/ve-mw/cbk-zam.json +++ b/i18n/ve-mw/cbk-zam.json @@ -2,10 +2,11 @@ "@metadata": { "authors": [ "Aristorkle", + "Noooote", "WikiEditor50" ] }, - "visualeditor-ca-createsource": "Hace codigo", - "visualeditor-ca-editsource": "Revisa con el codigo", - "visualeditor-ca-editsource-section": "revisa codigo" + "visualeditor-ca-createsource": "Hace source", + "visualeditor-ca-editsource": "Hace edit con el source", + "visualeditor-ca-editsource-section": "hace edit el source" } diff --git a/i18n/ve-mw/ja.json b/i18n/ve-mw/ja.json index c70d83a488..5a7379413c 100644 --- a/i18n/ve-mw/ja.json +++ b/i18n/ve-mw/ja.json @@ -355,7 +355,7 @@ "visualeditor-rebase-client-title-help": "保存する前に変更を確認してください。", "visualeditor-recreate": "このページはあなたが編集を始めた後に削除されました。もう一度作成するには「$1」を押してください。", "visualeditor-redirect-description": "$1 へのリダイレクト", - "visualeditor-savedialog-identify-anon": "代わりに匿名利用者としてこのページに保存しますか? このページの編集履歴にあなたの IP アドレスが記録されます。", + "visualeditor-savedialog-identify-anon": "あなたはログインしていません。続けると、このページの編集履歴にあなたの IP アドレスが記録されます。", "visualeditor-savedialog-identify-user": "あなたは現在[[User:$1|$1]]としてログインしています。この編集を保存すると、編集内容はこのアカウントと関連付けられます。", "visualeditor-savedialog-keyboard-shortcut-submit": "$1 を押すと編集を保存できます", "visualeditor-savedialog-label-publish-short": "投稿", From 63dca2604200d6dad8fe20e48c73cc72ef93e979 Mon Sep 17 00:00:00 2001 From: Martin Urbanec Date: Tue, 6 May 2025 10:21:20 +0200 Subject: [PATCH 312/730] refactor: Adapt to new AbuseFilter class names The patches linked via Depends-On refactor how AbuseFilter handles the loading of the blocked domains list. Adapt to those changes in VE as well. Depends-On: Iafcf3e9e47960472694cf0853c0dbf3ea3a067da Depends-On: I21d2f9357df761cacdc9c55bfc84ff865b322a04 Bug: T393240 Change-Id: Id52c5c677a093f22b02c5371d5df0187b2e05404 --- editcheck/includes/ApiEditCheckReferenceUrl.php | 17 ++++++++++++----- extension.json | 3 ++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/editcheck/includes/ApiEditCheckReferenceUrl.php b/editcheck/includes/ApiEditCheckReferenceUrl.php index a76a92bde7..37e7f51e24 100644 --- a/editcheck/includes/ApiEditCheckReferenceUrl.php +++ b/editcheck/includes/ApiEditCheckReferenceUrl.php @@ -5,7 +5,8 @@ use MediaWiki\Api\ApiBase; use MediaWiki\Api\ApiMain; use MediaWiki\Api\ApiUsageException; -use MediaWiki\Extension\AbuseFilter\BlockedDomainStorage; +use MediaWiki\Extension\AbuseFilter\BlockedDomains\BlockedDomainValidator; +use MediaWiki\Extension\AbuseFilter\BlockedDomains\IBlockedDomainStorage; use MediaWiki\Extension\SpamBlacklist\BaseBlacklist; use MediaWiki\Registration\ExtensionRegistry; use Wikimedia\ParamValidator\ParamValidator; @@ -13,16 +14,22 @@ class ApiEditCheckReferenceUrl extends ApiBase { /** @phan-suppress-next-line PhanUndeclaredTypeProperty */ - private ?BlockedDomainStorage $blockedDomainStorage; + private ?IBlockedDomainStorage $blockedDomainStorage; + + /** @phan-suppress-next-line PhanUndeclaredTypeProperty */ + private ?BlockedDomainValidator $blockedDomainValidator; public function __construct( ApiMain $main, string $name, // @phan-suppress-next-line PhanUndeclaredTypeParameter - ?BlockedDomainStorage $blockedDomainStorage + ?IBlockedDomainStorage $blockedDomainStorage, + // @phan-suppress-next-line PhanUndeclaredTypeParameter + ?BlockedDomainValidator $blockedDomainValidator ) { parent::__construct( $main, $name ); $this->blockedDomainStorage = $blockedDomainStorage; + $this->blockedDomainValidator = $blockedDomainValidator; } /** @@ -44,12 +51,12 @@ public function execute() { } private function isInBlockedExternalDomains( string $url ): bool { - if ( !$this->blockedDomainStorage ) { + if ( !$this->blockedDomainValidator ) { return false; } // @phan-suppress-next-line PhanUndeclaredClassMethod - $domain = $this->blockedDomainStorage->validateDomain( $url ); + $domain = $this->blockedDomainValidator->validateDomain( $url ); // @phan-suppress-next-line PhanUndeclaredClassMethod $blockedDomains = $this->blockedDomainStorage->loadComputed(); return !empty( $blockedDomains[ $domain ] ); diff --git a/extension.json b/extension.json index 6bcfd634e2..3a7b0bca05 100644 --- a/extension.json +++ b/extension.json @@ -189,7 +189,8 @@ "editcheckreferenceurl": { "class": "MediaWiki\\Extension\\VisualEditor\\EditCheck\\ApiEditCheckReferenceUrl", "optional_services": [ - "AbuseFilterBlockedDomainStorage" + "AbuseFilterBlockedDomainStorage", + "AbuseFilterBlockedDomainValidator" ] } }, From 762273256d91c42f794345a4af4e9b0a9cb426c1 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 7 May 2025 09:28:23 +0200 Subject: [PATCH 313/730] Localisation updates from https://translatewiki.net. Change-Id: I306de784a982655b5d8a58ce79d6393df5035090 --- editcheck/i18n/ko.json | 3 +++ i18n/ve-mw/cbk-zam.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/ko.json b/editcheck/i18n/ko.json index b503dec994..e07eab82c9 100644 --- a/editcheck/i18n/ko.json +++ b/editcheck/i18n/ko.json @@ -2,10 +2,13 @@ "@metadata": { "authors": [ "Markingdots", + "YeBoy371", "Ykhwong", "밥풀떼기" ] }, + "editcheck-dialog-action-no": "아니오", + "editcheck-dialog-action-yes": "예", "editcheck-dialog-addref-reject-question": "인용을 추가하지 않으신 이유는 무엇인가요?", "editcheck-dialog-addref-reject-description": "출처 인용이 누락된 이유를 다른 편집자들이 알 수 있도록 알려주세요.", "editcheck-dialog-addref-reject-irrelevant": "출처 인용과는 관련 없는 편집입니다", diff --git a/i18n/ve-mw/cbk-zam.json b/i18n/ve-mw/cbk-zam.json index 503cbd01d0..d6405e1211 100644 --- a/i18n/ve-mw/cbk-zam.json +++ b/i18n/ve-mw/cbk-zam.json @@ -8,5 +8,5 @@ }, "visualeditor-ca-createsource": "Hace source", "visualeditor-ca-editsource": "Hace edit con el source", - "visualeditor-ca-editsource-section": "hace edit el source" + "visualeditor-ca-editsource-section": "hace edit con el source" } From 59253c4ef083ef982f840f1fdfa3675de5dd94f6 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 8 May 2025 09:29:40 +0200 Subject: [PATCH 314/730] Localisation updates from https://translatewiki.net. Change-Id: I622c61749158d5fbfd7f2fd0a38eb41f7e7d73e9 --- editcheck/i18n/pt-br.json | 3 +++ i18n/ve-mw/pt-br.json | 2 ++ 2 files changed, 5 insertions(+) diff --git a/editcheck/i18n/pt-br.json b/editcheck/i18n/pt-br.json index ccf080b648..468596fc20 100644 --- a/editcheck/i18n/pt-br.json +++ b/editcheck/i18n/pt-br.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Eduardoaddad", "Fúlvio" ] }, @@ -16,6 +17,8 @@ "editcheck-dialog-addref-success-notify": "Agradecemos por adicionar uma citação!", "editcheck-dialog-addref-title": "Adicionar uma citação", "editcheck-dialog-title": "Antes de publicar", + "editcheck-copyvio-title": "Conteúdo promovido", + "editcheck-review-title": "Revisar mudanças", "tag-editcheck-reference-decline-common-knowledge": "Verificação de edição (referências) recusada (conhecimento comum)", "tag-editcheck-reference-decline-common-knowledge-description": "A referência do EditCheck foi recusada como conhecimento comum", "tag-editcheck-reference-decline-irrelevant": "Verificação de edição (referências) recusada (irrelevante)", diff --git a/i18n/ve-mw/pt-br.json b/i18n/ve-mw/pt-br.json index b9aa83be34..5be3eaaf7c 100644 --- a/i18n/ve-mw/pt-br.json +++ b/i18n/ve-mw/pt-br.json @@ -340,6 +340,8 @@ "visualeditor-preference-tabs-prefer-ve": "Sempre me dê o editor visual, se possível", "visualeditor-preference-tabs-prefer-wt": "Sempre me dê o editor de origem", "visualeditor-preference-tabs-remember-last": "Lembre-se do meu último editor", + "visualeditor-preference-collab-label": "Edição colaborativa", + "visualeditor-preference-collab-description": "Convide outros usuários para participar na sua sessão de edição no editor visual.", "visualeditor-rebase-client-export": "Exportar", "visualeditor-rebase-client-export-start": "Exportar...", "visualeditor-rebase-client-import": "Importar", From 3ddf6282765a960b0fb77cb1792e1ea75e6a0a7b Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 8 May 2025 12:26:57 +0100 Subject: [PATCH 315/730] Log element data when data-mw doesn't contain 'parts' Bug: T380432 Change-Id: If991c3f122a77873fe916368cd97f62875b0ac5b --- modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js index 5a0b174467..3104aa4a67 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js @@ -491,7 +491,12 @@ ve.dm.MWTransclusionNode.prototype.getPartsList = function () { * @return {string} Wikitext */ ve.dm.MWTransclusionNode.prototype.getWikitext = function () { - return this.constructor.static.getWikitext( this.getAttribute( 'mw' ) ); + try { + return this.constructor.static.getWikitext( this.getAttribute( 'mw' ) ); + } catch ( e ) { + // Temporary logging for T380432 + throw new Error( 'Failed to generate wikitext for MWTransclusionNode: ' + JSON.stringify( this.element ) ); + } }; /* Registration */ From 4eaa50a9a8fbf4664028205793675326ce401f88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Sun, 11 May 2025 00:06:21 +0200 Subject: [PATCH 316/730] Recognize wikilinks with generated href, make their target uneditable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow the link model to handle links with generated href, so that they can be diffed nicely. This also makes them editable, which we probably don't want, so tweak the UI to prevent that. While my main goal is improving interoperability with the Translate extension, this change also affects links with template-generated hrefs in normal wikitext, which seems like an improvement to me. ve.dm.MWInternalLinkAnnotation: * Add 'mw:ExpandedAttrs' and 'mw:Annotation/…' to allowed RDFa types. Check that if 'mw:ExpandedAttrs' is present, then the only expanded attribute is 'href', otherwise alienate the node after all. Add a 'hasGeneratedHref' attribute to note when this happens. * Implement isEditable(), return false when it has generated href. This affects the presence of the "Edit" button in link context. ve.ui.MWLinkCommand: * Override VE core link commands to make them non-executable when a link annotation is selected that has generated href. This affects the toolbar link tool and the Ctrl+K trigger. Together with the model changes, this makes those links' target impossible to change in the interface (but the link annotation can still be removed). ve.ui.MWInternalLinkContextItem: * Add a message shown when the link is not editable (to explain to the user why the "Edit" button is missing). Bug: T393837 Change-Id: I81c8f76ee875e3229d6161d0be9407ae5488152a --- extension.json | 2 + i18n/ve-mw/en.json | 1 + i18n/ve-mw/qqq.json | 1 + .../ve.dm.MWInternalLinkAnnotation.js | 39 ++++++++++++- modules/ve-mw/tests/dm/ve.dm.mwExample.js | 46 +++++++++++++++ .../ve-mw/ui/commands/ve.ui.MWLinkCommand.js | 56 +++++++++++++++++++ .../ve.ui.MWInternalLinkContextItem.js | 9 +++ .../ve.ui.MWInternalLinkContextItem.less | 4 ++ 8 files changed, 155 insertions(+), 3 deletions(-) create mode 100644 modules/ve-mw/ui/commands/ve.ui.MWLinkCommand.js diff --git a/extension.json b/extension.json index 70b1a49a56..31c90dc532 100644 --- a/extension.json +++ b/extension.json @@ -1621,6 +1621,7 @@ "modules/ve-mw/ui/ve.ui.MWSurface.js", "modules/ve-mw/ui/ve.ui.MWExtensionWindow.js", "modules/ve-mw/ui/ve.ui.MWWikitextTransferRegistry.js", + "modules/ve-mw/ui/commands/ve.ui.MWLinkCommand.js", "modules/ve-mw/ui/commands/ve.ui.MWWikitextWarningCommand.js", "modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.js", "modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js", @@ -1912,6 +1913,7 @@ "messages": [ "pubmedurl", "rfcurl", + "visualeditor-linkcontext-uneditable", "visualeditor-linkinspector-button-link-external", "visualeditor-linkinspector-button-link-internal", "visualeditor-linkinspector-convert-link-isbn", diff --git a/i18n/ve-mw/en.json b/i18n/ve-mw/en.json index 532491a8e8..fc03f2f2b2 100644 --- a/i18n/ve-mw/en.json +++ b/i18n/ve-mw/en.json @@ -266,6 +266,7 @@ "visualeditor-includes-includeonly-description": "When content from this page is used by another page, the following additional content will be included here:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Learn more about partial transclusion]", "visualeditor-languages-tool": "Languages", + "visualeditor-linkcontext-uneditable": "Sorry, this link can only be edited in source mode for now.", "visualeditor-linkinspector-button-link-external": "External site", "visualeditor-linkinspector-button-link-internal": "Search internal pages", "visualeditor-linkinspector-convert-link-isbn": "Convert to ISBN link", diff --git a/i18n/ve-mw/qqq.json b/i18n/ve-mw/qqq.json index 3a696956cc..ab803b80bf 100644 --- a/i18n/ve-mw/qqq.json +++ b/i18n/ve-mw/qqq.json @@ -289,6 +289,7 @@ "visualeditor-includes-includeonly-description": "Additional explanation for a pair of <includeonly></includeonly> tags. This is followed by the content of the tags.", "visualeditor-includes-documentation": "Link to documentation displayed below each of these messages:\n* {{msg-mw|visualeditor-includes-noinclude-description}}\n* {{msg-mw|visualeditor-includes-onlyinclude-description}}\n* {{msg-mw|visualeditor-includes-includeonly-description}}", "visualeditor-languages-tool": "Tool for opening the languages links section of the meta dialog.\n{{Identical|Language}}", + "visualeditor-linkcontext-uneditable": "Message shown in the link context menu when the link target can't be edited (the 'Edit' button is not displayed).", "visualeditor-linkinspector-button-link-external": "Button label for entering an link to an external site.", "visualeditor-linkinspector-button-link-internal": "Prompt users' with assitive technologies to search an internal page", "visualeditor-linkinspector-convert-link-isbn": "Button label for converting a simple link to a ISBN magic link.", diff --git a/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js b/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js index b6cf6817b8..0f395ae16b 100644 --- a/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js +++ b/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js @@ -32,10 +32,32 @@ ve.dm.MWInternalLinkAnnotation.static.name = 'link/mwInternal'; ve.dm.MWInternalLinkAnnotation.static.matchRdfaTypes = [ 'mw:WikiLink', 'mw:MediaLink' ]; -// mw:MediaLink to non-existent files come with typeof="mw:Error" -ve.dm.MWInternalLinkAnnotation.static.allowedRdfaTypes = [ 'mw:Error', 'mw:LocalizedAttrs' ]; +ve.dm.MWInternalLinkAnnotation.static.allowedRdfaTypes = [ + // mw:MediaLink to non-existent files come with typeof="mw:Error" + 'mw:Error', + // Present on red links + 'mw:LocalizedAttrs', + // Present on any link where the target is template- or extension-generated + 'mw:ExpandedAttrs', + // (particularly generated from the Translate extension markup) + /^mw:Annotation\// +]; ve.dm.MWInternalLinkAnnotation.static.toDataElement = function ( domElements, converter ) { + let hasGeneratedHref = false; + const types = domElements[ 0 ].getAttribute( 'typeof' ) || ''; + if ( types.split( /\s+/ ).includes( 'mw:ExpandedAttrs' ) ) { + const dataMw = JSON.parse( domElements[ 0 ].getAttribute( 'data-mw' ) ); + for ( const [ attrName /* , attrValue */ ] of dataMw.attribs ) { + // Check that mw:ExpandedAttrs only contains 'href' - otherwise alienate + if ( attrName.txt === 'href' ) { + hasGeneratedHref = true; + } else { + return null; + } + } + } + const resource = domElements[ 0 ].getAttribute( 'resource' ); let targetData; @@ -48,11 +70,14 @@ ve.dm.MWInternalLinkAnnotation.static.toDataElement = function ( domElements, co ); if ( !targetData.isInternal ) { + if ( hasGeneratedHref ) { + return null; + } return ve.dm.MWExternalLinkAnnotation.static.toDataElement( domElements, converter ); } } - return { + const data = { type: this.name, attributes: { title: targetData.title, @@ -60,6 +85,14 @@ ve.dm.MWInternalLinkAnnotation.static.toDataElement = function ( domElements, co lookupTitle: this.getLookupTitle( targetData.title ) } }; + if ( hasGeneratedHref ) { + data.attributes.hasGeneratedHref = true; + } + return data; +}; + +ve.dm.MWInternalLinkAnnotation.prototype.isEditable = function () { + return !this.getAttribute( 'hasGeneratedHref' ); }; /** diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js b/modules/ve-mw/tests/dm/ve.dm.mwExample.js index 699f3516e0..93287ead41 100644 --- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js +++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js @@ -1817,6 +1817,52 @@ ve.dm.mwExample.domToDataCases = { { type: '/internalList' } ] }, + 'internal link with template-generated href': { + body: '

x

', + base: ve.dm.mwExample.baseUri, + data: [ + { type: 'paragraph' }, + [ + 'x', + [ { + type: 'link/mwInternal', + attributes: { + hasGeneratedHref: true, + title: 'Test', + normalizedTitle: 'Test', + lookupTitle: 'Test' + } + } ] + ], + { type: '/paragraph' }, + { type: 'internalList' }, + { type: '/internalList' } + ], + fromDataBody: '

x

' + }, + 'internal link with extension-generated href': { + body: '

x

', + base: ve.dm.mwExample.baseUri, + data: [ + { type: 'paragraph' }, + [ + 'x', + [ { + type: 'link/mwInternal', + attributes: { + hasGeneratedHref: true, + title: 'Test', + normalizedTitle: 'Test', + lookupTitle: 'Test' + } + } ] + ], + { type: '/paragraph' }, + { type: 'internalList' }, + { type: '/internalList' } + ], + fromDataBody: '

x

' + }, 'mw:MediaLink (exists)': { body: '

Media:Exists.png

', data: [ diff --git a/modules/ve-mw/ui/commands/ve.ui.MWLinkCommand.js b/modules/ve-mw/ui/commands/ve.ui.MWLinkCommand.js new file mode 100644 index 0000000000..14942f9155 --- /dev/null +++ b/modules/ve-mw/ui/commands/ve.ui.MWLinkCommand.js @@ -0,0 +1,56 @@ +/*! + * @copyright See AUTHORS.txt + */ + +/** + * Command to open the link inspector, unless the currently selected link's target is uneditable. + * + * @class + * @extends ve.ui.Command + * + * @constructor + */ +ve.ui.MWLinkCommand = function VeUiMwLinkCommand() { + // Parent constructor + ve.ui.MWLinkCommand.super.apply( this, arguments ); +}; + +/* Inheritance */ + +OO.inheritClass( ve.ui.MWLinkCommand, ve.ui.Command ); + +/* Methods */ + +/** + * @inheritdoc + */ +ve.ui.MWLinkCommand.prototype.isExecutable = function ( fragment ) { + if ( !ve.ui.MWLinkCommand.super.prototype.isExecutable.apply( this, arguments ) ) { + return false; + } + + const anns = fragment.getAnnotations( true ); + for ( const ann of anns.getAnnotationsByName( 'link/mwInternal' ).get() ) { + if ( ann.getAttribute( 'hasGeneratedHref' ) ) { + return false; + } + } + + return true; +}; + +/* Registration */ + +// Override VE core link commands +ve.ui.commandRegistry.register( + new ve.ui.MWLinkCommand( + 'link', 'window', 'open', + { args: [ 'link' ], supportedSelections: [ 'linear' ] } + ) +); +ve.ui.commandRegistry.register( + new ve.ui.MWLinkCommand( + 'linkNoExpand', 'window', 'open', + { args: [ 'link', { noExpand: true } ], supportedSelections: [ 'linear' ] } + ) +); diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js b/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js index 18680f5bc0..32b5307804 100644 --- a/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js +++ b/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js @@ -127,6 +127,15 @@ ve.ui.MWInternalLinkContextItem.prototype.renderBody = function () { this.context ); this.$body.empty().append( $body ); + if ( this.model.getAttribute( 'hasGeneratedHref' ) ) { + const warning = new OO.ui.MessageWidget( { + type: 'warning', + inline: true, + classes: [ 've-ui-mwInternalLinkContextItem-hasGeneratedHref' ], + label: ve.msg( 'visualeditor-linkcontext-uneditable' ) + } ); + this.$body.prepend( warning.$element ); + } if ( !this.context.isMobile() ) { this.$body.append( this.$labelLayout ); } diff --git a/modules/ve-mw/ui/styles/contextitems/ve.ui.MWInternalLinkContextItem.less b/modules/ve-mw/ui/styles/contextitems/ve.ui.MWInternalLinkContextItem.less index 04a8b3c766..23ad971dd2 100644 --- a/modules/ve-mw/ui/styles/contextitems/ve.ui.MWInternalLinkContextItem.less +++ b/modules/ve-mw/ui/styles/contextitems/ve.ui.MWInternalLinkContextItem.less @@ -7,6 +7,10 @@ @import 'mediawiki.skin.variables.less'; .ve-ui-mwInternalLinkContextItem { + &-hasGeneratedHref { + margin-bottom: 0.7em; + } + .ve-ui-linearContextItem-body { overflow: auto; white-space: normal; From fe16fd73cf531e41c14c378082b4a05a3e433458 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 12 May 2025 09:37:43 +0200 Subject: [PATCH 317/730] Localisation updates from https://translatewiki.net. Change-Id: Ia033eced0e40665810df113eb29e0ecadb31bb38 --- i18n/ve-mw/api/sr-ec.json | 1 + i18n/ve-mw/bs.json | 1 + i18n/ve-mw/ext.json | 4 ++-- i18n/ve-mw/hr.json | 1 + i18n/ve-mw/ms.json | 6 +++++- i18n/ve-mw/mwlanguagevariant/ms.json | 27 +++++++++++++------------ i18n/ve-mw/mwlanguagevariant/sr-ec.json | 1 + i18n/ve-mw/qqq.json | 1 + i18n/ve-mw/sh-latn.json | 1 + i18n/ve-mw/sr-ec.json | 1 + i18n/ve-wmf/sr-ec.json | 1 + 11 files changed, 29 insertions(+), 16 deletions(-) diff --git a/i18n/ve-mw/api/sr-ec.json b/i18n/ve-mw/api/sr-ec.json index 96edab79e9..3a7834f8e0 100644 --- a/i18n/ve-mw/api/sr-ec.json +++ b/i18n/ve-mw/api/sr-ec.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aca", "Acamicamacaraca", "BadDog", "Kizule", diff --git a/i18n/ve-mw/bs.json b/i18n/ve-mw/bs.json index 9f09e5d168..49ccb4ee39 100644 --- a/i18n/ve-mw/bs.json +++ b/i18n/ve-mw/bs.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aca", "BadDog", "DzWiki", "KWiki", diff --git a/i18n/ve-mw/ext.json b/i18n/ve-mw/ext.json index 76d42b34f4..a653b393b4 100644 --- a/i18n/ve-mw/ext.json +++ b/i18n/ve-mw/ext.json @@ -10,7 +10,7 @@ "tooltip-ca-ve-edit": "Edital esta página", "visualeditor-ca-createlocaldescriptionsource": "Añidil huenti de descrición local", "visualeditor-ca-createsource": "Crial huenti", - "visualeditor-ca-editsource": "Dital cóigu", - "visualeditor-ca-editsource-section": "dital cóigu", + "visualeditor-ca-editsource": "Adital cóigu", + "visualeditor-ca-editsource-section": "adital cóigu", "visualeditor-descriptionpagelink": "Project:EitolVisual" } diff --git a/i18n/ve-mw/hr.json b/i18n/ve-mw/hr.json index 33bea3b86a..534154d9b7 100644 --- a/i18n/ve-mw/hr.json +++ b/i18n/ve-mw/hr.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aca", "BadDog", "Bugoslav", "Ex13", diff --git a/i18n/ve-mw/ms.json b/i18n/ve-mw/ms.json index 92585269ca..228c5b3c21 100644 --- a/i18n/ve-mw/ms.json +++ b/i18n/ve-mw/ms.json @@ -48,7 +48,7 @@ "visualeditor-changedesc-mwcategory-sortkey-changed": "Kunci isihan ditukar daripada $1 kepada $2", "visualeditor-changedesc-mwcategory-sortkey-set": "Kunci isih ditetapkan kepada $1", "visualeditor-changedesc-mwcategory-sortkey-unset": "Kunci isih dinyahtetap daripada $1", - "visualeditor-changedesc-mwlanguagevariant": "Markup varian bahasa diubah", + "visualeditor-changedesc-mwlanguagevariant": "Penanda kelainan bahasa diubah", "visualeditor-changedesc-mwredirect": "Sasaran lencongan diubah daripada $1 kepada $2", "visualeditor-changedesc-mwtransclusion": "Parameter templat diubah", "visualeditor-desc": "Alat sunting visual untuk MediaWiki", @@ -67,6 +67,7 @@ "visualeditor-dialog-media-info-artist": "Dimuat naik oleh $1", "visualeditor-dialog-media-info-audiofile": "Fail audio", "visualeditor-dialog-media-info-created": "Dicipta pada $1", + "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "Pengarang: $1", "visualeditor-dialog-media-info-moreinfo": "Maklumat lanjut", "visualeditor-dialog-media-info-readmore": "Ketahui lebih lanjut", @@ -81,12 +82,14 @@ "visualeditor-dialog-media-search-tab-search": "Cari", "visualeditor-dialog-media-search-tab-upload": "Muat naik", "visualeditor-dialog-media-size-section": "Saiz gambar", + "visualeditor-dialog-media-size-section-help": "Anda boleh menetapkan berapa besar item media muncul pada laman tersebut. Media itu sepatutnya hampir selalu bersaiz biasa, kerana saiz tersuai akan mengganggu reka letak laman untuk pembaca dan menjadikannya tidak terlaras.", "visualeditor-dialog-media-title": "Tetapan media", "visualeditor-dialog-media-type-border": "Pinggir", "visualeditor-dialog-media-type-frame": "Bingkai", "visualeditor-dialog-media-type-frameless": "Tanpa bingkai", "visualeditor-dialog-media-type-none": "Asas", "visualeditor-dialog-media-type-section": "Jenis gambar", + "visualeditor-dialog-media-type-section-help": "Anda boleh menetapkan cara item media muncul pada laman tersebut. Tetapan ini sepatutnya merupakan format lakaran kenit untuk kekal terlaras dengan laman lain untuk hampir semua kes.", "visualeditor-dialog-media-type-thumb": "Gambar kenit", "visualeditor-dialog-media-upload": "Muat naik", "visualeditor-dialog-meta-advancedsettings-label": "Tetapan selanjutnya", @@ -163,6 +166,7 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Teruskan sahaja", "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Ruangan|Ruangan-ruangan}} yang diperlukan masih tertinggal", "visualeditor-dialog-transclusion-required-parameter-is-blank": "Adakah anda betul-betul mahu teruskan tanpa mengisi {{PLURAL:$2|ruangan|ruangan-ruangan}} $1?", + "visualeditor-dialog-transclusion-see-template": "Templat tersebut dijana oleh pengguna dan mungkin kekurangan penerangan yang lengkap. Mungkin terdapat maklumat tambahan tentang [[$2|laman templat ini]].", "visualeditor-dialogbutton-media-tooltip": "Imej dan media", "visualeditor-dialogbutton-template-tooltip": "Templat", "visualeditor-editconflict": "Suntingan anda tidak dapat disimpan disebabkan percanggahan antara suntingan. Adakah {{GENDER:|anda}} ingin menyelesaikan percanggahan ini secara manual?", diff --git a/i18n/ve-mw/mwlanguagevariant/ms.json b/i18n/ve-mw/mwlanguagevariant/ms.json index 0e85502df3..5eabb2fcd3 100644 --- a/i18n/ve-mw/mwlanguagevariant/ms.json +++ b/i18n/ve-mw/mwlanguagevariant/ms.json @@ -3,19 +3,20 @@ "authors": [ "Anakmalaysia", "Encikmelur", + "Hakimi97", "Jeluang Terluang" ] }, - "visualeditor-mwlanguagevariant-disabled": "Penukaran varian dimatikan", - "visualeditor-mwlanguagevariant-filter": "Varian-varian ditapis kepada $1", + "visualeditor-mwlanguagevariant-disabled": "Penukaran kelainan dimatikan", + "visualeditor-mwlanguagevariant-filter": "Kelainan-kelainan ditapis kepada $1", "visualeditor-mwlanguagevariant-name": "Nama bahasa: $1", - "visualeditor-mwlanguagevariant-oneway": "Penukaran satu hala: $1", + "visualeditor-mwlanguagevariant-oneway": "Penukaran sehala: $1", "visualeditor-mwlanguagevariant-twoway": "Penukaran bahasa: $1", - "visualeditor-mwlanguagevariant-unknown": "Varian bahasa", - "visualeditor-mwlanguagevariantcontextitem-flag-describe": "Ini ialah peraturan yang telah ditetapkan.", - "visualeditor-mwlanguagevariantcontextitem-flag-hidden": "Ini ialah peraturan tersembunyi.", + "visualeditor-mwlanguagevariant-unknown": "Kelainan bahasa", + "visualeditor-mwlanguagevariantcontextitem-flag-describe": "Peraturan ini ialah peraturan yang telah ditetapkan.", + "visualeditor-mwlanguagevariantcontextitem-flag-hidden": "Peraturan ini ialah peraturan tersembunyi.", "visualeditor-mwlanguagevariantcontextitem-flag-title": "Peraturan ini akan mempengaruhi tajuk halaman.", - "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Kod bahasa", + "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Kod bahasa", "visualeditor-mwlanguagevariantcontextitem-rule-invalid-language-label": "Tidak sah", "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "Bahasa", "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "Sumber", @@ -24,10 +25,10 @@ "visualeditor-mwlanguagevariantcontextitem-title-disabled": "Penukaran kelainan dihentikan", "visualeditor-mwlanguagevariantcontextitem-title-filter": "Tapisan kelainan", "visualeditor-mwlanguagevariantcontextitem-title-name": "Nama bahasa", - "visualeditor-mwlanguagevariantcontextitem-title-oneway": "Peraturan pertukaran satu hala", + "visualeditor-mwlanguagevariantcontextitem-title-oneway": "Peraturan penukaran sehala", "visualeditor-mwlanguagevariantcontextitem-title-twoway": "Peraturan penukaran bahasa", "visualeditor-mwlanguagevariantcontextitem-title-unknown": "Kelainan bahasa", - "visualeditor-mwlanguagevariantinspector-disabled-placeholder": "Teks dilindungi daripada penukaran varian", + "visualeditor-mwlanguagevariantinspector-disabled-placeholder": "Teks dilindungi daripada penukaran kelainan", "visualeditor-mwlanguagevariantinspector-filter-langs-label": "Bahasa", "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "Kod bahasa", "visualeditor-mwlanguagevariantinspector-filter-text-label": "Kandungan", @@ -35,11 +36,11 @@ "visualeditor-mwlanguagevariantinspector-oneway-add-button": "Tambah kes baharu", "visualeditor-mwlanguagevariantinspector-oneway-clear-button": "Gugurkan kes", "visualeditor-mwlanguagevariantinspector-oneway-from-text-placeholder": "Teks sumber", - "visualeditor-mwlanguagevariantinspector-oneway-to-text-placeholder": "Teks varian", - "visualeditor-mwlanguagevariantinspector-title-disabled": "Penukaran varian dimatikan", - "visualeditor-mwlanguagevariantinspector-title-filter": "Penapis varian", + "visualeditor-mwlanguagevariantinspector-oneway-to-text-placeholder": "Teks kelainan", + "visualeditor-mwlanguagevariantinspector-title-disabled": "Penukaran kelainan bahasa dimatikan", + "visualeditor-mwlanguagevariantinspector-title-filter": "Penapis kelainan", "visualeditor-mwlanguagevariantinspector-title-name": "Nama bahasa", - "visualeditor-mwlanguagevariantinspector-title-oneway": "Peraturan penukaran satu hala", + "visualeditor-mwlanguagevariantinspector-title-oneway": "Peraturan penukaran sehala", "visualeditor-mwlanguagevariantinspector-title-twoway": "Peraturan penukaran bahasa", "visualeditor-mwlanguagevariantinspector-twoway-add-button": "Tambah kes baru", "visualeditor-mwlanguagevariantinspector-twoway-clear-button": "Gugurkan kes", diff --git a/i18n/ve-mw/mwlanguagevariant/sr-ec.json b/i18n/ve-mw/mwlanguagevariant/sr-ec.json index 4673d15e21..b95e175527 100644 --- a/i18n/ve-mw/mwlanguagevariant/sr-ec.json +++ b/i18n/ve-mw/mwlanguagevariant/sr-ec.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aca", "Acamicamacaraca", "BadDog", "Milicevic01" diff --git a/i18n/ve-mw/qqq.json b/i18n/ve-mw/qqq.json index 3a696956cc..1f03a2b525 100644 --- a/i18n/ve-mw/qqq.json +++ b/i18n/ve-mw/qqq.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aca", "Amire80", "Ans", "Arjunaraoc", diff --git a/i18n/ve-mw/sh-latn.json b/i18n/ve-mw/sh-latn.json index 715a12359e..60e6bc1d79 100644 --- a/i18n/ve-mw/sh-latn.json +++ b/i18n/ve-mw/sh-latn.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aca", "BadDog", "Conquistador", "Matěj Suchánek", diff --git a/i18n/ve-mw/sr-ec.json b/i18n/ve-mw/sr-ec.json index 0f344ebea4..a1e06b623b 100644 --- a/i18n/ve-mw/sr-ec.json +++ b/i18n/ve-mw/sr-ec.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aca", "Acamicamacaraca", "BadDog", "Kizule", diff --git a/i18n/ve-wmf/sr-ec.json b/i18n/ve-wmf/sr-ec.json index 1efc3a734c..10719b9c36 100644 --- a/i18n/ve-wmf/sr-ec.json +++ b/i18n/ve-wmf/sr-ec.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aca", "Acamicamacaraca", "BadDog", "Milicevic01", From 949b7d69e00d6df416f760affe1ec6b5f582578e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 13 May 2025 09:29:24 +0200 Subject: [PATCH 318/730] Localisation updates from https://translatewiki.net. Change-Id: Ib51f53ffca90e57f32ef86b4f7cf437a4280f63c --- i18n/ve-mw/ps.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 01f7e82f13..bfe870a410 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -42,13 +42,17 @@ "visualeditor-categories-tool": "وېشنيزې", "visualeditor-changedesc-mwcategory-sortkey-changed": "ترتيبولو کونجي له $1 څخه $2 ته بدله شوې", "visualeditor-changedesc-mwcategory-sortkey-set": "ترتيبولو کونجي $1 ته ټاکل شوې", + "visualeditor-changedesc-mwtransclusion": "د کينډۍ پاراميترونه بدل شول", "visualeditor-desc": "د مېډياويکي لپاره ليدنيز سمونگر", "visualeditor-descriptionpagelink": "Project:ليدنيز سمونگر", + "visualeditor-dialog-extension-abandonedit": "ايا تاسو ډاډه ياست چې دا سکالو د خپلو بدلونو پلي کولو پرته وتړئ؟", + "visualeditor-dialog-media-alttext-checkbox": "نوينگ د ځايناستي ليک په توگه وکاروئ", "visualeditor-dialog-media-alttext-section": "انډوليز متن", "visualeditor-dialog-media-change-image": "انځور بدلول", "visualeditor-dialog-media-choose-image": "دا انځور کارول", "visualeditor-dialog-media-content-description-link": "(د څرگندونې مخ)", "visualeditor-dialog-media-content-filename": "د دوتنې نوم", + "visualeditor-dialog-media-content-section": "نيونگ", "visualeditor-dialog-media-goback": "پر شا", "visualeditor-dialog-media-info-artist": "$1 پورته کړی", "visualeditor-dialog-media-info-audiofile": "غږيزه دوتنه", @@ -75,6 +79,7 @@ "visualeditor-dialog-media-upload": "پورته کول", "visualeditor-dialog-meta-advancedsettings-label": "پرمختللې امستنې", "visualeditor-dialog-meta-advancedsettings-section": "پرمختللې امستنې", + "visualeditor-dialog-meta-categories-addcategory-label": "دې مخ ته وېشنيزه ورگډول", "visualeditor-dialog-meta-categories-category": "وېشنيزه", "visualeditor-dialog-meta-categories-data-label": "وېشنيزې", "visualeditor-dialog-meta-categories-defaultsort-label": "په تلواليزه توگه دا مخ اوډل", @@ -83,6 +88,7 @@ "visualeditor-dialog-meta-categories-input-movecategorylabel": "دا وېشنيزه دلته خوځول", "visualeditor-dialog-meta-categories-input-newcategorylabel": "نوې وېشنيزه", "visualeditor-dialog-meta-categories-input-placeholder": "يوه وېشنيزه ورگډول", + "visualeditor-dialog-meta-categories-missing": "دا وېشنيزه څرگنداوی مخ نه لري.", "visualeditor-dialog-meta-categories-options": "خوښنې", "visualeditor-dialog-meta-categories-section": "وېشنيزې", "visualeditor-dialog-meta-categories-sortkey-label": "دا مخ لکه څنگه چې نومېدلی هماغسې اوډل", @@ -112,10 +118,16 @@ "visualeditor-dialog-meta-settings-toc-disable": "هېڅکله", "visualeditor-dialog-meta-settings-toc-force": "تل", "visualeditor-dialog-meta-settings-toc-label": "نيوليک ښکاره کول", + "visualeditor-dialog-meta-templatesused-noresults": "هيڅ کينډۍ ونه موندل شوه.", "visualeditor-dialog-meta-title": "خوښنې", + "visualeditor-dialog-table-collapsed": "پيل‌ پرځېدلی", + "visualeditor-dialog-table-collapsible": "پرځېدلو وړ", "visualeditor-dialog-table-sortable": "اوډون وړ", + "visualeditor-dialog-table-wikitable": "سکښتلی (ويکي‌لښتيال)", "visualeditor-dialog-template-title": "کينډۍ", "visualeditor-dialog-transclusion-action-save": "خوندي کول", + "visualeditor-dialog-transclusion-template-title-nonexistent": "دا کينډۍ نشته.", + "visualeditor-dialog-transclusion-add-wikitext": "ويکي‌ليک ورگډول", "visualeditor-dialog-transclusion-add-param-save": "ورگډول", "visualeditor-dialog-transclusion-add-template": "کينډۍ ورگډول", "visualeditor-dialog-transclusion-add-template-save": "ورگډول", From 57d9debf631e72b1a26533aba80f6861793cebba Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Tue, 13 May 2025 14:18:16 -0400 Subject: [PATCH 319/730] eslint: Use modern profile name, not dash-based alias Change-Id: If04ad64c4df34d494859f43fd5d67d2e2f425802 --- modules/ve-mw/tests/.eslintrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/tests/.eslintrc.json b/modules/ve-mw/tests/.eslintrc.json index fde962120d..c9a008e6e9 100644 --- a/modules/ve-mw/tests/.eslintrc.json +++ b/modules/ve-mw/tests/.eslintrc.json @@ -1,7 +1,7 @@ { "root": true, "extends": [ - "wikimedia/client-common", + "wikimedia/client/common", "wikimedia/language/es2018", "wikimedia/mediawiki", "wikimedia/jquery", From 0eaa859889c52ad1fdb17d97c135213b6367b85c Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 14 May 2025 09:36:07 +0200 Subject: [PATCH 320/730] Localisation updates from https://translatewiki.net. Change-Id: I03c4c166d9ae5903df90d8968870fa613aa68c89 --- i18n/ve-mw/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 8fdeb62145..8bb44d2253 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -350,7 +350,7 @@ "visualeditor-recreate": "Sivu on poistettu sillä aikaa kun muokkasit sitä. Luo sivu uudelleen painamalla ”$1”.", "visualeditor-redirect-description": "Ohjaus sivulle $1", "visualeditor-savedialog-identify-anon": "Et ole enää kirjautuneena sisään. Jos jatkat, IP-osoitteesi kirjataan tämän sivun muutoshistoriaan.", - "visualeditor-savedialog-identify-temp": "Käytät tällä hetkellä väliaikaista käyttäjänimeä $1. Jos jatkat, muokkauksesi liitetään tähän käyttäjänimeen.", + "visualeditor-savedialog-identify-temp": "Käytät tällä hetkellä tilapäistä tunnusta $1. Jos jatkat, muokkauksesi liitetään tähän käyttäjänimeen.", "visualeditor-savedialog-identify-user": "Olet kirjautunut käyttäjänä [[User:$1|$1]]. Jos jatkat, muokkauksesi liitetään tähän tunnukseen.", "visualeditor-savedialog-keyboard-shortcut-submit": "Tallenna muutokset painamalla $1.", "visualeditor-savedialog-label-publish-short": "Julkaise", From dda6cd1469e9ba6e9eb8cb0afd8384faf74d2118 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 15 May 2025 09:29:19 +0200 Subject: [PATCH 321/730] Localisation updates from https://translatewiki.net. Change-Id: I0d0bc23a8f4290f8ffedff40f727a35b8259e034 --- i18n/ve-mw/yua.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/i18n/ve-mw/yua.json b/i18n/ve-mw/yua.json index faaf4cdd15..8ed5f2a542 100644 --- a/i18n/ve-mw/yua.json +++ b/i18n/ve-mw/yua.json @@ -1,8 +1,10 @@ { "@metadata": { "authors": [ + "Juanchuy0", "Lorenzoitza" ] }, + "visualeditor-ca-editsource": "k'ex le koodigo'", "visualeditor-ca-editsource-section": "k'ex le koodigo'" } From 0e1f34b061bbd1ce2a2168259b367478806603fc Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 15 May 2025 16:34:36 +0100 Subject: [PATCH 322/730] Update VE core submodule to master (3db917d19) New changes: fa86a456f eslint: Use modern profile name, not dash-based alias 7a511bef3 Update treeDiffer.js to 1.1.1 Localisation Updates: 22ed01616, 549802528, 55ed0b3ab Local changes: * Add back-compat file for treeDiffer, using the same patter as OOJS in core. Change-Id: Iff69fddaf2ce0b122c3c7611ab337c2ae1765b43 --- extension.json | 3 ++- lib/ve | 2 +- modules/ve-mw/treeDiffer-global.js | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 modules/ve-mw/treeDiffer-global.js diff --git a/extension.json b/extension.json index 57f4471dd2..9faef9b35c 100644 --- a/extension.json +++ b/extension.json @@ -2201,7 +2201,8 @@ }, "treeDiffer": { "scripts": [ - "lib/ve/lib/treeDiffer/treeDiffer-dist.js" + "lib/ve/lib/treeDiffer/treeDiffer-dist.js", + "modules/ve-mw/treeDiffer-global.js" ] }, "diffMatchPatch": { diff --git a/lib/ve b/lib/ve index 663f766dbe..3db917d196 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 663f766dbe440d6698014be1d0c6d4b8b85e0a6a +Subproject commit 3db917d1960c14fea1c42c6d73ee733e5ab13266 diff --git a/modules/ve-mw/treeDiffer-global.js b/modules/ve-mw/treeDiffer-global.js new file mode 100644 index 0000000000..85004e28d5 --- /dev/null +++ b/modules/ve-mw/treeDiffer-global.js @@ -0,0 +1,2 @@ +// Back-compat: Export module as global +window.treeDiffer = module.exports; From 89cdbe86102c0ccdb5b7c3b09aaf5ce2ac9820c9 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 15 May 2025 17:48:05 +0100 Subject: [PATCH 323/730] EditCheck: Connect temporary toolbar to onToolbarResize handler This allows the target to keep target padding updated when in the pre-save mode. Change-Id: I0f291179bb0c1752d82e02aa89c4c4835a88caba --- editcheck/modules/controller.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index d487659236..df30b28d80 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -383,6 +383,10 @@ Controller.prototype.setupToolbar = function ( target ) { target.toolbar.$element.before( reviewToolbar.$element ); target.toolbar = reviewToolbar; + reviewToolbar.connect( target, { + resize: 'onToolbarResize' + } ); + reviewToolbar.initialize(); this.originalToolbar = toolbar; From 6495bb5c4694adce1ca8c9dd6957ad439db69b48 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 15 May 2025 19:06:15 +0100 Subject: [PATCH 324/730] Update VE core submodule to master (1a9828897) New changes: 1a9828897 Follow-up Id0e40a4: Place selection overlays underneath other local overlays Bug: T394096 Change-Id: Ia335f082de03df49e1947acbbcc6340bbee34a1a --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 3db917d196..1a98288970 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 3db917d1960c14fea1c42c6d73ee733e5ab13266 +Subproject commit 1a98288970c8ad7d78d58e41f4183ad5ea40148a From e231bf01f265282f510d889002756a2238a1a999 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 16 May 2025 10:07:02 +0200 Subject: [PATCH 325/730] Localisation updates from https://translatewiki.net. Change-Id: I1d88be1256dda2ba82c876224262793022fe0405 --- i18n/ve-mw/de.json | 1 + i18n/ve-mw/fi.json | 1 + i18n/ve-mw/{hak.json => hak-latn.json} | 3 +-- i18n/ve-mw/it.json | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) rename i18n/ve-mw/{hak.json => hak-latn.json} (91%) diff --git a/i18n/ve-mw/de.json b/i18n/ve-mw/de.json index 12c4477d55..3f9a259162 100644 --- a/i18n/ve-mw/de.json +++ b/i18n/ve-mw/de.json @@ -269,6 +269,7 @@ "visualeditor-includes-includeonly-description": "Wenn Inhalt von dieser Seite von einer anderen Seite verwendet wird, wird der folgende zusätzliche Inhalt hier aufgenommen:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Erfahre mehr über partielle Tranklusion]", "visualeditor-languages-tool": "Sprachen", + "visualeditor-linkcontext-uneditable": "Entschuldigung, dieser Link kann derzeit nur im Quelltextmodus bearbeitet werden.", "visualeditor-linkinspector-button-link-external": "Externe Seite", "visualeditor-linkinspector-button-link-internal": "Interne Seiten suchen", "visualeditor-linkinspector-convert-link-isbn": "In einen ISBN-Link konvertieren", diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 8bb44d2253..dc56124a4c 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -272,6 +272,7 @@ "visualeditor-includes-includeonly-description": "Kun tällä sivulla olevaa sisältöä käytetään toisella sivulla, seuraava sisältö tullaan lisäksi sisällyttämään tähän kohtaan:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Lisätietoja osittaisesta sisällytyksestä]", "visualeditor-languages-tool": "Kielet", + "visualeditor-linkcontext-uneditable": "Pahoittelut, tätä linkkiä voi muokata tällä hetkellä vain wikitekstitilassa.", "visualeditor-linkinspector-button-link-external": "Ulkoinen sivusto", "visualeditor-linkinspector-button-link-internal": "Hae sisäisiä sivuja", "visualeditor-linkinspector-convert-link-isbn": "Muunna ISBN-linkiksi", diff --git a/i18n/ve-mw/hak.json b/i18n/ve-mw/hak-latn.json similarity index 91% rename from i18n/ve-mw/hak.json rename to i18n/ve-mw/hak-latn.json index 862efc851e..332214b98d 100644 --- a/i18n/ve-mw/hak.json +++ b/i18n/ve-mw/hak-latn.json @@ -1,8 +1,7 @@ { "@metadata": { "authors": [ - "Hakka", - "唐吉訶德的侍從" + "Winston Sung" ] }, "tooltip-ca-ve-edit": "Phiên-siá pún-ya̍p", diff --git a/i18n/ve-mw/it.json b/i18n/ve-mw/it.json index 1b58e95147..c72dd5781e 100644 --- a/i18n/ve-mw/it.json +++ b/i18n/ve-mw/it.json @@ -253,6 +253,7 @@ "visualeditor-formatdropdown-format-mw-heading6": "Sottotitolo 4", "visualeditor-generating-wikitext-progress": "Genera wikitesto", "visualeditor-languages-tool": "Lingue", + "visualeditor-linkcontext-uneditable": "Spiacenti, attualmente questo collegamento può essere modificato solo in modalità sorgente.", "visualeditor-linkinspector-button-link-external": "Sito esterno", "visualeditor-linkinspector-button-link-internal": "Cerca nelle pagine interne", "visualeditor-linkinspector-convert-link-isbn": "Converti in collegamento ISBN", From d0df4101b98828c3b97c5fe7f5ee9043397ec623 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 19 May 2025 09:39:40 +0200 Subject: [PATCH 326/730] Localisation updates from https://translatewiki.net. Change-Id: I4658ea94cd980593fb797f561b9a811dcac437e1 --- editcheck/i18n/fi.json | 6 +-- editcheck/i18n/sr-el.json | 28 ++++++++++++++ i18n/ve-mw/ar.json | 1 + i18n/ve-mw/az.json | 1 + i18n/ve-mw/ce.json | 5 +++ i18n/ve-mw/cko.json | 10 +++++ i18n/ve-mw/gl.json | 1 + i18n/ve-mw/he.json | 1 + i18n/ve-mw/ia.json | 1 + i18n/ve-mw/sr-el.json | 79 +++++++++++++++++++++++++++++++-------- i18n/ve-mw/tr.json | 1 + i18n/ve-mw/vi.json | 2 +- i18n/ve-wmf/sr-el.json | 7 +++- 13 files changed, 121 insertions(+), 22 deletions(-) create mode 100644 editcheck/i18n/sr-el.json create mode 100644 i18n/ve-mw/cko.json diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 2331fae941..1b848ccb6c 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -16,13 +16,13 @@ "editcheck-dialog-addref-reject-uncertain": "En ole varma, minkä lähdeviitteen lisäisin", "editcheck-dialog-addref-reject-other": "Muu syy", "editcheck-dialog-addref-success-notify": "Kiitos lähdeviitteen lisäämisestä!", - "editcheck-dialog-addref-title": "Lisää viite", - "editcheck-dialog-title": "Ennen julkaisua", + "editcheck-dialog-addref-title": "Lisää lähdeviite", + "editcheck-dialog-title": "Ennen julkaisemista", "editcheck-copyvio-title": "Liitetty sisältö", "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Se on usein sekä tekijänoikeusrikkomus että plagiarismia.", "editcheck-review-title": "Tarkasta muutokset", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", - "tag-editcheck-reference-decline-common-knowledge-description": "Muokkaustarkistimen ehdotus hylättiin, koska lisäys on yleistä tietoa", + "tag-editcheck-reference-decline-common-knowledge-description": "Muokkaustarkistimen ehdotus hylättiin, koska lisäystä pidettiin yleisenä tietona", "tag-editcheck-reference-decline-irrelevant": "Muokkaustarkistin (lähteet) hylätty (epäolennaista)", "tag-editcheck-reference-decline-irrelevant-description": "Muokkaustarkistimen ehdotus hylättiin, koska sitä pidettiin epäolennaisena", "tag-editcheck-reference-decline-other": "Muokkaustarkistin (lähteet) hylätty (muu syy)", diff --git a/editcheck/i18n/sr-el.json b/editcheck/i18n/sr-el.json new file mode 100644 index 0000000000..efd567bf55 --- /dev/null +++ b/editcheck/i18n/sr-el.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [] + }, + "editcheck-dialog-action-no": "Ne", + "editcheck-dialog-action-yes": "Da", + "editcheck-dialog-addref-description": "Pomozite čitaocima da znaju odakle informacija dolazi dodavanjem reference.", + "editcheck-dialog-addref-reject-question": "Zašto ne dodajete referencu?", + "editcheck-dialog-addref-reject-description": "Ostali urednici rado bi znali zašto ste odlučili ne dodati referencu.", + "editcheck-dialog-addref-reject-irrelevant": "Referenciranje je nebitno za moju izmenu", + "editcheck-dialog-addref-reject-common-knowledge": "Informacija koju dodajem je opšte poznata", + "editcheck-dialog-addref-reject-uncertain": "Ne znam koju referencu navesti", + "editcheck-dialog-addref-reject-other": "Drugo", + "editcheck-dialog-addref-success-notify": "Hvala na dodavanju reference!", + "editcheck-dialog-addref-title": "Dodavanje reference", + "editcheck-dialog-title": "Pre objavljivanja", + "editcheck-copyvio-title": "Nalepljen sadržaj", + "editcheck-copyvio-description": "Opšte pravilo je da se ne kopira tekst iz drugih izvora. Kopiranje teksta je kršenje autorskih prava i plagijat.", + "editcheck-review-title": "Pregled izmena", + "tag-editcheck-reference-decline-common-knowledge": "Edit Check referenciranje odbačeno (opšte znanje)", + "tag-editcheck-reference-decline-common-knowledge-description": "Referenciranje je odbačeno zato što je u pitanju opšte znanje", + "tag-editcheck-reference-decline-irrelevant": "Edit Check referenciranje odbačeno (nerelevantno)", + "tag-editcheck-reference-decline-irrelevant-description": "Referenciranje je nebitno za konkretnu izmenu", + "tag-editcheck-reference-decline-other": "Edit Check referenciranje odbačeno (drugo)", + "tag-editcheck-reference-decline-other-description": "Referenciranje je odbačeno iz nekog drugog razloga", + "tag-editcheck-reference-decline-uncertain": "Edit Check referenciranje odbačeno (nisam siguran/na)", + "tag-editcheck-reference-decline-uncertain-description": "Referenciranje je odbačeno iz neznanja" +} diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index 6eac71d10b..dff6bb8f83 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -279,6 +279,7 @@ "visualeditor-includes-includeonly-description": "عندما يتم استخدام محتوى من هذه الصفحة بواسطة صفحة أخرى ، سيتم تضمين المحتوى الإضافي التالي هنا:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion تعرف على المزيد حول التحويل الجزئي]", "visualeditor-languages-tool": "اللغات", + "visualeditor-linkcontext-uneditable": "عذراً، لا يمكن تعديل هذا الرابط إلا في وضع المصدر في الوقت الحالي.", "visualeditor-linkinspector-button-link-external": "موقع خارجي", "visualeditor-linkinspector-button-link-internal": "ابحث عن الصفحةالداخلية", "visualeditor-linkinspector-convert-link-isbn": "تحويل إلى الرابط ISBN", diff --git a/i18n/ve-mw/az.json b/i18n/ve-mw/az.json index 0c6feae799..3fc3d86f30 100644 --- a/i18n/ve-mw/az.json +++ b/i18n/ve-mw/az.json @@ -256,6 +256,7 @@ "visualeditor-includes-includeonly-description": "Bu səhifədəki məzmun başqa bir səhifə tərəfindən istifadə edildikdə, aşağıdakı əlavə məzmun buraya daxil olacaq:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Qismən keçid haqqında daha çox məlumat əldə edin]", "visualeditor-languages-tool": "Dillər", + "visualeditor-linkcontext-uneditable": "Təəssüf ki, hal-hazırda bu keçidin redaktəsi yalnız vikimətn rejimində mümkündür.", "visualeditor-linkinspector-button-link-external": "Xarici sayt", "visualeditor-linkinspector-button-link-internal": "Daxili səhifələrdə axtar", "visualeditor-linkinspector-convert-link-isbn": "ISBN keçidinə çevir", diff --git a/i18n/ve-mw/ce.json b/i18n/ve-mw/ce.json index 62bfd3b766..c3623a324d 100644 --- a/i18n/ve-mw/ce.json +++ b/i18n/ve-mw/ce.json @@ -10,6 +10,9 @@ "collabpad-import-subtitle": "Импортйина $1 чуьра", "collabpad": "CollabPad", "tooltip-ca-ve-edit": "ХӀара агӀо тайар", + "tooltip-ca-ve-edit-local": "Локалан гайтаран агӀо редактци йар", + "tooltip-ca-ve-create": "Кхолла хӀара агӀо", + "tooltip-ca-ve-create-local": "Кхолла локалан гайтаран агӀо", "tooltip-ca-editsource": "АгӀонан йуьхьанцара текст нисйан", "tooltip-ca-createsource": "\"Йуьхьанцара текст\" редактор чохь агӀо кхолла", "visualeditor-advancedsettings-tool": "Кхин тӀе гӀирс нисбар", @@ -35,6 +38,7 @@ "visualeditor-categories-tool": "Категореш", "visualeditor-changedesc-mwcategory-sortkey-changed": "ДӀасакъастаран догӀа хийцина $1 → $2", "visualeditor-changedesc-mwcategory-sortkey-set": "ДӀасакъастаран догӀана хӀоттина $1 маьӀна", + "visualeditor-changedesc-mwcategory-sortkey-unset": "ДӀасакъастаран догӀа $1 дуьйна хӀоттийна дац", "visualeditor-changedesc-mwlanguagevariant": "Меттан вариантан билгалйаккхар хийцина", "visualeditor-changedesc-mwredirect": "ДӀасахьажоран Ӏалашо хийцина $1 → $2", "visualeditor-changedesc-mwtransclusion": "Кепан параметраш хийцина", @@ -305,6 +309,7 @@ "visualeditor-preference-tabs-prefer-ve": "Гуттара а аьтто белахь бӀаьра редактор схьайелла", "visualeditor-preference-tabs-prefer-wt": "Гуттара а схьайелла йуьхьанцара текстан редактор", "visualeditor-preference-tabs-remember-last": "Дагахь йита сан тӀаьххьара редактор", + "visualeditor-preference-collab-label": "Цхьаьна болх баран редакци", "visualeditor-rebase-client-export": "Экспорт", "visualeditor-rebase-client-export-start": "Экспорт...", "visualeditor-rebase-client-import": "Импорт йан", diff --git a/i18n/ve-mw/cko.json b/i18n/ve-mw/cko.json new file mode 100644 index 0000000000..bda708527f --- /dev/null +++ b/i18n/ve-mw/cko.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Biema", + "Yaw-kan" + ] + }, + "visualeditor-ca-editsource": "Kpokpo fiteeri biri n nu", + "visualeditor-ca-editsource-section": "Fifiti nu nyanbiri" +} diff --git a/i18n/ve-mw/gl.json b/i18n/ve-mw/gl.json index aded6e0fea..b7e73ae66d 100644 --- a/i18n/ve-mw/gl.json +++ b/i18n/ve-mw/gl.json @@ -256,6 +256,7 @@ "visualeditor-includes-includeonly-description": "Cando outra páxina utiliza contidos desta páxina, incluirase aquí o seguinte contido adicional:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Máis información sobre a transclusión parcial]", "visualeditor-languages-tool": "Linguas", + "visualeditor-linkcontext-uneditable": "Sentímolo, polo de agora esta ligazón só se pode editar no modo fonte.", "visualeditor-linkinspector-button-link-external": "Sitio externo", "visualeditor-linkinspector-button-link-internal": "Procurar páxinas internas", "visualeditor-linkinspector-convert-link-isbn": "Converter a ligazón de ISBN", diff --git a/i18n/ve-mw/he.json b/i18n/ve-mw/he.json index d6243dfb90..136c169d1f 100644 --- a/i18n/ve-mw/he.json +++ b/i18n/ve-mw/he.json @@ -264,6 +264,7 @@ "visualeditor-includes-includeonly-description": "כאשר תוכן מהדף הזה משמש בדף אחר, התוכן הנוסף הבא ייכלל כאן:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion מידע נוסף על הכללה חלקית]", "visualeditor-languages-tool": "שפות", + "visualeditor-linkcontext-uneditable": "מצטערים, בינתיים ניתן לערוך את הקישור הזה רק במצב \"קוד מקור\".", "visualeditor-linkinspector-button-link-external": "אתר חיצוני", "visualeditor-linkinspector-button-link-internal": "חיפוש בדפים פנימיים", "visualeditor-linkinspector-convert-link-isbn": "המרה לקישור ISBN", diff --git a/i18n/ve-mw/ia.json b/i18n/ve-mw/ia.json index 4b58813566..491b2be913 100644 --- a/i18n/ve-mw/ia.json +++ b/i18n/ve-mw/ia.json @@ -244,6 +244,7 @@ "visualeditor-includes-includeonly-description": "Quando contento de iste pagina es usate per un altere pagina, le sequente contento additional essera includite hic:", "visualeditor-includes-documentation": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Leger plus sur le transclusion partial]", "visualeditor-languages-tool": "Linguas", + "visualeditor-linkcontext-uneditable": "Iste ligamine pote solmente esser modificate con le editor de codice fonte.", "visualeditor-linkinspector-button-link-external": "Sito externe", "visualeditor-linkinspector-button-link-internal": "Cercar in paginas interne", "visualeditor-linkinspector-convert-link-isbn": "Converter in ligamine ISBN", diff --git a/i18n/ve-mw/sr-el.json b/i18n/ve-mw/sr-el.json index 0eee3dc640..c16e9c4db2 100644 --- a/i18n/ve-mw/sr-el.json +++ b/i18n/ve-mw/sr-el.json @@ -16,8 +16,13 @@ "collabpad-import-subtitle": "Uvezeno iz stranice $1", "collabpad": "CollabPad", "tooltip-ca-ve-edit": "Uredite ovu stranicu", + "tooltip-ca-ve-edit-local": "Uredi lokalnu stranicu opisa", + "tooltip-ca-ve-create": "Napravi ovu stranicu", + "tooltip-ca-ve-create-local": "Napravi lokalnu stranicu opisa", "tooltip-ca-editsource": "Uredite izvorni kod ove stranice", + "tooltip-ca-editsource-local": "Uredi izvorno lokalnu stranicu opisa", "tooltip-ca-createsource": "Napravite izvorni kod ove stranice", + "tooltip-ca-createsource-local": "Napravi izvorno lokalnu stranicu opisa", "visualeditor-advancedsettings-tool": "Napredna podešavanja", "visualeditor-autosave-modified-prompt-accept": "Nastavi uređivanje", "visualeditor-autosave-modified-prompt-message": "Ova stranica je uređena od vaše poslednje posete. {{GENDER:|Želite}} li da nastavite uređivanje stare verzije ili da započnete novo uređivanje najnovije verzije?", @@ -33,12 +38,18 @@ "visualeditor-ca-editlocaldescriptionsource": "Uredi izvor lokalnog opisa", "visualeditor-ca-editsource": "Uredi izvor", "visualeditor-ca-editsource-section": "uredi izvor", + "visualeditor-ca-editsource-section-hint": "Uredi izvor odeljka: $1", "visualeditor-categories-tool": "Kategorije", + "visualeditor-changedesc-mwcategory-sortkey-changed": "Ključ za sortiranje promenjen iz $1 u $2", + "visualeditor-changedesc-mwcategory-sortkey-set": "Ključ za sortiranje podešen na $1", + "visualeditor-changedesc-mwcategory-sortkey-unset": "Ključ za sortiranje $1 uklonjen", "visualeditor-changedesc-mwlanguagevariant": "Označavanje varijanta jezika je promenjeno", "visualeditor-changedesc-mwredirect": "Odredište preusmeravanja je promenjeno sa stranice „$1” na stranicu „$2”", "visualeditor-changedesc-mwtransclusion": "Parametri šablona su promenjeni", "visualeditor-desc": "Vizuelni uređivač za Medijaviki", "visualeditor-descriptionpagelink": "Project:Vizuelni uređivač", + "visualeditor-dialog-extension-abandonedit": "Sigurno želite da zatvorite ovaj dijalog bez čuvanja izmena?", + "visualeditor-dialog-media-alttext-checkbox": "Koristi opis kao alternativni tekst", "visualeditor-dialog-media-alttext-section": "Alternativni tekst", "visualeditor-dialog-media-alttext-section-help": "Možete da koristite ovo da biste napisali opis teksta za osobe koje ne mogu da vide stavku. Opis treba da bude dovoljan da bi razumeli svrhu i informaciju koju daje medijska stavka. Ovo je od velikog značaja slepim korisnicima i drugim osobama koje koriste softver za čitanje ekrana ili pregledače koji samo prikazuju tekst.", "visualeditor-dialog-media-change-image": "Promeni sliku", @@ -80,7 +91,7 @@ "visualeditor-dialog-meta-categories-addcategory-label": "Dodajte kategoriju ovoj stranici", "visualeditor-dialog-meta-categories-category": "Kategorija", "visualeditor-dialog-meta-categories-data-label": "Kategorije", - "visualeditor-dialog-meta-categories-defaultsort-help": "Možete da promenite način na koji se ova stranica sortira kada se prikazuje unutar kategorije postavljanjem drugog indeksa za sortiranje. Ovo se obično koristi da bi se stranice o osobama prikazivale po prezimenu, ali biti imenovane svojim imenom koje je prikazano prvo.", + "visualeditor-dialog-meta-categories-defaultsort-help": "Koristi se za sortiranje stranice u okviru kategorija. Obično se koristi kod članaka o osobama kada se vrši sortiranje po prezimenu osobe a ne imenu.", "visualeditor-dialog-meta-categories-defaultsort-label": "Podrazumevano sortiraj ovu stranicu kao", "visualeditor-dialog-meta-categories-hidden": "Ova kategorija je podešena da se ne prikazuje na stranicama na kojima je dodata.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Sakrivene kategorije", @@ -105,33 +116,33 @@ "visualeditor-dialog-meta-settings-index-default": "Podrazumevano", "visualeditor-dialog-meta-settings-index-disable": "Ne", "visualeditor-dialog-meta-settings-index-force": "Da", - "visualeditor-dialog-meta-settings-index-help": "Možete prisiliti pretraživače da navode ovu stranicu u relevantnim rezultatima ili ih prisiliti da to ne učine. Ova opcija ne utiče na pretragu ovog sajta.", + "visualeditor-dialog-meta-settings-index-help": "Možete prisiliti pretraživače da navode ovu stranicu u relevantnim rezultatima ili ih prisiliti da to ne čine. Ova opcija ne utiče na pretragu ovog sajta.", "visualeditor-dialog-meta-settings-index-label": "Dopusti pretraživačima da indeksiraju ovu stranicu", "visualeditor-dialog-meta-settings-label": "Podešavanja stranice", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Podrazumevano", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Ne", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Da", - "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Možete da nametnete prikaz dodatne kartice pored kartice „$1” na ovoj stranici koja će olakšati dodavanje novog odeljka ili ga nametnuti da se ne pojavi ako bi inače bilo drugačije.", - "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Prikazuj karticu za dodavanje novog odeljka na ovoj stranici", + "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Možete da nametnete prikaz dodatne kartice pored kartice „$1” ona će olakšati dodavanje novog odeljka ili nametnuti da se ne pojavi ako bi inače bilo drugačije.", + "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Prikazuj karticu za dodavanje novog odeljka", "visualeditor-dialog-meta-settings-nocontentconvert-help": "Možete sprečiti da se sadržaj ove stranice automatski prebacuje u druga pisma.", "visualeditor-dialog-meta-settings-nocontentconvert-label": "Ne prebacuj sadržaj na druge varijante jezika", - "visualeditor-dialog-meta-settings-noeditsection-help": "Možete da zaustavite pojavljivanje linkova za uređivanje pored pojedinačnih odeljaka u neuobičajenom slučaju kada je to prikladno.", + "visualeditor-dialog-meta-settings-noeditsection-help": "Možete onemogućiti pojavljivanje linka za uređivanje pored odeljaka u neuobičajenom slučaju kada je to prikladno.", "visualeditor-dialog-meta-settings-noeditsection-label": "Isključi linkove za uređivanje pored pojedinačnih naslova na ovoj stranici", "visualeditor-dialog-meta-settings-nogallery-help": "Možete sprečiti da ova kategorija prikazuje datoteke kao galeriju, ako je to neprikladno u ovom slučaju.", "visualeditor-dialog-meta-settings-nogallery-label": "Isključi galeriju", "visualeditor-dialog-meta-settings-notitleconvert-help": "Možete sprečiti da se naslov ove stranice automatski prebacuje u druga pisma.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Ne prebacuj naslov na druge varijante jezika", "visualeditor-dialog-meta-settings-redirect-help": "Možete od ove stranice napraviti preusmerenje, stranicu koja će automatski voditi čitaoca do druge stranice na ovom vikiju. Ovo je korisno za pogrešno upisane pojmove i alternativna imena ili pojmove. Ako je napravite, čitaoci neće videti sadržaj ove stranice.", - "visualeditor-dialog-meta-settings-redirect-label": "Preusmeri ovu stranicu na", - "visualeditor-dialog-meta-settings-redirect-placeholder": "Odredišna stranica za preusmerenje", + "visualeditor-dialog-meta-settings-redirect-label": "Preusmeri stranicu na", + "visualeditor-dialog-meta-settings-redirect-placeholder": "Odredišna stranica", "visualeditor-dialog-meta-settings-redirect-statichelp": "Možete sprečiti da se ovo preusmerenje automatski ažurira kada se stranica na koju ono vodi premesti, u vrlo retkom slučaju kada je to potrebno.", "visualeditor-dialog-meta-settings-redirect-staticlabel": "Spreči ažuriranje ovog preusmeravanja kada se odredišna stranica premesti", "visualeditor-dialog-meta-settings-section": "Podešavanja stranice", "visualeditor-dialog-meta-settings-toc-default": "Ako je potrebno", "visualeditor-dialog-meta-settings-toc-disable": "Nikad", "visualeditor-dialog-meta-settings-toc-force": "Uvek", - "visualeditor-dialog-meta-settings-toc-help": "Možete da nametnete da se sadržaj koji navodi svaki naslov na stranici pojavi na stranicama sa manje od četiri naslova ili da se uopšte ne pojavi. Podrazumevano će se pojaviti ako stranica ima četiri ili više naslova.", - "visualeditor-dialog-meta-settings-toc-label": "Prikazuj sadržaj", + "visualeditor-dialog-meta-settings-toc-help": "Možete da nametnete da se sadržaj prikazuje na stranicama sa manje od četiri naslova ili da se uopšte ne prikazuje. Podrazumevano će se pojaviti ako stranica ima četiri ili više (pod)naslova.", + "visualeditor-dialog-meta-settings-toc-label": "Prikaz sadržaja", "visualeditor-dialog-meta-templatesused-noresults": "Šabloni nisu pronađeni.", "visualeditor-dialog-meta-title": "Opcije", "visualeditor-dialog-table-collapsed": "Prvobitno skupljena", @@ -139,10 +150,28 @@ "visualeditor-dialog-table-sortable": "Mogućnost ređanja", "visualeditor-dialog-table-wikitable": "Stilizovana (vikitabela)", "visualeditor-dialog-template-title": "Šablon", + "visualeditor-dialog-transclusion-action-save": "Sačuvaj", + "visualeditor-dialog-transclusion-template-title-nonexistent": "Ovaj šablon ne postoji.", + "visualeditor-dialog-transclusion-template-widget-aria": "Pritisnite razmak da odaberite šablon.", + "visualeditor-dialog-transclusion-template-widget-aria-selected": "Pritisnite Ctrl+Del da obrišete šablon, njegove prametre i vrednosti. Pritisnite Ctrl+Shift+strelice da pomerate šablon gore ili dole.", + "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "Pritisnite Ctrl+Del da obrišete šablon, njegove prametre i vrednosti.", + "visualeditor-dialog-transclusion-add-wikitext": "Dodaj vikitekst", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "Parametar „$1” je [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated zastareo] i nije ga moguće dodati.", + "visualeditor-dialog-transclusion-add-param-error-exists-selected": "Parametar „$2” nije moguće dodati dva puta.", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 je zabranjen znak. Uklonite ga da bi dodali parametar.", + "visualeditor-dialog-transclusion-add-param-placeholder": "Naziv parametra", + "visualeditor-dialog-transclusion-add-param-save": "Dodaj", "visualeditor-dialog-transclusion-add-template": "Dodaj šablon", "visualeditor-dialog-transclusion-add-template-button": "Dodaj šablon", + "visualeditor-dialog-transclusion-add-template-save": "Dodaj", + "visualeditor-dialog-transclusion-add-undocumented-param": "Dodaj nedokumentovan parametar", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "Nazad na pretragu? Vaše izmene će biti izgubljene, i ovo ne može biti opozvano.", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "Zatvoriti uređivač šablona? Vaše izmene će biti izgubljene, i ovo ne može biti opozvano.", "visualeditor-dialog-transclusion-collapse-options": "Sakrij opcije", + "visualeditor-dialog-transclusion-confirmation-discard": "Odbaci izmene", + "visualeditor-dialog-transclusion-confirmation-reject": "Nastavi sa uređivanjem", "visualeditor-dialog-transclusion-contextitem-description": "Generisano iz: $1", + "visualeditor-dialog-transclusion-contextitem-loading": "Učitavanje…", "visualeditor-dialog-transclusion-expand-options": "Prikaži opcije", "visualeditor-dialog-transclusion-filter-hide-unused": "Sakrij neupotrebljeno", "visualeditor-dialog-transclusion-filter-no-match": "Nema pogodaka", @@ -153,7 +182,11 @@ "visualeditor-dialog-transclusion-deprecated-parameter-description": "Polje je zastarelo. $1", "visualeditor-dialog-transclusion-loading": "Učitavanje…", "visualeditor-dialog-transclusion-no-template-description": "Šablon „$1“ još uvek nema opis, ali je moguće da postoje neke informacije na [[$2|stranici šablona]].", + "visualeditor-dialog-transclusion-no-template-parameters": "Šablon nema dokumentovane parametre i možda mu nisu ni potrebni.", "visualeditor-dialog-transclusion-param-default": "Podrazumevano: $1", + "visualeditor-dialog-transclusion-param-example-long": "Primer: $1", + "visualeditor-dialog-transclusion-param-selection-aria-label": "Parametri u $1", + "visualeditor-dialog-transclusion-param-undocumented": "(nedokumentovan parametar)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Pretražite šablone", "visualeditor-dialog-transclusion-required-parameter": "Obavezno polje", "visualeditor-dialog-transclusion-required-parameter-description": "Polje je obavezno.", @@ -162,12 +195,13 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Obavezno polje nedostaje|Obavezna polja nedostaju}}", "visualeditor-dialog-transclusion-required-parameter-is-blank": "Želite li zaista da nastavite bez {{PLURAL:$2|popune|popunjavanja}} polja $1?", "visualeditor-dialog-transclusion-see-template": "Šabloni su korisnički generisani i mogu im nedostajati celokupni opisi pojedinih parametara. Dodatne informacije možda postoje na [[$2|stranici šablona]].", - "visualeditor-dialog-transclusion-title-insert-template": "Umetanje šablona", - "visualeditor-dialog-transclusion-title-insert-known-template": "Umetanje: $1", + "visualeditor-dialog-transclusion-title-insert-template": "Umetni šablon", + "visualeditor-dialog-transclusion-title-insert-known-template": "Umetni: $1", "visualeditor-dialog-transclusion-title-edit-known-template": "Uređivanje: $1", "visualeditor-dialog-transclusion-title-edit-transclusion": "Sadržina šablona", "visualeditor-dialog-transclusion-template-search": "Pretraga šablona", "visualeditor-dialog-transclusion-template-search-help": "Nađite šablon koji želite umetnuti pretragom odgovarajuće ključne reči. Šabloni koji imaju opise verovatno će bolje raditi s vizuelnim uređivačem.", + "visualeditor-dialog-transclusion-wikitext": "Vikitekst", "visualeditor-dialogbutton-media-tooltip": "Datoteka", "visualeditor-dialogbutton-template-tooltip": "Šablon", "visualeditor-editconflict": "Nije moguće sačuvati izmene zbog sukoba. Želite {{GENDER:|li}} da ručno rešite sukob?", @@ -179,6 +213,8 @@ "visualeditor-editsummary": "Ukratko opišite šta ste promenili", "visualeditor-editsummary-characters-remaining": "Broj preostalih znakova", "visualeditor-educationpopup-dismiss": "U redu, razumem", + "visualeditor-expandable-less": "Manje", + "visualeditor-expandable-more": "Više", "visualeditor-feedback-defaultmessage": "URL adresa: $1", "visualeditor-formatdropdown-format-mw-heading1": "Naslov stranice", "visualeditor-formatdropdown-format-mw-heading2": "Naslov", @@ -187,8 +223,10 @@ "visualeditor-formatdropdown-format-mw-heading5": "Podnaslov 3", "visualeditor-formatdropdown-format-mw-heading6": "Podnaslov 4", "visualeditor-generating-wikitext-progress": "Generisanje vikiteksta", + "visualeditor-includes-noinclude-start": "Početak sadržaja koji neće biti prikazan pri pozivu šablona", + "visualeditor-includes-noinclude-end": "Kraj sadržaja koji neće biti prikazan pri pozivu šablona", "visualeditor-languages-tool": "Jezici", - "visualeditor-linkinspector-button-link-external": "Spoljašnji sajt", + "visualeditor-linkinspector-button-link-external": "Veb-sajt", "visualeditor-linkinspector-button-link-internal": "Pretraga internih stranica", "visualeditor-linkinspector-convert-link-isbn": "Pretvori u ISBN link", "visualeditor-linkinspector-convert-link-pmid": "Pretvori u PMID link", @@ -196,7 +234,8 @@ "visualeditor-linkinspector-educationpopup-text": "Povežite važne reči s drugim viki člancima ili čak veb-sajtovima. Pomoći će čitaocima u razumevanju konteksta.", "visualeditor-linkinspector-educationpopup-title": "Linkovi", "visualeditor-linkinspector-illegal-title": "Nevažeći naslov stranice", - "visualeditor-linkinspector-invalid-external": "Unesite celi URL: npr. https://example.org", + "visualeditor-linkinspector-invalid-blocked": "Urednici ovog vikija su blokirali ovaj veb-sajt. Molimo probajte drugi veb-sajt.", + "visualeditor-linkinspector-invalid-external": "Unesite celi URL, npr. https://example.org", "visualeditor-linknodeinspector-add-label": "Dodaj oznaku", "visualeditor-linknodeinspector-title": "Jednostavan link", "visualeditor-magiclinknodeinspector-convert-link": "Pretvori u jednostavan link", @@ -247,20 +286,26 @@ "visualeditor-mwpredialog-convert": "Stilizovanje teksta", "visualeditor-mwpredialog-title": "Preformatiran običan tekst", "visualeditor-mwsignature-tool": "Vaš potpis", - "visualeditor-preference-newwikitexteditor-enable": "Koristi režim vikiteksta unutar vizuelnog uređivača, umesto drugog uređivača vikiteksta.", + "visualeditor-preference-visualeditor": "Omogući Vizuelni uređivač", + "visualeditor-preference-newwikitexteditor-enable": "Koristi režim vikiteksta unutar Vizuelnog uređivača, umesto pređašnjeg uređivača vikiteksta", + "visualeditor-preference-newwikitexteditor-help": "Ponekad se naziva „uređivač vikiteksta iz 2017. godine”.", "visualeditor-preference-tabs": "Režim uređivanja:", "visualeditor-preference-tabs-multi-tab": "Prikaži kartice oba uređivača", "visualeditor-preference-tabs-prefer-ve": "Uvek otvori vizuelni uređivač (ako je moguće)", "visualeditor-preference-tabs-prefer-wt": "Uvek otvori uređivač izvora", "visualeditor-preference-tabs-remember-last": "Zapamti moj poslednji uređivač", + "visualeditor-preference-collab-label": "Udruženo uređivanje", + "visualeditor-preference-collab-description": "Pozovite druge korisnike da se pridruže Vašoj uređivačkoj sesiji u Vizuelnom uređivaču", "visualeditor-rebase-client-export": "Izvoz", "visualeditor-rebase-client-export-start": "Izvezi…", "visualeditor-rebase-client-import": "Uvezi", "visualeditor-rebase-client-import-name": "Naslov stranice", + "visualeditor-rebase-client-title-help": "Moćićete da pregledate izmene pre čuvanja istih.", "visualeditor-recreate": "Stranica je u međuvremenu izbrisana. Pritisnite „$1” da biste je ponovo napravili.", "visualeditor-redirect-description": "Preusmerava na „$1”", - "visualeditor-savedialog-identify-anon": "Želite li sačuvati ovu stranicu kao anoniman korisnik? Vaša IP adresa će biti zabeležena u istoriji izmena ove stranice.", - "visualeditor-savedialog-identify-user": "Sada ste prijavljeni kao [[User:$1|$1]]. Vaše izmene će biti povezane s ovim nalogom ako sačuvate izmenu.", + "visualeditor-savedialog-identify-anon": "Niste više prijavljeni. Vaša IP adresa će biti zabeležena u istoriji izmena ove stranice.", + "visualeditor-savedialog-identify-temp": "Sada koristite privremeno korisničko ime $1. Ako nastavite Vaše izmene će biti povezane s ovim korisničkim imenom.", + "visualeditor-savedialog-identify-user": "Sada ste prijavljeni kao [[User:$1|$1]]. Ako nastavite Vaše izmene će biti povezane s ovim nalogom.", "visualeditor-savedialog-keyboard-shortcut-submit": "Pritisnite $1 da biste sačuvali izmenu.", "visualeditor-savedialog-label-publish-short": "Objavi", "visualeditor-savedialog-label-publish-short-start": "Objavi…", @@ -279,11 +324,13 @@ "visualeditor-savedialog-title-save": "Čuvanje izmena", "visualeditor-section-body-placeholder": "Novi odeljak", "visualeditor-section-title-placeholder": "Tema", + "visualeditor-loaderror-wrongmode": "Učitavanje uređivača u pogrešnom režimu (tip podataka: „$1“, uređivački režim: „$2“).", "visualeditor-settings-tool": "Podešavanja stranice", "visualeditor-special-characters-group-other": "Često korišćeni", "visualeditor-templatesused-tool": "Korišćeni šabloni", "visualeditor-title-error": "Nevažeći naslov.", "visualeditor-toload": "Uređivač će se sada učitati. Ako i dalje vidite ovu poruku nakon nekoliko sekundi, [$1 ponovo učitajte stranicu].", + "visualeditor-tooltip-non-breaking-space": "Neprelomni razmak", "visualeditor-version-label": "Verzija", "visualeditor-wikitext-progress": "Pretvaranje vikiteksta", "visualeditor-wikitext-warning": "Koristite vizuelni uređivač — [[{{MediaWiki:visualeditor-wikitext-warning-link}}|vikitekst]] ovde ne radi. U svakom trenutku možete da se prebacite na uređivanje izvora bez gubitka izmena klikom na odgovarajuće dugme.", diff --git a/i18n/ve-mw/tr.json b/i18n/ve-mw/tr.json index 6e3a3c82b2..46193bc658 100644 --- a/i18n/ve-mw/tr.json +++ b/i18n/ve-mw/tr.json @@ -282,6 +282,7 @@ "visualeditor-includes-includeonly-description": "Bu sayfadaki içerik başka bir sayfa tarafından kullanıldığında, aşağıdaki ek içerik buraya dahil edilecektir:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Yansıtma hakkında daha fazla bilgi edinin]", "visualeditor-languages-tool": "Diller", + "visualeditor-linkcontext-uneditable": "Üzgünüz, bu bağlantı şimdilik yalnızca kaynak kipinde düzenlenebilir.", "visualeditor-linkinspector-button-link-external": "Harici site", "visualeditor-linkinspector-button-link-internal": "Dahili sayfalarda ara", "visualeditor-linkinspector-convert-link-isbn": "ISBN bağlantısına dönüştür", diff --git a/i18n/ve-mw/vi.json b/i18n/ve-mw/vi.json index 7b2ad6278c..40493497da 100644 --- a/i18n/ve-mw/vi.json +++ b/i18n/ve-mw/vi.json @@ -330,7 +330,7 @@ "visualeditor-mwsignature-tool": "Chữ ký của bạn", "visualeditor-preference-visualeditor": "Bật trình chỉnh sửa trực quan", "visualeditor-preference-newwikitexteditor-enable": "Sử dụng chế độ văn bản wiki bên trong trình soạn thảo trực quan, thay vì một trình soạn thảo văn bản wiki khác", - "visualeditor-preference-newwikitexteditor-help": "Đôi khi, trình soạn thảo này còn được gọi là 'trình soạn thảo mã wiki 2017'.", + "visualeditor-preference-newwikitexteditor-help": "Đôi khi, trình soạn thảo này còn được gọi là “Trình soạn thảo mã wiki 2017”.", "visualeditor-preference-tabs": "Chế độ sửa đổi:", "visualeditor-preference-tabs-multi-tab": "Hiển thị cả hai thẻ sửa đổi", "visualeditor-preference-tabs-prefer-ve": "Luôn sử dụng trình soạn thảo trực quan nếu có thể", diff --git a/i18n/ve-wmf/sr-el.json b/i18n/ve-wmf/sr-el.json index 034442fad9..7e14aee40d 100644 --- a/i18n/ve-wmf/sr-el.json +++ b/i18n/ve-wmf/sr-el.json @@ -5,7 +5,10 @@ "Сербијана" ] }, - "tag-visualeditor": "vizuelno uređivanje", + "tag-editcheck-newcontent-description": "EditCheck misli da je nov sadržaj dodat stranici", + "tag-editcheck-newreference-description": "Referenca je dodata na stranicu", + "tag-editcheck-references-description": "EditCheck misli da je potrebna referenca", + "tag-visualeditor": "Vizuelno uređivanje", "tag-visualeditor-description": "Izmena načinjena [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuelnim uređivačem]]", "tag-visualeditor-needcheck": "Vizuelni uređivač: proveriti", "tag-visualeditor-needcheck-description": "Izmena načinjena [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizuelnim uređivačem]] gde je sistem detektovao vikitekst s mogućim neželjenim izmenama.", @@ -17,7 +20,7 @@ "visualeditor-feedback-tool": "Povratne informacije", "visualeditor-help-label": "Korisnički vodič", "visualeditor-welcomedialog-action": "Započni uređivanje", - "visualeditor-welcomedialog-content": "Ovde svako može da uređuje i poboljšava sadržaj.", + "visualeditor-welcomedialog-content": "Ovde svako može da uređuje i unapređuje sadržaj.", "visualeditor-welcomedialog-content-thanks": "Hvala vam što pomažete u širenju znanja!", "visualeditor-welcomedialog-switch": "Prebaci me na uređivanje izvora", "visualeditor-welcomedialog-switch-ve": "Prebaci me na vizuelni uređivač", From 0c1ed2aec3693925a333d5ef112d1b9ec78e8283 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 20 May 2025 09:30:21 +0200 Subject: [PATCH 327/730] Localisation updates from https://translatewiki.net. Change-Id: Ie3e7216a005df0ff97067a6b8c354d7eeab66ef2 --- i18n/ve-mw/ce.json | 2 ++ i18n/ve-wmf/ce.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/i18n/ve-mw/ce.json b/i18n/ve-mw/ce.json index c3623a324d..11e3eb2a8c 100644 --- a/i18n/ve-mw/ce.json +++ b/i18n/ve-mw/ce.json @@ -14,7 +14,9 @@ "tooltip-ca-ve-create": "Кхолла хӀара агӀо", "tooltip-ca-ve-create-local": "Кхолла локалан гайтаран агӀо", "tooltip-ca-editsource": "АгӀонан йуьхьанцара текст нисйан", + "tooltip-ca-editsource-local": "Локалан дийцаран агӀонан йуьхьанцара код хийца", "tooltip-ca-createsource": "\"Йуьхьанцара текст\" редактор чохь агӀо кхолла", + "tooltip-ca-createsource-local": "Локалан дийцаран агӀонан йуьхьанцара код кхолла", "visualeditor-advancedsettings-tool": "Кхин тӀе гӀирс нисбар", "visualeditor-annotations-default-description": "ХӀара агӀонан дакъа аннотацин диапазонан дакъа ду.", "visualeditor-annotations-default-end": "Аннотацин диапазонан чаккхе", diff --git a/i18n/ve-wmf/ce.json b/i18n/ve-wmf/ce.json index 3a21553ad3..34fdcb227f 100644 --- a/i18n/ve-wmf/ce.json +++ b/i18n/ve-wmf/ce.json @@ -5,6 +5,8 @@ ] }, "tag-editcheck-newreference-description": "АгӀонна хьажорг тӀетоьхна", + "tag-editcheck-references-activated": "Хийцамаш бар талларан (хьажоргаш) активаци йина", + "tag-editcheck-references-shown": "Хийцамаш таллар гуш ду (хьажоргаш)", "tag-visualeditor": "БӀаьран редактор", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редакторца]] дина нисдарш", "tag-visualeditor-needcheck": "БӀаьран редактор: талла", From e213cc212fc3bc504f44e9ca844037715dc6bfc2 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 16 May 2025 11:24:25 +0100 Subject: [PATCH 328/730] Use String#startsWith/endsWith Change-Id: I0104db08b595096f3abd63319e677ac693a8fa67 --- .../dm/annotations/ve.dm.MWInternalLinkAnnotation.js | 2 +- modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js | 8 ++++---- modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js | 2 +- .../ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js | 2 +- modules/ve-mw/preinit/ve.utils.parsoid.js | 6 +++--- .../inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js | 2 +- modules/ve-mw/ui/ve.ui.MWWikitextCommandRegistry.js | 2 +- modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js b/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js index 0f395ae16b..6421c12d3e 100644 --- a/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js +++ b/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js @@ -142,7 +142,7 @@ ve.dm.MWInternalLinkAnnotation.static.toDomElements = function () { ve.dm.MWInternalLinkAnnotation.static.getHref = function ( dataElement ) { let title = dataElement.attributes.title; - if ( title.slice( 0, 1 ) === '#' ) { + if ( title.startsWith( '#' ) ) { // Special case: For a newly created link to a #fragment with // no explicit title use the current title as prefix (T218581) // TODO: Pass a 'doc' param to getPageName diff --git a/modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js b/modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js index 8be7a30e37..4f08d3e4fc 100644 --- a/modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js +++ b/modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js @@ -40,10 +40,10 @@ ve.dm.MWWikitextSurfaceFragment.prototype.hasMatchingAncestor = function ( type, all = !/^([ =]|
)/.test( text ); break; case 'mwPreformatted': - all = text.slice( 0, 1 ) === ' '; + all = text.startsWith( ' ' ); break; case 'blockquote': - all = text.slice( 0, 12 ) === '
'; + all = text.startsWith( '
' ); break; case 'mwHeading': all = new RegExp( '^={' + attributes.level + '}[^=]' ).test( text ) && @@ -79,8 +79,8 @@ ve.dm.MWWikitextSurfaceFragment.prototype.wrapText = function ( before, after, p function unwrap( fragment ) { const text = fragment.getText(); if ( - ( !before || text.slice( 0, before.length ) === before ) && - ( !after || text.slice( -after.length ) === after ) + ( !before || text.startsWith( before ) ) && + ( !after || text.endsWith( after ) ) ) { fragment.unwrapText( before.length, after.length ); // Just the placeholder left, nothing meaningful was selected so just remove it diff --git a/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js b/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js index fea9c127b3..0f1c9fcd72 100644 --- a/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js +++ b/modules/ve-mw/init/ve.init.mw.ArticleTargetEvents.js @@ -52,7 +52,7 @@ ve.init.mw.ArticleTargetEvents.prototype.track = function ( topic, data ) { * @param {Object} data Additional data describing the event, encoded as an object */ ve.init.mw.ArticleTargetEvents.prototype.trackTiming = function ( topic, data ) { - if ( topic.indexOf( 'performance.system.serializeforcache' ) === 0 ) { + if ( topic.startsWith( 'performance.system.serializeforcache' ) ) { // HACK: track serializeForCache duration here, because there's no event for that this.timings.serializeForCache = data.duration; } diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index e3dc451549..8ce7544b7c 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -200,7 +200,7 @@ let wikitext = tempWikitextEditor.getValue(); // Strip trailing linebreak. Will get re-added in ArticleTarget#parseDocument. - if ( wikitext.slice( -1 ) === '\n' ) { + if ( wikitext.endsWith( '\n' ) ) { wikitext = wikitext.slice( 0, -1 ); } diff --git a/modules/ve-mw/preinit/ve.utils.parsoid.js b/modules/ve-mw/preinit/ve.utils.parsoid.js index 89a1564313..d2948d6ed1 100644 --- a/modules/ve-mw/preinit/ve.utils.parsoid.js +++ b/modules/ve-mw/preinit/ve.utils.parsoid.js @@ -90,7 +90,7 @@ mw.libs.ve.stripRestbaseIds = function ( doc ) { mw.libs.ve.reduplicateStyles = function ( element ) { Array.prototype.forEach.call( element.querySelectorAll( 'link[rel~="mw-deduplicated-inline-style"]' ), ( link ) => { const href = link.getAttribute( 'href' ); - if ( !href || href.slice( 0, 'mw-data:'.length ) !== 'mw-data:' ) { + if ( !href || !href.startsWith( 'mw-data:' ) ) { return; } const key = href.slice( 'mw-data:'.length ); @@ -203,7 +203,7 @@ mw.libs.ve.fixFragmentLinks = function ( container, docTitle, prefix ) { prefix = prefix || ''; Array.prototype.forEach.call( container.querySelectorAll( 'a[href*="#"]' ), ( el ) => { let fragment = null; - if ( el.getAttribute( 'href' )[ 0 ] === '#' ) { + if ( el.getAttribute( 'href' ).startsWith( '#' ) ) { // Legacy parser fragment = el.getAttribute( 'href' ).slice( 1 ); } else { @@ -307,7 +307,7 @@ mw.libs.ve.getTargetDataFromHref = function ( href, doc ) { const relativeHref = url.toString().replace( /^https?:/i, '' ); // Check if this matches the server's script path (as used by red links) const scriptBase = new URL( mw.config.get( 'wgScript' ), doc.baseURI ).toString().replace( /^https?:/i, '' ); - if ( relativeHref.indexOf( scriptBase ) === 0 ) { + if ( relativeHref.startsWith( scriptBase ) ) { if ( queryLength === 1 && url.searchParams.get( 'title' ) ) { return returnInternalData( url.searchParams.get( 'title' ) + url.hash ); } diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js index 3b01727a16..78696f8a15 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js @@ -111,7 +111,7 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getSetupProcess = function ( d namespaceId === wgNamespaceIds.file || namespaceId === wgNamespaceIds.category ) && - matches[ 1 ].indexOf( ':' ) !== 0 + !matches[ 1 ].startsWith( ':' ) ) ) { linkMatches = matches; diff --git a/modules/ve-mw/ui/ve.ui.MWWikitextCommandRegistry.js b/modules/ve-mw/ui/ve.ui.MWWikitextCommandRegistry.js index 366f40595f..a030923d32 100644 --- a/modules/ve-mw/ui/ve.ui.MWWikitextCommandRegistry.js +++ b/modules/ve-mw/ui/ve.ui.MWWikitextCommandRegistry.js @@ -199,7 +199,7 @@ ve.ui.wikitextCommandRegistry.register( function unlist( keepType, text ) { let matches; - if ( ( matches = text.match( /^[*#] */ ) ) && text.slice( 0, 1 ) !== keepType ) { + if ( ( matches = text.match( /^[*#] */ ) ) && !text.startsWith( keepType ) ) { return [ matches[ 0 ].length, 0 ]; } } diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js index d904819e14..b0d3a8d23b 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js @@ -104,7 +104,7 @@ ve.ui.MWAceEditorWidget.prototype.teardown = function () { ve.ui.MWAceEditorWidget.prototype.setupEditor = function () { let basePath = mw.config.get( 'wgExtensionAssetsPath', '' ); - if ( basePath.slice( 0, 2 ) === '//' ) { + if ( basePath.startsWith( '//' ) ) { // ACE uses web workers, which have importScripts, which don't like relative links. basePath = window.location.protocol + basePath; } From 6f96e5bdf3b3c481c1245ec659a95e904ca132c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Sat, 3 May 2025 15:29:49 +0300 Subject: [PATCH 329/730] ve.init.mw.ArticleTarget: Simplify error handling functions There's no reason for each of these error codes to have a separate function. Only keep the functions that do something unique. Change-Id: Idd6d839466ed8a625c17a4e7aad7b0028a9abba6 --- .../init/targets/ve.init.mw.ArticleTarget.js | 51 ++++--------------- 1 file changed, 10 insertions(+), 41 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index a76c98d57c..4895d50c4e 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -778,7 +778,7 @@ ve.init.mw.ArticleTarget.prototype.saveFail = function ( doc, saveData, code, da let handled = false; // Handle empty response if ( !data ) { - this.saveErrorEmpty(); + this.showSaveError( this.extractErrorMessages( null ) ); handled = true; } @@ -796,20 +796,22 @@ ve.init.mw.ArticleTarget.prototype.saveFail = function ( doc, saveData, code, da this.saveErrorNewUser( username ); } }, () => { - this.saveErrorUnknown( data ); + this.showSaveError( this.extractErrorMessages( data ) ); } ); handled = true; } else if ( error.code === 'editconflict' ) { this.editConflict(); handled = true; } else if ( error.code === 'pagedeleted' ) { - this.saveErrorPageDeleted(); + this.pageDeletedWarning = true; + // The API error message 'apierror-pagedeleted' is poor, make our own + this.showSaveError( mw.msg( 'visualeditor-recreate', mw.msg( 'ooui-dialog-process-continue' ) ), true ); handled = true; } else if ( error.code === 'hookaborted' ) { this.saveErrorHookAborted( data ); handled = true; } else if ( error.code === 'readonly' ) { - this.saveErrorReadOnly( data ); + this.showSaveError( this.extractErrorMessages( data ), true ); handled = true; } } @@ -828,7 +830,7 @@ ve.init.mw.ArticleTarget.prototype.saveFail = function ( doc, saveData, code, da // Handle (other) unknown and/or unrecoverable errors if ( !handled ) { - this.saveErrorUnknown( data ); + this.showSaveError( this.extractErrorMessages( data ) ); handled = true; } @@ -845,7 +847,7 @@ ve.init.mw.ArticleTarget.prototype.saveFail = function ( doc, saveData, code, da }; /** - * Show an save process error message + * Show a save process error message * * @param {string|jQuery|Node[]} msg Message content (string of HTML, jQuery object or array of * Node objects) @@ -869,14 +871,8 @@ ve.init.mw.ArticleTarget.prototype.extractErrorMessages = function ( data ) { }; /** - * Handle general save error - */ -ve.init.mw.ArticleTarget.prototype.saveErrorEmpty = function () { - this.showSaveError( this.extractErrorMessages( null ) ); -}; - -/** - * Handle hook abort save error + * Handle hook abort save error. Intended to be overridden by extensions implementing the + * VisualEditorApiVisualEditorEditPreSave hook. * * @param {Object} data API response data */ @@ -903,33 +899,6 @@ ve.init.mw.ArticleTarget.prototype.saveErrorNewUser = function ( username ) { this.showSaveError( $msg, true ); }; -/** - * Handle unknown save error - * - * @param {Object|null} data API response data - */ -ve.init.mw.ArticleTarget.prototype.saveErrorUnknown = function ( data ) { - this.showSaveError( this.extractErrorMessages( data ) ); -}; - -/** - * Handle page deleted error - */ -ve.init.mw.ArticleTarget.prototype.saveErrorPageDeleted = function () { - this.pageDeletedWarning = true; - // The API error message 'apierror-pagedeleted' is poor, make our own - this.showSaveError( mw.msg( 'visualeditor-recreate', mw.msg( 'ooui-dialog-process-continue' ) ), true ); -}; - -/** - * Handle read only error - * - * @param {Object} data API response data - */ -ve.init.mw.ArticleTarget.prototype.saveErrorReadOnly = function ( data ) { - this.showSaveError( this.extractErrorMessages( data ), true ); -}; - /** * Handle an edit conflict */ From a56769976d3d8a8587562daa338e85a158e45cb5 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 20 May 2025 21:53:07 -0500 Subject: [PATCH 330/730] Extend the mobile insert menu config so that tools can be specified Bug: T388604 Change-Id: I19e1b0b694c6fcd4b6ecc2bb58356ebdf6ee464d --- extension.json | 2 +- .../targets/ve.init.mw.MobileArticleTarget.js | 40 +++++++++++-------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/extension.json b/extension.json index 5295b5d7fc..9eb2894122 100644 --- a/extension.json +++ b/extension.json @@ -107,7 +107,7 @@ "value": false }, "VisualEditorMobileInsertMenu": { - "description": "Temporary deployment flag for adding an insert menu on mobile.", + "description": "Temporary deployment flag for adding an insert menu on mobile. If true, includes all tools. If an array of strings, includes only the listed tools.", "value": false }, "VisualEditorTabMessages": { diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index 35f6ce55ce..ab990c5297 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -75,22 +75,30 @@ ve.init.mw.MobileArticleTarget.static.toolbarGroups = [ } ]; -if ( mw.config.get( 'wgVisualEditorConfig' ).mobileInsertMenu ) { - ve.init.mw.MobileArticleTarget.static.toolbarGroups.push( - { - name: 'insert', - label: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), - title: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), - narrowConfig: { - invisibleLabel: true, - icon: 'add' - }, - include: '*', - forceExpand: [ 'transclusion', 'insertTable' ], - promote: [ 'transclusion', 'insertTable' ], - exclude: [ { group: 'format' }, { group: 'history' }, { group: 'structure' }, 'gallery', 'media', 'mwSignature' ] - } - ); +const mobileInsertMenu = mw.config.get( 'wgVisualEditorConfig' ).mobileInsertMenu; +if ( mobileInsertMenu ) { + const insertGroup = { + name: 'insert', + label: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), + title: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), + narrowConfig: { + invisibleLabel: true, + icon: 'add' + }, + // This is the default for include=*, but that's not guaranteed: + type: 'list' + }; + if ( mobileInsertMenu === true ) { + insertGroup.include = '*'; + insertGroup.forceExpand = [ 'transclusion', 'insertTable' ]; + insertGroup.promote = [ 'transclusion', 'insertTable' ]; + insertGroup.exclude = [ { group: 'format' }, { group: 'history' }, { group: 'structure' }, 'gallery', 'media', 'mwSignature' ]; + } else { + insertGroup.include = mobileInsertMenu; + // Citoid sets this up, so we need to force it for everything: + insertGroup.forceExpand = mobileInsertMenu; + } + ve.init.mw.MobileArticleTarget.static.toolbarGroups.push( insertGroup ); } ve.init.mw.MobileArticleTarget.static.trackingName = 'mobile'; From e75cb0173b88a10686aee4130c56fd9497972bf7 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 22 May 2025 09:31:16 +0200 Subject: [PATCH 331/730] Localisation updates from https://translatewiki.net. Change-Id: I26bf98eb80c748e97ae9ed51d789440ae2500179 --- editcheck/i18n/pt-br.json | 1 + i18n/ve-mw/ce.json | 4 ++++ i18n/ve-mw/ja.json | 6 +++--- i18n/ve-mw/nup.json | 2 +- i18n/ve-mw/pt-br.json | 3 +++ i18n/ve-mw/ur.json | 12 +++++++++++- i18n/ve-mw/yua.json | 6 ++++-- i18n/ve-wmf/ce.json | 4 ++++ i18n/ve-wmf/es.json | 2 ++ 9 files changed, 33 insertions(+), 7 deletions(-) diff --git a/editcheck/i18n/pt-br.json b/editcheck/i18n/pt-br.json index 468596fc20..93eb0f6659 100644 --- a/editcheck/i18n/pt-br.json +++ b/editcheck/i18n/pt-br.json @@ -18,6 +18,7 @@ "editcheck-dialog-addref-title": "Adicionar uma citação", "editcheck-dialog-title": "Antes de publicar", "editcheck-copyvio-title": "Conteúdo promovido", + "editcheck-copyvio-description": "Como regra geral, não copie textos de outras fontes. Isso geralmente constitui uma violação de direitos autorais e plágio.", "editcheck-review-title": "Revisar mudanças", "tag-editcheck-reference-decline-common-knowledge": "Verificação de edição (referências) recusada (conhecimento comum)", "tag-editcheck-reference-decline-common-knowledge-description": "A referência do EditCheck foi recusada como conhecimento comum", diff --git a/i18n/ve-mw/ce.json b/i18n/ve-mw/ce.json index 11e3eb2a8c..e74070218e 100644 --- a/i18n/ve-mw/ce.json +++ b/i18n/ve-mw/ce.json @@ -46,6 +46,7 @@ "visualeditor-changedesc-mwtransclusion": "Кепан параметраш хийцина", "visualeditor-desc": "MediaWiki-на бӀаьран редактор", "visualeditor-descriptionpagelink": "Project:БӀаьран редактор", + "visualeditor-dialog-extension-abandonedit": "Баккъалла, хьайн хийцамаш ца лелош, хӀара диалог дӀакъовла лаьий хьуна?", "visualeditor-dialog-media-alttext-checkbox": "Лелабе корта альтернативан текст санна", "visualeditor-dialog-media-alttext-section": "Альтернативин текст", "visualeditor-dialog-media-alttext-section-help": "Нагахь дакъолг гуш дацахь, лелор долу могӀамо гайта деза. Дийцар хила деза дакъолг чуьра Ӏалашо а, хаам а гойтуш. Иза чӀогӀа оьшу бӀаьрзе а, кхин болчу а экранан йа могӀамийн браузеран дешаран программа лелорхошна.", @@ -244,6 +245,7 @@ "visualeditor-includes-includeonly-description": "ХӀокху агӀонан чулацам кхечу агӀонан тӀехь лелийча, кхузахь тӀетоьхна кхин тӀе болу рогӀера чулацам хир бу:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Дакъа йукъадаккхарх лаьцна кхин дӀа а довза]", "visualeditor-languages-tool": "Меттанаш", + "visualeditor-linkcontext-uneditable": "Бехк ма билла, хӀара хьажорг цкъачунна хьостан рожехь бен хийца йиш йац.", "visualeditor-linkinspector-button-link-external": "Арахьара вебсайт", "visualeditor-linkinspector-button-link-internal": "Чоьхьара агӀонаш лахар", "visualeditor-linkinspector-convert-link-isbn": "ISBN-хьажорг тӀе хийца", @@ -252,6 +254,7 @@ "visualeditor-linkinspector-educationpopup-text": "Ладаме дешнашна кхолла вики-хьажоргаш кхечу йаззамийн а, сайтийн а тӀе. ТӀакха йешархошна йозанах кхетта атта хира ду.", "visualeditor-linkinspector-educationpopup-title": "Хьажоргаш", "visualeditor-linkinspector-illegal-title": "АгӀонан мегашбоцу корта", + "visualeditor-linkinspector-invalid-blocked": "ХӀокху вики чохь болчу наха сацам бира хӀокху сайтан тӀе хьажоргаш дӀакъовла. Дехар до, кхин хьажоргаш хьажа.", "visualeditor-linkinspector-invalid-external": "Дехар до, йуьззина URL йукъайаккха, масала https://example.org", "visualeditor-linknodeinspector-add-label": "ТӀетоха куьг", "visualeditor-linknodeinspector-title": "Атта хьажорг", @@ -312,6 +315,7 @@ "visualeditor-preference-tabs-prefer-wt": "Гуттара а схьайелла йуьхьанцара текстан редактор", "visualeditor-preference-tabs-remember-last": "Дагахь йита сан тӀаьххьара редактор", "visualeditor-preference-collab-label": "Цхьаьна болх баран редакци", + "visualeditor-preference-collab-description": "Кхин декъашхой кхайкха хьайн хийцаран сеансах дӀакхета бӀаьра редакторехь.", "visualeditor-rebase-client-export": "Экспорт", "visualeditor-rebase-client-export-start": "Экспорт...", "visualeditor-rebase-client-import": "Импорт йан", diff --git a/i18n/ve-mw/ja.json b/i18n/ve-mw/ja.json index 5a7379413c..bf2523bf9f 100644 --- a/i18n/ve-mw/ja.json +++ b/i18n/ve-mw/ja.json @@ -191,10 +191,10 @@ "visualeditor-dialog-transclusion-template-widget-aria-selected": "Ctrl+Delを押すと、テンプレートとそのパラメーターおよびその値が削除されます。Ctrl+Shift+矢印を押すと、テンプレートが上下に移動します。", "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "Ctrl+Delを押すと、テンプレートとそのパラメータおよびその値が削除されます。", "visualeditor-dialog-transclusion-add-wikitext": "wikitextの追加", - "visualeditor-dialog-transclusion-add-param-error-alias": "\"$1\" が \"$2\" としてすでに追加されています。サイドバーのオプションを確認してください。これは、[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases エイリアス]または[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label ラベル]のいずれかを使用していることが原因です。", + "visualeditor-dialog-transclusion-add-param-error-alias": "\"$1\" が \"$2\" として既に追加されています。サイドバーのオプションを確認してください。これは、[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases エイリアス]または[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label ラベル]のいずれかを使用していることが原因です。", "visualeditor-dialog-transclusion-add-param-error-deprecated": "\"$1\" は、パラメータが[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated 非推奨]とされているため、追加できません。", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "同名のパラメーター$2を2つ追加できません。", - "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "パラメータ$2はすでに使用可能です。サイドバーのオプションをご確認ください。", + "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "パラメーター $2 は既に使用可能です。サイドバーのオプションをご確認ください。", "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1は禁則文字です。パラメータを追加するには、これを削除してください。", "visualeditor-dialog-transclusion-add-param-help": "既知の場合は、[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters 文書化されていないパラメータ名]を入力します。テンプレートが知っているパラメータだけが効果を発揮することに注意してください。既存のパラメータに関する情報は、[[$1|テンプレートページ]]に記載されています。", "visualeditor-dialog-transclusion-add-param-placeholder": "パラメータ名", @@ -229,7 +229,7 @@ "visualeditor-dialog-transclusion-no-template-parameters": "このテンプレートにはパラメータの解説文書がなく、設計意図として何も参照せずに使えるようにした可能性があります。", "visualeditor-dialog-transclusion-param-default": "既定値: $1", "visualeditor-dialog-transclusion-param-example-long": "例:$1", - "visualeditor-dialog-transclusion-param-selection-aria-description": "パラメータを追加または削除するには、スペースを押します。パラメータの追加は Enter キーを押して直後にその値を編集します。すでに選択してあるパラメータの値を編集するには、Enter キーを押します。", + "visualeditor-dialog-transclusion-param-selection-aria-description": "パラメーターを追加/除去するには、スペースを押します。パラメーターの追加は Enter キーを押して直後にその値を編集します。既に選択してあるパラメーターの値を編集するには、Enter キーを押します。", "visualeditor-dialog-transclusion-param-selection-aria-label": "$1のパラメータ", "visualeditor-dialog-transclusion-param-undocumented": "(文書化されていないパラメーター)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "テンプレートを検索", diff --git a/i18n/ve-mw/nup.json b/i18n/ve-mw/nup.json index db2d1a9eb5..67ff96d0c5 100644 --- a/i18n/ve-mw/nup.json +++ b/i18n/ve-mw/nup.json @@ -8,6 +8,6 @@ "visualeditor-ca-createlocaldescriptionsource": "La yeji gbere local danbo", "visualeditor-ca-createsource": "Tswa gbere", "visualeditor-ca-editsource": "Ye gbere jin", - "visualeditor-ca-editsource-section": "eba yiyejin", + "visualeditor-ca-editsource-section": "Eba yiyejin", "visualeditor-descriptionpagelink": "Project:YiyejinCivisuals" } diff --git a/i18n/ve-mw/pt-br.json b/i18n/ve-mw/pt-br.json index 5be3eaaf7c..8a1651967e 100644 --- a/i18n/ve-mw/pt-br.json +++ b/i18n/ve-mw/pt-br.json @@ -75,6 +75,7 @@ "visualeditor-changedesc-mwtransclusion": "Parâmetros da predefinição mudaram", "visualeditor-desc": "Editor visual para o MediaWiki", "visualeditor-descriptionpagelink": "Project:Editor Visual", + "visualeditor-dialog-extension-abandonedit": "Tem certeza de que deseja fechar essa caixa de diálogo sem aplicar as alterações?", "visualeditor-dialog-media-alttext-checkbox": "Usar a legenda como texto alternativo", "visualeditor-dialog-media-alttext-section": "Texto alternativo", "visualeditor-dialog-media-alttext-section-help": "Você pode usar isto para fornecer uma descrição de texto para pessoas que não podem ver o item. A descrição deve ser boa o bastante para que eles possam entender a proposta e a informação dada pelo item de mídia. Isto é vital para usuários cegos e outras pessoas que usam um software de leitor de tela ou navegadores que exibem apenas texto.", @@ -273,6 +274,7 @@ "visualeditor-includes-includeonly-description": "Quando o conteúdo desta página é usado por outra página, o seguinte conteúdo adicional será incluído aqui:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Saiba mais sobre a transclusão parcial]", "visualeditor-languages-tool": "Idiomas", + "visualeditor-linkcontext-uneditable": "Desculpe, mas, por enquanto, esse link só pode ser editado no modo de código-fonte.", "visualeditor-linkinspector-button-link-external": "Site externo", "visualeditor-linkinspector-button-link-internal": "Pesquisar páginas internas", "visualeditor-linkinspector-convert-link-isbn": "Converter para ligação de ISBN", @@ -281,6 +283,7 @@ "visualeditor-linkinspector-educationpopup-text": "Ligue trechos importantes de outros artigos ou até de outros sites. Isto ajudará os leitores a entender o contexto.", "visualeditor-linkinspector-educationpopup-title": "Links", "visualeditor-linkinspector-illegal-title": "Título inválido", + "visualeditor-linkinspector-invalid-blocked": "Pessoas nessa wiki decidiram bloquear os links para este site. Por favor, tente outro link.", "visualeditor-linkinspector-invalid-external": "Introduzir um URL completo, por exemplo, https://exemplo.org", "visualeditor-linknodeinspector-add-label": "Adicionar rótulo", "visualeditor-linknodeinspector-title": "Ligação simples", diff --git a/i18n/ve-mw/ur.json b/i18n/ve-mw/ur.json index 0088f2da0c..eb455cae09 100644 --- a/i18n/ve-mw/ur.json +++ b/i18n/ve-mw/ur.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Abdulq", + "BukhariSaeed", "Hmfs.ind", "Muhammad Shuaib", "Noor2020", @@ -13,9 +14,14 @@ ] }, "collabpad-doctitle": "مشترکہ پیڈ: $1", + "collabpad-import-subtitle": "$1 سے درآمد شدہ", "collabpad": "مشترکہ پیڈ", "tooltip-ca-ve-edit": "صفحہ میں ترمیم کریں", + "tooltip-ca-ve-edit-local": "مقامی وضاحت کے صفحہ میں ترمیم کیجیے", + "tooltip-ca-ve-create": "اس صفحہ کو تخلیق کیجیے", + "tooltip-ca-ve-create-local": "مقامی وضاحت کا صفحہ تخلیق کریں", "tooltip-ca-editsource": "اس صفحے کے سورس کوڈ میں ترمیم کریں", + "tooltip-ca-editsource-local": "مقامی وضاحت والے صفحہ کے ماخذ میں ترمیم کریں", "tooltip-ca-createsource": "اس صفحے کا سورس کوڈ بنائیں", "visualeditor-advancedsettings-tool": "پیشرفتہ ترتیبات", "visualeditor-autosave-modified-prompt-reject": "نئی ترمیم شروع کریں", @@ -38,7 +44,7 @@ "visualeditor-dialog-media-info-artist": "$1 نے اپلوڈ کی", "visualeditor-dialog-media-info-audiofile": "صوتی فائل", "visualeditor-dialog-media-info-created": "تخلیق بذریعہ: $1", - "visualeditor-dialog-media-info-meta-artist": "فن کار: $1", + "visualeditor-dialog-media-info-meta-artist": "مصنف: $1", "visualeditor-dialog-media-info-moreinfo": "مزید معلومات", "visualeditor-dialog-media-info-readmore": "مزید پڑھیں", "visualeditor-dialog-media-info-uploaded": "اپلوڈ بتاریخ: $1", @@ -99,6 +105,7 @@ "visualeditor-dialog-transclusion-template-title-nonexistent": "یہ سانچہ موجود نہیں ہے۔", "visualeditor-dialog-transclusion-template-widget-aria": "سانچہ منتخب کرنے کے لیے اسپیس دبائیں۔", "visualeditor-dialog-transclusion-add-wikitext": "ویکی متن شامل کریں", + "visualeditor-dialog-transclusion-add-param-placeholder": "پیرامیٹر کا نام", "visualeditor-dialog-transclusion-add-param-save": "شامل کریں", "visualeditor-dialog-transclusion-add-template": "سانچہ رکھیں", "visualeditor-dialog-transclusion-add-template-button": "سانچہ رکھیں", @@ -106,10 +113,13 @@ "visualeditor-dialog-transclusion-collapse-options": "اختیارات چھپائیں", "visualeditor-dialog-transclusion-confirmation-discard": "ترامیم رد کریں", "visualeditor-dialog-transclusion-confirmation-reject": "ترمیم جاری رکھیں", + "visualeditor-dialog-transclusion-contextitem-description": "ماخوذ از: $1", "visualeditor-dialog-transclusion-contextitem-loading": "لوڈ ہو رہا ہے۔۔۔", "visualeditor-dialog-transclusion-expand-options": "اختیارات دکھائیں", "visualeditor-dialog-transclusion-filter-show-all": "سب دکھائيں", "visualeditor-dialog-transclusion-loading": "لوڈ ہو رہا ہے...", + "visualeditor-dialog-transclusion-param-example-long": "مثال: $1", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "سانچہ تلاش کریں", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "پیچھے جائیں", "visualeditor-dialog-transclusion-title-insert-template": "سانچہ درج کریں", "visualeditor-dialog-transclusion-title-insert-known-template": "اندراج: $1", diff --git a/i18n/ve-mw/yua.json b/i18n/ve-mw/yua.json index 8ed5f2a542..fdd90e3493 100644 --- a/i18n/ve-mw/yua.json +++ b/i18n/ve-mw/yua.json @@ -2,9 +2,11 @@ "@metadata": { "authors": [ "Juanchuy0", - "Lorenzoitza" + "Lorenzoitza", + "VicenteCancheM" ] }, - "visualeditor-ca-editsource": "k'ex le koodigo'", + "visualeditor-ca-createsource": "A'al tu'ux u taal", + "visualeditor-ca-editsource": "k'ex le coodigóo", "visualeditor-ca-editsource-section": "k'ex le koodigo'" } diff --git a/i18n/ve-wmf/ce.json b/i18n/ve-wmf/ce.json index 34fdcb227f..6319012af3 100644 --- a/i18n/ve-wmf/ce.json +++ b/i18n/ve-wmf/ce.json @@ -4,9 +4,13 @@ "Умар" ] }, + "tag-editcheck-newcontent-description": "EditCheck-на хетарехь, агӀонна тӀе керла чулацам тӀетоьхна .", "tag-editcheck-newreference-description": "АгӀонна хьажорг тӀетоьхна", + "tag-editcheck-references-description": "EditCheck-на хетарехь, хьажорг оьшуш хила тарло", "tag-editcheck-references-activated": "Хийцамаш бар талларан (хьажоргаш) активаци йина", + "tag-editcheck-references-activated-description": "EditCheck-на хетарехь, хьажоргаш оьшуш хила тарло, ткъа UI гайтина", "tag-editcheck-references-shown": "Хийцамаш таллар гуш ду (хьажоргаш)", + "tag-editcheck-references-shown-description": "EditCheck-на хетарехь, хьажоргаш оьшуш хила тарло, ткъа UI гайтина", "tag-visualeditor": "БӀаьран редактор", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редакторца]] дина нисдарш", "tag-visualeditor-needcheck": "БӀаьран редактор: талла", diff --git a/i18n/ve-wmf/es.json b/i18n/ve-wmf/es.json index 03eba408de..9482faec1c 100644 --- a/i18n/ve-wmf/es.json +++ b/i18n/ve-wmf/es.json @@ -9,6 +9,7 @@ "Fitoschido", "Imre", "Invadinado", + "JaimeDes", "Jdforrester", "Jduranboger", "Macofe", @@ -20,6 +21,7 @@ "아라" ] }, + "tag-editcheck-newreference-description": "Se agregó una referencia a la página.", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Modificación hecha con el [[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual]]", "tag-visualeditor-needcheck": "Edición visual: comprobar", From 55362416a20868f12f36cedc2a5ab468caa5fbae Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 22 May 2025 11:51:52 +0100 Subject: [PATCH 332/730] Update VE core submodule to master (db8f3c7bc) New changes: 8d8b629f3 Fix i18n lists, broken by localisation bot 75499445e build: Enable stylelint caching ea2dbd54a Clip tableLineContext to visible viewport Localisation Updates: 68d72f046 Bug: T394774 Change-Id: I01664f3393796ad620cc2dfda4570b5a202e9729 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 1a98288970..db8f3c7bcb 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 1a98288970c8ad7d78d58e41f4183ad5ea40148a +Subproject commit db8f3c7bcb3f33bd757cfffc95142562cca11b5b From b6c317b37f8af623084b59b48c62493f6f353431 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 22 May 2025 21:50:10 -0500 Subject: [PATCH 333/730] Update VE core submodule to master (ff61cf120) New changes: c56f4f712 Use position:static in sidebar dialog to prevent scrollbars Localisation Updates: 9d4f69416 Bug: T394094 Change-Id: If11b04c74a3d9985bf52ad88d274684f8457a100 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index db8f3c7bcb..ff61cf1200 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit db8f3c7bcb3f33bd757cfffc95142562cca11b5b +Subproject commit ff61cf12009c518e5726710cd54f80daa93fbf60 From be5a5679ae3a609d027cc0d9ed716854d9f9dcc4 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 23 May 2025 10:03:55 +0200 Subject: [PATCH 334/730] Localisation updates from https://translatewiki.net. Change-Id: Ia1853f74c9fac80a9e2ee6407102d51b10d51db7 --- editcheck/i18n/ja.json | 6 +++++- i18n/ve-mw/io.json | 1 + i18n/ve-mw/ja.json | 6 ++++++ i18n/ve-mw/nup.json | 3 ++- i18n/ve-mw/sk.json | 8 ++++++++ i18n/ve-wmf/ja.json | 10 +++++++--- 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/editcheck/i18n/ja.json b/editcheck/i18n/ja.json index ada01aeed1..0fb8c59f60 100644 --- a/editcheck/i18n/ja.json +++ b/editcheck/i18n/ja.json @@ -3,7 +3,8 @@ "authors": [ "Ant176", "JNakayama-WMF", - "Omotecho" + "Omotecho", + "Shulmj" ] }, "editcheck-dialog-action-no": "いいえ", @@ -18,6 +19,9 @@ "editcheck-dialog-addref-success-notify": "出典を追加していただき、ありがとうございます!", "editcheck-dialog-addref-title": "出典を追加する", "editcheck-dialog-title": "公開前", + "editcheck-copyvio-title": "貼り付けられたコンテンツ", + "editcheck-copyvio-description": "原則として、他の情報源からテキストをコピーしないでください。多くの場合、このような行為は剽窃に該当し、著作権を侵害します。", + "editcheck-review-title": "変更をレビュー", "tag-editcheck-reference-decline-common-knowledge": "編集チェック(出典)を却下(一般的な知識)", "tag-editcheck-reference-decline-common-knowledge-description": "編集チェックによる出典は、一般知識であるため、却下されました", "tag-editcheck-reference-decline-irrelevant": "編集チェック(出典) を却下(不適切)", diff --git a/i18n/ve-mw/io.json b/i18n/ve-mw/io.json index 37555a8a8a..e47dad26bc 100644 --- a/i18n/ve-mw/io.json +++ b/i18n/ve-mw/io.json @@ -90,6 +90,7 @@ "visualeditor-dialog-meta-settings-toc-default": "Se necesa", "visualeditor-dialog-meta-settings-toc-disable": "Nultempe", "visualeditor-dialog-meta-settings-toc-force": "Sempre", + "visualeditor-dialog-meta-settings-toc-help": "Vu povas krear indexo-tabelo qui montros la titulo qua aparos en pagini kun min kam 4 paragrafi, o koaktigar por ke ol ne aparez. Implicite, ol aparos se la pagino havas 4 paragrafi o plusa.", "visualeditor-dialog-meta-settings-toc-label": "Montrar la Tabelo de kontenajo", "visualeditor-dialog-meta-templatesused-noresults": "Nula shabloni esis trovata.", "visualeditor-dialog-meta-title": "Selekti", diff --git a/i18n/ve-mw/ja.json b/i18n/ve-mw/ja.json index bf2523bf9f..d557bbac5c 100644 --- a/i18n/ve-mw/ja.json +++ b/i18n/ve-mw/ja.json @@ -32,6 +32,7 @@ "Rxy", "Ryoya3", "Shirayuki", + "Shulmj", "SkyDaisy9", "Sou0012", "Suchichi02", @@ -54,9 +55,13 @@ "collabpad-import-subtitle": "$1 からインポートしました", "collabpad": "CollabPad", "tooltip-ca-ve-edit": "このページを編集", + "tooltip-ca-ve-edit-local": "ローカルの記述ページを編集します", "tooltip-ca-ve-create": "このページを作成", + "tooltip-ca-ve-create-local": "ローカルの記述ページを作成します", "tooltip-ca-editsource": "このページのソースコードを編集する", + "tooltip-ca-editsource-local": "ローカルの記述ページのソースコードを編集します", "tooltip-ca-createsource": "このページのソースコードを作成する", + "tooltip-ca-createsource-local": "ローカルの記述ページのソースコードを作成します", "visualeditor-advancedsettings-tool": "高度な設定", "visualeditor-annotations-default-description": "この部分は注釈範囲の一部です。", "visualeditor-annotations-default-end": "注釈付き範囲の終了", @@ -78,6 +83,7 @@ "visualeditor-ca-editsource-section": "ソースを編集", "visualeditor-ca-editsource-section-hint": "節のソースコードを編集する: $1", "visualeditor-categories-tool": "カテゴリ", + "visualeditor-changedesc-mwcategory-sortkey-changed": "ソートキーを $1 から $2 へ変更しました", "visualeditor-changedesc-mwlanguagevariant": "言語変種のマークアップを変更しました", "visualeditor-changedesc-mwredirect": "転送先を $1 から $2 へ変更しました", "visualeditor-changedesc-mwtransclusion": "テンプレートのパラメーターを変更しました", diff --git a/i18n/ve-mw/nup.json b/i18n/ve-mw/nup.json index 67ff96d0c5..796990c9ae 100644 --- a/i18n/ve-mw/nup.json +++ b/i18n/ve-mw/nup.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "787IYO", "Misbahu umar", "Umar Ahmad2345" ] @@ -8,6 +9,6 @@ "visualeditor-ca-createlocaldescriptionsource": "La yeji gbere local danbo", "visualeditor-ca-createsource": "Tswa gbere", "visualeditor-ca-editsource": "Ye gbere jin", - "visualeditor-ca-editsource-section": "Eba yiyejin", + "visualeditor-ca-editsource-section": "eba yiyejin", "visualeditor-descriptionpagelink": "Project:YiyejinCivisuals" } diff --git a/i18n/ve-mw/sk.json b/i18n/ve-mw/sk.json index 6f793523e9..4d5cc07df9 100644 --- a/i18n/ve-mw/sk.json +++ b/i18n/ve-mw/sk.json @@ -41,6 +41,7 @@ "visualeditor-changedesc-mwtransclusion": "Zmenené parametre šablóny", "visualeditor-desc": "Vizuálny editor pre MediaWiki", "visualeditor-descriptionpagelink": "Project:Vizuálny editor", + "visualeditor-dialog-extension-abandonedit": "Naozaj chcete zatvoriť toto dialógové okno bez uloženia zmien?", "visualeditor-dialog-media-alttext-section": "Alternatívny text", "visualeditor-dialog-media-alttext-section-help": "Toto môžete použiť na zadanie textového popisu pre ľudí, ktorí položku neuvidia. Popis by mal byť postačujúci na pochopenie účelu a informácie, ktorú táto multimediálna položka poskytuje. Toto je podstatné pre nevidiacich používateľov a iných ľudí, ktorý používajú čítačky obrazoviek alebo čisto textové prehliadače.", "visualeditor-dialog-media-change-image": "Vybrať iný obrázok", @@ -60,17 +61,21 @@ "visualeditor-dialog-media-page-advanced": "Rozšírené", "visualeditor-dialog-media-page-general": "Všeobecné", "visualeditor-dialog-media-position-checkbox": "Nechať text obtekať okolo obrázku", + "visualeditor-dialog-media-position-checkbox-help": "Môžete si vybrať, či sa tento objekt bude zobrazovať zarovno s textom namiesto obtekania. Vypnutie tejto možnosti naruší tok textu a preto by sa malo využívať len zriedka.", "visualeditor-dialog-media-position-section": "Umiestnenie", + "visualeditor-dialog-media-position-section-help": "Môžete si vybrať, kde sa má tento objekt na stránke zobraziť. Používa sa na rozdelenie dlhého radu obrázkov na jednej strane stránky.", "visualeditor-dialog-media-save": "Uložiť", "visualeditor-dialog-media-search-tab-search": "Vyhľadávanie", "visualeditor-dialog-media-search-tab-upload": "Nahrať", "visualeditor-dialog-media-size-section": "Veľkosť obrázku", + "visualeditor-dialog-media-size-section-help": "Môžete si vybrať, ako veľký sa tento objekt na stránke zobrazí. Takmer vždy by to mala byť štandardná veľkosť, pretože vlastná veľkosť naruší rozloženie stránky pre čitateľa a naruší konzistentnosť.", "visualeditor-dialog-media-title": "Nastavenie obrázku (zvuku, videa)", "visualeditor-dialog-media-type-border": "Orámovanie", "visualeditor-dialog-media-type-frame": "S rámčekom", "visualeditor-dialog-media-type-frameless": "Bez rámčeku", "visualeditor-dialog-media-type-none": "Základné", "visualeditor-dialog-media-type-section": "Typ obrázku", + "visualeditor-dialog-media-type-section-help": "Môžete si vybrať, ako sa má objekt na stránke zobraziť. Takmer vo všetkých prípadoch by mal byť kvôli konzistentnosti vybraný Náhľad.", "visualeditor-dialog-media-type-thumb": "Náhľad", "visualeditor-dialog-media-upload": "Nahrať", "visualeditor-dialog-meta-advancedsettings-label": "Rozšírené nastavenia", @@ -149,6 +154,7 @@ "visualeditor-dialog-transclusion-no-template-description": "Šablóna „$1“ zatiaľ nemá popis, nejaké informácie sa ale môžu nachádzať na [[$2|jej stránke]].", "visualeditor-dialog-transclusion-param-default": "Predvolená hodnota: $1", "visualeditor-dialog-transclusion-param-example-long": "Príklad: $1", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Vyhľadať šablónu", "visualeditor-dialog-transclusion-required-parameter": "Povinné pole", "visualeditor-dialog-transclusion-required-parameter-description": "Pole je povinné.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Späť", @@ -156,6 +162,8 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Chýba povinný parameter|Chýbajú povinné parametre}}", "visualeditor-dialog-transclusion-required-parameter-is-blank": "Skutočne chcete pokračovať bez vyplnenia {{PLURAL:$2|parametra|parametrov}} $1?", "visualeditor-dialog-transclusion-see-template": "Šablóny vytvárajú používatelia a môžu v nich chýbať kompletné popisy. Ďalšie informácie nájdete na [[$2|stránke tejto šablóny]].", + "visualeditor-dialog-transclusion-template-search": "Vyhľadávanie šablón", + "visualeditor-dialog-transclusion-template-search-help": "Vyhľadajte šablónu, ktorú chcete vložiť, vyhľadaním kľúčového slova. Šablóny, ktoré majú popisy, budú vo vizuálnom editore pravdepodobne fungovať lepšie.", "visualeditor-dialogbutton-media-tooltip": "Obrázky a multimédiá", "visualeditor-dialogbutton-template-tooltip": "Šablóna", "visualeditor-editconflict": "Zmeny nie je možné uložiť z dôvodu editačného konfliktu. Chcete vyriešiť editačný konflikt manuálne?", diff --git a/i18n/ve-wmf/ja.json b/i18n/ve-wmf/ja.json index e38d4f0b40..833a3e4292 100644 --- a/i18n/ve-wmf/ja.json +++ b/i18n/ve-wmf/ja.json @@ -9,6 +9,7 @@ "Otokoume", "Penn Station", "Shirayuki", + "Shulmj", "Sujiniku", "Takot", "Vigorous action", @@ -17,9 +18,12 @@ "아라" ] }, - "tag-editcheck-newcontent-description": "編集チェックは新しいコンテンツがページに追加されたことを示します", - "tag-editcheck-newreference-description": "ページに出典が追加されました", - "tag-editcheck-references-description": "編集チェックは出典が必要である可能性があることを示します", + "tag-editcheck-newcontent-description": "編集チェックは新しいコンテンツがページに追加されたと判断した", + "tag-editcheck-newreference-description": "ページに出典が追加", + "tag-editcheck-references-description": "編集チェックは出典が必要だと判断した", + "tag-editcheck-references-activated": "編集チェック(出典)が有効化", + "tag-editcheck-references-activated-description": "編集チェックは出典が必要だと判断したため、UIが表示された", + "tag-editcheck-references-shown": "編集チェック(出典)が表示", "tag-visualeditor": "ビジュアルエディター", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター]]を使用した編集", "tag-visualeditor-needcheck": "ビジュアルエディター: 要確認", From be1b411c183b23557350932f9fbb4ef82f00de68 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Sat, 24 May 2025 03:59:08 +0000 Subject: [PATCH 335/730] build: Updating eslint-config-wikimedia to 0.30.0 Change-Id: I494700b04f973520538a0556bc0337c30b2189ba --- package-lock.json | 15 +++++++-------- package.json | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index e657cb0525..6b04454a4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@wdio/mocha-framework": "7.40.0", "@wdio/spec-reporter": "7.40.0", "api-testing": "1.7.1", - "eslint-config-wikimedia": "0.29.1", + "eslint-config-wikimedia": "0.30.0", "grunt": "1.6.1", "grunt-banana-checker": "0.13.0", "grunt-contrib-watch": "1.1.0", @@ -5314,11 +5314,10 @@ } }, "node_modules/eslint-config-wikimedia": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.29.1.tgz", - "integrity": "sha512-4dbL5o3hKGSvreyrGZWLPoTDLFubZ575IQOPhUaTcpbTsi0u05TBEMsOyYkthTaK21vsFQqhSYtxp/xU93BSdA==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.30.0.tgz", + "integrity": "sha512-i8ESzSoo0x3Jur/0JhAgCVPxbV51zfdI3MN3MVQPnjiFdmo21CNKmiBBmw8JnJ3fx/d5zHDrBa+yDjxSLpnDlA==", "dev": true, - "license": "MIT", "dependencies": { "browserslist-config-wikimedia": "^0.7.0", "eslint": "^8.57.0", @@ -18964,9 +18963,9 @@ } }, "eslint-config-wikimedia": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.29.1.tgz", - "integrity": "sha512-4dbL5o3hKGSvreyrGZWLPoTDLFubZ575IQOPhUaTcpbTsi0u05TBEMsOyYkthTaK21vsFQqhSYtxp/xU93BSdA==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.30.0.tgz", + "integrity": "sha512-i8ESzSoo0x3Jur/0JhAgCVPxbV51zfdI3MN3MVQPnjiFdmo21CNKmiBBmw8JnJ3fx/d5zHDrBa+yDjxSLpnDlA==", "dev": true, "requires": { "browserslist-config-wikimedia": "^0.7.0", diff --git a/package.json b/package.json index cae09c157a..4cb1d898d2 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@wdio/mocha-framework": "7.40.0", "@wdio/spec-reporter": "7.40.0", "api-testing": "1.7.1", - "eslint-config-wikimedia": "0.29.1", + "eslint-config-wikimedia": "0.30.0", "grunt": "1.6.1", "grunt-banana-checker": "0.13.0", "grunt-contrib-watch": "1.1.0", From 71b7a161afea9202d1b81a1c5f2429f935d9a890 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 26 May 2025 09:41:38 +0200 Subject: [PATCH 336/730] Localisation updates from https://translatewiki.net. Change-Id: I3794db598682af7200bf6e52c3da33d9431421ca --- editcheck/i18n/ja.json | 25 +++++++++--------- i18n/ve-mw/api/ja.json | 23 +++++++++++++--- i18n/ve-mw/cko.json | 3 +++ i18n/ve-mw/it.json | 1 + i18n/ve-mw/lb.json | 5 ++-- i18n/ve-mw/mk.json | 1 + i18n/ve-mw/war.json | 59 +++++++++++++++++++++++++++++++++++++++--- i18n/ve-mw/yua.json | 1 + i18n/ve-wmf/ja.json | 1 + 9 files changed, 98 insertions(+), 21 deletions(-) diff --git a/editcheck/i18n/ja.json b/editcheck/i18n/ja.json index 0fb8c59f60..8fe14e004a 100644 --- a/editcheck/i18n/ja.json +++ b/editcheck/i18n/ja.json @@ -4,6 +4,7 @@ "Ant176", "JNakayama-WMF", "Omotecho", + "Shirayuki", "Shulmj" ] }, @@ -11,10 +12,10 @@ "editcheck-dialog-action-yes": "はい", "editcheck-dialog-addref-description": "出典を追加することで、読者がこの情報の典拠を理解できるようにします。", "editcheck-dialog-addref-reject-question": "出典を追加しない理由はなんですか。", - "editcheck-dialog-addref-reject-description": "「出典は不要」というあなたの判断について、他の編集者は「もっと知りたい」と思うはずです。", - "editcheck-dialog-addref-reject-irrelevant": "私が加えている変更と、出典とは、関係がないと思います", - "editcheck-dialog-addref-reject-common-knowledge": "私が付け加える情報は、広く知られています", - "editcheck-dialog-addref-reject-uncertain": "どの出典をつければよいか、わかりません", + "editcheck-dialog-addref-reject-description": "出典が不要だと判断した理由を、さらに詳しく教えてください。", + "editcheck-dialog-addref-reject-irrelevant": "私が行った変更は、出典とは無関係だと思います", + "editcheck-dialog-addref-reject-common-knowledge": "私が付け加えた情報は、既に広く知られています", + "editcheck-dialog-addref-reject-uncertain": "どのような出典を追加すればよいか、わかりません", "editcheck-dialog-addref-reject-other": "その他", "editcheck-dialog-addref-success-notify": "出典を追加していただき、ありがとうございます!", "editcheck-dialog-addref-title": "出典を追加する", @@ -22,12 +23,12 @@ "editcheck-copyvio-title": "貼り付けられたコンテンツ", "editcheck-copyvio-description": "原則として、他の情報源からテキストをコピーしないでください。多くの場合、このような行為は剽窃に該当し、著作権を侵害します。", "editcheck-review-title": "変更をレビュー", - "tag-editcheck-reference-decline-common-knowledge": "編集チェック(出典)を却下(一般的な知識)", - "tag-editcheck-reference-decline-common-knowledge-description": "編集チェックによる出典は、一般知識であるため、却下されました", - "tag-editcheck-reference-decline-irrelevant": "編集チェック(出典) を却下(不適切)", - "tag-editcheck-reference-decline-irrelevant-description": "編集チェックによる出典は、不適切として却下されました", - "tag-editcheck-reference-decline-other": "編集チェック(出典)を却下(その他)", - "tag-editcheck-reference-decline-other-description": "編集チェックによる出典は却下され、理由の記載はありません", - "tag-editcheck-reference-decline-uncertain": "編集チェック(出典)を却下(不確実)", - "tag-editcheck-reference-decline-uncertain-description": "編集チェックによる出典は、確実ではないとして却下されました" + "tag-editcheck-reference-decline-common-knowledge": "編集チェック(出典)を拒否(一般的な知識)", + "tag-editcheck-reference-decline-common-knowledge-description": "編集チェックが提案した出典は、一般的な知識であるという理由により却下された", + "tag-editcheck-reference-decline-irrelevant": "編集チェック(出典)を拒否(無関係)", + "tag-editcheck-reference-decline-irrelevant-description": "編集チェックが提案した出典は、無関係であるという理由により却下された", + "tag-editcheck-reference-decline-other": "編集チェック(出典)を拒否(その他)", + "tag-editcheck-reference-decline-other-description": "編集チェックが提案した出典は、その他の理由により却下された", + "tag-editcheck-reference-decline-uncertain": "編集チェック(出典)を拒否(不確定)", + "tag-editcheck-reference-decline-uncertain-description": "編集チェックが提案した出典は、不確定であるという理由により却下された" } diff --git a/i18n/ve-mw/api/ja.json b/i18n/ve-mw/api/ja.json index 4505c9187c..24efa120b4 100644 --- a/i18n/ve-mw/api/ja.json +++ b/i18n/ve-mw/api/ja.json @@ -8,35 +8,50 @@ "Los688", "Omotecho", "Shirayuki", + "Shulmj", "SkyDaisy9", "Takot" ] }, + "apierror-visualeditor-badcachekey": "このキーを用いてキャッシュされたシリアライズが見つかりません", "apierror-visualeditor-difffailed": "差分の取得ができませんでした", "apihelp-visualeditor-param-basetimestamp": "保存する際に、編集した版のタイムスタンプとしてこれがセットされます。編集競合を検出するのに利用されます。", "apihelp-visualeditor-param-badetag": "RESTBase が返した ETag が間違っている場合と感じたは、ログを残すためここに転記してください。", "apihelp-visualeditor-param-cachekey": "serializeまたはdiffについては、このキーで以前に serializeforcache リクエストをした際の結果を使用する。$1html を上書きします。", "apihelp-visualeditor-param-editintro": "イントロを編集してお知らせに追加します。", - "apihelp-visualeditor-param-format": "出力のフォーマット。", + "apihelp-visualeditor-param-etag": "送信するETag", + "apihelp-visualeditor-param-format": "出力のフォーマット", "apihelp-visualeditor-param-html": "Parsoid 経由でウィキテキストに変換したいHTML", "apihelp-visualeditor-param-oldid": "使用する版番号 (既定では最新版)", "apihelp-visualeditor-param-paction": "実行したい操作", "apihelp-visualeditor-param-page": "操作を実行したいページ", + "apihelp-visualeditor-param-preload": "取得したページに内容が存在しなかった際に、コンテンツを読み込むためにプリロードするページ", + "apihelp-visualeditor-param-preloadparams": "プリロードページに代入するパラメーター(存在する場合)", "apihelp-visualeditor-param-pst": "Parsoid に送る前にwikitextをあらかじめ変換して保存する (paction=parsefragment)", + "apihelp-visualeditor-param-section": "操作対象となる節", "apihelp-visualeditor-param-starttimestamp": "保存する際に、ページが読み込まれた時のタイムスタンプとしてこれがセットされます。編集競合を検出するのに利用されます。", + "apihelp-visualeditor-param-stash": "保存する際に stashing API を使用する場合は true を指定する", "apihelp-visualeditor-param-wikitext": "HTMLに変換するため、Parsoidに送るウィキテキスト (paction=parsefragment)", + "apihelp-visualeditor-summary": "ParsoidサービスからページのHTML5を取得する。", "apihelp-visualeditoredit-param-basetimestamp": "保存する際に、編集した版のタイムスタンプとしてこれがセットされます。編集競合を検出するのに利用されます。", "apihelp-visualeditoredit-param-cachekey": "以前にこのキーで serializeforcache リクエストを送った結果を利用する。$1html を上書きします。", "apihelp-visualeditoredit-param-captchaid": "Captcha ID (captcha response で保存する場合)。", "apihelp-visualeditoredit-param-captchaword": "(captchaで保存するときの) captchaに対する回答", - "apihelp-visualeditoredit-param-html": "ウィキテキストを出力として得るために、Parsoidに送るHTML", + "apihelp-visualeditoredit-param-nocontent": "レスポンスから新しい版のHTMLコンテンツを省略する", + "apihelp-visualeditoredit-param-plugins": "APIリクエストに関連付けられたプラグイン", + "apihelp-visualeditoredit-param-data-{plugin}": "APIリクエストでプラグインから送信される任意のデータ", + "apihelp-visualeditoredit-param-etag": "送信するETag", + "apihelp-visualeditoredit-param-html": "ウィキテキストを出力として得るために、Parsoidに送るHTML。", "apihelp-visualeditoredit-param-minor": "細部の編集のしるし。", "apihelp-visualeditoredit-param-needcheck": "保存する際に、この版にroundtrip問題がある場合はこのパラメーターを使用する。その場合、編集はタグ付けされます。", "apihelp-visualeditoredit-param-oldid": "使用する版番号。既定では最新版です。", + "apihelp-visualeditoredit-param-paction": "実行したい操作", "apihelp-visualeditoredit-param-page": "操作を実行したいページ", - "apihelp-visualeditoredit-param-sectiontitle": "新しい節の名前です。", + "apihelp-visualeditoredit-param-section": "操作対象となる節", + "apihelp-visualeditoredit-param-sectiontitle": "新しい節のタイトル", "apihelp-visualeditoredit-param-starttimestamp": "保存する際に、ページが読み込まれた時のタイムスタンプとしてこれがセットされます。編集競合を検出するのに利用されます。", "apihelp-visualeditoredit-param-summary": "編集の要約", - "apihelp-visualeditoredit-param-wikitext": "動作を適用するウィキテキストです。", + "apihelp-visualeditoredit-param-tags": "編集時に適用されるタグを変更する", + "apihelp-visualeditoredit-param-wikitext": "操作対象となるウィキテキスト", "apihelp-visualeditoredit-summary": "HTML5ページを MediaWiki として保存する (Parsoidサービスを利用してウィキテキストに変換されます)" } diff --git a/i18n/ve-mw/cko.json b/i18n/ve-mw/cko.json index bda708527f..0c3b5c068d 100644 --- a/i18n/ve-mw/cko.json +++ b/i18n/ve-mw/cko.json @@ -2,9 +2,12 @@ "@metadata": { "authors": [ "Biema", + "Nachim", "Yaw-kan" ] }, + "visualeditor-ca-createlocaldescriptionsource": "fa nana nu dɛɛ kereewa buka su", + "visualeditor-ca-createsource": "Yi fite biri se", "visualeditor-ca-editsource": "Kpokpo fiteeri biri n nu", "visualeditor-ca-editsource-section": "Fifiti nu nyanbiri" } diff --git a/i18n/ve-mw/it.json b/i18n/ve-mw/it.json index c72dd5781e..397bae322d 100644 --- a/i18n/ve-mw/it.json +++ b/i18n/ve-mw/it.json @@ -179,6 +179,7 @@ "visualeditor-dialog-transclusion-template-title-nonexistent": "Questo template non esiste.", "visualeditor-dialog-transclusion-template-widget-aria": "Premi Spazio per selezionare il template.", "visualeditor-dialog-transclusion-add-wikitext": "Aggiungi wikitesto", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "Non è possibile aggiungere \"$1\" perché il parametro è stato contrassegnato come [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#obsoleto obsoleto]", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "Impossibile aggiungere il parametro \"$2\" due volte.", "visualeditor-dialog-transclusion-add-param-help": "Se ne sei a conoscenza, puoi inserire nomi di [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters parametri non documentati]. Nota che solamente i parametri previsti dal template avranno effetto. Puoi trovare informazioni sui parametri previsti nella [[$1|pagina del template]].", "visualeditor-dialog-transclusion-add-param-placeholder": "Nome del parametro", diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index 06650b0f2d..71ef6ada9a 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -43,6 +43,7 @@ "visualeditor-ca-editlocaldescriptionsource": "Quell vun der lokaler Beschreiwung änneren", "visualeditor-ca-editsource": "Quelltext änneren", "visualeditor-ca-editsource-section": "Quelltext änneren", + "visualeditor-ca-editsource-section-hint": "Quelltext vum Abschnitt änneren: $1", "visualeditor-categories-tool": "Kategorien", "visualeditor-changedesc-mwcategory-sortkey-changed": "Zortéierschlëssel vu(n) $1 op $2 geännert", "visualeditor-changedesc-mwcategory-sortkey-set": "Zortéierschlëssel op $1 gesat", @@ -172,7 +173,7 @@ "visualeditor-dialog-transclusion-deprecated-parameter": "Vereelzt Feld", "visualeditor-dialog-transclusion-deprecated-parameter-description": "Feld ass vereelzt. $1", "visualeditor-dialog-transclusion-loading": "Lueden...", - "visualeditor-dialog-transclusion-no-template-data-description": "Bei dëser Schabloun feelen d'[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] an hir Parameter goufen [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters automatesch generéiert]. Dohier feelen d'Beschreiwunge vun der Schabloun an hire Parameteren. Méiglecherweis gëtt et zousätzlech Informatiounen op der [[$1|Schablounesäit]].", + "visualeditor-dialog-transclusion-no-template-data-description": "Bei dëser Schabloun feelen d'[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] an hir Parametere goufen [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters automatesch generéiert]. Dohier feelen d'Beschreiwunge fir d'Schabloun an hir Parameteren. Méiglecherweis gëtt et zousätzlech Informatiounen op der [[$1|Schablounesäit]].", "visualeditor-dialog-transclusion-no-template-description": "D'Schabloun \"$1\" huet nach keng Beschreiwung, awer e puer Informatioune kënnen op der [[$2|Säit vun der Schabloun]] disponibel sinn.", "visualeditor-dialog-transclusion-no-template-parameters": "Dës Schabloun huet keng dokumentéiert Parameteren a ka geduecht si fir ouni si benotzt ze ginn.", "visualeditor-dialog-transclusion-param-default": "Standard: $1", @@ -272,7 +273,7 @@ "visualeditor-mwgallerydialog-widths-input-placeholder": "Standardbreet: $1 Pixel", "visualeditor-mwsignature-tool": "Är Ënnerschrëft", "visualeditor-preference-visualeditor": "De visuellen Editeur aktivéieren", - "visualeditor-preference-newwikitexteditor-help": "Dëst gëtt heiansdo 'Wikitext-Editeur 2017' genannt.", + "visualeditor-preference-newwikitexteditor-help": "Dëst gëtt heiansdo „Wikitext-Editeur 2017“ genannt.", "visualeditor-preference-tabs": "Ännerungsmodus:", "visualeditor-preference-tabs-multi-tab": "Déi zwee Ännerungs-Tabs weisen", "visualeditor-preference-tabs-prefer-ve": "De visuellen Editeur ëmmer benotzen, wann et méiglech ass", diff --git a/i18n/ve-mw/mk.json b/i18n/ve-mw/mk.json index f11c343c28..e001831995 100644 --- a/i18n/ve-mw/mk.json +++ b/i18n/ve-mw/mk.json @@ -247,6 +247,7 @@ "visualeditor-includes-includeonly-description": "Кога содржина од оваа страница се користи во друга, овде ќе се вклучи следнава дополнителна содржина:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Дознајте повеќе за делумното превметнување]", "visualeditor-languages-tool": "Јазици", + "visualeditor-linkcontext-uneditable": "За жал, оваа врска засега може да се уредува само во изворен режим.", "visualeditor-linkinspector-button-link-external": "Надворешно мреж. место", "visualeditor-linkinspector-button-link-internal": "Пребарај внатрешни страници", "visualeditor-linkinspector-convert-link-isbn": "Претвори во ISBN-врска", diff --git a/i18n/ve-mw/war.json b/i18n/ve-mw/war.json index e692eefd47..deb9e446bd 100644 --- a/i18n/ve-mw/war.json +++ b/i18n/ve-mw/war.json @@ -2,28 +2,55 @@ "@metadata": { "authors": [ "Harvzsf", - "JinJian" + "JinJian", + "Narazeni" ] }, + "collabpad-doctitle": "CollabPad: $1", + "collabpad-import-subtitle": "Imported from $1", + "collabpad": "CollabPad", "tooltip-ca-ve-edit": "Igliwat ini nga pakli", + "tooltip-ca-ve-edit-local": "Edit the local description page", + "tooltip-ca-ve-create": "Create this page", + "tooltip-ca-ve-create-local": "Create the local description page", + "tooltip-ca-editsource": "Edit the source code of this page", + "tooltip-ca-editsource-local": "Edit the source code of the local description page", + "tooltip-ca-createsource": "Create the source code of this page", + "tooltip-ca-createsource-local": "Create the source code of the local description page", + "visualeditor-advancedsettings-tool": "Advanced settings", + "visualeditor-autosave-modified-prompt-accept": "Resume edit", + "visualeditor-autosave-modified-prompt-message": "This page was edited since you last loaded it. Would {{GENDER:|you}} like to resume {{GENDER:|your}} edit of the old version, or start a new edit of the latest version?", + "visualeditor-autosave-modified-prompt-reject": "Start a new edit", + "visualeditor-autosave-modified-prompt-title": "Resume {{GENDER:|your}} edit?", + "visualeditor-autosave-not-recovered-text": "Your unsaved changes could not be recovered.", + "visualeditor-autosave-not-recovered-title": "Change recovery failed", + "visualeditor-autosave-recovered-text": "Your unsaved changes have been automatically recovered.", + "visualeditor-autosave-recovered-title": "Changes recovered", "visualeditor-backbutton-tooltip": "Balik", "visualeditor-ca-createlocaldescriptionsource": "Gindugngan hin lokal nga description source", "visualeditor-ca-createsource": "Himua an titikangan", + "visualeditor-ca-editlocaldescriptionsource": "Edit local description source", "visualeditor-ca-editsource": "Igliwat an wikitext", "visualeditor-ca-editsource-section": "Igliwat an wikitext", + "visualeditor-ca-editsource-section-hint": "Edit section's source code: $1", + "visualeditor-categories-tool": "Categories", "visualeditor-desc": "Visual editor para han MediaWiki", "visualeditor-descriptionpagelink": "Project:VisualEditor", "visualeditor-dialog-media-alttext-section": "Alternatibo nga teksto", "visualeditor-dialog-media-change-image": "Igsaliwan an imahe", "visualeditor-dialog-media-choose-image": "Gamita ini nga imahe", "visualeditor-dialog-media-content-filename": "Ngaran han file", + "visualeditor-dialog-media-content-section": "Caption", + "visualeditor-dialog-media-content-section-help": "You can use this to show a label that shows next to the item for all readers. This is often used to explain why the item is relevant to the context in which it is shown. It should be succinct and informative.", "visualeditor-dialog-media-goback": "Balik", "visualeditor-dialog-media-info-artist": "Gin-upload ni $1", - "visualeditor-dialog-media-info-audiofile": "Audio file", + "visualeditor-dialog-media-info-audiofile": "აუდიო-ფაილი", "visualeditor-dialog-media-info-created": "Ginhimo: $1", - "visualeditor-dialog-media-info-meta-artist": "Artista: $1", + "visualeditor-dialog-media-info-ellipsis": "...", + "visualeditor-dialog-media-info-meta-artist": "Author: $1", "visualeditor-dialog-media-info-moreinfo": "Para han kadugangan nga impormasyon", "visualeditor-dialog-media-info-readmore": "Dugang nga barasahon", + "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "Gin-upload: $1", "visualeditor-dialog-media-page-advanced": "Abansado", "visualeditor-dialog-media-page-general": "Kasahiran", @@ -33,20 +60,46 @@ "visualeditor-dialog-media-search-tab-search": "Bilnga", "visualeditor-dialog-media-search-tab-upload": "Upload", "visualeditor-dialog-media-size-section": "Kadako han imahe", + "visualeditor-dialog-media-title": "Media settings", + "visualeditor-dialog-media-type-border": "Border", + "visualeditor-dialog-media-type-frame": "Frame", + "visualeditor-dialog-media-type-frameless": "Frameless", + "visualeditor-dialog-media-type-none": "Basic", + "visualeditor-dialog-media-type-section": "Image type", + "visualeditor-dialog-media-type-thumb": "Thumbnail", "visualeditor-dialog-media-upload": "Upload", + "visualeditor-dialog-meta-advancedsettings-label": "Advanced settings", + "visualeditor-dialog-meta-advancedsettings-section": "Advanced settings", + "visualeditor-dialog-meta-categories-addcategory-label": "Add a category to this page", "visualeditor-dialog-meta-categories-category": "Kaarangay", "visualeditor-dialog-meta-categories-data-label": "Mga kaarangay", + "visualeditor-dialog-meta-categories-defaultsort-label": "Sort this page by default as", + "visualeditor-dialog-meta-categories-hidden": "This category is set not to show on pages to which it is added.", + "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Hidden categories", + "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Matching categories", + "visualeditor-dialog-meta-categories-input-movecategorylabel": "Move this category here", "visualeditor-dialog-meta-categories-input-newcategorylabel": "Bag-o nga kaarangay", + "visualeditor-dialog-meta-categories-input-placeholder": "Add a category", + "visualeditor-dialog-meta-categories-missing": "This category lacks a description page.", "visualeditor-dialog-meta-categories-options": "Mga pagpipilian", + "visualeditor-dialog-meta-categories-section": "Categories", + "visualeditor-dialog-meta-categories-sortkey-label": "Sort this page as if it is called", "visualeditor-dialog-meta-languages-code-label": "Kodigo han yinaknan", "visualeditor-dialog-meta-languages-label": "Mga yinaknan", "visualeditor-dialog-meta-languages-link-label": "Nakasumpay nga pakli", "visualeditor-dialog-meta-languages-name-label": "Yinaknan", "visualeditor-dialog-meta-languages-section": "Mga yinaknan", + "visualeditor-dialog-meta-settings-displaytitle": "Display title", + "visualeditor-dialog-meta-settings-displaytitle-help": "You can override how this page's title is displayed by setting a different label to show instead.", + "visualeditor-dialog-meta-settings-hiddencat-label": "Hidden category", + "visualeditor-dialog-meta-settings-index-default": "Default", "visualeditor-dialog-meta-settings-index-disable": "Diri", "visualeditor-dialog-meta-settings-index-force": "Oo", + "visualeditor-dialog-meta-settings-label": "Page settings", + "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Default", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Diri", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Oo", + "visualeditor-dialog-meta-settings-nogallery-label": "Disable gallery", "visualeditor-dialog-meta-settings-toc-default": "Kun kinahanglanon", "visualeditor-dialog-meta-settings-toc-disable": "Pirmi diri", "visualeditor-dialog-meta-settings-toc-force": "Pirmi", diff --git a/i18n/ve-mw/yua.json b/i18n/ve-mw/yua.json index fdd90e3493..b7dcb03939 100644 --- a/i18n/ve-mw/yua.json +++ b/i18n/ve-mw/yua.json @@ -6,6 +6,7 @@ "VicenteCancheM" ] }, + "visualeditor-ca-createlocaldescriptionsource": "A'al tu'ux u taal", "visualeditor-ca-createsource": "A'al tu'ux u taal", "visualeditor-ca-editsource": "k'ex le coodigóo", "visualeditor-ca-editsource-section": "k'ex le koodigo'" diff --git a/i18n/ve-wmf/ja.json b/i18n/ve-wmf/ja.json index 833a3e4292..120f6b9ddd 100644 --- a/i18n/ve-wmf/ja.json +++ b/i18n/ve-wmf/ja.json @@ -24,6 +24,7 @@ "tag-editcheck-references-activated": "編集チェック(出典)が有効化", "tag-editcheck-references-activated-description": "編集チェックは出典が必要だと判断したため、UIが表示された", "tag-editcheck-references-shown": "編集チェック(出典)が表示", + "tag-editcheck-references-shown-description": "編集チェックは出典が必要だと判断したため、UIが表示された", "tag-visualeditor": "ビジュアルエディター", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ビジュアルエディター]]を使用した編集", "tag-visualeditor-needcheck": "ビジュアルエディター: 要確認", From 8cc958618ddbb614f43c409620cb8ab13f77ad2e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 27 May 2025 09:31:54 +0200 Subject: [PATCH 337/730] Localisation updates from https://translatewiki.net. Change-Id: I464aa74cea1f00cc9d29de48b4b96ed8018b2867 --- i18n/ve-mw/fr.json | 1 + i18n/ve-mw/it.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/fr.json b/i18n/ve-mw/fr.json index 1998909407..36c53fc2d1 100644 --- a/i18n/ve-mw/fr.json +++ b/i18n/ve-mw/fr.json @@ -302,6 +302,7 @@ "visualeditor-includes-includeonly-description": "Lorsque le contenu de cette page est utilisé par une autre page, le contenu supplémentaire suivant y sera inclus :", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion En savoir plus sur l’inclusion partielle]", "visualeditor-languages-tool": "Langues", + "visualeditor-linkcontext-uneditable": "Désolé, ce lien ne peut pour l'instant être modifié qu'en mode source.", "visualeditor-linkinspector-button-link-external": "Site externe", "visualeditor-linkinspector-button-link-internal": "Chercher des pages internes", "visualeditor-linkinspector-convert-link-isbn": "Convertir en lien ISBN", diff --git a/i18n/ve-mw/it.json b/i18n/ve-mw/it.json index 397bae322d..e9accf71f3 100644 --- a/i18n/ve-mw/it.json +++ b/i18n/ve-mw/it.json @@ -179,7 +179,7 @@ "visualeditor-dialog-transclusion-template-title-nonexistent": "Questo template non esiste.", "visualeditor-dialog-transclusion-template-widget-aria": "Premi Spazio per selezionare il template.", "visualeditor-dialog-transclusion-add-wikitext": "Aggiungi wikitesto", - "visualeditor-dialog-transclusion-add-param-error-deprecated": "Non è possibile aggiungere \"$1\" perché il parametro è stato contrassegnato come [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#obsoleto obsoleto]", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "Non è possibile aggiungere \"$1\" perché il parametro è stato contrassegnato come [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated obsoleto]", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "Impossibile aggiungere il parametro \"$2\" due volte.", "visualeditor-dialog-transclusion-add-param-help": "Se ne sei a conoscenza, puoi inserire nomi di [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters parametri non documentati]. Nota che solamente i parametri previsti dal template avranno effetto. Puoi trovare informazioni sui parametri previsti nella [[$1|pagina del template]].", "visualeditor-dialog-transclusion-add-param-placeholder": "Nome del parametro", From 8bf15202a071768303eb3c387a8836999417ebc1 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 27 May 2025 11:54:55 -0500 Subject: [PATCH 338/730] Update VE core submodule to master (25390a641) New changes: 7739c5416 Use the viewport height to set the height of the floating sidebar Localisation Updates: 25390a641 Bug: T394095 Change-Id: I4019c134eb173a38d5ea4d3ab9806dcf2b6564c7 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index ff61cf1200..25390a641f 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit ff61cf12009c518e5726710cd54f80daa93fbf60 +Subproject commit 25390a641f4e765df223acce6812d497e2c24ffc From 62397db9fceb65720e9fec81db1acda230de1542 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 28 May 2025 09:29:42 +0200 Subject: [PATCH 339/730] Localisation updates from https://translatewiki.net. Change-Id: I3ec8a99524a3047260b94d2eaf1f8121a8285979 --- i18n/ve-mw/ps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index bfe870a410..1c671afd20 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -159,7 +159,7 @@ "visualeditor-educationpopup-dismiss": "ښه، وپوهېدم", "visualeditor-expandable-less": "لږ", "visualeditor-expandable-more": "نور", - "visualeditor-feedback-defaultmessage": "URL: $1", + "visualeditor-feedback-defaultmessage": "وېبتړ: $1", "visualeditor-formatdropdown-format-mw-heading1": "مخ سرليک", "visualeditor-formatdropdown-format-mw-heading2": "سرليک", "visualeditor-formatdropdown-format-mw-heading3": "څېرمه سرليک 1", @@ -216,7 +216,7 @@ "visualeditor-savedialog-label-review-good": "د خوندي کولو چوکاټ ته ورگرځېدل", "visualeditor-savedialog-label-save-short": "خوندي کول", "visualeditor-savedialog-label-save-short-start": "خوندي کيږي…", - "visualeditor-savedialog-review-nosummary": "د سمون لنډیز نسته", + "visualeditor-savedialog-review-nosummary": "د سمون لنډیز نشته", "visualeditor-savedialog-review-wikitext": "ویکي‌ليک", "visualeditor-savedialog-title-conflict": "کړکېچ", "visualeditor-savedialog-title-review": "خپل بدلونونه بياکتل", From 6024454b79fb18a5ec6e06db1acdfcf77f651a32 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 29 May 2025 09:29:37 +0200 Subject: [PATCH 340/730] Localisation updates from https://translatewiki.net. Change-Id: If5bd42c03da505a6462e20425b76de69b2ca4291 --- i18n/ve-mw/ps.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 1c671afd20..c8ef0ef41b 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -150,7 +150,7 @@ "visualeditor-dialog-transclusion-title-edit-transclusion": "د کينډۍ منځپانگه", "visualeditor-dialog-transclusion-template-search": "کينډۍ لټون", "visualeditor-dialog-transclusion-wikitext": "ویکي‌ليک", - "visualeditor-dialogbutton-media-tooltip": "رسنۍ", + "visualeditor-dialogbutton-media-tooltip": "انځورونه او رسنۍ", "visualeditor-dialogbutton-template-tooltip": "کينډۍ", "visualeditor-editingtabdialog-ok": "تېر ځل کارېدلی سمونگر کارول", "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|يادښت|يادښتونه}}", @@ -167,8 +167,8 @@ "visualeditor-formatdropdown-format-mw-heading5": "څېرمه سرليک 3", "visualeditor-formatdropdown-format-mw-heading6": "څېرمه-سرليک 4", "visualeditor-languages-tool": "ژبې", - "visualeditor-linkinspector-button-link-external": "باندنۍ تړنه", - "visualeditor-linkinspector-button-link-internal": "مخونه پلټل", + "visualeditor-linkinspector-button-link-external": "باندنی وېبځی", + "visualeditor-linkinspector-button-link-internal": "دننني مخونه پلټل", "visualeditor-linkinspector-convert-link-isbn": "ISBN تړنې ته ور اړول", "visualeditor-linkinspector-convert-link-pmid": "PMID تړنې ته ور اړول", "visualeditor-linkinspector-educationpopup-text": "اهم وييونه د ويکي نورو ليکنو او يا هم نورو وېبپاڼو سره وتړئ. دا چاره به لوستونکو ته د متن په لا ښه پوهاوي کې مرسته وکړي.", From d4ff41f3f42f45a60df628e7a9973298f836effc Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 30 May 2025 09:51:02 +0200 Subject: [PATCH 341/730] Localisation updates from https://translatewiki.net. Change-Id: I1b25314492224712eb1d5f234f78a00612fbe78d --- i18n/ve-mw/fi.json | 2 +- i18n/ve-mw/ig.json | 271 +++++++++++++++++++++++++++++++++++++++++++- i18n/ve-mw/nup.json | 2 +- 3 files changed, 271 insertions(+), 4 deletions(-) diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index dc56124a4c..9fdc74d08e 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -278,7 +278,7 @@ "visualeditor-linkinspector-convert-link-isbn": "Muunna ISBN-linkiksi", "visualeditor-linkinspector-convert-link-pmid": "Muunna PMID-linkiksi", "visualeditor-linkinspector-convert-link-rfc": "Muunna RFC-linkiksi", - "visualeditor-linkinspector-educationpopup-text": "Linkitä tärkeät sanat muihin wikiartikkeleihin tai muille verkkosivustoille. Se auttaa lukijoita ymmärtämään kontekstia.", + "visualeditor-linkinspector-educationpopup-text": "Linkitä tärkeät sanat muihin wikiartikkeleihin tai jopa muille verkkosivustoille. Tämä auttaa lukijoita ymmärtämään kontekstia.", "visualeditor-linkinspector-educationpopup-title": "Linkit", "visualeditor-linkinspector-illegal-title": "Virheellinen sivun otsikko", "visualeditor-linkinspector-invalid-blocked": "Tämän wikin käyttäjät ovat päättäneet estää linkit tälle sivustolle. Kokeile toista linkkiä.", diff --git a/i18n/ve-mw/ig.json b/i18n/ve-mw/ig.json index 5122e72f32..ac1a097f76 100644 --- a/i18n/ve-mw/ig.json +++ b/i18n/ve-mw/ig.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Aminwa 21", "Edith Nwobu", "Izuchi Onyeike", "Olugold", @@ -8,20 +9,30 @@ "Timzy D'Great", "Tochiprecious", "Ukabia", - "Uzoma Ozurumba" + "Uzoma Ozurumba", + "Victor chukwuemerie Mbah" ] }, + "collabpad-doctitle": "CollabPad: $1", + "collabpad-import-subtitle": "Mbubata site na $1", "collabpad": "CollabPadì", "tooltip-ca-ve-edit": "Mèzi ihu â", + "tooltip-ca-ve-edit-local": "Dezie ihu nkọwaya ókùgwù", + "tooltip-ca-ve-create": "Ké ihü nka", + "tooltip-ca-ve-create-local": "Dezie ihu nkọwaya ókùgwù", "tooltip-ca-editsource": "Dezie koodu isi mmalite nke ibe a", + "tooltip-ca-editsource-local": "Dezie koodu isi iyi nke mpaghara nkọwa peeji nke.", "tooltip-ca-createsource": "Mepụta koodu mmalite nke ibe a", + "tooltip-ca-createsource-local": "Mepụta koodu isi iyi nke peeji nke nkọwa mpaghara.", "visualeditor-advancedsettings-tool": "Ntọala dị elu", "visualeditor-annotations-default-description": "Akụkụ nke ibe a bụ akụkụ nke oke nkọwa.", "visualeditor-annotations-default-end": "Ọgwụgwụ nke oke nkọwapụta", "visualeditor-annotations-default-start": "mmalite nke nkọwapụta.", "visualeditor-annotations-extended-documentation": "Agbatịla ọkwa nkọwaputa a n'ihi na ọdịnaya ọ gbachiri emeghị nke ọma. A na-atụ aro ka ị hụ na etinyere ọdịnaya edeputara nke ọma tupu edezie ya; ma ọ bụghị ya, enwere ike ịkọwa oke oke karịa ka a tụrụ anya ya.", "visualeditor-autosave-modified-prompt-accept": "Malitegharịa ndezi", + "visualeditor-autosave-modified-prompt-message": "Edeziri ibe a kemgbe ị bugoro ya ikpeazụ. {{GENDER:|ị}} ọ ga-amasị ịmalitegharị {{GENDER:|gị}} nke ụdị ochie, ma ọ bụ malite ndezi ọhụrụ nke ụdị ọhụrụ?", "visualeditor-autosave-modified-prompt-reject": "Bido ndezi ọhụrụ", + "visualeditor-autosave-modified-prompt-title": "Malitegharịa {{GENDER:|}} gị ndezi?", "visualeditor-autosave-not-recovered-text": "Enweghị ike ị nwetaghachi mgbanwe gị na-echekwabeghị.", "visualeditor-autosave-not-recovered-title": "Gbanwee mgbake agaghị", "visualeditor-autosave-recovered-text": "E nwetaghachila mgbanwe gị echekwara na akpaghị aka.", @@ -29,20 +40,276 @@ "visualeditor-backbutton-tooltip": "Laghachi azụ", "visualeditor-ca-createlocaldescriptionsource": "Tinye nkọwa ebe o si", "visualeditor-ca-createsource": "Mepụta isi mmalite", + "visualeditor-ca-editlocaldescriptionsource": "Tinye nkọwa ebe o si", "visualeditor-ca-editsource": "Dezie ebe osi", "visualeditor-ca-editsource-section": "dezie ebe o si", + "visualeditor-ca-editsource-section-hint": "Dezie ngalaba isi iyi: $1", "visualeditor-categories-tool": "Ụdàkọ", + "visualeditor-changedesc-mwcategory-sortkey-changed": "Nkwupụta gbanwere site na $1 gaa na $2", + "visualeditor-changedesc-mwcategory-sortkey-set": "Họrọ igodo na $1", + "visualeditor-changedesc-mwcategory-sortkey-unset": "Ihichapụta igodo unset site na $1", + "visualeditor-changedesc-mwlanguagevariant": "Asụsụ variant markup gbanwere", + "visualeditor-changedesc-mwredirect": "Ebumnuche redirect gbanwere site na $1 ruo $2", + "visualeditor-changedesc-mwtransclusion": "Template parameters gbanwere", + "visualeditor-desc": "Nchịkọta akụkọ anya maka MediaWiki", "visualeditor-descriptionpagelink": "Project:Ihe ndozi nke anya nahu", + "visualeditor-dialog-extension-abandonedit": "Ì ji n'aka na ịchọrọ imechi mkparịta ụka a n'etinyeghị mgbanwe gị?", + "visualeditor-dialog-media-alttext-checkbox": "Jiri ederede ederede dị ka ederede ọzọ", + "visualeditor-dialog-media-alttext-section": "Ederede nwere ike isote", + "visualeditor-dialog-media-alttext-section-help": "I nwere ike iji mpa nke n'egosipụta ịchọọ were dee nkọwa ederede nye ndị n'enweghị ike ịhụ faịlụ ahụ. Nkọwa a kwesịrị ga ezuru ha ịghọta ihe mere na ihe akụkọ gbasara irighiri nsèrè foto. Nke a ka dị mkpa n'etiti ndi kpuruisi na ụfọdụ ndị n'eji akurungwa ihu onyonyo ma ọ bụ brawzer nke naanị ederede.", + "visualeditor-dialog-media-change-image": "Gbanwee ozi-e", + "visualeditor-dialog-media-choose-image": "Tinye deeti na onyonyo a", + "visualeditor-dialog-media-content-description-link": "(Nkọwa peeji)", + "visualeditor-dialog-media-content-filename": "Aha faịlụ", + "visualeditor-dialog-media-content-section": "Nkowapụta", + "visualeditor-dialog-media-content-section-help": "Ị nwere ike iji nke a iji gosipụta akara nke na-egosi n'akụkụ isiokwu ahụ maka ndị niile na-agụ ya. A na-ejikarị nke a eme ihe iji kọwaa ihe kpatara isiokwu ahụ ji dị mkpa na gburugburu ebe e gosipụtara ya. O kwesịrị ịdị nkenke ma na-enye ihe ọmụma.", + "visualeditor-dialog-media-goback": "Azụ", + "visualeditor-dialog-media-info-artist": "Ebugoro site na $1", + "visualeditor-dialog-media-info-audiofile": "Faịlụ ọdịyo", + "visualeditor-dialog-media-info-created": "Emepụtara: $1", "visualeditor-dialog-media-info-meta-artist": "Odee: $1", + "visualeditor-dialog-media-info-moreinfo": "Ozi ndị ọzọ", + "visualeditor-dialog-media-info-readmore": "Gụkwuo", + "visualeditor-dialog-media-info-uploaded": "Ebugoro site na $1", + "visualeditor-dialog-media-page-advanced": "Ogo dị elu", + "visualeditor-dialog-media-page-general": "Izugbe", + "visualeditor-dialog-media-position-checkbox": "Bue ngwe gburugburu otu isiokwu a.", + "visualeditor-dialog-media-position-checkbox-help": "Ị nwere ike ime ka ihe mgbasa ozi a gosipụta n'ụzọ ziri ezi na ederede nke ibe ahụ kama ịmị n'elu mmiri. Ị ga-eme nke a naanị mgbe niile, n'ihi na ọ ga-agbaji ederede ahụ ma ọ bụrụ na ị gbanyụọ igbe a.", + "visualeditor-dialog-media-position-section": "Ọnọdụ", + "visualeditor-dialog-media-position-section-help": "Ị nwere ike ịtọ ebe ihe mgbasa ozi a pụtara na ibe. A na-eji nke a mgbe ụfọdụ agbajie ogologo ahịrị nke onyonyo n'otu akụkụ nke ibe ahụ.", "visualeditor-dialog-media-save": "Dònye", - "visualeditor-dialog-media-search-tab-search": "Tùwe", + "visualeditor-dialog-media-search-tab-search": "chọọ", + "visualeditor-dialog-media-search-tab-upload": "Bulite", + "visualeditor-dialog-media-size-section": "Ogo onyonyo", + "visualeditor-dialog-media-size-section-help": "Ị nwere ike ịtọ otú nnukwu ihe mgbasa ozi ga esi egosi na ibe. Nke a kwesịrị ịbụ ihe fọrọ nke nta ka ọ bụrụ mgbe ọ bụla, n'ihi na ogo omenala ga-egbochi nhazi nke ibe maka ndị na-agụ akwụkwọ ma mee ka ọ ghara ikwekọ.", + "visualeditor-dialog-media-title": "Ntọala mgbasa ozi", + "visualeditor-dialog-media-type-border": "Oke", + "visualeditor-dialog-media-type-frame": "etiti", + "visualeditor-dialog-media-type-frameless": "Enweghị ntụpọ", + "visualeditor-dialog-media-type-none": "Isi", + "visualeditor-dialog-media-type-section": "Ụdị onyonyo", + "visualeditor-dialog-media-type-section-help": "Ị nwere ike ịtọ ka ihe mgbasa ozi si egosi na ibe. Nke a kwesịrị ịbụ usoro thumbnail ka ọ dabara na ibe ndị ọzọ n'ihe fọrọ nke nta ka ọ bụrụ ọnọdụ niile.", + "visualeditor-dialog-media-type-thumb": "thumbnail", + "visualeditor-dialog-media-upload": "Bulite", + "visualeditor-dialog-meta-advancedsettings-label": "Ntọala dị elu", + "visualeditor-dialog-meta-advancedsettings-section": "Ntọala dị elu", + "visualeditor-dialog-meta-categories-addcategory-label": "Tinye otu udi na ibe a", "visualeditor-dialog-meta-categories-category": "Ụdàkọ", "visualeditor-dialog-meta-categories-data-label": "Ụdàkọ", + "visualeditor-dialog-meta-categories-defaultsort-help": "Ị nwere ike ịkwụsị otu esi ahazi ibe a mgbe egosipụtara n'ime ụdị site na ịtọ ndeksi dị iche iche iji hazie kama. A na-ejikarị nke a eme ihe iji mee ka ibe banyere ndị mmadụ gosipụta site na aha ikpeazụ, ma a ga-akpọ ya aha mbụ ha.", + "visualeditor-dialog-meta-categories-defaultsort-label": "Hazie ihuakwụkwọ a site n'ọfụụ dị ka", + "visualeditor-dialog-meta-categories-hidden": "A na-ahazi ụdị a ka ọ ghara igosi na peeji nke agbakwunyere ya.", + "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Ébéanọr zonari a zonari", + "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Ụdị ndị kwekọrọ na ya", + "visualeditor-dialog-meta-categories-input-movecategorylabel": "Bugharịa ụdị a ebe a", + "visualeditor-dialog-meta-categories-input-newcategorylabel": "Tinyé ụdàkọ", + "visualeditor-dialog-meta-categories-input-placeholder": "Tinyé ụdàkọ", + "visualeditor-dialog-meta-categories-missing": "Ụdị a enweghị peeji nke nkọwa.", + "visualeditor-dialog-meta-categories-options": "Nhọrọ", "visualeditor-dialog-meta-categories-section": "Ụdàkọ", + "visualeditor-dialog-meta-categories-sortkey-label": "Dezie peeji a dị ka a ga-asị na a na-akpọ ya.", + "visualeditor-dialog-meta-languages-code-label": "Koodu asụsụ", + "visualeditor-dialog-meta-languages-label": "Asụsụ", + "visualeditor-dialog-meta-languages-link-label": "Njikọ peeji", + "visualeditor-dialog-meta-languages-name-label": "Asụsụ", + "visualeditor-dialog-meta-languages-readonlynote": "Nke a bụ ndepụta nke peeji nke n'asụsụ ndị ọzọ jikọtara na nke a. Maka ugbu a, enwere ike idezi ya naanị na ọnọdụ isi mmalite ma ọ bụ na Wikidata.", + "visualeditor-dialog-meta-languages-section": "Asụsụ", + "visualeditor-dialog-meta-settings-displaytitle": "Gosi isiokwu", + "visualeditor-dialog-meta-settings-displaytitle-help": "Ị nwere ike ịkwụsị otu esi egosipụta aha ibe a site na ịtọ akara dị iche iche iji gosipụta kama.", + "visualeditor-dialog-meta-settings-hiddencat-help": "Ị nwere ike igbochi ụdị a ka ọ ghara igosi na ndepụta nke edemede na ibe ndị otu. Nke a bara uru maka edemede ndị na-amasị ndị editọ ma ọ bụghị ọtụtụ ndị na-agụ akwụkwọ, dị ka ibe ndị chọrọ ihe atụ.", + "visualeditor-dialog-meta-settings-hiddencat-label": "Ébéanọr zonari a zonari", + "visualeditor-dialog-meta-settings-index-default": "Nke éjị bịdó", + "visualeditor-dialog-meta-settings-index-disable": "Mba", + "visualeditor-dialog-meta-settings-index-force": "Ee", + "visualeditor-dialog-meta-settings-index-help": "Ị nwere ike ịmanye engines ọchụchọ ka ha depụta ibe a na nsonaazụ ha dị mkpa, ma ọ bụ manye ha ka ha ghara ime otú ahụ. Nhọrọ a anaghị emetụta ọchụchọ n'ime saịtị.", + "visualeditor-dialog-meta-settings-index-label": "Mee ka peeji a dị iche iche site na engines ọchụchọ.", + "visualeditor-dialog-meta-settings-label": "Nhazi ihuakwụkwọ", + "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Nke éjị bịdó", + "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Mba", + "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Eeh", + "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Ị nwere ike ịmanye ngosipụta nke taabụ ọzọ ma e wezụga taabụ \"$1\" na ibe a nke ga-eme ka ọ dị mfe ịgbakwunye ngalaba ọhụrụ, ma ọ bụ manye ya ka ọ ghara ịpụta ma ọ bụrụ na ọ ga-eme.", + "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Gosi taabụ na peeji a iji gbakwunye ngalaba ọhụrụ.", + "visualeditor-dialog-meta-settings-nocontentconvert-help": "Ị nwere ike igbochi ọdịnaya nke ibe a na-akpaghị aka gbanwee n'ime edemede ndị ọzọ.", + "visualeditor-dialog-meta-settings-nocontentconvert-label": "Ejila ihe dị iche iche dị iche iche na-agbanwe agbanwe n'etiti asụsụ dị iche iche.", + "visualeditor-dialog-meta-settings-noeditsection-help": "Ị nwere ike ịkwụsị njikọ edezi site na ịpụta n'akụkụ ngalaba ọ bụla n'ọnọdụ a na-adịghị ahụkebe ebe nke ahụ kwesịrị ekwesị.", + "visualeditor-dialog-meta-settings-noeditsection-label": "Gbanyụọ njikọ dezie dị n'akụkụ isi okwu ọ bụla na ibe a.", + "visualeditor-dialog-meta-settings-nogallery-help": "Ị nwere ike igbochi ụdị a site na igosipụta faịlụ ndị otu dị ka gallery, ma ọ bụrụ na nke ahụ ekwesịghị ekwesị na nke a.", + "visualeditor-dialog-meta-settings-nogallery-label": "Kwụsị ngosi ihe ngosi ochie", + "visualeditor-dialog-meta-settings-notitleconvert-help": "Ị nwere ike igbochi ọdịnaya nke ibe a na-akpaghị aka gbanwee n'ime edemede ndị ọzọ.", + "visualeditor-dialog-meta-settings-notitleconvert-label": "Ejila ihe dị iche iche dị iche iche na-agbanwe agbanwe n'etiti asụsụ dị iche iche.", + "visualeditor-dialog-meta-settings-redirect-help": "Ị nwere ike ime ka ibe a bụrụ redirect, peeji nke ga-eme ka ndị na-agụ akwụkwọ gaa na ibe ọzọ na wiki a. Nke a bara uru maka nsụpe na-ezighi ezi na aha ndị ọzọ ma ọ bụ echiche. Ọ bụrụ na ị na-eme otú ahụ, ndị na-agụ akwụkwọ agaghị ahụ ọdịnaya nke ibe a.", + "visualeditor-dialog-meta-settings-redirect-label": "Bugharịa peeji a na peeji a", + "visualeditor-dialog-meta-settings-redirect-placeholder": "Peeji mgbaru ọsọ maka redirection", + "visualeditor-dialog-meta-settings-redirect-statichelp": "Ị nwere ike igbochi nke a redirect si na-emelitere na-akpaghị aka mgbe peeji nke ọ redirects na-kwaga, na nnọọ obere ikpe na nke a dị mkpa.", + "visualeditor-dialog-meta-settings-redirect-staticlabel": "Gbochie redirect a ka a na-emelite mgbe a na-ebugharị peeji ezubere iche.", + "visualeditor-dialog-meta-settings-section": "Nhazi ihuakwụkwọ", + "visualeditor-dialog-meta-settings-toc-default": "Ọ bụrụ na ọ dị mkpa", "visualeditor-dialog-meta-settings-toc-disable": "Emelaème", + "visualeditor-dialog-meta-settings-toc-force": "M̀gbèọbụlà", + "visualeditor-dialog-meta-settings-toc-help": "Ị nwere ike ịmanye tebụl nke ọdịnaya nke na-edepụta isiokwu ọ bụla na ibe ahụ ka ọ pụta na ibe ndị nwere ihe na-erughị isiokwu anọ, ma ọ bụ manye ya ka ọ ghara ịpụta ma ọlị. Site na ndabara, ọ ga-apụta ma ọ bụrụ na ibe ahụ nwere isi okwu anọ ma ọ bụ karịa.", + "visualeditor-dialog-meta-settings-toc-label": "Gosi tebụl ndịna", + "visualeditor-dialog-meta-templatesused-noresults": "Enweghị ndebiri achọtara.", + "visualeditor-dialog-meta-title": "Nhọrọ", + "visualeditor-dialog-table-collapsed": "Ọdịda na mbido", + "visualeditor-dialog-table-collapsible": "A na-agbagha agbagha", + "visualeditor-dialog-table-sortable": "Chịm", + "visualeditor-dialog-table-wikitable": "Ụdị (wikitable)", + "visualeditor-dialog-template-title": "Àtụ", + "visualeditor-dialog-transclusion-action-save": "Dònye", + "visualeditor-dialog-transclusion-template-title-nonexistent": "Ihe ndebiri a adịghị.", + "visualeditor-dialog-transclusion-template-title-modifier": "Akwụkwọ ndebiri na [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameter] aha (ma ọ bụrụ na ọ dị) adịghị mgbe a na-edezi ndebiri na-eji akwu syntax ma ọ bụ modifiers, dị ka [//www.mediawiki.org/wiki/Special:MyLanguage/Help].", + "visualeditor-dialog-transclusion-template-widget-aria": "Pịa Space iji họrọ template.", + "visualeditor-dialog-transclusion-template-widget-aria-selected": "Pịa Ctrl + Del iji hichapụ ndebiri ahụ, ụkpụrụ ya na ụkpụrụ ha. Pịa Ctrl + Shift + Arrows iji mee ka template ahụ gbagoo ma ọ bụ ala.", + "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "Pịa Ctrl + Del iji hichapụ ndebiri ahụ, ụkpụrụ ya na ụkpụrụ ha.", + "visualeditor-dialog-transclusion-add-wikitext": "Tinye wikitext", + "visualeditor-dialog-transclusion-add-param-error-alias": "agbakwunyela \"$1\" ka \"$2\". Biko lelee nhọrọ ndị dị na sidebar. Nke a bụ n'ihi iji [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases aliases] ma ọ bụ [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label labels].", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "Enweghị ike ịgbakwunye \"$1\" n'ihi na akara akara ahụ dị ka [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated deprecated].", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "E nweghị ike itinye ntụ \"$2\" ugboro abụọ.", "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "Nke\n oke \"$2\" adịlarị maka ojiji. Biko lelee nhọrọ ndị dị na sidebar.", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 bụ ihe a machibidoro iwu. Biko wepụ ya iji gbakwunye parameter.", + "visualeditor-dialog-transclusion-add-param-help": "Ọ bụrụ na ị maara, tinye aha [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters undocumented parameter]. Rịba ama na ọ bụ naanị ihe ndị a maara site na template ga-enwe mmetụta. Ị nwere ike ịchọta ozi gbasara paramita ndị dị ugbu a na [[$1|template si page]].", + "visualeditor-dialog-transclusion-add-param-placeholder": "Parameter aha", + "visualeditor-dialog-transclusion-add-param-save": "Tinye", + "visualeditor-dialog-transclusion-add-template": "Tinye ndebiri", + "visualeditor-dialog-transclusion-add-template-button": "Tinye ndebiri", + "visualeditor-dialog-transclusion-add-template-save": "Tinye", + "visualeditor-dialog-transclusion-add-undocumented-param": "Tinye oke na-enweghị akwụkwọ", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "Kedu ihe ị ga-eme iji chọọ ya? Mgbanwe gị ga-efu, ma a agaghị emebi ya.", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "Mechie template editor? Mgbanwe gị ga-efu, ma a agaghị emebi ya.", + "visualeditor-dialog-transclusion-collapse-options": "nhọrọ ndị ọzọ", + "visualeditor-dialog-transclusion-confirmation-discard": "Tụfuo ndezi gasị", + "visualeditor-dialog-transclusion-confirmation-reject": "Gaa n'ihu n'idezi", + "visualeditor-dialog-transclusion-contextitem-description": "E sitere na: $1", + "visualeditor-dialog-transclusion-contextitem-loading": "ọ ka na-ebudata", + "visualeditor-dialog-transclusion-expand-options": "Gosi nhọrọ", + "visualeditor-dialog-transclusion-filter-hide-unused": "Zóghachi ejighị ya eme ihe", + "visualeditor-dialog-transclusion-filter-no-match": "Achọtaghị egwuregwu ọ bụla", + "visualeditor-dialog-transclusion-filter-placeholder": "Chọta ubi", + "visualeditor-dialog-transclusion-filter-show-all": "Gosi ha niine", + "visualeditor-dialog-transclusion-filter-title": "Ọchụchọ parameter maka $1", + "visualeditor-dialog-transclusion-help-title": "Nkwado ndebiri edezi", + "visualeditor-dialog-transclusion-help-message": "Templates na-enye formatting maka ọdịnaya. Onye nchịkọta akụkọ a na-egosi nhọrọ nke template na-enye n'aka ekpe na ụkpụrụ nwere ike ịgbakwunye na nhọrọ ndị ahụ n'aka nri.", + "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates Enyemaka maka idezi ndebiri]", + "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions mkpirisi ahụigodo]", + "visualeditor-dialog-transclusion-deprecated-parameter": "Ubi na-emebi emebi", + "visualeditor-dialog-transclusion-deprecated-parameter-description": "A na-emebi ubi ahụ. $1", + "visualeditor-dialog-transclusion-loading": "Ọ biágó...", + "visualeditor-dialog-transclusion-multipart-message": "Ị na-edezi ndebiri ugbu a na otu ma ọ bụ karịa iberibe [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content ejikọrọ ọdịnaya] (wikitext na / ma ọ bụ ndebiri ndị ọzọ).", + "visualeditor-dialog-transclusion-no-template-data-description": "Template a na-efu [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData], na ya parameters e [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters autogenerated]. N'ihi ya, template na parameters ya enweghị nkọwa. Enwere ike inwe ozi ndị ọzọ na [[$1|peeji nke template]].", + "visualeditor-dialog-transclusion-no-template-description": "Ndebiri \"$1\" enwebeghị nkọwa, mana enwere ike ịnwe ụfọdụ ozi na [[$2|template peeji nke]].", + "visualeditor-dialog-transclusion-no-template-parameters": "Ihe ndebiri a enweghị parampat edeputara na enwere ike ebu ya maka ojiji na-enweghị ha.", + "visualeditor-dialog-transclusion-param-default": "Nke mbụ: $1", + "visualeditor-dialog-transclusion-param-example-long": "Ihe Nlereanya: $1", + "visualeditor-dialog-transclusion-param-selection-aria-description": "Pịa Space iji gbakwunye ma ọ bụ wepu parameters. Pịa Tinye iji gbakwunye paramita ma dezie uru ya ozugbo. Mgbe a họọrọ parameter, pịa Tinye iji dezie uru ahụ.", + "visualeditor-dialog-transclusion-param-selection-aria-label": "Oke na $1", + "visualeditor-dialog-transclusion-param-undocumented": "Tinye oke na-enweghị akwụkwọ", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Chọta ndebiri", + "visualeditor-dialog-transclusion-required-parameter": "Ubi achọrọ", + "visualeditor-dialog-transclusion-required-parameter-description": "A chọrọ ubi.", + "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Laghachi azụ", + "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Gaa n'ihu n'agbanyeghị", + "visualeditor-dialog-transclusion-required-parameter-dialog-title": "Achọrọ {{PLURAL:$1|ubi}} na-efu", + "visualeditor-dialog-transclusion-required-parameter-is-blank": "Ì ji n'aka na ịchọrọ ịga n'ihu na-enweghị ijupụta $1 {{PLURAL:$2|ubi}}?", + "visualeditor-dialog-transclusion-see-template": "A na-emepụta ndebiri ndị ọrụ ma nwee ike ọ gaghị enwe nkọwa zuru ezu. Enwere ike inwe ozi ndị ọzọ na nke a [[$2|peeji nke template]].", + "visualeditor-dialog-transclusion-title-insert-template": "Tinye template", + "visualeditor-dialog-transclusion-title-insert-known-template": "Tinye: $ 1", + "visualeditor-dialog-transclusion-title-edit-known-template": "Dezie: $1", + "visualeditor-dialog-transclusion-title-edit-transclusion": "Ndebiri ọdịnaya", + "visualeditor-dialog-transclusion-template-search": "Nchọchọ ndebiri", + "visualeditor-dialog-transclusion-template-search-help": "Chọta template ịchọrọ ịgbakwunye site na ịchọ isi okwu na-amata. Ndebiri ndị nwere nkọwa nwere ike ịrụ ọrụ nke ọma na nchịkọta akụkọ anya.", + "visualeditor-dialog-transclusion-wikitext": "Wikitext", + "visualeditor-dialog-transclusion-wikitext-widget-aria": "Pịa Space iji họrọ Wikitext element. Pịa Tinye iji họrọ ma dezie wikitext.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "Pịa Ctrl+Del iji hichapụ ihe wikitext. Pịa Ctrl + Shift + Arrows iji mee ka mmewere ahụ gbagoo ma ọ bụ gbadaa.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "Pịa Ctrl+Del iji hichapụ ihe wikitext.", + "visualeditor-dialogbutton-media-tooltip": "Ihe oyiyi na mgbasa ozi", + "visualeditor-dialogbutton-template-tooltip": "Àtụ̀", + "visualeditor-editconflict": "Enweghị ike ịchekwa mgbanwe gị n'ihi esemokwu ndezi. {{GENDER:|ị}} ọ ga-amasị gị iji aka dozie esemokwu ahụ?", + "visualeditor-editingtabdialog-body": "{{SITENAME\n}} ugbu a na-echeta onye editọ ị họọrọ. Ị nwere ike ịgbanwe ụdị dezie ka ị na-edezi, ma gbanwee mmasị gị mgbe e mesịrị.", + "visualeditor-editingtabdialog-ok": "Jiri onye editọ m jiri mee ihe na ndezi ikpeazụ m", + "visualeditor-editingtabdialog-title": "Edezi taabụ", + "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|notice|notices}}", + "visualeditor-editnotices-tooltip": "Dezie ọkwa", + "visualeditor-editsummary": "Kọwaa ihe ị gbanwere", + "visualeditor-editsummary-characters-remaining": "Ọnụ ọgụgụ nke ihe odide fọdụrụnụ.", + "visualeditor-educationpopup-dismiss": "Ọdịmma, Aghọtara m ya.", + "visualeditor-expandable-less": "Obere", + "visualeditor-expandable-more": "Ọzọkwa", + "visualeditor-feedback-defaultmessage": "URL: $1", + "visualeditor-formatdropdown-format-mw-heading1": "Íshí ihü", + "visualeditor-formatdropdown-format-mw-heading2": "Íshí édé", + "visualeditor-formatdropdown-format-mw-heading3": "Isiokwu dị n'okpuru 1", + "visualeditor-formatdropdown-format-mw-heading4": "Isiokwu dị n'okpuru 2", + "visualeditor-formatdropdown-format-mw-heading5": "Isiokwu dị n'okpuru 3", + "visualeditor-formatdropdown-format-mw-heading6": "Isiokwu dị n'okpuru 4", + "visualeditor-generating-wikitext-progress": "Ịmepụta wikitext", + "visualeditor-includes-noinclude-start": "A na-ewepụ ihe ndị a na-ewepụ site na ihe ndị na-adịghị mma.", + "visualeditor-includes-noinclude-end": "Ọgwụgwụ nke ọdịnaya wepụrụ site na excerpts", + "visualeditor-includes-onlyinclude-start": "Mbido ọdịnaya e kwere n'ihe odide", + "visualeditor-includes-onlyinclude-end": "Ọgwụgwụ nke ọdịnaya kwere na excerpts", + "visualeditor-includes-includeonly": "Ọdịnaya maka edemede Naanị", + "visualeditor-includes-noinclude-description": "Mgbe ọdịnaya sitere na ibe a na-eji ibe ọzọ, ọdịnaya sitere na ebe a ruo mgbe akara njedebe kwekọrọ ekwekọ agaghị agụnye. Kpachara anya mgbe ị na-edezi ọdịnaya n'èzí akara ndị a, dịka ibe ndị ọzọ nwere ike iji ya.", + "visualeditor-includes-onlyinclude-description": "Mgbe ọdịnaya sitere na ibe a na-eji ibe ọzọ, naanị ọdịnaya site na ebe a ruo mgbe akara njedebe kwekọrọ na ya ga-agụnye. Kpachara anya mgbe ị na-edezi ọdịnaya n'etiti akara ndị a, dịka ibe ndị ọzọ nwere ike iji ya.", + "visualeditor-includes-includeonly-description": "Mgbe ọdịnaya sitere na ibe a na-eji ibe ọzọ, a ga-etinye ọdịnaya ndị ọzọ ebe a:", + "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Mụta ihe banyere transclusion akụkụ]", + "visualeditor-languages-tool": "Asụsụ", + "visualeditor-linkcontext-uneditable": "Ndo, njikọ a nwere ike dezie naanị na ọnọdụ isi iyi maka ugbu a.", + "visualeditor-linkinspector-button-link-external": "Jikodo di èzí", + "visualeditor-linkinspector-button-link-internal": "Chọọ peeji ndị dị n'ime", + "visualeditor-linkinspector-convert-link-isbn": "Tọghata ka ISBN njikọ", + "visualeditor-linkinspector-convert-link-pmid": "Tọghata na PMID njikọ", + "visualeditor-linkinspector-convert-link-rfc": "Tọghata ka ISBN njikọ", + "visualeditor-linkinspector-educationpopup-text": "Jikọọ okwu ndị dị mkpa na isiokwu wiki ndị ọzọ ma ọ bụ ọbụna weebụsaịtị ndị ọzọ. Ọ ga-enyere ndị na-agụ akwụkwọ aka ịghọta ihe gbara ya gburugburu.", "visualeditor-linkinspector-educationpopup-title": "Òjikọ", + "visualeditor-linkinspector-illegal-title": "Isiokwu ihuakwụkwọ na-enweghị isi", + "visualeditor-linkinspector-invalid-blocked": "Ndị mmadụ nọ na wiki a kpebiri igbochi njikọ na saịtị a. Biko gbalịa njikọ ọzọ.", + "visualeditor-linkinspector-invalid-external": "Tinye URL zuru ezu, dịka https://example.org", + "visualeditor-linknodeinspector-add-label": "Tinye labeelu", + "visualeditor-linknodeinspector-title": "Njikọ dị mfe", + "visualeditor-magiclinknodeinspector-convert-link": "Tọghata na mfe njikọ", + "visualeditor-magiclinknodeinspector-title-isbn": "Njikọ ISBN", + "visualeditor-magiclinknodeinspector-title-pmid": "Njikọ PMID", + "visualeditor-magiclinknodeinspector-title-rfc": "Njikọ RFC", + "visualeditor-media-title-audio": "Ọdịyo", + "visualeditor-media-title-image": "Onyonyo", + "visualeditor-media-title-video": "Vidiyo", + "visualeditor-meta-tool": "Nhọrọ", + "visualeditor-mweditmode-tooltip": "Gbanye odezi", + "visualeditor-mweditmodesource-progress": "N'ịgbanwee gaa na ebenwu iyindo edezi...", + "visualeditor-mweditmodesource-tool-current": "Isi mmalite edezi", + "visualeditor-mweditmodesource-tool-unavailable": "Isi mmalite edezi adịghị ebe a", + "visualeditor-mweditmodeve-popup-body": "Ị nwere ike ịlaghachi na nhazi anya n'oge ọ bụla site na ịpị akara ngosi a.", + "visualeditor-mweditmodeve-popup-title": "N'ihi ya, ị na-agbanwe agbanwe na isi iyi na-agbanwe agbanwe.", + "visualeditor-mweditmodeve-progress": "Gbanwee banye na ndezi anya", + "visualeditor-mweditmodeve-showagain": "Egosila ozi a ọzọ.", + "visualeditor-mweditmodeve-tool-current": "Nhazi ngosi", + "visualeditor-mweditmodeve-tool-unavailable": "A naghị edezi ihe oyiyi ebe a.", + "visualeditor-mweditmodewt-popup-body": "Ị nwere ike ịlaghachi na isi iyi edezi n'oge ọ bụla site na ịpị akara ngosi a.", + "visualeditor-mweditmodewt-popup-title": "N'ihi ya, ị na-agbanwe agbanwe na Visual Edit.", + "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|onyinyo}}", + "visualeditor-mwgallerydialog-caption-field-label": "Nkọwa ihe osise", + "visualeditor-mwgallerydialog-card-images": "Onyonyo", + "visualeditor-mwgallerydialog-card-options": "Nhọrọ", + "visualeditor-mwgallerydialog-classes-field-label": "CSS klas", + "visualeditor-mwgallerydialog-classes-input-placeholder": " Aha klas, kewapụrụ", + "visualeditor-mwgallerydialog-empty-gallery-message": "Gallery ahụ tọgbọ chakoo.", + "visualeditor-mwgallerydialog-heights-field-label": "Ogologo foto", + "visualeditor-mwgallerydialog-heights-input-placeholder": "Ndabara elu: $1 px", + "visualeditor-mwgallerydialog-mode-dropdown-label-nolines": "Omenala na-enweghị nkọwa", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed": "Nchịkọta", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed-hover": "A na-ekpuchi ihe ndị a na-eme na hover", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed-overlay": "Jujuru ya na nkọwa okwu machie", + "visualeditor-mwgallerydialog-mode-dropdown-label-slideshow": "Ihe ngosi", + "visualeditor-mwgallerydialog-mode-dropdown-label-traditional": "Omenala", + "visualeditor-mwgallerydialog-mode-field-label": "Ọnọdụ ngosi", + "visualeditor-mwgallerydialog-perrow-field-label": "Foto n'ahịrị ọ bụla", + "visualeditor-mwgallerydialog-remove-button-label": "Wepụ onyinyo", + "visualeditor-mwgallerydialog-show-filename-field-label": "Gosi aha faịlụ", + "visualeditor-mwgallerydialog-styles-field-label": "Ụdị CSS", + "visualeditor-mwgallerydialog-styles-input-placeholder": "Iwu CSS, nkewapụrụ na ọkara", + "visualeditor-mwgallerydialog-title": "Galari", + "visualeditor-mwgallerydialog-widths-field-label": "Obosara nke onyinyo", + "visualeditor-mwgallerydialog-widths-input-placeholder": "Ndabara elu: $1 px", + "visualeditor-mwpredialog-convert": "Kwe ka ụkpụrụ ngwe", "visualeditor-savedialog-label-save-short": "Dònye", "visualeditor-savedialog-label-save-short-start": "Dònye…" } diff --git a/i18n/ve-mw/nup.json b/i18n/ve-mw/nup.json index 796990c9ae..9ab0e439f7 100644 --- a/i18n/ve-mw/nup.json +++ b/i18n/ve-mw/nup.json @@ -9,6 +9,6 @@ "visualeditor-ca-createlocaldescriptionsource": "La yeji gbere local danbo", "visualeditor-ca-createsource": "Tswa gbere", "visualeditor-ca-editsource": "Ye gbere jin", - "visualeditor-ca-editsource-section": "eba yiyejin", + "visualeditor-ca-editsource-section": "Eba Yiyejin", "visualeditor-descriptionpagelink": "Project:YiyejinCivisuals" } From 0c6d63997927c0c28d3f1b7a3531a56f9a0cad15 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 2 Jun 2025 09:39:01 +0200 Subject: [PATCH 342/730] Localisation updates from https://translatewiki.net. Change-Id: I922797d1461a893d743d07ddd0e951c18ef94ba3 --- editcheck/i18n/ig.json | 30 +++++++++++++ i18n/ve-mw/api/ig.json | 49 +++++++++++++++++++++ i18n/ve-mw/ig.json | 65 +++++++++++++++++++++++++--- i18n/ve-mw/mwlanguagevariant/ig.json | 45 +++++++++++++++++++ i18n/ve-wmf/ig.json | 15 ++++++- 5 files changed, 198 insertions(+), 6 deletions(-) create mode 100644 editcheck/i18n/ig.json create mode 100644 i18n/ve-mw/api/ig.json create mode 100644 i18n/ve-mw/mwlanguagevariant/ig.json diff --git a/editcheck/i18n/ig.json b/editcheck/i18n/ig.json new file mode 100644 index 0000000000..f85c81d3a0 --- /dev/null +++ b/editcheck/i18n/ig.json @@ -0,0 +1,30 @@ +{ + "@metadata": { + "authors": [ + "Victor chukwuemerie Mbah" + ] + }, + "editcheck-dialog-action-no": "Mba", + "editcheck-dialog-action-yes": "Eeh", + "editcheck-dialog-addref-description": "Nyere ndị na-agụ akwụkwọ aka ịghọta ebe ozi a si abịa site na ịgbakwunye nkwupụta.", + "editcheck-dialog-addref-reject-question": "Kedu ihe kpatara na ị naghị agbakwunye nkwupụta?", + "editcheck-dialog-addref-reject-description": "Ndị editọ ndị ọzọ ga-enwe mmasị ịmụtakwu banyere mkpebi gị ịchụpụ nkwupụta ahụ.", + "editcheck-dialog-addref-reject-irrelevant": "Ekwetaghị m na ihe ndị a na-agbanwe agbanwe na-agbanwe agbanwe nke m na-eme", + "editcheck-dialog-addref-reject-common-knowledge": "Ozi m na-agbakwunye bụ nke a maara nke ọma.", + "editcheck-dialog-addref-reject-uncertain": "Amaghị m ihe m ga-agbakwunye", + "editcheck-dialog-addref-reject-other": "Nke ozor", + "editcheck-dialog-addref-success-notify": "Kedu ihe kpatara na ị naghị agbakwunye nkwupụta?", + "editcheck-dialog-addref-title": "Tinye edensibịa", + "editcheck-dialog-title": "Tupu ebipụta ya", + "editcheck-copyvio-title": "Plado ọdịnaya", + "editcheck-copyvio-description": "Dị ka iwu n'ozuzu, egbula ederede sitere na isi mmalite ndị ọzọ. Ime nke a na-abụkarị mmebi iwu nwebisiinka na plagiarism.", + "editcheck-review-title": "Lelee mgbanwe", + "tag-editcheck-reference-decline-common-knowledge": "Nyocha edezi (Edensibịa) jụrụ (ihe ọmụma a na-ahụkarị)", + "tag-editcheck-reference-decline-common-knowledge-description": "A jụrụ Edensibịa EditCheck dị ka ihe ọmụma nkịtị", + "tag-editcheck-reference-decline-irrelevant": "Dezie nlele (Edensibịa) jụrụ (adịghị mkpa)", + "tag-editcheck-reference-decline-irrelevant-description": "Ajụjụ Edensibịa EditCheck ka ọ dịghị mkpa", + "tag-editcheck-reference-decline-other": "Dezie Lelee (Edensibịa) jụrụ (ndị ọzọ)", + "tag-editcheck-reference-decline-other-description": "A jụrụ Edensibịa EditCheck maka ihe a na-edeghị aha", + "tag-editcheck-reference-decline-uncertain": "Dezie Lelee (Edensibịa) jụrụ (ndị ọzọ)", + "tag-editcheck-reference-decline-uncertain-description": "Ajụjụ Edensibịa EditCheck ka ọ dịghị mkpa" +} diff --git a/i18n/ve-mw/api/ig.json b/i18n/ve-mw/api/ig.json new file mode 100644 index 0000000000..8b4e5af258 --- /dev/null +++ b/i18n/ve-mw/api/ig.json @@ -0,0 +1,49 @@ +{ + "@metadata": { + "authors": [ + "Aminwa 21", + "Victor chukwuemerie Mbah" + ] + }, + "apierror-visualeditor-badcachekey": "Enweghị usoro zoro ezo achọtara na igodo ahụ", + "apierror-visualeditor-difffailed": "Ihe dị iche dara", + "apihelp-visualeditor-param-basetimestamp": "Mgbe ị na-echekwa, debe nke a na timestamp nke nsụgharị ahụ edezi. A na-eji ya iji chọpụta esemokwu edezi.", + "apihelp-visualeditor-param-badetag": "Mgbe ị na-echekwa, debe nke a na timestamp nke nsụgharị ahụ edezi. A na-eji ya iji chọpụta esemokwu edezi.", + "apihelp-visualeditor-param-cachekey": "Maka serialize ma ọ bụ diff, jiri nsonaazụ nke arịrịọ serializeforcache gara aga na igodo a. Overrides $1html.", + "apihelp-visualeditor-param-editintro": "Dezie intro iji gbakwunye ọkwa.", + "apihelp-visualeditor-param-etag": "Daalụ maka izipu ya.", + "apihelp-visualeditor-param-format": "Usoro nke mmepụta.", + "apihelp-visualeditor-param-html": "HTML iji zipu na Parsoid iji tọghata na wikitext.", + "apihelp-visualeditor-param-oldid": "Nọmba nsụgharị iji mee ihe (ndabara na nsụgharị kachasị ọhụrụ).", + "apihelp-visualeditor-param-paction": "Ihe omume ime.", + "apihelp-visualeditor-param-page": "Ibe iji mee omume\n na ya", + "apihelp-visualeditor-param-preload": "Ibe a ga-eji ọdịnaya ma ọ bụrụ na ibe ewepụtara enweghị ọdịnaya.", + "apihelp-visualeditor-param-preloadparams": "Oke iji dochie n'ime ibe ebugoro, ọ bụrụ na ọ dị.", + "apihelp-visualeditor-param-pst": "Tupu ịchekwa mgbanwe wikitext tupu izipu ya na Parsoid (paction = parsefragment).", + "apihelp-visualeditor-param-section": "Akụkụ nke ime ihe.", + "apihelp-visualeditor-param-starttimestamp": "Mgbe ị na-echekwa, debe nke a na oge nke nsụgharị ahụ edezi. A na-eji ya iji chọpụta esemokwu edezi.", + "apihelp-visualeditor-param-stash": "Mgbe ị na-echekwa, tọọ nke a eziokwu ma ọ bụrụ na ịchọrọ iji API na-agbaji.", + "apihelp-visualeditor-param-wikitext": "Wikitext izipu na Parsoid iji tọghata na HTML (paction = parsefragment).", + "apihelp-visualeditor-summary": "Na-eweghachi HTML5 maka ibe sitere na ọrụ Parsoid.", + "apihelp-visualeditoredit-param-basetimestamp": "Mgbe ị na-echekwa, debe nke a na oge nso nke nsụgharị ahụ edezi. A na-eji ya iji chọpụta esemokwu edezi.", + "apihelp-visualeditoredit-param-cachekey": "Jiri nsonaazụ hazie n'usoro gara aga maka arịrịọ cache jiri igodo a.\nNa-ewepụ $1html.", + "apihelp-visualeditoredit-param-captchaid": "Captcha ID (mgbe ị na-azọpụta na nzaghachi captcha).", + "apihelp-visualeditoredit-param-captchaword": "Zaa na captcha (mgbe ị na-azọpụta ya na nzaghachi captcha).", + "apihelp-visualeditoredit-param-nocontent": "Wepụ ọdịnaya HTML nke nlegharị anya ọhụrụ na nzaghachi.", + "apihelp-visualeditoredit-param-plugins": "Ngwa mgbakwunye jikọtara na arịrịọ API.", + "apihelp-visualeditoredit-param-data-{plugin}": "A na-eziga data na-enweghị isi site na plugin na arịrịọ API.", + "apihelp-visualeditoredit-param-etag": "Daalụ maka izipu ya.", + "apihelp-visualeditoredit-param-html": "HTML iziga na Parsoid maka mgbanwe wikitext.", + "apihelp-visualeditoredit-param-minor": "Ọkọlọtọ maka obere edezi.", + "apihelp-visualeditoredit-param-needcheck": "Mgbe ị na-echekwa, tọọ oke a ma ọ bụrụ na mmezigharị ahụ nwere ike ịnwe nsogbu n'ịga azụ. Nke a ga-eme ka edezi ahụ.", + "apihelp-visualeditoredit-param-oldid": "Nọmba nsụgharị iji mee ihe (ndabara na nsụgharị kachasị ọhụrụ).", + "apihelp-visualeditoredit-param-paction": "Omume iji rụọ ọrụ.", + "apihelp-visualeditoredit-param-page": "Nke a bụ peeji nke ị ga-eme ihe n'ụzọ ziri ezi.", + "apihelp-visualeditoredit-param-section": "Ngalaba nke ị ga-eme ihe.", + "apihelp-visualeditoredit-param-sectiontitle": "Aha maka ngalaba ọhụrụ.", + "apihelp-visualeditoredit-param-starttimestamp": "Mgbe ị na-echekwa, debe nke a na timestamp nke mgbe a kwadoro ibe ahụ. A na-eji ya iji chọpụta esemokwu edezi.", + "apihelp-visualeditoredit-param-summary": "Nchịkọta ndezi", + "apihelp-visualeditoredit-param-tags": "Gbanwee mkpado iji tinye ya na edit.", + "apihelp-visualeditoredit-param-wikitext": "Wikitext iji mee ihe.", + "apihelp-visualeditoredit-summary": "Chekwaa peeji HTML5 na MediaWiki (gbanwere na wikitext site na ọrụ Parsoid)." +} diff --git a/i18n/ve-mw/ig.json b/i18n/ve-mw/ig.json index ac1a097f76..d2b4b6db0a 100644 --- a/i18n/ve-mw/ig.json +++ b/i18n/ve-mw/ig.json @@ -4,6 +4,7 @@ "Aminwa 21", "Edith Nwobu", "Izuchi Onyeike", + "King ChristLike", "Olugold", "Sayvhior", "Timzy D'Great", @@ -44,7 +45,7 @@ "visualeditor-ca-editsource": "Dezie ebe osi", "visualeditor-ca-editsource-section": "dezie ebe o si", "visualeditor-ca-editsource-section-hint": "Dezie ngalaba isi iyi: $1", - "visualeditor-categories-tool": "Ụdàkọ", + "visualeditor-categories-tool": "Otú", "visualeditor-changedesc-mwcategory-sortkey-changed": "Nkwupụta gbanwere site na $1 gaa na $2", "visualeditor-changedesc-mwcategory-sortkey-set": "Họrọ igodo na $1", "visualeditor-changedesc-mwcategory-sortkey-unset": "Ihichapụta igodo unset site na $1", @@ -57,7 +58,7 @@ "visualeditor-dialog-media-alttext-checkbox": "Jiri ederede ederede dị ka ederede ọzọ", "visualeditor-dialog-media-alttext-section": "Ederede nwere ike isote", "visualeditor-dialog-media-alttext-section-help": "I nwere ike iji mpa nke n'egosipụta ịchọọ were dee nkọwa ederede nye ndị n'enweghị ike ịhụ faịlụ ahụ. Nkọwa a kwesịrị ga ezuru ha ịghọta ihe mere na ihe akụkọ gbasara irighiri nsèrè foto. Nke a ka dị mkpa n'etiti ndi kpuruisi na ụfọdụ ndị n'eji akurungwa ihu onyonyo ma ọ bụ brawzer nke naanị ederede.", - "visualeditor-dialog-media-change-image": "Gbanwee ozi-e", + "visualeditor-dialog-media-change-image": "Gbanwee onyonyo", "visualeditor-dialog-media-choose-image": "Tinye deeti na onyonyo a", "visualeditor-dialog-media-content-description-link": "(Nkọwa peeji)", "visualeditor-dialog-media-content-filename": "Aha faịlụ", @@ -77,7 +78,7 @@ "visualeditor-dialog-media-position-checkbox-help": "Ị nwere ike ime ka ihe mgbasa ozi a gosipụta n'ụzọ ziri ezi na ederede nke ibe ahụ kama ịmị n'elu mmiri. Ị ga-eme nke a naanị mgbe niile, n'ihi na ọ ga-agbaji ederede ahụ ma ọ bụrụ na ị gbanyụọ igbe a.", "visualeditor-dialog-media-position-section": "Ọnọdụ", "visualeditor-dialog-media-position-section-help": "Ị nwere ike ịtọ ebe ihe mgbasa ozi a pụtara na ibe. A na-eji nke a mgbe ụfọdụ agbajie ogologo ahịrị nke onyonyo n'otu akụkụ nke ibe ahụ.", - "visualeditor-dialog-media-save": "Dònye", + "visualeditor-dialog-media-save": "Chekwa", "visualeditor-dialog-media-search-tab-search": "chọọ", "visualeditor-dialog-media-search-tab-upload": "Bulite", "visualeditor-dialog-media-size-section": "Ogo onyonyo", @@ -212,7 +213,7 @@ "visualeditor-dialog-transclusion-required-parameter-is-blank": "Ì ji n'aka na ịchọrọ ịga n'ihu na-enweghị ijupụta $1 {{PLURAL:$2|ubi}}?", "visualeditor-dialog-transclusion-see-template": "A na-emepụta ndebiri ndị ọrụ ma nwee ike ọ gaghị enwe nkọwa zuru ezu. Enwere ike inwe ozi ndị ọzọ na nke a [[$2|peeji nke template]].", "visualeditor-dialog-transclusion-title-insert-template": "Tinye template", - "visualeditor-dialog-transclusion-title-insert-known-template": "Tinye: $ 1", + "visualeditor-dialog-transclusion-title-insert-known-template": "Tinye: $1", "visualeditor-dialog-transclusion-title-edit-known-template": "Dezie: $1", "visualeditor-dialog-transclusion-title-edit-transclusion": "Ndebiri ọdịnaya", "visualeditor-dialog-transclusion-template-search": "Nchọchọ ndebiri", @@ -303,6 +304,7 @@ "visualeditor-mwgallerydialog-mode-field-label": "Ọnọdụ ngosi", "visualeditor-mwgallerydialog-perrow-field-label": "Foto n'ahịrị ọ bụla", "visualeditor-mwgallerydialog-remove-button-label": "Wepụ onyinyo", + "visualeditor-mwgallerydialog-search-button-label": "Tinye onyonyo ọhụrụ", "visualeditor-mwgallerydialog-show-filename-field-label": "Gosi aha faịlụ", "visualeditor-mwgallerydialog-styles-field-label": "Ụdị CSS", "visualeditor-mwgallerydialog-styles-input-placeholder": "Iwu CSS, nkewapụrụ na ọkara", @@ -310,6 +312,59 @@ "visualeditor-mwgallerydialog-widths-field-label": "Obosara nke onyinyo", "visualeditor-mwgallerydialog-widths-input-placeholder": "Ndabara elu: $1 px", "visualeditor-mwpredialog-convert": "Kwe ka ụkpụrụ ngwe", + "visualeditor-mwpredialog-title": "Ederede dị larịị etinyegoro nke ọma", + "visualeditor-mwsignature-tool": "Mbinye aka gị", + "visualeditor-preference-visualeditor": "N'ekwe odezi anya.", + "visualeditor-preference-newwikitexteditor-enable": "Jiri ọnọdụ wikitext n'ime nchịkọta akụkọ anya, kama nchịkọta akụkọ wikitext dị iche iche.", + "visualeditor-preference-newwikitexteditor-help": "A na-akpọkarị nke a '2017 wikitext editor'.", + "visualeditor-preference-tabs": "Nhazi ọnọdụ:", + "visualeditor-preference-tabs-multi-tab": "Gosi m taabụ editezi abụọ", + "visualeditor-preference-tabs-prefer-ve": "Nye m onye editọ ọhụụ mgbe niile ma ọ bụrụ na ọ ga-ekwe omume.", + "visualeditor-preference-tabs-prefer-wt": "Nye m onye nchịkọta akụkọ mgbe niile", + "visualeditor-preference-tabs-remember-last": "Cheta onye nchịkọta akụkọ ikpeazụ m", + "visualeditor-preference-collab-label": "Nhazi mmekọrịta", + "visualeditor-preference-collab-description": "Kpọọ ndị ọrụ ndị ọzọ ka ha sonye na nnọkọ ndezi gị na nchịkọta akụkọ anya.", + "visualeditor-rebase-client-export": "Dọwá fú", + "visualeditor-rebase-client-export-start": "Dọwá fú", + "visualeditor-rebase-client-import": "Bubata", + "visualeditor-rebase-client-import-name": "Isiokwu peeji", + "visualeditor-rebase-client-title-help": "Ị ga-enwe ike nyochaa mgbanwe tupu ịzọpụta.", + "visualeditor-recreate": "A na-ehichapụ peeji ahụ kemgbe ị malitere idezi ya. Pịa \"$1\" iji weghachite ya.", + "visualeditor-redirect-description": "Bugharịa gaa na $1", + "visualeditor-savedialog-identify-anon": "Ị naghịzi abanye n'ime ya. Ọ bụrụ na ị na-aga n'ihu, a ga-edekọ adreesị IP gị na akụkọ ihe mere eme nke ibe a.", + "visualeditor-savedialog-identify-temp": "Ugbu a, ị na-eji aha njirimara nwa oge $1. Ọ bụrụ na ị gaa n'ihu, a ga-ejikọta ndezi gị na aha njirimara a.", + "visualeditor-savedialog-identify-user": "Ị na-abanye ugbu a dị ka [[User:$1|$1]]. Ọ bụrụ na ị na-aga n'ihu, a ga-ejikọta ndezi gị na akaụntụ a.", + "visualeditor-savedialog-keyboard-shortcut-submit": "Ị nwere ike pịa $1 iji chekwaa ndezi gị.", + "visualeditor-savedialog-label-publish-short": "Bipụta", + "visualeditor-savedialog-label-publish-short-start": "Bipụta", + "visualeditor-savedialog-label-resolve-conflict": "Dozie esemokwu", + "visualeditor-savedialog-label-resume-editing": "Malitegharịa ndezi", + "visualeditor-savedialog-label-review": "Nyochaa mgbanwe gị", + "visualeditor-savedialog-label-review-good": "Laghachi na Mpempe akwụkwọ Nchekwa", "visualeditor-savedialog-label-save-short": "Dònye", - "visualeditor-savedialog-label-save-short-start": "Dònye…" + "visualeditor-savedialog-label-save-short-start": "Dònye…", + "visualeditor-savedialog-review-nosummary": "Enweghị nchịkọta nchịkọta", + "visualeditor-savedialog-review-visual": "Nhụrụ anya", + "visualeditor-savedialog-review-wikitext": "Wikitext", + "visualeditor-savedialog-title-conflict": "Esemokwu", + "visualeditor-savedialog-title-preview": "Hụchanụ mgbanwe gị", + "visualeditor-savedialog-title-review": "Nyochaa mgbanwe gị", + "visualeditor-savedialog-title-save": "Domá ihe í gbanwere", + "visualeditor-section-body-placeholder": "Ngalaba ọhụrụ", + "visualeditor-section-title-placeholder": "Isiokwu", + "visualeditor-loaderror-revidconflict": "Ntughari ID nke ihe nkesa ahụ weghachitere adabaghị (akwụkwọ: $1, metadata: $2).", + "visualeditor-loaderror-wrongmode": "Gbalịrị ibudata nchịkọta akụkọ na ọnọdụ na-ezighi ezi (ụdị data: \"$1\", ọnọdụ nchịkọta akụkọ: \"$2\").", + "visualeditor-settings-tool": "Nhazi ihuakwụkwọ", + "visualeditor-special-characters-group-other": "A na-ejikarị ya eme ihe", + "visualeditor-templatesused-tool": "Ndebiri eji eme ihe", + "visualeditor-title-error": "Aha na ezighi ezi", + "visualeditor-toload": "Onye ndezi ga-ebughari ugbu a. Ọ bụrụ na ị ka na-ahụ ozi a ka nwa tịnkọm tịnkọm ole na ole gachara, biko [$1 bugharịa ibe ahụ].", + "visualeditor-tooltip-non-breaking-space": "Igwe anaghị agba nchara", + "visualeditor-version-label": "Ùdị", + "visualeditor-wikitext-progress": "Ịtụgharị wikitext", + "visualeditor-wikitext-warning": "Ị na-eji visual editor - [[{{MediaWiki:visualeditor-wikitext-warning-link}}|wikitext]] anaghị arụ ọrụ ebe a. Iji gbanwee gaa na isi iyi edezi n'oge ọ bụla na-enweghị ịhapụ mgbanwe gị, pịa bọtịnụ mgba ọkụ.", + "visualeditor-wikitext-warning-title": "Achọpụtara akara Wikitext", + "visualeditor-wikitextconvert-title": "Gbanwee nhazi ka ọ bụrụ wikitext?", + "visualeditor-wikitextconvert-message": "Ị mado ọdịnaya na ọgaranya formatting. Ị ga-achọ ịgbanwe usoro a na wikitext?", + "visualeditor-wikitextconvert-convert": "Gbanwee na wikitext" } diff --git a/i18n/ve-mw/mwlanguagevariant/ig.json b/i18n/ve-mw/mwlanguagevariant/ig.json new file mode 100644 index 0000000000..54ff385d3d --- /dev/null +++ b/i18n/ve-mw/mwlanguagevariant/ig.json @@ -0,0 +1,45 @@ +{ + "@metadata": { + "authors": [ + "Victor chukwuemerie Mbah" + ] + }, + "visualeditor-mwlanguagevariant-disabled": "Mgbanwe dị iche iche nwere nkwarụ", + "visualeditor-mwlanguagevariant-filter": "Ụdị dị iche iche wee bụrụ $1", + "visualeditor-mwlanguagevariant-name": "Aha asụsụ: $1", + "visualeditor-mwlanguagevariant-oneway": "Otu ụzọ ntụgharị: $1", + "visualeditor-mwlanguagevariant-twoway": "Ntụgharị asụsụ: $1", + "visualeditor-mwlanguagevariant-unknown": "Asụsụ dị iche iche", + "visualeditor-mwlanguagevariantcontextitem-flag-describe": "Nke a bụ iwu a kọwara.", + "visualeditor-mwlanguagevariantcontextitem-flag-hidden": "Nke a bụ iwu zoro ezo.", + "visualeditor-mwlanguagevariantcontextitem-flag-title": "Iwu a na-emetụta aha peeji nke.", + "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Koodu asụsụ", + "visualeditor-mwlanguagevariantcontextitem-rule-invalid-language-label": "Enweghị uru", + "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "Asụsụ", + "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "Mkpọlọ́gwụ̀", + "visualeditor-mwlanguagevariantcontextitem-rule-text-to-label": "Ebe a na-esi", + "visualeditor-mwlanguagevariantcontextitem-rule-text-twoway-label": "Ederede", + "visualeditor-mwlanguagevariantcontextitem-title-disabled": "Mgbanwe dị iche iche nwere nkwarụ", + "visualeditor-mwlanguagevariantcontextitem-title-filter": "Ihe nzacha dị iche iche", + "visualeditor-mwlanguagevariantcontextitem-title-name": "Áhạ asụsụ", + "visualeditor-mwlanguagevariantcontextitem-title-oneway": "Iwu ntụgharị otu ụzọ", + "visualeditor-mwlanguagevariantcontextitem-title-twoway": "Iwu ntụgharị asụsụ", + "visualeditor-mwlanguagevariantcontextitem-title-unknown": "Asụsụ dị iche iche", + "visualeditor-mwlanguagevariantinspector-disabled-placeholder": "Echebere ederede site na ntụgharị dị iche iche", + "visualeditor-mwlanguagevariantinspector-filter-langs-label": "Asụsụ", + "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "Koodu asụsụ", + "visualeditor-mwlanguagevariantinspector-filter-text-label": "Ọdịnaya", + "visualeditor-mwlanguagevariantinspector-filter-text-placeholder": "Nzacha ngwe", + "visualeditor-mwlanguagevariantinspector-oneway-add-button": "Tinye ikpe ọhụrụ", + "visualeditor-mwlanguagevariantinspector-oneway-clear-button": "Wepụ ikpe", + "visualeditor-mwlanguagevariantinspector-oneway-from-text-placeholder": "Ebe E Si Nweta Ngwe", + "visualeditor-mwlanguagevariantinspector-oneway-to-text-placeholder": "Ederede dị iche", + "visualeditor-mwlanguagevariantinspector-title-disabled": "Mgbanwe dị iche iche nwere nkwarụ", + "visualeditor-mwlanguagevariantinspector-title-filter": "Ihe nzacha dị iche iche", + "visualeditor-mwlanguagevariantinspector-title-name": "Áhạ asụsụ", + "visualeditor-mwlanguagevariantinspector-title-oneway": "Iwu ntụgharị otu ụzọ", + "visualeditor-mwlanguagevariantinspector-title-twoway": "Iwu ntụgharị asụsụ", + "visualeditor-mwlanguagevariantinspector-twoway-add-button": "Tinye ikpe ọhụrụ", + "visualeditor-mwlanguagevariantinspector-twoway-clear-button": "Wepụ ikpe", + "visualeditor-mwlanguagevariantinspector-twoway-text-placeholder": "Ederede dị iche" +} diff --git a/i18n/ve-wmf/ig.json b/i18n/ve-wmf/ig.json index e801847c49..cd11f5d462 100644 --- a/i18n/ve-wmf/ig.json +++ b/i18n/ve-wmf/ig.json @@ -2,13 +2,26 @@ "@metadata": { "authors": [ "Karen", - "Tochiprecious" + "Tochiprecious", + "Victor chukwuemerie Mbah" ] }, + "tag-editcheck-newcontent-description": "EditCheck na-eche na agbakwunyere ọdịnaya ọhụrụ na peeji nke", + "tag-editcheck-newreference-description": "A na-agbakwunye ihe nchọgharị weebụ na peeji nke.", + "tag-editcheck-references-description": "EditCheck na-eche na ọ ga-adị mkpa ka a na-ezo aka", + "tag-editcheck-references-activated": "Dezie Lelee (Edensibịa ) rụrụ ọrụ", + "tag-editcheck-references-activated-description": "EditCheck na-eche na ọ ga-abụ na ọ dị mkpa, ma gosipụta UI", + "tag-editcheck-references-shown": "Dezie Lelee (Edensibịa) gosipụtara", + "tag-editcheck-references-shown-description": "EditCheck na-eche na ọ ga-abụ na ọ dị mkpa, ma gosipụta UI", "tag-visualeditor": "ndezi nke anya na-ele", "tag-visualeditor-description": "Mmezigharịa eji [[{{MediaWiki:visualeditor-descriptionpagelink}}|ndezi anya na-ahụ]] wee mee", + "tag-visualeditor-needcheck": "Edezi ihe onyonyo: Lelee", + "tag-visualeditor-needcheck-description": "Mezigharịa site na iji [[{{MediaWiki:visualeditor-descriptionpagelink}}|onye nchịkọta akụkọ]] ebe sistemụ ahụ chọpụtara wikitext nwere ike inwe mgbanwe ndị na-atụghị anya ya.", "tag-visualeditor-wikitext": "Ndezi ebe osi nke 2017", "tag-visualeditor-wikitext-description": "Edezi eji 2017 wikitext editọ wee mee", + "tag-visualeditor-switched": "Edezi onyonyo: Gbanwee", + "tag-visualeditor-switched-description": "Onye ọrụ malitere idezi site na iji nchịkọta akụkọ anya, wee gbanwee gaa na nchịkọta wikitext.", + "visualeditor-feedback-link": "Ọrụ: VisualEditor/Nzaghachi", "visualeditor-feedback-tool": "Hapụ nzaghachi maka ngwanrọ a", "visualeditor-help-label": "Gụọ ntuziaka onye ọrụ", "visualeditor-welcomedialog-action": "Malite ndezi", From 1f286760f40de58e9f35743fa2905cd6342a7c32 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 3 Jun 2025 17:44:34 +0200 Subject: [PATCH 343/730] Localisation updates from https://translatewiki.net. Change-Id: Ic2b61fb90bf6bef575c72fcf3f1ee0391e73be1a --- i18n/ve-mw/{ks-arab.json => ks.json} | 0 i18n/ve-mw/mwlanguagevariant/{ks-arab.json => ks.json} | 0 i18n/ve-wmf/{ks-arab.json => ks.json} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename i18n/ve-mw/{ks-arab.json => ks.json} (100%) rename i18n/ve-mw/mwlanguagevariant/{ks-arab.json => ks.json} (100%) rename i18n/ve-wmf/{ks-arab.json => ks.json} (100%) diff --git a/i18n/ve-mw/ks-arab.json b/i18n/ve-mw/ks.json similarity index 100% rename from i18n/ve-mw/ks-arab.json rename to i18n/ve-mw/ks.json diff --git a/i18n/ve-mw/mwlanguagevariant/ks-arab.json b/i18n/ve-mw/mwlanguagevariant/ks.json similarity index 100% rename from i18n/ve-mw/mwlanguagevariant/ks-arab.json rename to i18n/ve-mw/mwlanguagevariant/ks.json diff --git a/i18n/ve-wmf/ks-arab.json b/i18n/ve-wmf/ks.json similarity index 100% rename from i18n/ve-wmf/ks-arab.json rename to i18n/ve-wmf/ks.json From d45c8953b30651949c9e0bba456507426b203307 Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Tue, 3 Jun 2025 16:45:56 -0400 Subject: [PATCH 344/730] Update VE core submodule to master (e1d7fa820) New changes: 9cc964cd9 build: Upgrade eslint-config-wikimedia from 0.29.1 to 0.30.0 d0f0d429a demos: Update language list, now that ks-arab has been renamed to ks ed03a0ed7 ve.utils: Deprecate ve.entries now that ES2017 is presumed Localisation Updates: 2f4b3ec3c, 3b74a8733, 457eacf37 Change-Id: If641486f48bdb2061854a83537e4465410279f5c --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 25390a641f..e1d7fa820b 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 25390a641f4e765df223acce6812d497e2c24ffc +Subproject commit e1d7fa820bcab56cfee755341e71aa8d55696230 From 58bbf24f1d17c823fdb67c2f758fb66cfc007877 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 4 Jun 2025 09:46:39 +0200 Subject: [PATCH 345/730] Localisation updates from https://translatewiki.net. Change-Id: I71c64a9cd5cb33e00f1afb28322253bfa625c570 --- i18n/ve-mw/ks.json | 148 --------------------------- i18n/ve-mw/mwlanguagevariant/ks.json | 10 -- i18n/ve-wmf/ks.json | 19 ---- 3 files changed, 177 deletions(-) delete mode 100644 i18n/ve-mw/ks.json delete mode 100644 i18n/ve-mw/mwlanguagevariant/ks.json delete mode 100644 i18n/ve-wmf/ks.json diff --git a/i18n/ve-mw/ks.json b/i18n/ve-mw/ks.json deleted file mode 100644 index 5153fbb647..0000000000 --- a/i18n/ve-mw/ks.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Iflaq", - "Rishabhbhat", - "Shahwaqar", - "Teashae" - ] - }, - "collabpad-doctitle": "مُشتَرکہٕ پیڈ: $1", - "collabpad-import-subtitle": "$1 پؠٹھ دَرآمَد کۆرمُت", - "collabpad": "مُشتَرکہٕ پیڈ", - "tooltip-ca-ve-edit": "یہِ صَفہٕ کٔرِو اؠڈِٹ", - "tooltip-ca-editsource": "یَمہٕ صَفُک آگُر کوڈ کٔرِو اؠڈِٹ", - "tooltip-ca-createsource": "یَمہٕ صَفُک آگُر کوڈ بَنٲوِو", - "visualeditor-advancedsettings-tool": "اِضٲفی سؠٹِنگ", - "visualeditor-autosave-modified-prompt-accept": "اؠڈِٹ تھٲوِو جٲری", - "visualeditor-autosave-modified-prompt-reject": "نٔو اؠڈِٹ کٔرِو شُروٗع", - "visualeditor-backbutton-tooltip": "واپَس گٔژھِو", - "visualeditor-ca-createlocaldescriptionsource": "مُقٲمی وَضاحَت آگُر لیٚکھِو", - "visualeditor-ca-createsource": "کوڈ بَنٲیو", - "visualeditor-ca-editsource": "کوڈ اؠڈِٹ کٔرِو", - "visualeditor-ca-editsource-section": "کوڈ اؠڈِٹ کٔرِو", - "visualeditor-categories-tool": "زاتھ", - "visualeditor-descriptionpagelink": "Project:ظٲہِر اؠڈِٹَر", - "visualeditor-dialog-media-change-image": "شَکل بَدلٲئو", - "visualeditor-dialog-media-content-filename": "فَیِل ناو", - "visualeditor-dialog-media-content-section": "تَعارُف", - "visualeditor-dialog-media-goback": "واپَس", - "visualeditor-dialog-media-info-audiofile": "آڑیو فَیِل", - "visualeditor-dialog-media-info-created": "تَخلیٖق تٲریٖخ: $1", - "visualeditor-dialog-media-info-meta-artist": "لِکھٲرؠ: $1", - "visualeditor-dialog-media-info-moreinfo": "مزیٖد معلوٗمات", - "visualeditor-dialog-media-info-readmore": "مٔذیٖد پٔرِو", - "visualeditor-dialog-media-page-advanced": "اِضٲفِی", - "visualeditor-dialog-media-page-general": "عام", - "visualeditor-dialog-media-save": "مَحفوٗظ", - "visualeditor-dialog-media-search-tab-search": "تَلاش", - "visualeditor-dialog-media-search-tab-upload": "اَپلوڈ", - "visualeditor-dialog-media-title": "میٖڈیا سؠٹِنگ", - "visualeditor-dialog-media-type-border": "باڈَر", - "visualeditor-dialog-media-type-frame": "فرٛیم", - "visualeditor-dialog-media-type-frameless": "فرٛیم وَرٲے", - "visualeditor-dialog-media-type-none": "اِبتِدٲیی", - "visualeditor-dialog-media-type-section": "تَصویٖر قسٕم", - "visualeditor-dialog-media-type-thumb": "تھمبنیل", - "visualeditor-dialog-media-upload": "اَپلوڈ", - "visualeditor-dialog-meta-advancedsettings-label": "اِضٲفی سؠٹِنگ", - "visualeditor-dialog-meta-advancedsettings-section": "اِضٲفی سؠٹِنگ", - "visualeditor-dialog-meta-categories-category": "زٲژ", - "visualeditor-dialog-meta-categories-data-label": "زٲژ", - "visualeditor-dialog-meta-categories-input-newcategorylabel": "نٔو زٲژ", - "visualeditor-dialog-meta-categories-input-placeholder": "زٲژ کٔرِو شٲمِل", - "visualeditor-dialog-meta-categories-options": "یَختِیار", - "visualeditor-dialog-meta-categories-section": "زٲژ", - "visualeditor-dialog-meta-languages-code-label": "زَبان کوڑ", - "visualeditor-dialog-meta-languages-label": "زَبانہٕ", - "visualeditor-dialog-meta-languages-name-label": "زَبان", - "visualeditor-dialog-meta-languages-section": "زَبانہٕ", - "visualeditor-dialog-meta-settings-index-default": "اورٕ طَرفہٕ", - "visualeditor-dialog-meta-settings-index-disable": "نہَ", - "visualeditor-dialog-meta-settings-index-force": "آ", - "visualeditor-dialog-meta-settings-label": "صَفہٕ سؠٹِنگ", - "visualeditor-dialog-meta-settings-newsectioneditlink-default": "اورٕ طَرفہٕ", - "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "نہَ", - "visualeditor-dialog-meta-settings-newsectioneditlink-force": "آ", - "visualeditor-dialog-meta-settings-section": "صَفہٕ سؠٹِنگ", - "visualeditor-dialog-meta-settings-toc-disable": "زانٛہہ نہٕ", - "visualeditor-dialog-meta-settings-toc-force": "ہمیٚشہٕ", - "visualeditor-dialog-meta-title": "یَختِیار", - "visualeditor-dialog-template-title": "فرما", - "visualeditor-dialog-transclusion-action-save": "مَحفوٗظ", - "visualeditor-dialog-transclusion-add-param-placeholder": "پیرامیٖٹر ناو", - "visualeditor-dialog-transclusion-add-param-save": "اِضافہٕ", - "visualeditor-dialog-transclusion-add-template": "فرما کٔرِو دَرٕج", - "visualeditor-dialog-transclusion-add-template-save": "اِضافہٕ", - "visualeditor-dialog-transclusion-contextitem-loading": "لوڑ چھُ گژھن...", - "visualeditor-dialog-transclusion-filter-show-all": "تَمام وُچھِو", - "visualeditor-dialog-transclusion-loading": "لوڈ گَژھَن...", - "visualeditor-dialog-transclusion-param-example-long": "مثال: $1", - "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "واپَس گٔژھِو", - "visualeditor-dialog-transclusion-title-insert-template": "فرما کرو درج", - "visualeditor-dialog-transclusion-title-insert-known-template": "دَرٕج: $1", - "visualeditor-dialog-transclusion-title-edit-known-template": "اؠڈِٹ: $1", - "visualeditor-dialog-transclusion-title-edit-transclusion": "فرما مَواد", - "visualeditor-dialog-transclusion-template-search": "فرما تَلاش", - "visualeditor-dialog-transclusion-wikitext": "وِکی مَتَن", - "visualeditor-dialogbutton-media-tooltip": "تَصویٖر تہٕ میٖڈیا", - "visualeditor-dialogbutton-template-tooltip": "فرما", - "visualeditor-editnotices-tooltip": "اؠڈِٹ اِطلاع", - "visualeditor-expandable-less": "کَم", - "visualeditor-expandable-more": "زیٛادٕ", - "visualeditor-feedback-defaultmessage": "یو آر ایل: $1", - "visualeditor-formatdropdown-format-mw-heading1": "صَفہٕ عُنٛوان", - "visualeditor-formatdropdown-format-mw-heading2": "سَرنامہٕ", - "visualeditor-formatdropdown-format-mw-heading3": "لوکُٹ سَرنامہٕ 1", - "visualeditor-formatdropdown-format-mw-heading4": "لوکُٹ سَرنامہٕ 2", - "visualeditor-formatdropdown-format-mw-heading5": "لوکُٹ سَرنامہٕ 3", - "visualeditor-formatdropdown-format-mw-heading6": "لوکُٹ سَرنامہٕ 4", - "visualeditor-languages-tool": "زَبانہٕ", - "visualeditor-linkinspector-button-link-external": "بیٖروٗنی ویب سایٹ", - "visualeditor-linkinspector-button-link-internal": "اۆندروٗنی صَفَن مَنٛز کٔرِو تَلاش", - "visualeditor-linkinspector-educationpopup-title": "لِنکہٕ", - "visualeditor-media-title-audio": "آڈیو", - "visualeditor-media-title-image": "شکل", - "visualeditor-media-title-video": "ویڈیو", - "visualeditor-meta-tool": "یَختِیار", - "visualeditor-mweditmode-tooltip": "اؠڈِٹ خانہٕ بَدلٲوِو", - "visualeditor-mweditmodesource-progress": "کود اؠڈِٹ خانَس کُن پَکان...", - "visualeditor-mweditmodesource-tool-current": "کوڈ اؠڈِٹ خانہٕ", - "visualeditor-mweditmodeve-progress": "ظٲہِر اؠڈِٹ خانَس کُن پَکان...", - "visualeditor-mweditmodeve-tool-current": "ظٲہِر اؠڈِٹ خانہٕ", - "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|تَصویٖر}}", - "visualeditor-mwgallerydialog-card-images": "تصویٖر", - "visualeditor-mwgallerydialog-card-options": "اِختِیار", - "visualeditor-mwgallerydialog-classes-field-label": "سی ایس ایس کلاسیں", - "visualeditor-mwgallerydialog-title": "نِگار خانہٕ", - "visualeditor-mwsignature-tool": "تُہند دَستخَط", - "visualeditor-preference-tabs": "اٮ۪ڑِٹَیغ طٔریٖقہٕ:", - "visualeditor-rebase-client-export": "بَرآمَد", - "visualeditor-rebase-client-export-start": "بَرآمَد...", - "visualeditor-rebase-client-import": "دَرآمَد", - "visualeditor-rebase-client-import-name": "صَفہٕ عُنٛوان", - "visualeditor-redirect-description": "$1 کُن رُجوٗع مُکرَر", - "visualeditor-savedialog-keyboard-shortcut-submit": "تُہؠ ہیٚکِو $1 دَبٲوِتھ اؠڈِٹ مَحفوٗظ کَرنہٕ خٲطرٕ.", - "visualeditor-savedialog-label-publish-short": "شایع کٔرِو", - "visualeditor-savedialog-label-publish-short-start": "شایع کٔرِو...", - "visualeditor-savedialog-label-resolve-conflict": "تَنازٕ اؠڈِٹ کٔرِو حَل", - "visualeditor-savedialog-label-resume-editing": "اؠڈِٹ تھٲوِو جٲری", - "visualeditor-savedialog-label-review": "تَبدیٖلی وُچھِو", - "visualeditor-savedialog-label-save-short": "مَحفوٗظ", - "visualeditor-savedialog-label-save-short-start": "مَحفوٗظ...", - "visualeditor-savedialog-review-nosummary": "اؠڈِٹ خُلاصہٕ وَرٲے", - "visualeditor-savedialog-review-visual": "ظٲہِر", - "visualeditor-savedialog-review-wikitext": "وِکی مَتَن", - "visualeditor-savedialog-title-conflict": "تَنازٕ", - "visualeditor-savedialog-title-preview": "اؠڈِٹ نُمٲیِش وُچھِو", - "visualeditor-savedialog-title-review": "تَبدیٖلی وُچھِو", - "visualeditor-savedialog-title-save": "تَبدیٖلی کٔرِو مَحفوٗظ", - "visualeditor-section-body-placeholder": "نٔو حِصہٕ", - "visualeditor-section-title-placeholder": "موضوٗع", - "visualeditor-settings-tool": "صَفہٕ سؠٹِنگ", - "visualeditor-special-characters-group-other": "زیٛادٕ اِستِمال کَرنہٕ آمِت", - "visualeditor-templatesused-tool": "اِستِمال کَرنہٕ آمِت فرما", - "visualeditor-version-label": "وٕرجَن", - "visualeditor-wikitext-progress": "وِکی مَتَن تَبدیٖل کَرَن", - "visualeditor-wikitextconvert-convert": "وِکی مَتنَس مَنٛز تَبدیٖل کَرَن" -} diff --git a/i18n/ve-mw/mwlanguagevariant/ks.json b/i18n/ve-mw/mwlanguagevariant/ks.json deleted file mode 100644 index 05780f1556..0000000000 --- a/i18n/ve-mw/mwlanguagevariant/ks.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Iflaq" - ] - }, - "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "زَبان کوڑ", - "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "زَبان", - "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "آگُر" -} diff --git a/i18n/ve-wmf/ks.json b/i18n/ve-wmf/ks.json deleted file mode 100644 index dac4407d0a..0000000000 --- a/i18n/ve-wmf/ks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Iflaq" - ] - }, - "tag-visualeditor": "ظٲہِر اؠڈِٹ", - "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ظٲہِر اؠڈِٹ خانَس]] مَنٛز کَرنہٕ آمِت اؠڈِٹ", - "tag-visualeditor-wikitext": "2017 کوڈ اؠڈِٹ خانہٕ", - "tag-visualeditor-wikitext-description": "اؠڈِٹ یِم 2017 وِکی مَتَن اؠڈِٹ خانَس مَنٛز کَرنہٕ آے", - "tag-visualeditor-switched": "ظٲہِر اؠڈِٹ: بَدلاونہٕ", - "visualeditor-feedback-tool": "یَتھ سافٹٕویرَس مُتلِق دِیِو پَنٕنؠ راے", - "visualeditor-help-label": "صٲرِف تَعارُف کِتاب پٔرِو", - "visualeditor-welcomedialog-action": "اؠڈِٹ کَرُن کٔرِو شُروٗع", - "visualeditor-welcomedialog-content": "کانٛہہ تہِ ہیٚکہِ اؠڈِٹ کٔرِتھ تہٕ اِضافہٕ کٔرِتھ.", - "visualeditor-welcomedialog-switch": "کوڈ اؠڈِٹ خانَس مَنٛز گٔژھِو", - "visualeditor-welcomedialog-switch-ve": "ظٲہِر اؠڈِٹ خانَس مَنٛز گٔژھِو", - "visualeditor-welcomedialog-title": "{{GENDER:$1|خٲر مَقدَم}}، $2" -} From f7a5f7a95fea7f6381ea077e5b84ae0d62e62169 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 4 Jun 2025 15:37:56 +0100 Subject: [PATCH 346/730] Use new argument list for ve.dm.Surface Upstream has code to support the legacy argument list, but we should use the new one so that code can be removed. Change-Id: I0f0aba78147a7196c7fc73d0bd52f83cb97cdf61 --- modules/ve-mw/dm/ve.dm.MWWikitextSurface.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/dm/ve.dm.MWWikitextSurface.js b/modules/ve-mw/dm/ve.dm.MWWikitextSurface.js index 7c9dafe313..6cbb2d93a6 100644 --- a/modules/ve-mw/dm/ve.dm.MWWikitextSurface.js +++ b/modules/ve-mw/dm/ve.dm.MWWikitextSurface.js @@ -16,7 +16,7 @@ */ ve.dm.MWWikitextSurface = function VeDmMwWikitextSurface( doc, config ) { // Parent constructors - ve.dm.MWWikitextSurface.super.call( this, doc, ve.extendObject( config, { sourceMode: true } ) ); + ve.dm.MWWikitextSurface.super.call( this, doc, null, ve.extendObject( config, { sourceMode: true } ) ); }; /* Inheritance */ From c43012d4d16452c8fab559d1af609ee2726502a3 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Sun, 4 May 2025 14:05:04 +0300 Subject: [PATCH 347/730] Fix no-jquery/no-done-fail warnings Change-Id: I79a82a8dd66f40777034c3631312ad0afbd07c7b --- .../ve.init.mw.CollabTarget.init.js | 10 ++-- .../ve-mw/ce/nodes/ve.ce.MWExtensionNode.js | 7 +-- modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js | 9 ++-- .../ce/nodes/ve.ce.MWTransclusionNode.js | 9 ++-- modules/ve-mw/dm/models/ve.dm.MWImageModel.js | 4 +- .../dm/models/ve.dm.MWTransclusionModel.js | 5 +- modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js | 5 +- .../dm/ve.dm.MWWikitextSurfaceFragment.js | 2 +- .../apiresponsecache/ve.init.mw.LinkCache.js | 6 +-- .../init/targets/ve.init.mw.ArticleTarget.js | 46 ++++++++++--------- .../ve.init.mw.DesktopArticleTarget.js | 14 +++--- .../preinit/ve.init.MWEditingTabDialog.js | 2 +- .../ve.init.mw.DesktopArticleTarget.init.js | 8 ++-- ...ui.MWWikitextStringTransferHandler.test.js | 2 +- .../ve.ui.MWTransclusionDialog.test.js | 6 +-- .../ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js | 6 +-- .../ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js | 2 +- .../ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js | 9 ++-- .../ui/dialogs/ve.ui.MWTemplateDialog.js | 2 +- .../ui/dialogs/ve.ui.MWTransclusionDialog.js | 6 +-- .../ve.ui.MWLinkAnnotationInspector.js | 2 +- .../ve-mw/ui/pages/ve.ui.MWLanguagesPage.js | 19 ++++---- .../toolgroups/ve.ui.MWHelpListToolGroup.js | 2 +- ...ui.MWWikitextDataTransferHandlerFactory.js | 3 +- .../ui/ve.ui.MWWikitextTransferRegistry.js | 2 +- .../ui/widgets/ve.ui.MWAceEditorWidget.js | 31 ++++++------- .../ui/widgets/ve.ui.MWCategoryWidget.js | 2 +- 27 files changed, 111 insertions(+), 110 deletions(-) diff --git a/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js b/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js index 31751110af..6099c3f87b 100644 --- a/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js +++ b/modules/ve-mw-collab/ve.init.mw.CollabTarget.init.js @@ -62,7 +62,7 @@ progressBar.toggle( true ); form.toggle( false ); - modulePromise.done( () => { + modulePromise.then( () => { target = ve.init.mw.targetFactory.create( 'collab', title, conf.rebaserUrl, { importTitle: importTitle } ); // If the target emits a 'close' event (via the toolbar back button on mobile) then go to the landing page. target.once( 'close', () => { @@ -186,7 +186,7 @@ target.revid = importedDocument.revid; } } - initPromise.fail( ( err ) => { + initPromise.then( null, ( err ) => { setTimeout( () => { throw new Error( err ); } ); @@ -197,12 +197,12 @@ } ); } ); + }, ( err ) => { + mw.log.error( err ); + showForm( true ); } ).always( () => { form.toggle( false ); progressBar.toggle( false ); - } ).fail( ( err ) => { - mw.log.error( err ); - showForm( true ); } ); } diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js b/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js index ad6aba86cb..34d9f26cd7 100644 --- a/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js +++ b/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js @@ -76,9 +76,10 @@ ve.ce.MWExtensionNode.prototype.generateContents = function ( config ) { const wikitext = mw.html.element( tagName, attrs, new mw.html.Raw( extsrc ) ); if ( this.constructor.static.rendersEmpty || extsrc.trim() !== '' ) { - const xhr = ve.init.target.parseWikitextFragment( wikitext, false, this.getModel().getDocument() ) - .done( this.onParseSuccess.bind( this, deferred ) ) - .fail( this.onParseError.bind( this, deferred ) ); + const xhr = ve.init.target.parseWikitextFragment( wikitext, false, this.getModel().getDocument() ).then( + this.onParseSuccess.bind( this, deferred ), + this.onParseError.bind( this, deferred ) + ); return deferred.promise( { abort: xhr.abort } ); } else { deferred.resolve( $( '' ).text( '\u00a0' ).get() ); diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js b/modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js index 1fb7cf5002..6df3cc25d5 100644 --- a/modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js +++ b/modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js @@ -124,9 +124,12 @@ ve.ce.MWImageNode.prototype.generateContents = function () { iiurlheight: height, iiurlparam: params, titles: this.getModel().getFilename() - } ) - .done( this.onParseSuccess.bind( this, deferred ) ) - .fail( this.onParseError.bind( this, deferred ) ); + } ); + + xhr.then( + this.onParseSuccess.bind( this, deferred ), + this.onParseError.bind( this, deferred ) + ); return deferred.promise( { abort: xhr.abort } ); }; diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js b/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js index 13f8ff7efd..f92806b4d9 100644 --- a/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js +++ b/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js @@ -177,9 +177,12 @@ ve.ce.MWTransclusionNode.prototype.generateContents = function ( config ) { ( config && config.wikitext ) || this.model.getWikitext(), true, this.getModel().getDocument() - ) - .done( this.onParseSuccess.bind( this, deferred ) ) - .fail( this.onParseError.bind( this, deferred ) ); + ); + + xhr.then( + this.onParseSuccess.bind( this, deferred ), + this.onParseError.bind( this, deferred ) + ); return deferred.promise( { abort: xhr.abort } ); }; diff --git a/modules/ve-mw/dm/models/ve.dm.MWImageModel.js b/modules/ve-mw/dm/models/ve.dm.MWImageModel.js index 7b6d5153f4..de16fde161 100644 --- a/modules/ve-mw/dm/models/ve.dm.MWImageModel.js +++ b/modules/ve-mw/dm/models/ve.dm.MWImageModel.js @@ -338,7 +338,7 @@ ve.dm.MWImageModel.prototype.changeImageSource = function ( attrs, APIinfo ) { // Call for updated scalable if we don't have dimensions from the API info if ( this.getFilename() ) { // Update anyway - ve.dm.MWImageNode.static.getScalablePromise( this.getFilename() ).done( ( info ) => { + ve.dm.MWImageNode.static.getScalablePromise( this.getFilename() ).then( ( info ) => { this.scalable.setOriginalDimensions( { width: info.width, height: info.height @@ -1196,7 +1196,7 @@ ve.dm.MWImageModel.prototype.attachScalable = function ( scalable ) { // Call for updated scalable if ( imageName ) { - ve.dm.MWImageNode.static.getScalablePromise( imageName ).done( ( info ) => { + ve.dm.MWImageNode.static.getScalablePromise( imageName ).then( ( info ) => { this.scalable.setOriginalDimensions( { width: info.width, height: info.height diff --git a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js index 59fc1e0608..30079299d3 100644 --- a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js +++ b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js @@ -332,8 +332,9 @@ lang: mw.config.get( 'wgUserLanguage' ), includeMissingTitles: '1', redirects: '1' - } ).done( this.cacheTemplateDataApiResponse.bind( this ) ); - xhr.always( + } ); + + xhr.then( this.cacheTemplateDataApiResponse.bind( this ) ).always( this.markRequestAsDone.bind( this, xhr ), this.resolveChangeQueue.bind( this, queue ) ); diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js index cf0fdb0682..998e4adbf0 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWImageNode.js @@ -362,10 +362,7 @@ ve.dm.MWImageNode.prototype.getFilename = function () { */ ve.dm.MWImageNode.prototype.getScalable = function () { if ( !this.scalablePromise ) { - this.scalablePromise = ve.dm.MWImageNode.static.getScalablePromise( this.getFilename() ); - // If the promise was already resolved before getScalablePromise returned, then jQuery will execute the done straight away. - // So don't just do getScalablePromise( ... ).done because we need to make sure that this.scalablePromise gets set first. - this.scalablePromise.done( ( info ) => { + this.scalablePromise = ve.dm.MWImageNode.static.getScalablePromise( this.getFilename() ).then( ( info ) => { if ( info ) { this.getScalable().setOriginalDimensions( { width: info.width, diff --git a/modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js b/modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js index 4f08d3e4fc..e20402a33b 100644 --- a/modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js +++ b/modules/ve-mw/dm/ve.dm.MWWikitextSurfaceFragment.js @@ -136,7 +136,7 @@ ve.dm.MWWikitextSurfaceFragment.prototype.convertToSource = function ( doc ) { const progressPromise = ve.init.target.getSurface().createProgress( wikitextPromise, ve.msg( 'visualeditor-generating-wikitext-progress' ) ).then( ( progressBar, cancelPromise ) => { - cancelPromise.fail( () => { + cancelPromise.then( null, () => { wikitextPromise.abort(); } ); } ); diff --git a/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js b/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js index 0d538575c1..f9a54c9ba7 100644 --- a/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js +++ b/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js @@ -79,7 +79,7 @@ ve.init.mw.LinkCache.prototype.styleElement = function ( title, $element, hasFra promise = this.get( title ); } - promise.done( ( data ) => { + promise.then( ( data ) => { // eslint-disable-next-line mediawiki/class-doc $element.addClass( data.linkclasses ); if ( data.missing && !data.known ) { @@ -89,10 +89,6 @@ ve.init.mw.LinkCache.prototype.styleElement = function ( title, $element, hasFra if ( !hasFragment && this.constructor.static.normalizeTitle( title ) === this.constructor.static.normalizeTitle( mw.config.get( 'wgRelevantPageName' ) ) ) { $element.addClass( 'mw-selflink' ); } - - // The following two classes should already be added by data.linkclasses - // TODO: Decide if the linkclasses or the pageprop is canonical, and only use one. - // Provided by core MediaWiki, no styles by default. if ( data.redirect ) { $element.addClass( 'mw-redirect' ); diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 4895d50c4e..b24b837ecf 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1122,9 +1122,10 @@ ve.init.mw.ArticleTarget.prototype.load = function ( dataPromise ) { } ); this.loading = dataPromise; - dataPromise - .done( this.loadSuccess.bind( this ) ) - .fail( this.loadFail.bind( this ) ); + dataPromise.then( + this.loadSuccess.bind( this ), + this.loadFail.bind( this ) + ); return dataPromise; }; @@ -1554,12 +1555,12 @@ ve.init.mw.ArticleTarget.prototype.save = function ( doc, options ) { data.vetags = taglist.join( ',' ); - const promise = this.saving = this.tryWithPreparedCacheKey( doc, data, 'save' ) - .done( this.saveComplete.bind( this ) ) - .fail( this.saveFail.bind( this, doc, data ) ) - .always( () => { - this.saving = null; - } ); + const promise = this.saving = this.tryWithPreparedCacheKey( doc, data, 'save' ).then( + this.saveComplete.bind( this ), + this.saveFail.bind( this, doc, data ) + ).always( () => { + this.saving = null; + } ); return promise; }; @@ -1612,9 +1613,10 @@ ve.init.mw.ArticleTarget.prototype.getWikitextDiffPromise = function ( doc ) { } return data.diff; } ); - this.wikitextDiffPromise - .done( this.emit.bind( this, 'showChanges' ) ) - .fail( this.emit.bind( this, 'showChangesError' ) ); + this.wikitextDiffPromise.then( + this.emit.bind( this, 'showChanges' ), + this.emit.bind( this, 'showChangesError' ) + ); } return this.wikitextDiffPromise; }; @@ -1693,12 +1695,12 @@ ve.init.mw.ArticleTarget.prototype.serialize = function ( doc, callback ) { page: this.getPageName(), oldid: this.revid, etag: this.etag - }, 'serialize' ) - .done( this.emit.bind( this, 'serializeComplete' ) ) - .fail( this.emit.bind( this, 'serializeError' ) ) - .always( () => { - this.serializing = null; - } ); + }, 'serialize' ).then( + this.emit.bind( this, 'serializeComplete' ), + this.emit.bind( this, 'serializeError' ) + ).always( () => { + this.serializing = null; + } ); if ( callback ) { OO.ui.warnDeprecation( 'Passing a callback to ve.init.mw.ArticleTarget#serialize is deprecated. Use the returned promise instead.' ); @@ -1982,7 +1984,7 @@ ve.init.mw.ArticleTarget.prototype.showSaveDialog = function ( action, checkboxN this.emit( 'saveWorkflowBegin' ); - this.preSaveProcess.execute().done( () => { + this.preSaveProcess.execute().then( () => { if ( this.deactivating || !this.active ) { // It's possible to trigger deactivating VE during the // preSaveProcess (e.g. by clicking the "read" tab), and in that @@ -1993,7 +1995,7 @@ ve.init.mw.ArticleTarget.prototype.showSaveDialog = function ( action, checkboxN this.prepareCacheKey( this.getDocToSave() ); // Get the save dialog - this.getSurface().getDialogs().getWindow( 'mwSave' ).done( ( win ) => { + this.getSurface().getDialogs().getWindow( 'mwSave' ).then( ( win ) => { const windowAction = ve.ui.actionFactory.create( 'window', this.getSurface() ); if ( !this.saveDialog ) { @@ -2056,7 +2058,7 @@ ve.init.mw.ArticleTarget.prototype.showSaveDialog = function ( action, checkboxN } ); } } ); - } ).fail( () => { + }, () => { this.saveDialogIsOpening = false; } ); }; @@ -2465,7 +2467,7 @@ ve.init.mw.ArticleTarget.prototype.renderCategories = function ( categoryItems ) categoryItems.forEach( ( categoryItem, index ) => { const attributes = ve.copy( ve.getProp( categoryItem, 'element', 'attributes' ) ); attributes.index = index; - promises.push( ve.init.platform.linkCache.get( attributes.category ).done( ( result ) => { + promises.push( ve.init.platform.linkCache.get( attributes.category ).then( ( result ) => { const group = result.hidden ? categories.hidden : categories.normal; // In case of duplicates, first entry wins (like in MediaWiki) if ( !group[ attributes.category ] || group[ attributes.category ].index > attributes.index ) { diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index 164369d365..6d218f7bd2 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -241,7 +241,7 @@ ve.init.mw.DesktopArticleTarget.prototype.setupToolbar = function ( surface ) { } this.toolbarSetupDeferred.resolve(); - this.toolbarSetupDeferred.done( () => { + this.toolbarSetupDeferred.then( () => { const newSurface = this.getSurface(); // Check the surface wasn't torn down while the toolbar was animating if ( newSurface ) { @@ -394,13 +394,13 @@ ve.init.mw.DesktopArticleTarget.prototype.activate = function ( dataPromise ) { this.toolbarSetupDeferred = ve.createDeferred(); $( 'html' ).addClass( 've-activating' ); - ve.promiseAll( [ this.activatingDeferred, this.toolbarSetupDeferred ] ).done( () => { + ve.promiseAll( [ this.activatingDeferred, this.toolbarSetupDeferred ] ).then( () => { if ( !this.suppressNormalStartupDialogs ) { this.maybeShowWelcomeDialog(); this.maybeShowMetaDialog(); } this.afterActivate(); - } ).fail( () => { + }, () => { $( 'html' ).removeClass( 've-activating' ); } ); @@ -680,7 +680,7 @@ ve.init.mw.DesktopArticleTarget.prototype.loadFail = function ( code, errorDetai { action: 'accept', label: OO.ui.msg( 'ooui-dialog-process-retry' ), flags: 'primary' }, { action: 'reject', label: OO.ui.msg( 'ooui-dialog-message-reject' ), flags: 'safe' } ] - } ).done( ( confirmed ) => { + } ).then( ( confirmed ) => { if ( confirmed ) { // Retry load this.load(); @@ -795,7 +795,7 @@ ve.init.mw.DesktopArticleTarget.prototype.onMetaItemRemoved = function ( metaIte * @param {ve.dm.MetaItem[]} categoryItems Array of category metaitems to display */ ve.init.mw.DesktopArticleTarget.prototype.rebuildCategories = function ( categoryItems ) { - this.renderCategories( categoryItems ).done( ( $categories ) => { + this.renderCategories( categoryItems ).then( ( $categories ) => { // Clone the existing catlinks for any specific properties which might // be needed by the rest of the page. Also gives us a not-attached // version, which we can pass to wikipage.categories as it requests. @@ -868,7 +868,7 @@ ve.init.mw.DesktopArticleTarget.prototype.serialize = function () { // Parent method const promise = ve.init.mw.DesktopArticleTarget.super.prototype.serialize.apply( this, arguments ); - return promise.fail( ( error, response ) => { + return promise.then( null, ( error, response ) => { const $errorMessages = this.extractErrorMessages( response ); OO.ui.alert( $errorMessages ); @@ -1471,7 +1471,7 @@ ve.init.mw.DesktopArticleTarget.prototype.reloadSurface = function () { // Parent method ve.init.mw.DesktopArticleTarget.super.prototype.reloadSurface.apply( this, arguments ); - this.activatingDeferred.done( () => { + this.activatingDeferred.then( () => { this.updateHistoryState(); this.afterActivate(); this.setupTriggerListeners(); diff --git a/modules/ve-mw/preinit/ve.init.MWEditingTabDialog.js b/modules/ve-mw/preinit/ve.init.MWEditingTabDialog.js index 03f8f046e5..6d3bbcc726 100644 --- a/modules/ve-mw/preinit/ve.init.MWEditingTabDialog.js +++ b/modules/ve-mw/preinit/ve.init.MWEditingTabDialog.js @@ -79,7 +79,7 @@ mw.libs.ve.EditingTabDialog.prototype.getActionProcess = function ( action ) { this.pushPending(); // Same as ve.init.target.getLocalApi() - new mw.Api().saveOption( 'visualeditor-tabs', action ).done( () => { + new mw.Api().saveOption( 'visualeditor-tabs', action ).then( () => { actionWidget.popPending(); mw.user.options.set( 'visualeditor-tabs', action ); this.close( { action: action } ); diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index 8ce7544b7c..eb1adde79a 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -677,7 +677,7 @@ // toolbarSetupDeferred resolves slightly before activatePromise, use done // to run in the same paint cycle as the VE toolbar being drawn - target.toolbarSetupDeferred.done( () => { + target.toolbarSetupDeferred.then( () => { hideToolbarPlaceholder(); } ); @@ -1097,7 +1097,7 @@ const section = $( e.target ).closest( '#ca-addsection' ).length ? 'new' : null; if ( active ) { - targetPromise.done( ( target ) => { + targetPromise.then( ( target ) => { if ( target.getDefaultMode() === 'source' ) { if ( mode === 'visual' ) { target.switchToVisualEditor(); @@ -1530,7 +1530,7 @@ ) { mw.loader.load( 'ext.visualEditor.switching' ); mw.hook( 'wikiEditor.toolbarReady' ).add( ( $textarea ) => { - mw.loader.using( 'ext.visualEditor.switching' ).done( () => { + mw.loader.using( 'ext.visualEditor.switching' ).then( () => { const showPopup = url.searchParams.has( 'veswitched' ) && !mw.user.options.get( 'visualeditor-hidesourceswitchpopup' ), toolFactory = new OO.ui.ToolFactory(), toolGroupFactory = new OO.ui.ToolGroupFactory(); @@ -1623,7 +1623,7 @@ // Not on protected pages pageIsProbablyEditable ) { - mw.loader.using( 'ext.visualEditor.welcome' ).done( () => { + mw.loader.using( 'ext.visualEditor.welcome' ).then( () => { // Check shouldShowWelcomeDialog() again: any code that might have called // stopShowingWelcomeDialog() wouldn't have had an opportunity to do that // yet by the first time we checked diff --git a/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js b/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js index 8f44844539..ad2a377db0 100644 --- a/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js +++ b/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js @@ -48,7 +48,7 @@ ve.test.utils.runWikitextStringHandlerTest = ( assert, server, string, mimeType, // Invoke the handler const handler = ve.ui.dataTransferHandlerFactory.create( 'wikitextString', mockSurface, item ); - handler.getInsertableData().done( ( docOrData ) => { + handler.getInsertableData().then( ( docOrData ) => { let actualData, store; if ( docOrData instanceof ve.dm.Document ) { actualData = docOrData.getData(); diff --git a/modules/ve-mw/tests/ui/dialogs/ve.ui.MWTransclusionDialog.test.js b/modules/ve-mw/tests/ui/dialogs/ve.ui.MWTransclusionDialog.test.js index be23ac84fe..202f7ea949 100644 --- a/modules/ve-mw/tests/ui/dialogs/ve.ui.MWTransclusionDialog.test.js +++ b/modules/ve-mw/tests/ui/dialogs/ve.ui.MWTransclusionDialog.test.js @@ -39,7 +39,7 @@ windowManager.addWindows( [ dialog ] ); const windowInstance = windowManager.openWindow( dialog, fragment ); - windowInstance.opened.done( () => { + windowInstance.opened.then( () => { const transclusion = dialog.transclusionModel; // mock api call with template data for Test const templateData = { @@ -79,7 +79,7 @@ // change transclusion model (onReplacePart happens automatically) const promise = transclusion.addPart( template ); - promise.done( () => { + promise.then( () => { // checking for parameter checkboxes // (should be 3 because of 2 predefined and 1 undocumented) assert.strictEqual( @@ -88,7 +88,7 @@ dialog.close(); } ); - } ).fail( () => { + }, () => { assert.true( false ); finishTest(); } ); diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js index 0d229eb9f6..1310fc47ee 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js @@ -435,7 +435,7 @@ ve.ui.MWGalleryDialog.prototype.getSetupProcess = function ( data ) { // Populate menu and edit panels this.imagesPromise = this.requestImages( { titles: imageTitles - } ).done( () => { + } ).then( () => { this.onHighlightItem(); } ); @@ -621,7 +621,7 @@ ve.ui.MWGalleryDialog.prototype.requestImages = function ( options ) { const promises = options.titles.map( ( title ) => ve.init.platform.galleryImageInfoCache.get( title ) ); return ve.promiseAll( promises ) - .done( ( ...args ) => { + .then( ( ...args ) => { const resp = {}; options.titles.forEach( ( title, i ) => { resp[ title ] = args[ i ]; @@ -704,7 +704,7 @@ ve.ui.MWGalleryDialog.prototype.addNewImage = function ( title ) { // Request image this.requestImages( { titles: [ title ] - } ).done( () => { + } ).then( () => { // populate edit panel with the new image const items = this.galleryGroup.items; this.onHighlightItem( items[ items.length - 1 ] ); diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js index 69e1c7063e..600ee7dacd 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWMediaDialog.js @@ -718,7 +718,7 @@ ve.ui.MWMediaDialog.prototype.buildMediaInfoPanel = function ( imageinfo ) { // Call for a bigger image this.fetchThumbnail( imageTitleText, newDimensions ) - .done( ( thumburl ) => { + .then( ( thumburl ) => { if ( thumburl ) { $image.prop( 'src', thumburl ); } diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js index a6653153a0..40ee6f1f93 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js @@ -360,7 +360,8 @@ ve.ui.MWSaveDialog.prototype.swapPanel = function ( panel, noFocus ) { title: ve.init.target.getPageName(), prop: '', summary: currentEditSummaryWikitext - } ).done( ( result ) => { + } ); + this.editSummaryXhr.then( ( result ) => { if ( result.parse.parsedsummary === '' ) { this.$previewEditSummary.parent().addClass( 'oo-ui-element-hidden' ); this.$previewEditSummary.empty(); @@ -370,7 +371,7 @@ ve.ui.MWSaveDialog.prototype.swapPanel = function ( panel, noFocus ) { this.$previewEditSummary.html( ve.msg( 'parentheses', result.parse.parsedsummary ) ); ve.targetLinksToNewWindow( this.$previewEditSummary[ 0 ] ); } - } ).fail( () => { + }, () => { this.$previewEditSummary.parent().addClass( 'oo-ui-element-hidden' ); this.$previewEditSummary.empty(); } ).always( () => { @@ -490,7 +491,7 @@ ve.ui.MWSaveDialog.prototype.reset = function () { * @param {OO.ui.FieldLayout[]} checkboxFields Checkbox fields */ ve.ui.MWSaveDialog.prototype.setupCheckboxes = function ( checkboxFields ) { - this.setupDeferred.done( () => { + this.setupDeferred.then( () => { checkboxFields.forEach( ( field ) => { this.$saveCheckboxes.append( field.$element ); } ); @@ -506,7 +507,7 @@ ve.ui.MWSaveDialog.prototype.setupCheckboxes = function ( checkboxFields ) { * @param {string} summary Edit summary to prefill */ ve.ui.MWSaveDialog.prototype.setEditSummary = function ( summary ) { - this.setupDeferred.done( () => { + this.setupDeferred.then( () => { this.editSummaryInput.setValue( summary ); } ); }; diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js index bee5dab57a..b8604e5e43 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js @@ -360,7 +360,7 @@ ve.ui.MWTemplateDialog.prototype.getActionProcess = function ( action ) { if ( action === 'done' ) { return new OO.ui.Process( () => { const deferred = ve.createDeferred(); - this.checkRequiredParameters().done( () => { + this.checkRequiredParameters().then( () => { const surfaceModel = this.getFragment().getSurface(), obj = this.transclusionModel.getPlainObject(); diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js index 9344e56785..06960c0ffd 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWTransclusionDialog.js @@ -100,7 +100,7 @@ ve.ui.MWTransclusionDialog.prototype.onOutlineControlsMove = function ( places ) const promise = this.transclusionModel.addPart( part, newPlace ); if ( this.loaded && !this.preventReselection ) { // FIXME: Should be handled internally {@see ve.ui.MWTwoPaneTransclusionDialogLayout} - promise.done( this.bookletLayout.focusPart.bind( this.bookletLayout, part.getId() ) ); + promise.then( this.bookletLayout.focusPart.bind( this.bookletLayout, part.getId() ) ); } }; @@ -426,7 +426,7 @@ ve.ui.MWTransclusionDialog.prototype.addPart = function ( part ) { // Add the part, and if dialog is loaded switch to part page const promise = this.transclusionModel.addPart( part, index ); if ( this.loaded && !this.preventReselection ) { - promise.done( this.bookletLayout.focusPart.bind( this.bookletLayout, part.getId() ) ); + promise.then( this.bookletLayout.focusPart.bind( this.bookletLayout, part.getId() ) ); } }; @@ -526,7 +526,7 @@ ve.ui.MWTransclusionDialog.prototype.resetDialog = function () { this.bookletLayout.clearPages(); const placeholderPage = new ve.dm.MWTemplatePlaceholderModel( this.transclusionModel ); this.transclusionModel.addPart( placeholderPage ) - .done( () => { + .then( () => { this.bookletLayout.focusPart( placeholderPage.getId() ); this.autoExpandSidebar(); } ); diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWLinkAnnotationInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWLinkAnnotationInspector.js index 93d5fa9b05..03e5b442ae 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWLinkAnnotationInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWLinkAnnotationInspector.js @@ -212,7 +212,7 @@ ve.ui.MWLinkAnnotationInspector.prototype.onLinkInputEnter = function () { this.executeAction( 'done' ); } this.annotationInput.getTextInputWidget().getValidity() - .done( () => { + .then( () => { this.executeAction( 'done' ); } ); }; diff --git a/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js b/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js index 4afbb6d7ee..4b6202aed7 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js @@ -33,7 +33,7 @@ ve.ui.MWLanguagesPage = function VeUiMWLanguagesPage() { ); this.$element.append( this.languagesFieldset.$element ); - this.getAllLanguageItems().done( this.onLoadLanguageData.bind( this ) ); + this.getAllLanguageItems().then( this.onLoadLanguageData.bind( this ) ); }; /* Inheritance */ @@ -99,10 +99,10 @@ ve.ui.MWLanguagesPage.prototype.onLoadLanguageData = function ( languages ) { /** * Handle language items being loaded. * - * @param {jQuery.Deferred} deferred Deferred to resolve with language data * @param {Object} response API response + * @return {Array} */ -ve.ui.MWLanguagesPage.prototype.onAllLanguageItemsSuccess = function ( deferred, response ) { +ve.ui.MWLanguagesPage.prototype.onAllLanguageItemsSuccess = function ( response ) { const languages = [], langlinks = OO.getProp( response, 'query', 'pages', 0, 'langlinks' ); if ( langlinks ) { @@ -115,7 +115,7 @@ ve.ui.MWLanguagesPage.prototype.onAllLanguageItemsSuccess = function ( deferred, } ); } } - deferred.resolve( languages ); + return languages; }; /** @@ -158,18 +158,17 @@ ve.ui.MWLanguagesPage.prototype.getLocalLanguageItems = function () { * @return {jQuery.Promise} */ ve.ui.MWLanguagesPage.prototype.getAllLanguageItems = function () { - const deferred = ve.createDeferred(); // TODO: Detect paging token if results exceed limit - ve.init.target.getContentApi().get( { + return ve.init.target.getContentApi().get( { action: 'query', prop: 'langlinks', llprop: 'autonym', lllimit: 500, titles: ve.init.target.getPageName() - } ) - .done( this.onAllLanguageItemsSuccess.bind( this, deferred ) ) - .fail( this.onAllLanguageItemsError.bind( this, deferred ) ); - return deferred.promise(); + } ).then( + this.onAllLanguageItemsSuccess.bind( this ), + this.onAllLanguageItemsError.bind( this ) + ); }; /** diff --git a/modules/ve-mw/ui/toolgroups/ve.ui.MWHelpListToolGroup.js b/modules/ve-mw/ui/toolgroups/ve.ui.MWHelpListToolGroup.js index 2ec87ffea6..51db61dc81 100644 --- a/modules/ve-mw/ui/toolgroups/ve.ui.MWHelpListToolGroup.js +++ b/modules/ve-mw/ui/toolgroups/ve.ui.MWHelpListToolGroup.js @@ -193,7 +193,7 @@ ve.ui.MWFeedbackDialogTool.prototype.onSelect = function () { return new mw.Feedback( feedbackConfig ); } ); } - this.feedbackPromise.done( ( feedback ) => { + this.feedbackPromise.then( ( feedback ) => { feedback.launch( { message: ve.msg( 'visualeditor-feedback-defaultmessage', location.toString() ) } ); diff --git a/modules/ve-mw/ui/ve.ui.MWWikitextDataTransferHandlerFactory.js b/modules/ve-mw/ui/ve.ui.MWWikitextDataTransferHandlerFactory.js index 0d9bff87e8..ec22ea98ba 100644 --- a/modules/ve-mw/ui/ve.ui.MWWikitextDataTransferHandlerFactory.js +++ b/modules/ve-mw/ui/ve.ui.MWWikitextDataTransferHandlerFactory.js @@ -74,8 +74,7 @@ ve.ui.MWWikitextDataTransferHandlerFactory.prototype.create = function () { } ve.init.target.getWikitextFragment( doc, false ) - .done( resolve ) - .fail( () => { + .then( resolve, () => { handler.abort(); } ); } diff --git a/modules/ve-mw/ui/ve.ui.MWWikitextTransferRegistry.js b/modules/ve-mw/ui/ve.ui.MWWikitextTransferRegistry.js index 0aa69219a7..4348dd779a 100644 --- a/modules/ve-mw/ui/ve.ui.MWWikitextTransferRegistry.js +++ b/modules/ve-mw/ui/ve.ui.MWWikitextTransferRegistry.js @@ -24,7 +24,7 @@ ve.ui.mwWikitextTransferRegistry.register( '[[' ); -ve.init.platform.getInitializedPromise().done( () => { +ve.init.platform.getInitializedPromise().then( () => { ve.ui.mwWikitextTransferRegistry.register( 'externalLink', // [url label] diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js index b0d3a8d23b..75b29bddae 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js @@ -79,7 +79,7 @@ ve.ui.MWAceEditorWidget.prototype.setup = function () { ve.createDeferred().reject().promise(); // Resolved promises will run synchronously, so ensure #setupEditor // runs after this.loadingPromise is stored. - this.loadingPromise.done( this.setupEditor.bind( this ) ); + this.loadingPromise.then( this.setupEditor.bind( this ) ); } }; @@ -87,7 +87,7 @@ ve.ui.MWAceEditorWidget.prototype.setup = function () { * Destroy the Ace editor instance */ ve.ui.MWAceEditorWidget.prototype.teardown = function () { - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { this.$input.removeClass( 'oo-ui-element-hidden' ); this.editor.destroy(); this.editor = null; @@ -150,7 +150,7 @@ ve.ui.MWAceEditorWidget.prototype.setupEditor = function () { */ ve.ui.MWAceEditorWidget.prototype.setAutocomplete = function ( mode ) { this.autocomplete = mode; - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { this.editor.renderer.setOptions( { enableBasicAutocompletion: this.autocomplete !== 'none', enableLiveAutocompletion: this.autocomplete === 'live' @@ -198,7 +198,7 @@ ve.ui.MWAceEditorWidget.prototype.setEditorValue = function ( value ) { */ ve.ui.MWAceEditorWidget.prototype.setMinRows = function ( minRows ) { this.minRows = minRows; - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { this.editor.setOptions( { minLines: this.minRows || 3, maxLines: this.autosize ? this.maxRows : this.minRows || 3 @@ -216,7 +216,7 @@ ve.ui.MWAceEditorWidget.prototype.setReadOnly = function ( readOnly ) { // Parent method ve.ui.MWAceEditorWidget.super.prototype.setReadOnly.call( this, readOnly ); - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { this.editor.setReadOnly( this.isReadOnly() ); } ); @@ -262,7 +262,7 @@ ve.ui.MWAceEditorWidget.prototype.getRange = function () { */ ve.ui.MWAceEditorWidget.prototype.selectRange = function ( from, to ) { this.focus(); - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { const doc = this.editor.getSession().getDocument(), lines = doc.getAllLines(); @@ -289,7 +289,7 @@ ve.ui.MWAceEditorWidget.prototype.selectRange = function ( from, to ) { range.setStart( fromOffset.row, fromOffset.column ); range.setEnd( toOffset.row, toOffset.column ); selection.setSelectionRange( range ); - } ).fail( () => { + }, () => { ve.ui.MWAceEditorWidget.super.prototype.selectRange.call( this, from, to ); } ); return this; @@ -320,7 +320,7 @@ ve.ui.MWAceEditorWidget.prototype.onEditorResize = function () { * @chainable */ ve.ui.MWAceEditorWidget.prototype.clearUndoStack = function () { - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { this.editor.session.setUndoManager( new ace.UndoManager() ); @@ -336,7 +336,7 @@ ve.ui.MWAceEditorWidget.prototype.clearUndoStack = function () { * @chainable */ ve.ui.MWAceEditorWidget.prototype.toggleLineNumbers = function ( visible ) { - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { this.editor.setOption( 'showLineNumbers', visible ); } ); return this; @@ -350,7 +350,7 @@ ve.ui.MWAceEditorWidget.prototype.toggleLineNumbers = function ( visible ) { * @chainable */ ve.ui.MWAceEditorWidget.prototype.togglePrintMargin = function ( visible ) { - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { this.editor.renderer.setShowPrintMargin( visible ); } ); return this; @@ -364,7 +364,7 @@ ve.ui.MWAceEditorWidget.prototype.togglePrintMargin = function ( visible ) { * @chainable */ ve.ui.MWAceEditorWidget.prototype.setLanguage = function ( lang ) { - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { ace.config.loadModule( 'ace/ext/modelist', ( modelist ) => { if ( !modelist || !modelist.modesByName[ lang ] ) { lang = 'text'; @@ -382,9 +382,9 @@ ve.ui.MWAceEditorWidget.prototype.setLanguage = function ( lang ) { * @chainable */ ve.ui.MWAceEditorWidget.prototype.focus = function () { - this.loadingPromise.done( () => { + this.loadingPromise.then( () => { this.editor.focus(); - } ).fail( () => { + }, () => { ve.ui.MWAceEditorWidget.super.prototype.focus.call( this ); } ); return this; @@ -398,12 +398,11 @@ ve.ui.MWAceEditorWidget.prototype.adjustSize = function ( force ) { // If the editor has loaded, resize events are emitted from #onEditorResize // so do nothing here unless this is a user triggered resize, otherwise call the parent method. if ( force ) { - this.loadingPromise.done( () => { - + this.loadingPromise.then( () => { this.editor.resize(); } ); } - this.loadingPromise.fail( () => { + this.loadingPromise.then( null, () => { // Parent method ve.ui.MWAceEditorWidget.super.prototype.adjustSize.call( this ); } ); diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js index 8853d21dd9..e15421fcee 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js @@ -114,7 +114,7 @@ ve.ui.MWCategoryWidget.prototype.onInputChoose = function ( item ) { if ( value && value !== '' ) { // Add new item const categoryItem = this.getCategoryItemFromValue( value ); - this.queryCategoryStatus( [ categoryItem.name ] ).done( () => { + this.queryCategoryStatus( [ categoryItem.name ] ).then( () => { // Remove existing items by name const toRemove = mw.Title.newFromText( categoryItem.name ).getMainText(); if ( Object.prototype.hasOwnProperty.call( this.categories, toRemove ) ) { From 5193989d8c0ee18df10a66551aa1017c96700c8e Mon Sep 17 00:00:00 2001 From: thiemowmde Date: Thu, 5 Jun 2025 10:16:56 +0200 Subject: [PATCH 348/730] Use shorter assert.true/false in QUnit tests Change-Id: I80ab6c256efbe9219aaf4a249e0016355457a67d --- .../dm/models/ve.dm.MWTemplateModel.test.js | 12 ++-- .../models/ve.dm.MWTemplateSpecModel.test.js | 62 +++++++++---------- .../ui/pages/ve.ui.MWAddParameterPage.test.js | 6 +- ....ui.MWParameterCheckboxInputWidget.test.js | 2 +- ...ui.MWTransclusionOutlinePartWidget.test.js | 4 +- 5 files changed, 43 insertions(+), 43 deletions(-) diff --git a/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateModel.test.js b/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateModel.test.js index 62113bc2ff..126658dd8d 100644 --- a/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateModel.test.js +++ b/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateModel.test.js @@ -55,18 +55,18 @@ const template = newTemplateModel(); // All parameters are primary as long as the TemplateData documentation isn't known - assert.strictEqual( template.hasParameter( 'bar' ), true ); - assert.strictEqual( template.hasParameter( 'resolved-bar' ), false ); - assert.strictEqual( template.hasParameter( 'alternative-bar' ), false ); + assert.true( template.hasParameter( 'bar' ) ); + assert.false( template.hasParameter( 'resolved-bar' ) ); + assert.false( template.hasParameter( 'alternative-bar' ) ); template.getSpec().setTemplateData( { params: { 'resolved-bar': { aliases: [ 'bar', 'alternative-bar' ] } } } ); // Now "bar" and "alternative-bar" are aliases, and "resolved-bar" is the primary name - assert.strictEqual( template.hasParameter( 'bar' ), true ); - assert.strictEqual( template.hasParameter( 'resolved-bar' ), true ); - assert.strictEqual( template.hasParameter( 'alternative-bar' ), true ); + assert.true( template.hasParameter( 'bar' ) ); + assert.true( template.hasParameter( 'resolved-bar' ) ); + assert.true( template.hasParameter( 'alternative-bar' ) ); } ); QUnit.test( 'getOriginalParameterName', ( assert ) => { diff --git a/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateSpecModel.test.js b/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateSpecModel.test.js index e84cc6b305..1f2f2f4301 100644 --- a/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateSpecModel.test.js +++ b/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateSpecModel.test.js @@ -32,8 +32,8 @@ assert.strictEqual( spec.getDescription(), null, 'getDescription' ); assert.deepEqual( spec.getDocumentedParameterOrder(), [], 'getDocumentedParameterOrder' ); assert.deepEqual( spec.getUndocumentedParameterNames(), [], 'getUndocumentedParameterNames' ); - assert.strictEqual( spec.isKnownParameterOrAlias( 'unknown' ), false, 'isKnownParameterOrAlias' ); - assert.strictEqual( spec.isParameterAlias( 'unknown' ), false, 'isParameterAlias' ); + assert.false( spec.isKnownParameterOrAlias( 'unknown' ), 'isKnownParameterOrAlias' ); + assert.false( spec.isParameterAlias( 'unknown' ), 'isParameterAlias' ); assert.strictEqual( spec.getParameterLabel( 'unknown' ), 'unknown', 'getParameterLabel' ); assert.strictEqual( spec.getParameterDescription( 'unknown' ), null, 'getParameterDescription' ); assert.deepEqual( spec.getParameterSuggestedValues( 'unknown' ), [], 'getParameterSuggestedValues' ); @@ -43,9 +43,9 @@ assert.strictEqual( spec.getParameterType( 'unknown' ), 'string', 'getParameterType' ); assert.deepEqual( spec.getParameterAliases( 'unknown' ), [], 'getParameterAliases' ); assert.strictEqual( spec.getPrimaryParameterName( 'unknown' ), 'unknown', 'getPrimaryParameterName' ); - assert.strictEqual( spec.isParameterRequired( 'unknown' ), false, 'isParameterRequired' ); - assert.strictEqual( spec.isParameterSuggested( 'unknown' ), false, 'isParameterSuggested' ); - assert.strictEqual( spec.isParameterDeprecated( 'unknown' ), false, 'isParameterDeprecated' ); + assert.false( spec.isParameterRequired( 'unknown' ), 'isParameterRequired' ); + assert.false( spec.isParameterSuggested( 'unknown' ), 'isParameterSuggested' ); + assert.false( spec.isParameterDeprecated( 'unknown' ), 'isParameterDeprecated' ); assert.strictEqual( spec.getParameterDeprecationDescription( 'unknown' ), '', 'getParameterDeprecationDescription' ); assert.deepEqual( spec.getKnownParameterNames(), [], 'getKnownParameterNames' ); assert.deepEqual( spec.getParameterSets(), [], 'getParameterSets' ); @@ -60,8 +60,8 @@ assert.strictEqual( spec.getDescription(), null, 'getDescription' ); assert.deepEqual( spec.getDocumentedParameterOrder(), [], 'getDocumentedParameterOrder' ); assert.deepEqual( spec.getUndocumentedParameterNames(), [ 'p1', 'p2' ], 'getUndocumentedParameterNames' ); - assert.strictEqual( spec.isKnownParameterOrAlias( 'p2' ), true, 'isKnownParameterOrAlias' ); - assert.strictEqual( spec.isParameterAlias( 'p2' ), false, 'isParameterAlias' ); + assert.true( spec.isKnownParameterOrAlias( 'p2' ), 'isKnownParameterOrAlias' ); + assert.false( spec.isParameterAlias( 'p2' ), 'isParameterAlias' ); assert.strictEqual( spec.getParameterLabel( 'p2' ), 'p2', 'getParameterLabel' ); assert.strictEqual( spec.getParameterDescription( 'p2' ), null, 'getParameterDescription' ); assert.deepEqual( spec.getParameterSuggestedValues( 'p2' ), [], 'getParameterSuggestedValues' ); @@ -71,9 +71,9 @@ assert.strictEqual( spec.getParameterType( 'p2' ), 'string', 'getParameterType' ); assert.deepEqual( spec.getParameterAliases( 'p2' ), [], 'getParameterAliases' ); assert.strictEqual( spec.getPrimaryParameterName( 'p2' ), 'p2', 'getPrimaryParameterName' ); - assert.strictEqual( spec.isParameterRequired( 'p2' ), false, 'isParameterRequired' ); - assert.strictEqual( spec.isParameterSuggested( 'p2' ), false, 'isParameterSuggested' ); - assert.strictEqual( spec.isParameterDeprecated( 'p2' ), false, 'isParameterDeprecated' ); + assert.false( spec.isParameterRequired( 'p2' ), 'isParameterRequired' ); + assert.false( spec.isParameterSuggested( 'p2' ), 'isParameterSuggested' ); + assert.false( spec.isParameterDeprecated( 'p2' ), 'isParameterDeprecated' ); assert.strictEqual( spec.getParameterDeprecationDescription( 'p2' ), '', 'getParameterDeprecationDescription' ); assert.deepEqual( spec.getKnownParameterNames(), [ 'p1', 'p2' ], 'getKnownParameterNames' ); assert.deepEqual( spec.getParameterSets(), [], 'getParameterSets' ); @@ -91,8 +91,8 @@ assert.strictEqual( spec.getDescription(), null, 'getDescription' ); assert.deepEqual( spec.getDocumentedParameterOrder(), [], 'getDocumentedParameterOrder' ); assert.deepEqual( spec.getUndocumentedParameterNames(), [ 'p1', 'p2' ], 'getUndocumentedParameterNames' ); - assert.strictEqual( spec.isKnownParameterOrAlias( 'p2' ), true, 'isKnownParameterOrAlias' ); - assert.strictEqual( spec.isParameterAlias( 'p2' ), false, 'isParameterAlias' ); + assert.true( spec.isKnownParameterOrAlias( 'p2' ), 'isKnownParameterOrAlias' ); + assert.false( spec.isParameterAlias( 'p2' ), 'isParameterAlias' ); assert.strictEqual( spec.getParameterLabel( 'p2' ), 'p2', 'getParameterLabel' ); assert.strictEqual( spec.getParameterDescription( 'p2' ), null, 'getParameterDescription' ); assert.deepEqual( spec.getParameterSuggestedValues( 'p2' ), [], 'getParameterSuggestedValues' ); @@ -102,9 +102,9 @@ assert.strictEqual( spec.getParameterType( 'p2' ), 'string', 'getParameterType' ); assert.deepEqual( spec.getParameterAliases( 'p2' ), [], 'getParameterAliases' ); assert.strictEqual( spec.getPrimaryParameterName( 'p2' ), 'p2', 'getPrimaryParameterName' ); - assert.strictEqual( spec.isParameterRequired( 'p2' ), false, 'isParameterRequired' ); - assert.strictEqual( spec.isParameterSuggested( 'p2' ), false, 'isParameterSuggested' ); - assert.strictEqual( spec.isParameterDeprecated( 'p2' ), false, 'isParameterDeprecated' ); + assert.false( spec.isParameterRequired( 'p2' ), 'isParameterRequired' ); + assert.false( spec.isParameterSuggested( 'p2' ), 'isParameterSuggested' ); + assert.false( spec.isParameterDeprecated( 'p2' ), 'isParameterDeprecated' ); assert.strictEqual( spec.getParameterDeprecationDescription( 'p2' ), '', 'getParameterDeprecationDescription' ); assert.deepEqual( spec.getKnownParameterNames(), [ 'p1', 'p2' ], 'getKnownParameterNames' ); assert.deepEqual( spec.getParameterSets(), [], 'getParameterSets' ); @@ -148,9 +148,9 @@ assert.strictEqual( spec.getParameterAutoValue( 'p' ), '', 'getParameterAutoValue' ); assert.strictEqual( spec.getParameterType( 'p' ), 'string', 'getParameterType' ); assert.deepEqual( spec.getParameterAliases( 'p' ), [], 'getParameterAliases' ); - assert.strictEqual( spec.isParameterRequired( 'p' ), false, 'isParameterRequired' ); - assert.strictEqual( spec.isParameterSuggested( 'p' ), false, 'isParameterSuggested' ); - assert.strictEqual( spec.isParameterDeprecated( 'p' ), false, 'isParameterDeprecated' ); + assert.false( spec.isParameterRequired( 'p' ), 'isParameterRequired' ); + assert.false( spec.isParameterSuggested( 'p' ), 'isParameterSuggested' ); + assert.false( spec.isParameterDeprecated( 'p' ), 'isParameterDeprecated' ); assert.strictEqual( spec.getParameterDeprecationDescription( 'p' ), '', 'getParameterDeprecationDescription' ); } ) ); @@ -165,8 +165,8 @@ assert.strictEqual( spec.getDescription(), null, 'getDescription' ); assert.deepEqual( spec.getDocumentedParameterOrder(), [ 'p2' ], 'getDocumentedParameterOrder' ); assert.deepEqual( spec.getUndocumentedParameterNames(), [ 'p1' ], 'getUndocumentedParameterNames' ); - assert.strictEqual( spec.isKnownParameterOrAlias( 'p2' ), true, 'isKnownParameterOrAlias' ); - assert.strictEqual( spec.isParameterAlias( 'p2' ), false, 'isParameterAlias' ); + assert.true( spec.isKnownParameterOrAlias( 'p2' ), 'isKnownParameterOrAlias' ); + assert.false( spec.isParameterAlias( 'p2' ), 'isParameterAlias' ); assert.strictEqual( spec.getParameterLabel( 'p2' ), 'p2', 'getParameterLabel' ); assert.strictEqual( spec.getParameterDescription( 'p2' ), null, 'getParameterDescription' ); assert.deepEqual( spec.getParameterSuggestedValues( 'p2' ), [], 'getParameterSuggestedValues' ); @@ -176,9 +176,9 @@ assert.strictEqual( spec.getParameterType( 'p2' ), 'string', 'getParameterType' ); assert.deepEqual( spec.getParameterAliases( 'p2' ), [], 'getParameterAliases' ); assert.strictEqual( spec.getPrimaryParameterName( 'p2' ), 'p2', 'getPrimaryParameterName' ); - assert.strictEqual( spec.isParameterRequired( 'p2' ), false, 'isParameterRequired' ); - assert.strictEqual( spec.isParameterSuggested( 'p2' ), false, 'isParameterSuggested' ); - assert.strictEqual( spec.isParameterDeprecated( 'p2' ), false, 'isParameterDeprecated' ); + assert.false( spec.isParameterRequired( 'p2' ), 'isParameterRequired' ); + assert.false( spec.isParameterSuggested( 'p2' ), 'isParameterSuggested' ); + assert.false( spec.isParameterDeprecated( 'p2' ), 'isParameterDeprecated' ); assert.strictEqual( spec.getParameterDeprecationDescription( 'p2' ), '', 'getParameterDeprecationDescription' ); assert.deepEqual( spec.getKnownParameterNames(), [ 'p1', 'p2' ], 'getKnownParameterNames' ); assert.deepEqual( spec.getParameterSets(), [], 'getParameterSets' ); @@ -215,8 +215,8 @@ assert.strictEqual( spec.getDescription(), 'TemplateDescription', 'getDescription' ); assert.deepEqual( spec.getDocumentedParameterOrder(), [ 'DummyOrder' ], 'getDocumentedParameterOrder' ); assert.deepEqual( spec.getUndocumentedParameterNames(), [], 'getUndocumentedParameterNames' ); - assert.strictEqual( spec.isKnownParameterOrAlias( 'a' ), true, 'isKnownParameterOrAlias' ); - assert.strictEqual( spec.isParameterAlias( 'a' ), true, 'isParameterAlias' ); + assert.true( spec.isKnownParameterOrAlias( 'a' ), 'isKnownParameterOrAlias' ); + assert.true( spec.isParameterAlias( 'a' ), 'isParameterAlias' ); assert.strictEqual( spec.getParameterLabel( 'a' ), 'ParamLabel', 'getParameterLabel' ); assert.strictEqual( spec.getParameterDescription( 'a' ), 'ParamDescription', 'getParameterDescription' ); assert.deepEqual( spec.getParameterSuggestedValues( 'a' ), [ 'SuggestedValue' ], 'getParameterSuggestedValues' ); @@ -226,9 +226,9 @@ assert.strictEqual( spec.getParameterType( 'a' ), 'DummyType', 'getParameterType' ); assert.deepEqual( spec.getParameterAliases( 'a' ), [ 'a' ], 'getParameterAliases' ); assert.strictEqual( spec.getPrimaryParameterName( 'a' ), 'p', 'getPrimaryParameterName' ); - assert.strictEqual( spec.isParameterRequired( 'a' ), true, 'isParameterRequired' ); - assert.strictEqual( spec.isParameterSuggested( 'a' ), true, 'isParameterSuggested' ); - assert.strictEqual( spec.isParameterDeprecated( 'a' ), true, 'isParameterDeprecated' ); + assert.true( spec.isParameterRequired( 'a' ), 'isParameterRequired' ); + assert.true( spec.isParameterSuggested( 'a' ), 'isParameterSuggested' ); + assert.true( spec.isParameterDeprecated( 'a' ), 'isParameterDeprecated' ); assert.strictEqual( spec.getParameterDeprecationDescription( 'a' ), 'DeprecationText', 'getParameterDeprecationDescription' ); assert.deepEqual( spec.getKnownParameterNames(), [ 'p' ], 'getKnownParameterNames' ); assert.deepEqual( spec.getParameterSets(), [ 'DummySet' ], 'getParameterSets' ); @@ -239,14 +239,14 @@ const template = createTemplateMock( [ 'p0', 'p1-alias', 'p2' ] ), spec = new ve.dm.MWTemplateSpecModel( template ); - assert.strictEqual( spec.isParameterAlias( 'p1-alias' ), false ); + assert.false( spec.isParameterAlias( 'p1-alias' ) ); assert.strictEqual( spec.getParameterLabel( 'p1-alias' ), 'p1-alias' ); assert.deepEqual( spec.getKnownParameterNames(), [ 'p0', 'p1-alias', 'p2' ] ); assert.deepEqual( spec.getUndocumentedParameterNames(), [ 'p0', 'p1-alias', 'p2' ], 'getUndocumentedParameterNames' ); spec.setTemplateData( { params: { p1: { aliases: [ 'p1-alias' ] } } } ); - assert.strictEqual( spec.isParameterAlias( 'p1-alias' ), true ); + assert.true( spec.isParameterAlias( 'p1-alias' ) ); assert.strictEqual( spec.getParameterLabel( 'p1-alias' ), 'p1-alias' ); assert.deepEqual( spec.getKnownParameterNames(), [ 'p0', 'p1', 'p2' ] ); assert.deepEqual( spec.getUndocumentedParameterNames(), [ 'p0', 'p2' ], 'getUndocumentedParameterNames' ); @@ -334,7 +334,7 @@ spec.setTemplateData( { params: { p: { deprecated: '' } } } ); - assert.strictEqual( spec.isParameterDeprecated( 'p' ), true ); + assert.true( spec.isParameterDeprecated( 'p' ) ); assert.strictEqual( spec.getParameterDeprecationDescription( 'p' ), '' ); } ); diff --git a/modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js b/modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js index 26b6f873eb..bfcf301a1e 100644 --- a/modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js +++ b/modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js @@ -9,20 +9,20 @@ QUnit.test( 'Input event handlers', ( assert ) => { page.togglePlaceholder( true ); page.paramInputField.setValue( ' ' ); - assert.strictEqual( page.saveButton.isDisabled(), true, 'cannot click' ); + assert.true( page.saveButton.isDisabled(), 'cannot click' ); page.onParameterNameSubmitted(); assert.deepEqual( template.getParameters(), {}, 'empty input is ignored' ); assert.strictEqual( page.paramInputField.getValue(), ' ', 'bad input is not cleared' ); page.paramInputField.setValue( ' p1 ' ); - assert.strictEqual( page.saveButton.isDisabled(), false, 'can click' ); + assert.false( page.saveButton.isDisabled(), 'can click' ); page.onParameterNameSubmitted(); assert.true( template.hasParameter( 'p1' ), 'input is trimmed and parameter added' ); assert.strictEqual( page.paramInputField.getValue(), '', 'accepted input is cleared' ); template.getParameter( 'p1' ).setValue( 'not empty' ); page.paramInputField.setValue( 'p1' ); - assert.strictEqual( page.saveButton.isDisabled(), true, 'cannot click' ); + assert.true( page.saveButton.isDisabled(), 'cannot click' ); page.onParameterNameSubmitted(); assert.strictEqual( template.getParameter( 'p1' ).getValue(), 'not empty', 'existing parameter is not replaced' ); diff --git a/modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js b/modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js index 135c72acf9..46b1ec128a 100644 --- a/modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js +++ b/modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js @@ -4,7 +4,7 @@ QUnit.test( 'Constructor passes config to parent', ( assert ) => { const widget = new ve.ui.MWParameterCheckboxInputWidget( { selected: true } ); assert.strictEqual( widget.getValue(), '1' ); - assert.strictEqual( widget.isSelected(), true ); + assert.true( widget.isSelected() ); } ); [ diff --git a/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePartWidget.test.js b/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePartWidget.test.js index 04d6700764..e9ec3bef0c 100644 --- a/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePartWidget.test.js +++ b/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePartWidget.test.js @@ -16,13 +16,13 @@ QUnit.test( 'Constructor', ( assert ) => { widget.$element.find( '.ve-ui-mwTransclusionOutlineButtonWidget .oo-ui-buttonElement-button' ).text(), 'Example' ); - assert.strictEqual( widget.isSelected(), false ); + assert.false( widget.isSelected() ); let $ariaDescription = widget.$element.find( '#' + $ariaElement.attr( 'aria-describedby' ) ); assert.strictEqual( $ariaDescription.text(), 'Help when unselected' ); widget.setSelected( true ); - assert.strictEqual( widget.isSelected(), true ); + assert.true( widget.isSelected() ); $ariaDescription = widget.$element.find( '#' + $ariaElement.attr( 'aria-describedby' ) ); assert.strictEqual( $ariaDescription.text(), 'Help when selected' ); } ); From 97f956fc033ebefb584464255f6adad44bf3e43d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 6 Jun 2025 10:05:06 +0200 Subject: [PATCH 349/730] Localisation updates from https://translatewiki.net. Change-Id: Ib74947e09c9da0799863cd8af242b5bc779bc5d3 --- editcheck/i18n/gl.json | 23 ++++++++++++++++++++++- i18n/ve-mw/ur.json | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/gl.json b/editcheck/i18n/gl.json index 40e5707b75..5f5c3dc6a7 100644 --- a/editcheck/i18n/gl.json +++ b/editcheck/i18n/gl.json @@ -5,5 +5,26 @@ ] }, "editcheck-dialog-action-no": "Non", - "editcheck-dialog-action-yes": "Si" + "editcheck-dialog-action-yes": "Si", + "editcheck-dialog-addref-description": "Axuda aos lectores a comprender de onde provén esta información engadindo unha cita.", + "editcheck-dialog-addref-reject-question": "Por que non engades unha cita?", + "editcheck-dialog-addref-reject-description": "As demais persoas editoras queren saber máis sobre a túa decisión non engadir unha cita.", + "editcheck-dialog-addref-reject-irrelevant": "Non creo que as citas sexan relevantes para o cambio que estou a facer", + "editcheck-dialog-addref-reject-common-knowledge": "A información que estou a engadir é amplamente coñecida", + "editcheck-dialog-addref-reject-uncertain": "Non teño certeza de que cita engadir", + "editcheck-dialog-addref-reject-other": "Outro", + "editcheck-dialog-addref-success-notify": "Grazas por engadires unha cita!", + "editcheck-dialog-addref-title": "Engadir unha cita", + "editcheck-dialog-title": "Antes de publicares", + "editcheck-copyvio-title": "Contido pegado", + "editcheck-copyvio-description": "Como regra xeral, non copies texto doutras fontes. Facelo adoita constituír un plaxio e unha violación dos dereitos de autoría.", + "editcheck-review-title": "Revisar os cambios", + "tag-editcheck-reference-decline-common-knowledge": "Verificación de edición (referencias) rexeitada (coñecemento común)", + "tag-editcheck-reference-decline-common-knowledge-description": "A referencia da verificación de edición rexeitouse por ser un coñecemento común", + "tag-editcheck-reference-decline-irrelevant": "Verificación de edición (referencias) rexeitada (irrelevante)", + "tag-editcheck-reference-decline-irrelevant-description": "A referencia da verificación de edición rexeitouse por ser irrelevante", + "tag-editcheck-reference-decline-other": "Verificación de edición (referencias) rexeitada (outro)", + "tag-editcheck-reference-decline-other-description": "A referencia da verificación de edición rexeitouse por un motivo non indicado", + "tag-editcheck-reference-decline-uncertain": "Verificación de edición (referencias) rexeitada (incerteza)", + "tag-editcheck-reference-decline-uncertain-description": "A referencia da verificación de edición rexeitouse por non ter certeza" } diff --git a/i18n/ve-mw/ur.json b/i18n/ve-mw/ur.json index eb455cae09..2075e65ba5 100644 --- a/i18n/ve-mw/ur.json +++ b/i18n/ve-mw/ur.json @@ -123,6 +123,7 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "پیچھے جائیں", "visualeditor-dialog-transclusion-title-insert-template": "سانچہ درج کریں", "visualeditor-dialog-transclusion-title-insert-known-template": "اندراج: $1", + "visualeditor-dialog-transclusion-template-search-help": "جس سانچے کو شامل کرنا ہو، اس کے لیے کسی موزوں کلیدی لفظ کے ذریعے تلاش کریں۔ وہ سانچے جن کے ساتھ وضاحتی معلومات شامل ہوں، بصری خانہ ترمیم میں بہتر کام کرتے ہیں۔", "visualeditor-dialog-transclusion-wikitext": "ویکی متن", "visualeditor-dialogbutton-media-tooltip": "میڈیا", "visualeditor-dialogbutton-template-tooltip": "سانچہ", From 81e422dc5f4568671ca3f311c0111f4be2036451 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 6 Jun 2025 12:44:49 +0100 Subject: [PATCH 350/730] Edit check: create editcheck-tone-shown tag Applied when a tone check is actually shown Bug: T389897 Change-Id: I7c0c16d36b011c8a3aa74cf652914c7f71fbca64 --- editcheck/modules/controller.js | 3 +++ editcheck/modules/init.js | 5 +++-- i18n/ve-wmf/en.json | 2 ++ i18n/ve-wmf/qqq.json | 2 ++ includes/Hooks.php | 1 + 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index df30b28d80..503d1db39e 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -66,6 +66,7 @@ Controller.prototype.setup = function () { this.dismissedIds = {}; mw.editcheck.refCheckShown = false; + mw.editcheck.toneCheckShown = false; } ); }, null, this ); @@ -275,6 +276,8 @@ Controller.prototype.setupPreSaveProcess = function () { ve.track( 'counter.editcheck.preSaveChecksShown' ); mw.editcheck.refCheckShown = mw.editcheck.refCheckShown || actions.some( ( action ) => action.getName() === 'addReference' ); + mw.editcheck.toneCheckShown = mw.editcheck.toneCheckShown || + actions.some( ( action ) => action.getName() === 'tone' ); this.setupToolbar( target ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 11052f37ec..1642fea040 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -34,8 +34,6 @@ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, include return check.findAddedContent( documentModel, includeReferencedContent ).length > 0; }; -mw.editcheck.refCheckShown = false; - if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { mw.hook( 've.activationComplete' ).add( () => { const target = ve.init.target; @@ -68,6 +66,9 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { if ( mw.editcheck.refCheckShown ) { tags.push( 'editcheck-references-shown' ); } + if ( mw.editcheck.toneCheckShown ) { + tags.push( 'editcheck-tone-shown' ); + } return tags.join( ',' ); }; } ); diff --git a/i18n/ve-wmf/en.json b/i18n/ve-wmf/en.json index 6cde74f99c..8408ec3fa1 100644 --- a/i18n/ve-wmf/en.json +++ b/i18n/ve-wmf/en.json @@ -28,6 +28,8 @@ "tag-editcheck-references-shown": "Edit Check (references) shown", "tag-editcheck-references-shown-description": "EditCheck thinks a reference might have been needed, and the UI was shown", "tag-editcheck-references-shown-helppage": "mediawikiwiki:Special:MyLanguage/Edit check/False positives", + "tag-editcheck-tone-shown": "Edit Check (tone) shown", + "tag-editcheck-tone-shown-description": "EditCheck thinks an adjustment to the tone in some content might have been needed, and the UI was shown", "tag-visualeditor": "Visual edit", "tag-visualeditor-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", "tag-visualeditor-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", diff --git a/i18n/ve-wmf/qqq.json b/i18n/ve-wmf/qqq.json index c374f961a8..5ea54456a4 100644 --- a/i18n/ve-wmf/qqq.json +++ b/i18n/ve-wmf/qqq.json @@ -37,6 +37,8 @@ "tag-editcheck-references-shown": "Short description of the editcheck-references-shown tag.\n\nHidden tag added when EditCheck thinks that added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown-description}}\n{{Related|tag-editcheck-references-shown-description}}", "tag-editcheck-references-shown-description": "Long description of the editcheck-references-shown tag.\n\nHidden tag added when EditCheck thinks added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown}}\n{{Related|tag-editcheck-references-shown}}", "tag-editcheck-references-shown-helppage": "{{notranslate}}\nLink to the false positives reporting page of EditCheck.\n\nUsed in:\n* {{msg-mw|tag-editcheck-references-shown}}", + "tag-editcheck-tone-shown": "Short description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks that added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown-description}}\n{{Related|tag-editcheck-tone-shown-description}}", + "tag-editcheck-tone-shown-description": "Long description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown}}\n{{Related|tag-editcheck-tone-shown}}", "tag-visualeditor": "Short description of the visualeditor tag. Do not translate the link target, but do translate the words \"Visual edit\".\n\nShown on lists of changes (history, recentchanges, etc.) for each edit made using VisualEditor.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck}}\n{{Related|Tag-visualeditor}}\n{{Identical|VisualEditor}}", "tag-visualeditor-description": "Long description of the visualeditor tag ({{msg-mw|Tag-visualeditor}}).\n\nShown on [[Special:Tags]].\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck-description}}\n{{Related|Tag-visualeditor}}", "tag-visualeditor-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", diff --git a/includes/Hooks.php b/includes/Hooks.php index db41800192..1e4d52ac2a 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -103,6 +103,7 @@ class Hooks implements 'editcheck-references-shown', 'editcheck-newcontent', 'editcheck-newreference', + 'editcheck-tone-shown', // No longer in active use: 'editcheck-references-activated', 'editcheck-reference-decline-common-knowledge', From 171ffc1a6ef69408643c688cb4f3d3d99d05266b Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 6 Jun 2025 13:49:22 +0100 Subject: [PATCH 351/730] EditCheckFactory: Allow checks to be unregistered Change-Id: Ieeff879b90ff8f622fdc51281fc2438a36182fd9 --- editcheck/modules/EditCheckFactory.js | 28 ++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index ffea651282..58ad21cc68 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -35,12 +35,30 @@ mw.editcheck.EditCheckFactory.prototype.register = function ( constructor, name // Parent method mw.editcheck.EditCheckFactory.super.prototype.register.call( this, constructor, name ); - if ( constructor.prototype.onDocumentChange ) { - this.checksByListener.onDocumentChange.push( name ); - } - if ( constructor.prototype.onBeforeSave ) { - this.checksByListener.onBeforeSave.push( name ); + Object.keys( this.checksByListener ).forEach( ( listener ) => { + if ( constructor.prototype[ listener ] ) { + this.checksByListener[ listener ].push( name ); + } + } ); +}; + +/** + * @inheritdoc + */ +mw.editcheck.EditCheckFactory.prototype.unregister = function ( key ) { + if ( typeof key === 'function' ) { + key = key.key || ( key.static && key.static.name ); } + + // Parent method + mw.editcheck.EditCheckFactory.super.prototype.unregister.apply( this, arguments ); + + Object.keys( this.checksByListener ).forEach( ( listener ) => { + const index = this.checksByListener[ listener ].indexOf( key ); + if ( index !== -1 ) { + this.checksByListener[ listener ].splice( index, 1 ); + } + } ); }; /** From 62a7bb5a91ffe06781cd6f6939c6dfa310263d4a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 9 Jun 2025 09:36:47 +0200 Subject: [PATCH 352/730] Localisation updates from https://translatewiki.net. Change-Id: Ic4c19eb2070ee17e7ab22b798ea8ef62f501d460 --- editcheck/i18n/bn.json | 2 ++ i18n/ve-mw/bn.json | 2 ++ i18n/ve-mw/ja.json | 2 +- i18n/ve-wmf/ar.json | 2 ++ i18n/ve-wmf/az.json | 2 ++ i18n/ve-wmf/fi.json | 2 ++ i18n/ve-wmf/fr.json | 2 ++ i18n/ve-wmf/gl.json | 8 +++++--- i18n/ve-wmf/he.json | 2 ++ i18n/ve-wmf/ia.json | 2 ++ i18n/ve-wmf/ks.json | 17 +++++++++++++++++ i18n/ve-wmf/mk.json | 2 ++ 12 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 i18n/ve-wmf/ks.json diff --git a/editcheck/i18n/bn.json b/editcheck/i18n/bn.json index ca82e26f01..73b3e3889a 100644 --- a/editcheck/i18n/bn.json +++ b/editcheck/i18n/bn.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Asked42", "আফতাবুজ্জামান" ] }, @@ -16,6 +17,7 @@ "editcheck-dialog-addref-success-notify": "একটি উদ্ধৃতি যোগ করার জন্য আপনাকে ধন্যবাদ!", "editcheck-dialog-addref-title": "উদ্ধৃতি যোগ করুন", "editcheck-dialog-title": "প্রকাশের আগে", + "editcheck-review-title": "পরিবর্তন পর্যালোচনা করুন", "tag-editcheck-reference-decline-common-knowledge": "সম্পাদনা পরীক্ষা (তথ্যসূত্র) প্রত্যাখ্যান (সাধারণ জ্ঞান)", "tag-editcheck-reference-decline-common-knowledge-description": "সম্পাদনা পরীক্ষা তথ্যসূত্র সাধারণ জ্ঞান হিসেবে প্রত্যাখ্যান করা হয়েছে", "tag-editcheck-reference-decline-irrelevant": "সম্পাদনা পরীক্ষা (তথ্যসূত্র) প্রত্যাখ্যান (অপ্রাসঙ্গিক)", diff --git a/i18n/ve-mw/bn.json b/i18n/ve-mw/bn.json index de0eaa54a2..7b6daf601b 100644 --- a/i18n/ve-mw/bn.json +++ b/i18n/ve-mw/bn.json @@ -7,6 +7,7 @@ "Aishik Rehman", "Al Riaz Uddin Ripon", "Ankan", + "Asked42", "Bellayet", "Elias Ahmmad", "Jayantanth", @@ -308,6 +309,7 @@ "visualeditor-preference-tabs-prefer-ve": "সবসময় দৃশ্যমান সম্পাদনা ব্যবহার করুন, যদি সম্ভব হয়", "visualeditor-preference-tabs-prefer-wt": "সবসময় উৎস সম্পাদক ব্যবহার করুন", "visualeditor-preference-tabs-remember-last": "আমার সর্বশেষ সম্পাদক মনে রেখো", + "visualeditor-preference-collab-label": "সহযোগিতামূলক সম্পাদনা", "visualeditor-rebase-client-export": "রপ্তানি", "visualeditor-rebase-client-export-start": "রপ্তানি...", "visualeditor-rebase-client-import": "আমদানি করুন", diff --git a/i18n/ve-mw/ja.json b/i18n/ve-mw/ja.json index d557bbac5c..74121c39c6 100644 --- a/i18n/ve-mw/ja.json +++ b/i18n/ve-mw/ja.json @@ -156,7 +156,7 @@ "visualeditor-dialog-meta-settings-index-default": "既定", "visualeditor-dialog-meta-settings-index-disable": "いいえ", "visualeditor-dialog-meta-settings-index-force": "はい", - "visualeditor-dialog-meta-settings-index-help": "強制的にこのページを検索エンジンの検索対象とし、それらの検索結果に表示されるようにすることができます。同様に、検索エンジンの検索対象から外すこともできます。この設定はサイト内検索に影響しません。", + "visualeditor-dialog-meta-settings-index-help": "検索エンジンに対して、このページを検索結果に表示するよう強制したり、逆に表示しないように強制したりできます。このオプションはサイト内検索には影響しません。", "visualeditor-dialog-meta-settings-index-label": "検索エンジンがこのページを検索対象にすることを許可する", "visualeditor-dialog-meta-settings-label": "ページの設定", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "既定", diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index 152d53faea..c2ecda4c2e 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -27,6 +27,8 @@ "tag-editcheck-references-activated-description": "يعتقد EditCheck أنه ربما كان هناك حاجة إلى مرجع، وتم عرض واجهة المستخدم", "tag-editcheck-references-shown": "تم عرض التحقق من التحرير (المراجع)", "tag-editcheck-references-shown-description": "يعتقد EditCheck أنه قد يكون هناك حاجة إلى مرجع، وقد تم عرض واجهة المستخدم", + "tag-editcheck-tone-shown": "تم عرض علامة التحرير (النغمة)", + "tag-editcheck-tone-shown-description": "يعتقد EditCheck أنه قد يكون من الضروري إجراء تعديل على النغمة في بعض المحتوى، وقد تم عرض واجهة المستخدم", "tag-visualeditor": "تحرير مرئي", "tag-visualeditor-description": "تم التعديل باستخدام [[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", "tag-visualeditor-needcheck": "المحرر المرئي: تحقق", diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index 27911b88bc..58a08101b9 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -18,6 +18,8 @@ "tag-editcheck-references-activated-description": "EditCheck istinad lazım olduğunu düşünür və interfeys göstərilir", "tag-editcheck-references-shown": "Redaktə Yoxlanışı (istinadlar) göstərilib", "tag-editcheck-references-shown-description": "EditCheck istinad lazım olduğunu düşünüb və interfeys göstərib", + "tag-editcheck-tone-shown": "Redaktə Yoxlanışı (ton) göstərildi", + "tag-editcheck-tone-shown-description": "EditCheck hesab edib ki, bəzi məzmunun tonuna düzəliş lazım ola bilər və buna görə də müvafiq interfeysi göstərib", "tag-visualeditor": "Vizual redaktə", "tag-visualeditor-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktorun]] köməyi ilə edilib", "tag-visualeditor-needcheck": "Vizual redaktor: Yoxla", diff --git a/i18n/ve-wmf/fi.json b/i18n/ve-wmf/fi.json index ca20899f40..cae8446a1c 100644 --- a/i18n/ve-wmf/fi.json +++ b/i18n/ve-wmf/fi.json @@ -25,6 +25,8 @@ "tag-editcheck-references-activated-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen, ja käyttöliittymä näytettiin", "tag-editcheck-references-shown": "Muokkaustarkistin (lähteet) näytetty", "tag-editcheck-references-shown-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen, ja käyttöliittymä näytettiin", + "tag-editcheck-tone-shown": "Muokkaustarkistin (sävy) näytetty", + "tag-editcheck-tone-shown-description": "Muokkaustarkistimen mukaan sisällön sävyä olisi ehkä ollut tarpeen kohentaa, ja käyttöliittymä näytettiin", "tag-visualeditor": "Visuaalinen muokkaus", "tag-visualeditor-description": "Muutos tehtiin [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuaalisella muokkaimella]]", "tag-visualeditor-needcheck": "Visuaalinen muokkaus: Tarkista", diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index 7f8d21cea0..6c88f325ef 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -47,6 +47,8 @@ "tag-editcheck-references-activated-description": "EditCheck pense qu’une référence peut être nécessaire, et l’IHM a été affichée", "tag-editcheck-references-shown": "Vérification de modification (références) affichées", "tag-editcheck-references-shown-description": "EditCheck pense qu’une référence peut être nécessaire, et l’IHM a été affichée", + "tag-editcheck-tone-shown": "Modifier la vérification (tonalité) affichée", + "tag-editcheck-tone-shown-description": "EditCheck pense qu'un ajustement du ton de certains contenus aurait pu être nécessaire, et l'interface utilisateur a été affichée", "tag-visualeditor": "Éditeur visuel", "tag-visualeditor-description": "Modification effectuée avec l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|éditeur visuel]]", "tag-visualeditor-needcheck": "Éditeur visuel : à vérifier", diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index 783a8622e4..a5881fbc21 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -12,9 +12,11 @@ "tag-editcheck-newreference-description": "Engadiuse unha referencia á páxina", "tag-editcheck-references-description": "EditCheck cre que cómpre unha referencia", "tag-editcheck-references-activated": "Verificación de modificacións (referencias) activada", - "tag-editcheck-references-activated-description": "EditCheck cre que podería ser necesaria unha referencia e mostrouse a interface de usuario", + "tag-editcheck-references-activated-description": "EditCheck cre que podería ser necesaria unha referencia e mostrou a interface de usuario", "tag-editcheck-references-shown": "Verificación de modificacións (referencias) amosada", - "tag-editcheck-references-shown-description": "EditCheck cre que podería ser necesaria unha referencia e mostrouse a interface de usuario", + "tag-editcheck-references-shown-description": "EditCheck cre que podería ser necesaria unha referencia e mostrou a interface de usuario", + "tag-editcheck-tone-shown": "Verificación de modificacións (ton) amosada", + "tag-editcheck-tone-shown-description": "EditCheck cre que podería ser necesario axustar o ton dalgúns contidos e mostrou a interface de usuario", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Edición feita mediante o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: Comprobar", @@ -24,7 +26,7 @@ "tag-visualeditor-switched": "Editor visual: Cambio", "tag-visualeditor-switched-description": "O usuario empezou editando mediante o editor visual e logo cambiou ao editor de texto wiki.", "visualeditor-feedback-link": "Project:Editor visual/Comentarios", - "visualeditor-feedback-tool": "Deixe un comentario sobre este programa", + "visualeditor-feedback-tool": "Deixa un comentario sobre este programa", "visualeditor-help-label": "Ler a guía de usuario", "visualeditor-welcomedialog-action": "Comezar a editar", "visualeditor-welcomedialog-content": "Calquera persoa pode editar, e todas as melloras axudan.", diff --git a/i18n/ve-wmf/he.json b/i18n/ve-wmf/he.json index d4f862db9f..9feb85b872 100644 --- a/i18n/ve-wmf/he.json +++ b/i18n/ve-wmf/he.json @@ -24,6 +24,8 @@ "tag-editcheck-references-activated-description": "מערכת בדיקת עריכה חושבת שאולי נוספת הערת שוליים, וממשק המשתמש של זה הוצג", "tag-editcheck-references-shown": "הוצגה מערכת בדיקת עריכה (הערות שוליים)", "tag-editcheck-references-shown-description": "מערכת בדיקת העריכת חושבת שהייתה נחוצה הערת שוליים, וממשק המשתמש שלה הוצג", + "tag-editcheck-tone-shown": "הוצגה הודעה של בדיקת עריכה (נימה)", + "tag-editcheck-tone-shown-description": "מערכת בדיקת עריכה חושבת שאולי היה נחוץ תיקון בנימה של חלק מהתוכן והוצג ממשק המשתמש של זה", "tag-visualeditor": "עריכה חזותית", "tag-visualeditor-description": "עריכה שנעשתה באמצעות [[{{MediaWiki:visualeditor-descriptionpagelink}}|העורך החזותי]]", "tag-visualeditor-needcheck": "עריכה חזותית: נא לבדוק", diff --git a/i18n/ve-wmf/ia.json b/i18n/ve-wmf/ia.json index 72cf7822cd..ac8140e7f7 100644 --- a/i18n/ve-wmf/ia.json +++ b/i18n/ve-wmf/ia.json @@ -11,6 +11,8 @@ "tag-editcheck-references-activated-description": "EditCheck pensa que un referentia poterea haber essite necessari, e le interfacie de usator graphic ha essite monstrate", "tag-editcheck-references-shown": "Verification de modification (referentias) monstrate", "tag-editcheck-references-shown-description": "EditCheck pensa que un referentia poterea haber essite necessari, e le interfacie de usator graphic ha essite monstrate", + "tag-editcheck-tone-shown": "Verification de modification (tono) monstrate", + "tag-editcheck-tone-shown-description": "EditCheck pensa que un adjustamento del tono in alcun contento poterea haber essite necessari, e le interfacie de usator ha essite monstrate", "tag-visualeditor": "Modification visual", "tag-visualeditor-description": "Modification facite con le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: a verificar", diff --git a/i18n/ve-wmf/ks.json b/i18n/ve-wmf/ks.json new file mode 100644 index 0000000000..a955c8c741 --- /dev/null +++ b/i18n/ve-wmf/ks.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [] + }, + "tag-visualeditor": "ظٲہِر اؠڈِٹ", + "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|ظٲہِر اؠڈِٹ خانَس]] مَنٛز کَرنہٕ آمِت اؠڈِٹ", + "tag-visualeditor-wikitext": "2017 کوڈ اؠڈِٹ خانہٕ", + "tag-visualeditor-wikitext-description": "اؠڈِٹ یِم 2017 وِکی مَتَن اؠڈِٹ خانَس مَنٛز کَرنہٕ آے", + "tag-visualeditor-switched": "ظٲہِر اؠڈِٹ: بَدلاونہٕ", + "visualeditor-feedback-tool": "یَتھ سافٹٕویرَس مُتلِق دِیِو پَنٕنؠ راے", + "visualeditor-help-label": "صٲرِف تَعارُف کِتاب پٔرِو", + "visualeditor-welcomedialog-action": "اؠڈِٹ کَرُن کٔرِو شُروٗع", + "visualeditor-welcomedialog-content": "کانٛہہ تہِ ہیٚکہِ اؠڈِٹ کٔرِتھ تہٕ اِضافہٕ کٔرِتھ.", + "visualeditor-welcomedialog-switch": "کوڈ اؠڈِٹ خانَس مَنٛز گٔژھِو", + "visualeditor-welcomedialog-switch-ve": "ظٲہِر اؠڈِٹ خانَس مَنٛز گٔژھِو", + "visualeditor-welcomedialog-title": "{{GENDER:$1|خٲر مَقدَم}}، $2" +} diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index 8326857d25..af2bdc2878 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -15,6 +15,8 @@ "tag-editcheck-references-activated-description": "Проверката на уредувања смета дека може да треба навод, и се покажа корисничкиот посредник", "tag-editcheck-references-shown": "Прикажана проверка на уредување (наводи)", "tag-editcheck-references-shown-description": "Проверката на уредувања смета дека може да треба навод, и се покажа корисничкиот посредник", + "tag-editcheck-tone-shown": "Прикажана проверката на уредувања (тон)", + "tag-editcheck-tone-shown-description": "Проверката на уредувања смета дека може да е потребно прилагодување на тонот во некои содржини, и бил прикажан корисничкиот посредник", "tag-visualeditor": "Нагледно уредување", "tag-visualeditor-description": "Уредување направено со [[{{MediaWiki:visualeditor-descriptionpagelink}}|нагледниот уредник]]", "tag-visualeditor-needcheck": "Нагледен уредник: Проверка", From 8ab94dde9d1e4cf9eed7ee9f6d42afc6ba50e075 Mon Sep 17 00:00:00 2001 From: Jon Robson Date: Fri, 30 May 2025 14:31:13 -0700 Subject: [PATCH 353/730] Declare the ResourceLoader modules permitted on anonymous page loads Bug: T395698 Change-Id: Idbab7586a57b05c62b23d0a8b0e8bf8a9dd4fd65 --- bundlesize.config.json | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/bundlesize.config.json b/bundlesize.config.json index 6da4192e58..bbe764c192 100644 --- a/bundlesize.config.json +++ b/bundlesize.config.json @@ -10,5 +10,33 @@ { "resourceModule": "ext.visualEditor.targetLoader", "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.progressBarWidget", + "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.desktopArticleTarget.init", + "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.supportCheck", + "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.tempWikitextEditorWidget", + "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.core.utils.parsing", + "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.track", + "maxSize": null + }, + { + "resourceModule": "ext.visualEditor.ve", + "maxSize": null } ] From bb0fea0db432ff4a657f4a71c31c0c81863aab01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Tue, 10 Jun 2025 03:28:48 +0200 Subject: [PATCH 354/730] Update VE core submodule to master (91ba9e148) New changes: d12f1d77f Rebuild i18n list 7f8fcc06b Use shorter assert.true/false in QUnit tests 91ba9e148 Support pasting URLs from Microsoft Edge address bar Localisation Updates: 453649303, 20a8fab9a Bug: T341281 Change-Id: I8492b3cbc83a37fa68f7881560e080f2def5ebe7 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index e1d7fa820b..91ba9e1486 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit e1d7fa820bcab56cfee755341e71aa8d55696230 +Subproject commit 91ba9e1486313b4ace1a1ff813641d99c003961d From f743ebe429165086db750be4b2de717e519d9042 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 10 Jun 2025 09:30:56 +0200 Subject: [PATCH 355/730] Localisation updates from https://translatewiki.net. Change-Id: I2e9718322aaf9f7c762f6e2cd17e9d699b9e5a2c --- i18n/ve-mw/api/fa.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/api/fa.json b/i18n/ve-mw/api/fa.json index 8fc2088dec..f73cca393e 100644 --- a/i18n/ve-mw/api/fa.json +++ b/i18n/ve-mw/api/fa.json @@ -46,7 +46,7 @@ "apihelp-visualeditoredit-param-needcheck": "در زمان ذخيره كردن اگر نسخه مشكلات رفت و برگشت داشت، پاراسويد را تنظيم كن. اين عمل در برچسب ويرايش داشتن تاثير دارد.", "apihelp-visualeditoredit-param-oldid": "شماره نسخه استفاده شود. پيش فرض بر آخرين نسخه است. صفحات تازه ٠ است", "apihelp-visualeditoredit-param-paction": "عمل برای انجام‌دادن.", - "apihelp-visualeditoredit-param-page": "صفحه برای انجام‌دادن عمل‌ها بر روی آن.", + "apihelp-visualeditoredit-param-page": "صفحه برای انجام‌دادن کنش‌ها بر روی آن.", "apihelp-visualeditoredit-param-section": "بخشی که برای انجام‌دادن است.", "apihelp-visualeditoredit-param-sectiontitle": "عنوان برای بخش جدید.", "apihelp-visualeditoredit-param-starttimestamp": "در زمان ذخیره کردن، این را برای زمان بارگیری نسخه تنظیم کنید. برای تشخیص تعارض ویرایش کاربرد دارد.", From 2af751ece73c847cd876eccea089c5de642600a9 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 10 Jun 2025 11:10:27 +0100 Subject: [PATCH 356/730] Update VE core submodule to master (99a06f9fd) New changes: 36c3eb1e9 Update UnicodeJS to v15.0.0 Local changes: - List UnicodeJS in foreign-resources.yaml (doc-only) Change-Id: I0b4ffb7aa55405fc2bb5c57527333ee98dc9e6e6 --- lib/foreign-resources.yaml | 8 +++++++- lib/ve | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/foreign-resources.yaml b/lib/foreign-resources.yaml index 8ceb18cc23..c0294efa9f 100644 --- a/lib/foreign-resources.yaml +++ b/lib/foreign-resources.yaml @@ -4,7 +4,6 @@ # - jquery.i18n # - oojs # - oojs-ui -# - unicodejs Color Picker: license: MIT @@ -69,6 +68,13 @@ Tree Differ: version: 1.0.2 type: doc-only +UnicodeJS: + license: MIT + homepage: https://gerrit.wikimedia.org/g/unicodejs + authors: Ed Sanders, David Chan and other contributors + version: 15.0.0 + type: doc-only + Universal Language Selector data: license: MIT OR GPL-2.0+ homepage: https://github.com/wikimedia/jquery.uls diff --git a/lib/ve b/lib/ve index 91ba9e1486..99a06f9fd5 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 91ba9e1486313b4ace1a1ff813641d99c003961d +Subproject commit 99a06f9fd5c3cc63ace146c310648bd44bf0ee3d From be0ad91a5e5e4a3c77649574f64c9ebaa902be16 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 11 Jun 2025 09:27:09 +0200 Subject: [PATCH 357/730] Localisation updates from https://translatewiki.net. Change-Id: I304d3cf125f2fdc3b2958c49c0442543d88a0d64 --- i18n/ve-mw/dlg.json | 9 +++++++++ i18n/ve-wmf/tr.json | 2 ++ 2 files changed, 11 insertions(+) create mode 100644 i18n/ve-mw/dlg.json diff --git a/i18n/ve-mw/dlg.json b/i18n/ve-mw/dlg.json new file mode 100644 index 0000000000..74ca17ac09 --- /dev/null +++ b/i18n/ve-mw/dlg.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Sauit" + ] + }, + "visualeditor-ca-editsource": "Куоду уларыт", + "visualeditor-ca-editsource-section": "куоду уларыт" +} diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index 7294950f6e..e484d47c55 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -29,6 +29,8 @@ "tag-editcheck-references-activated-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", "tag-editcheck-references-shown": "Düzenleme Kontrolü (kaynakça) gösterildi", "tag-editcheck-references-shown-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", + "tag-editcheck-tone-shown": "Düzenleme Denetimi (üslup) gösteriliyor", + "tag-editcheck-tone-shown-description": "DüzenlemeDenetimi, bazı içerikte üslup ayarlamasının gerekli olabileceğini düşünüyor ve kullanıcı arayüzü gösteriliyor", "tag-visualeditor": "Görsel düzenleme", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleyiciyi]] kullanarak düzenleyin", "tag-visualeditor-needcheck": "Görsel düzenleme: Doğrula", From b9d18d6f4ec1aaa1e43b506ef2caea763449d7ae Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 11 Jun 2025 14:22:38 +0100 Subject: [PATCH 358/730] Catch error if accesskey-save is not configured correctly Change-Id: I26da68d1a6907785e8ef49a20c44fea6c87de5f5 --- modules/ve-mw/ui/tools/ve.ui.MWSaveTool.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/ui/tools/ve.ui.MWSaveTool.js b/modules/ve-mw/ui/tools/ve.ui.MWSaveTool.js index 2a0dd8362a..46ab150258 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWSaveTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWSaveTool.js @@ -18,8 +18,16 @@ ve.ui.MWSaveTool = function VeUiMWSaveTool() { if ( this.toolbar instanceof ve.ui.TargetToolbar ) { if ( ve.msg( 'accesskey-save' ) !== '-' && ve.msg( 'accesskey-save' ) !== '' ) { + const accessKeySelector = `[accesskey="${ ve.msg( 'accesskey-save' ) }"]`; + let $accessKey; + try { + $accessKey = $( accessKeySelector ); + } catch ( e ) { + mw.log.error( '`accesskey-save` message produced an invalid CSS selector:', accessKeySelector ); + return; + } // FlaggedRevs tries to use this - it's useless on VE pages because all that stuff gets hidden, but it will still conflict so get rid of it - this.toolbar.target.$saveAccessKeyElements = $( '[accesskey="' + ve.msg( 'accesskey-save' ) + '"]' ).removeAttr( 'accesskey' ); + this.toolbar.target.$saveAccessKeyElements = $accessKey.removeAttr( 'accesskey' ); this.$link.attr( 'accesskey', ve.msg( 'accesskey-save' ) ); } From a8ad3bec88733fdd0c2f394ae30f8328cc71eb3e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 11 Jun 2025 14:23:18 +0100 Subject: [PATCH 359/730] Fix indented list margins in Vector 2022 Bug: T368302 Change-Id: Ice766d288464a104b5c1c22a15e0a9b4fcb80f16 --- modules/ve-mw/init/styles/ve.init.mw.Target.less | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/ve-mw/init/styles/ve.init.mw.Target.less b/modules/ve-mw/init/styles/ve.init.mw.Target.less index 8b9b3722a9..a34759ba71 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.Target.less +++ b/modules/ve-mw/init/styles/ve.init.mw.Target.less @@ -45,6 +45,17 @@ } } +/* Fix list styles in Vector 2022 (T368302) */ +.skin-vector-2022 .mw-body p.ve-ce-generated-wrapper { + & + ul, + & + ol, + & + table, + & + dl, + & + blockquote { + margin-top: 0; + } +} + /* * Grey out the fake toggles to make it more obvious they are not interactive. * Don't bother trying to float the toggles, as the text they are floating around From ad505420a00653f88532c096cf52c930925a4fbe Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 11 Jun 2025 14:49:30 +0100 Subject: [PATCH 360/730] Convert remaining CSS files to LESS Change-Id: I6cf455cad88034b0db8b58cd414c33683ff0b948 --- extension.json | 44 +++++++++---------- ...arget.css => ve.init.mw.CollabTarget.less} | 0 ...s => ve.init.MWVESwitchConfirmDialog.less} | 0 ....DesktopArticleTarget.init-apextheme.less} | 0 ...w.DesktopArticleTarget.init-monobook.less} | 0 ...topArticleTarget.init-wikimediatheme.less} | 0 ....init.mw.ProgressBarWidget-apextheme.less} | 0 ....mw.ProgressBarWidget-wikimediatheme.less} | 0 ....css => ve.init.mw.ProgressBarWidget.less} | 0 modules/ve-mw/themes/{apex.css => apex.less} | 0 .../{wikimediaui.css => wikimediaui.less} | 0 ...va.css => ve.ui.MWFormatTool-minerva.less} | 0 ...k.css => ve.ui.MWFormatTool-monobook.less} | 0 ...tor.css => ve.ui.MWFormatTool-vector.less} | 0 ...ool.css => ve.ui.MWLinkInspectorTool.less} | 0 ...MWPopupTool.css => ve.ui.MWPopupTool.less} | 0 ...rface.css => ve.ui.MWWikitextSurface.less} | 0 ...MWTocWidget.css => ve.ui.MWTocWidget.less} | 0 18 files changed, 22 insertions(+), 22 deletions(-) rename modules/ve-mw-collab/{ve.init.mw.CollabTarget.css => ve.init.mw.CollabTarget.less} (100%) rename modules/ve-mw/preinit/styles/{ve.init.MWVESwitchConfirmDialog.css => ve.init.MWVESwitchConfirmDialog.less} (100%) rename modules/ve-mw/preinit/styles/{ve.init.mw.DesktopArticleTarget.init-apextheme.css => ve.init.mw.DesktopArticleTarget.init-apextheme.less} (100%) rename modules/ve-mw/preinit/styles/{ve.init.mw.DesktopArticleTarget.init-monobook.css => ve.init.mw.DesktopArticleTarget.init-monobook.less} (100%) rename modules/ve-mw/preinit/styles/{ve.init.mw.DesktopArticleTarget.init-wikimediatheme.css => ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less} (100%) rename modules/ve-mw/preinit/styles/{ve.init.mw.ProgressBarWidget-apextheme.css => ve.init.mw.ProgressBarWidget-apextheme.less} (100%) rename modules/ve-mw/preinit/styles/{ve.init.mw.ProgressBarWidget-wikimediatheme.css => ve.init.mw.ProgressBarWidget-wikimediatheme.less} (100%) rename modules/ve-mw/preinit/styles/{ve.init.mw.ProgressBarWidget.css => ve.init.mw.ProgressBarWidget.less} (100%) rename modules/ve-mw/themes/{apex.css => apex.less} (100%) rename modules/ve-mw/themes/{wikimediaui.css => wikimediaui.less} (100%) rename modules/ve-mw/ui/styles/tools/{ve.ui.MWFormatTool-minerva.css => ve.ui.MWFormatTool-minerva.less} (100%) rename modules/ve-mw/ui/styles/tools/{ve.ui.MWFormatTool-monobook.css => ve.ui.MWFormatTool-monobook.less} (100%) rename modules/ve-mw/ui/styles/tools/{ve.ui.MWFormatTool-vector.css => ve.ui.MWFormatTool-vector.less} (100%) rename modules/ve-mw/ui/styles/tools/{ve.ui.MWLinkInspectorTool.css => ve.ui.MWLinkInspectorTool.less} (100%) rename modules/ve-mw/ui/styles/tools/{ve.ui.MWPopupTool.css => ve.ui.MWPopupTool.less} (100%) rename modules/ve-mw/ui/styles/{ve.ui.MWWikitextSurface.css => ve.ui.MWWikitextSurface.less} (100%) rename modules/ve-mw/ui/styles/widgets/{ve.ui.MWTocWidget.css => ve.ui.MWTocWidget.less} (100%) diff --git a/extension.json b/extension.json index 9eb2894122..e9493bac7f 100644 --- a/extension.json +++ b/extension.json @@ -308,13 +308,13 @@ "ext.visualEditor.progressBarWidget": { "group": "visualEditorA", "scripts": "modules/ve-mw/preinit/ve.init.mw.ProgressBarWidget.js", - "styles": "modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.css", + "styles": "modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.less", "skinStyles": { "default": [ - "modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.css" + "modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.less" ], "monobook": [ - "modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.css" + "modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.less" ] } }, @@ -340,19 +340,19 @@ "styles": "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init.less", "skinStyles": { "default": [ - "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.css" + "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less" ], "vector": [ - "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.css", + "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less", "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector.less" ], "vector-2022": [ - "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.css", + "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less", "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less" ], "monobook": [ - "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.css", - "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-monobook.css" + "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.less", + "modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-monobook.less" ] }, "dependencies": [ @@ -575,7 +575,7 @@ }, "ext.visualEditor.collabTarget.init.styles": { "styles": [ - "modules/ve-mw-collab/ve.init.mw.CollabTarget.css" + "modules/ve-mw-collab/ve.init.mw.CollabTarget.less" ] }, "ext.visualEditor.collab": { @@ -1554,7 +1554,7 @@ "modules/ve-mw/preinit/ve.init.MWEditModeTool.js" ], "styles": [ - "modules/ve-mw/preinit/styles/ve.init.MWVESwitchConfirmDialog.css", + "modules/ve-mw/preinit/styles/ve.init.MWVESwitchConfirmDialog.less", "modules/ve-mw/preinit/styles/ve.init.MWVESwitchPopupWidget.less" ], "skinStyles": { @@ -1663,23 +1663,23 @@ "modules/ve-mw/ui/styles/elements/ve.ui.MWExpandableErrorElement.less", "modules/ve-mw/ui/styles/elements/ve.ui.MWFloatingHelpElement.less", "modules/ve-mw/ui/styles/elements/ve.ui.MWPreviewElement.less", - "modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.css", + "modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.less", "modules/ve-mw/ui/styles/toolgroups/ve.ui.MWHelpListToolGroup.less", "modules/ve-mw/ui/styles/widgets/ve.ui.MWAceEditorWidget.less", "modules/ve-mw/ui/styles/widgets/ve.ui.MWEducationPopupWidget.less" ], "skinStyles": { "default": [ - "modules/ve-mw/themes/wikimediaui.css" + "modules/ve-mw/themes/wikimediaui.less" ], "vector": [ - "modules/ve-mw/themes/wikimediaui.css" + "modules/ve-mw/themes/wikimediaui.less" ], "vector-2022": [ - "modules/ve-mw/themes/wikimediaui.css" + "modules/ve-mw/themes/wikimediaui.less" ], "monobook": [ - "modules/ve-mw/themes/apex.css" + "modules/ve-mw/themes/apex.less" ] }, "dependencies": [ @@ -1768,16 +1768,16 @@ ], "skinStyles": { "vector": [ - "modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.css" + "modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.less" ], "vector-2022": [ - "modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.css" + "modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.less" ], "minerva": [ - "modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.css" + "modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.less" ], "monobook": [ - "modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.css" + "modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.less" ] }, "dependencies": [ @@ -1905,7 +1905,7 @@ "styles": [ "modules/ve-mw/ui/styles/contextitems/ve.ui.MWInternalLinkContextItem.less", "modules/ve-mw/ui/styles/inspectors/ve.ui.MWLinkAnnotationInspector.less", - "modules/ve-mw/ui/styles/tools/ve.ui.MWLinkInspectorTool.css", + "modules/ve-mw/ui/styles/tools/ve.ui.MWLinkInspectorTool.less", "modules/ve-mw/ce/styles/annotations/ve.ce.MWExternalLinkAnnotation.less" ], "dependencies": [ @@ -1968,7 +1968,7 @@ "modules/ve-mw/ui/styles/widgets/ve.ui.MWCategoryItemWidget.less", "modules/ve-mw/ui/styles/widgets/ve.ui.MWCategoryPopupWidget.less", "modules/ve-mw/ui/styles/widgets/ve.ui.MWCategoryWidget.less", - "modules/ve-mw/ui/styles/widgets/ve.ui.MWTocWidget.css", + "modules/ve-mw/ui/styles/widgets/ve.ui.MWTocWidget.less", "modules/ve-mw/ui/styles/dialogs/ve.ui.MWMetaDialog.less" ], "dependencies": [ @@ -2455,7 +2455,7 @@ "modules/ve-mw/ui/datatransferhandlers/ve.ui.MWWikitextPlainTextStringTransferHandler.js" ], "styles": [ - "modules/ve-mw/ui/styles/ve.ui.MWWikitextSurface.css" + "modules/ve-mw/ui/styles/ve.ui.MWWikitextSurface.less" ], "dependencies": [ "mediawiki.editfont.styles", diff --git a/modules/ve-mw-collab/ve.init.mw.CollabTarget.css b/modules/ve-mw-collab/ve.init.mw.CollabTarget.less similarity index 100% rename from modules/ve-mw-collab/ve.init.mw.CollabTarget.css rename to modules/ve-mw-collab/ve.init.mw.CollabTarget.less diff --git a/modules/ve-mw/preinit/styles/ve.init.MWVESwitchConfirmDialog.css b/modules/ve-mw/preinit/styles/ve.init.MWVESwitchConfirmDialog.less similarity index 100% rename from modules/ve-mw/preinit/styles/ve.init.MWVESwitchConfirmDialog.css rename to modules/ve-mw/preinit/styles/ve.init.MWVESwitchConfirmDialog.less diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.css b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.less similarity index 100% rename from modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.css rename to modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.less diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-monobook.css b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-monobook.less similarity index 100% rename from modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-monobook.css rename to modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-monobook.less diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.css b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less similarity index 100% rename from modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.css rename to modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.css b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.less similarity index 100% rename from modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.css rename to modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.less diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.css b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.less similarity index 100% rename from modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.css rename to modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.less diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.css b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.less similarity index 100% rename from modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.css rename to modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.less diff --git a/modules/ve-mw/themes/apex.css b/modules/ve-mw/themes/apex.less similarity index 100% rename from modules/ve-mw/themes/apex.css rename to modules/ve-mw/themes/apex.less diff --git a/modules/ve-mw/themes/wikimediaui.css b/modules/ve-mw/themes/wikimediaui.less similarity index 100% rename from modules/ve-mw/themes/wikimediaui.css rename to modules/ve-mw/themes/wikimediaui.less diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.css b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.less similarity index 100% rename from modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.css rename to modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.less diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.css b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.less similarity index 100% rename from modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.css rename to modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.less diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.css b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.less similarity index 100% rename from modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.css rename to modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.less diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWLinkInspectorTool.css b/modules/ve-mw/ui/styles/tools/ve.ui.MWLinkInspectorTool.less similarity index 100% rename from modules/ve-mw/ui/styles/tools/ve.ui.MWLinkInspectorTool.css rename to modules/ve-mw/ui/styles/tools/ve.ui.MWLinkInspectorTool.less diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.css b/modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.less similarity index 100% rename from modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.css rename to modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.less diff --git a/modules/ve-mw/ui/styles/ve.ui.MWWikitextSurface.css b/modules/ve-mw/ui/styles/ve.ui.MWWikitextSurface.less similarity index 100% rename from modules/ve-mw/ui/styles/ve.ui.MWWikitextSurface.css rename to modules/ve-mw/ui/styles/ve.ui.MWWikitextSurface.less diff --git a/modules/ve-mw/ui/styles/widgets/ve.ui.MWTocWidget.css b/modules/ve-mw/ui/styles/widgets/ve.ui.MWTocWidget.less similarity index 100% rename from modules/ve-mw/ui/styles/widgets/ve.ui.MWTocWidget.css rename to modules/ve-mw/ui/styles/widgets/ve.ui.MWTocWidget.less From 25db2f288b975bddb418a2d5d8be8fb5f45469d7 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 11 Jun 2025 18:54:17 +0100 Subject: [PATCH 361/730] Use spread syntax in more places Change-Id: I2125a2617e3502e2ff2a7b4c1a4d1a7b1257898a --- editcheck/modules/controller.js | 2 +- modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js | 2 +- modules/ve-mw/init/ve.init.mw.Platform.js | 5 +++-- modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 503d1db39e..b33b686883 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -436,7 +436,7 @@ Controller.prototype.drawSelections = function () { const highlightNodes = []; this.getActions().forEach( ( action ) => { action.getHighlightSelections().forEach( ( selection ) => { - highlightNodes.push.apply( highlightNodes, surfaceView.getDocument().selectNodes( selection.getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); + highlightNodes.push( ...surfaceView.getDocument().selectNodes( selection.getCoveringRange(), 'branches' ).map( ( spec ) => spec.node ) ); } ); } ); surfaceView.setReviewMode( true, highlightNodes ); diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js index c2c1fe57b0..0e2836473d 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js @@ -173,7 +173,7 @@ ve.dm.MWExtensionNode.static.describeChanges = function ( attributeChanges, attr } // Append attribute changes // Parent method - Array.prototype.push.apply( descriptions, ve.dm.MWExtensionNode.super.static.describeChanges.call( + descriptions.push( ...ve.dm.MWExtensionNode.super.static.describeChanges.call( this, ve.ui.DiffElement.static.compareAttributes( attributeChanges.mw.from.attrs || {}, attributeChanges.mw.to.attrs || {} ), attributes diff --git a/modules/ve-mw/init/ve.init.mw.Platform.js b/modules/ve-mw/init/ve.init.mw.Platform.js index d28ca9581c..9edcc0e176 100644 --- a/modules/ve-mw/init/ve.init.mw.Platform.js +++ b/modules/ve-mw/init/ve.init.mw.Platform.js @@ -104,8 +104,9 @@ ve.init.mw.Platform.prototype.formatNumber = function ( number ) { /** * @inheritdoc */ -ve.init.mw.Platform.prototype.getHtmlMessage = function () { - return mw.message.apply( mw.message, arguments ).parseDom().toArray(); +ve.init.mw.Platform.prototype.getHtmlMessage = function ( key, ...args ) { + // eslint-disable-next-line mediawiki/msg-doc + return mw.message( key, ...args ).parseDom().toArray(); }; /** diff --git a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js index 0c438e97d8..b31514c3d4 100644 --- a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js +++ b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js @@ -108,7 +108,7 @@ ve.track( 'trace.moduleLoad.exit', { mode: mode } ); pluginCallbacks.push( ve.init.platform.getInitializedPromise.bind( ve.init.platform ) ); // Execute plugin callbacks and collect promises - return $.when.apply( $, pluginCallbacks.map( ( callback ) => { + return $.when( ...pluginCallbacks.map( ( callback ) => { try { return callback(); } catch ( e ) { From 3eb4dbdac330c876ec8c09ea7fd54788b80e4692 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 12 Jun 2025 09:30:53 +0200 Subject: [PATCH 362/730] Localisation updates from https://translatewiki.net. Change-Id: I793e0271702aedeecd94e5e7642a5135866c4c97 --- i18n/ve-mw/dlg.json | 1 + i18n/ve-mw/ks.json | 143 +++++++++++++++++++++++++++ i18n/ve-mw/mwlanguagevariant/ks.json | 8 ++ 3 files changed, 152 insertions(+) create mode 100644 i18n/ve-mw/ks.json create mode 100644 i18n/ve-mw/mwlanguagevariant/ks.json diff --git a/i18n/ve-mw/dlg.json b/i18n/ve-mw/dlg.json index 74ca17ac09..98f7272892 100644 --- a/i18n/ve-mw/dlg.json +++ b/i18n/ve-mw/dlg.json @@ -4,6 +4,7 @@ "Sauit" ] }, + "visualeditor-ca-createsource": "Куоду тэрий", "visualeditor-ca-editsource": "Куоду уларыт", "visualeditor-ca-editsource-section": "куоду уларыт" } diff --git a/i18n/ve-mw/ks.json b/i18n/ve-mw/ks.json new file mode 100644 index 0000000000..9530001ce0 --- /dev/null +++ b/i18n/ve-mw/ks.json @@ -0,0 +1,143 @@ +{ + "@metadata": { + "authors": [] + }, + "collabpad-doctitle": "مُشتَرکہٕ پیڈ: $1", + "collabpad-import-subtitle": "$1 پؠٹھ دَرآمَد کۆرمُت", + "collabpad": "مُشتَرکہٕ پیڈ", + "tooltip-ca-ve-edit": "یہِ صَفہٕ کٔرِو اؠڈِٹ", + "tooltip-ca-editsource": "یَمہٕ صَفُک آگُر کوڈ کٔرِو اؠڈِٹ", + "tooltip-ca-createsource": "یَمہٕ صَفُک آگُر کوڈ بَنٲوِو", + "visualeditor-advancedsettings-tool": "اِضٲفی سؠٹِنگ", + "visualeditor-autosave-modified-prompt-accept": "اؠڈِٹ تھٲوِو جٲری", + "visualeditor-autosave-modified-prompt-reject": "نٔو اؠڈِٹ کٔرِو شُروٗع", + "visualeditor-backbutton-tooltip": "واپَس گٔژھِو", + "visualeditor-ca-createlocaldescriptionsource": "مُقٲمی وَضاحَت آگُر لیٚکھِو", + "visualeditor-ca-createsource": "کوڈ بَنٲیو", + "visualeditor-ca-editsource": "کوڈ اؠڈِٹ کٔرِو", + "visualeditor-ca-editsource-section": "کوڈ اؠڈِٹ کٔرِو", + "visualeditor-categories-tool": "زاتھ", + "visualeditor-descriptionpagelink": "Project:ظٲہِر اؠڈِٹَر", + "visualeditor-dialog-media-change-image": "شَکل بَدلٲئو", + "visualeditor-dialog-media-content-filename": "فَیِل ناو", + "visualeditor-dialog-media-content-section": "تَعارُف", + "visualeditor-dialog-media-goback": "واپَس", + "visualeditor-dialog-media-info-audiofile": "آڑیو فَیِل", + "visualeditor-dialog-media-info-created": "تَخلیٖق تٲریٖخ: $1", + "visualeditor-dialog-media-info-meta-artist": "لِکھٲرؠ: $1", + "visualeditor-dialog-media-info-moreinfo": "مزیٖد معلوٗمات", + "visualeditor-dialog-media-info-readmore": "مٔذیٖد پٔرِو", + "visualeditor-dialog-media-page-advanced": "اِضٲفِی", + "visualeditor-dialog-media-page-general": "عام", + "visualeditor-dialog-media-save": "مَحفوٗظ", + "visualeditor-dialog-media-search-tab-search": "تَلاش", + "visualeditor-dialog-media-search-tab-upload": "اَپلوڈ", + "visualeditor-dialog-media-title": "میٖڈیا سؠٹِنگ", + "visualeditor-dialog-media-type-border": "باڈَر", + "visualeditor-dialog-media-type-frame": "فرٛیم", + "visualeditor-dialog-media-type-frameless": "فرٛیم وَرٲے", + "visualeditor-dialog-media-type-none": "اِبتِدٲیی", + "visualeditor-dialog-media-type-section": "تَصویٖر قسٕم", + "visualeditor-dialog-media-type-thumb": "تھمبنیل", + "visualeditor-dialog-media-upload": "اَپلوڈ", + "visualeditor-dialog-meta-advancedsettings-label": "اِضٲفی سؠٹِنگ", + "visualeditor-dialog-meta-advancedsettings-section": "اِضٲفی سؠٹِنگ", + "visualeditor-dialog-meta-categories-category": "زٲژ", + "visualeditor-dialog-meta-categories-data-label": "زٲژ", + "visualeditor-dialog-meta-categories-input-newcategorylabel": "نٔو زٲژ", + "visualeditor-dialog-meta-categories-input-placeholder": "زٲژ کٔرِو شٲمِل", + "visualeditor-dialog-meta-categories-options": "یَختِیار", + "visualeditor-dialog-meta-categories-section": "زٲژ", + "visualeditor-dialog-meta-languages-code-label": "زَبان کوڑ", + "visualeditor-dialog-meta-languages-label": "زَبانہٕ", + "visualeditor-dialog-meta-languages-name-label": "زَبان", + "visualeditor-dialog-meta-languages-section": "زَبانہٕ", + "visualeditor-dialog-meta-settings-index-default": "اورٕ طَرفہٕ", + "visualeditor-dialog-meta-settings-index-disable": "نہَ", + "visualeditor-dialog-meta-settings-index-force": "آ", + "visualeditor-dialog-meta-settings-label": "صَفہٕ سؠٹِنگ", + "visualeditor-dialog-meta-settings-newsectioneditlink-default": "اورٕ طَرفہٕ", + "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "نہَ", + "visualeditor-dialog-meta-settings-newsectioneditlink-force": "آ", + "visualeditor-dialog-meta-settings-section": "صَفہٕ سؠٹِنگ", + "visualeditor-dialog-meta-settings-toc-disable": "زانٛہہ نہٕ", + "visualeditor-dialog-meta-settings-toc-force": "ہمیٚشہٕ", + "visualeditor-dialog-meta-title": "یَختِیار", + "visualeditor-dialog-template-title": "فرما", + "visualeditor-dialog-transclusion-action-save": "مَحفوٗظ", + "visualeditor-dialog-transclusion-add-param-placeholder": "پیرامیٖٹر ناو", + "visualeditor-dialog-transclusion-add-param-save": "اِضافہٕ", + "visualeditor-dialog-transclusion-add-template": "فرما کٔرِو دَرٕج", + "visualeditor-dialog-transclusion-add-template-save": "اِضافہٕ", + "visualeditor-dialog-transclusion-contextitem-loading": "لوڑ چھُ گژھن...", + "visualeditor-dialog-transclusion-filter-show-all": "تَمام وُچھِو", + "visualeditor-dialog-transclusion-loading": "لوڈ گَژھَن...", + "visualeditor-dialog-transclusion-param-example-long": "مثال: $1", + "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "واپَس گٔژھِو", + "visualeditor-dialog-transclusion-title-insert-template": "فرما کرو درج", + "visualeditor-dialog-transclusion-title-insert-known-template": "دَرٕج: $1", + "visualeditor-dialog-transclusion-title-edit-known-template": "اؠڈِٹ: $1", + "visualeditor-dialog-transclusion-title-edit-transclusion": "فرما مَواد", + "visualeditor-dialog-transclusion-template-search": "فرما تَلاش", + "visualeditor-dialog-transclusion-wikitext": "وِکی مَتَن", + "visualeditor-dialogbutton-media-tooltip": "تَصویٖر تہٕ میٖڈیا", + "visualeditor-dialogbutton-template-tooltip": "فرما", + "visualeditor-editnotices-tooltip": "اؠڈِٹ اِطلاع", + "visualeditor-expandable-less": "کَم", + "visualeditor-expandable-more": "زیٛادٕ", + "visualeditor-feedback-defaultmessage": "یو آر ایل: $1", + "visualeditor-formatdropdown-format-mw-heading1": "صَفہٕ عُنٛوان", + "visualeditor-formatdropdown-format-mw-heading2": "سَرنامہٕ", + "visualeditor-formatdropdown-format-mw-heading3": "لوکُٹ سَرنامہٕ 1", + "visualeditor-formatdropdown-format-mw-heading4": "لوکُٹ سَرنامہٕ 2", + "visualeditor-formatdropdown-format-mw-heading5": "لوکُٹ سَرنامہٕ 3", + "visualeditor-formatdropdown-format-mw-heading6": "لوکُٹ سَرنامہٕ 4", + "visualeditor-languages-tool": "زَبانہٕ", + "visualeditor-linkinspector-button-link-external": "بیٖروٗنی ویب سایٹ", + "visualeditor-linkinspector-button-link-internal": "اۆندروٗنی صَفَن مَنٛز کٔرِو تَلاش", + "visualeditor-linkinspector-educationpopup-title": "لِنکہٕ", + "visualeditor-media-title-audio": "آڈیو", + "visualeditor-media-title-image": "شکل", + "visualeditor-media-title-video": "ویڈیو", + "visualeditor-meta-tool": "یَختِیار", + "visualeditor-mweditmode-tooltip": "اؠڈِٹ خانہٕ بَدلٲوِو", + "visualeditor-mweditmodesource-progress": "کود اؠڈِٹ خانَس کُن پَکان...", + "visualeditor-mweditmodesource-tool-current": "کوڈ اؠڈِٹ خانہٕ", + "visualeditor-mweditmodeve-progress": "ظٲہِر اؠڈِٹ خانَس کُن پَکان...", + "visualeditor-mweditmodeve-tool-current": "ظٲہِر اؠڈِٹ خانہٕ", + "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|تَصویٖر}}", + "visualeditor-mwgallerydialog-card-images": "تصویٖر", + "visualeditor-mwgallerydialog-card-options": "اِختِیار", + "visualeditor-mwgallerydialog-classes-field-label": "سی ایس ایس کلاسیں", + "visualeditor-mwgallerydialog-title": "نِگار خانہٕ", + "visualeditor-mwsignature-tool": "تُہند دَستخَط", + "visualeditor-preference-tabs": "اٮ۪ڑِٹَیغ طٔریٖقہٕ:", + "visualeditor-rebase-client-export": "بَرآمَد", + "visualeditor-rebase-client-export-start": "بَرآمَد...", + "visualeditor-rebase-client-import": "دَرآمَد", + "visualeditor-rebase-client-import-name": "صَفہٕ عُنٛوان", + "visualeditor-redirect-description": "$1 کُن رُجوٗع مُکرَر", + "visualeditor-savedialog-keyboard-shortcut-submit": "تُہؠ ہیٚکِو $1 دَبٲوِتھ اؠڈِٹ مَحفوٗظ کَرنہٕ خٲطرٕ.", + "visualeditor-savedialog-label-publish-short": "شایع کٔرِو", + "visualeditor-savedialog-label-publish-short-start": "شایع کٔرِو...", + "visualeditor-savedialog-label-resolve-conflict": "تَنازٕ اؠڈِٹ کٔرِو حَل", + "visualeditor-savedialog-label-resume-editing": "اؠڈِٹ تھٲوِو جٲری", + "visualeditor-savedialog-label-review": "تَبدیٖلی وُچھِو", + "visualeditor-savedialog-label-save-short": "مَحفوٗظ", + "visualeditor-savedialog-label-save-short-start": "مَحفوٗظ...", + "visualeditor-savedialog-review-nosummary": "اؠڈِٹ خُلاصہٕ وَرٲے", + "visualeditor-savedialog-review-visual": "ظٲہِر", + "visualeditor-savedialog-review-wikitext": "وِکی مَتَن", + "visualeditor-savedialog-title-conflict": "تَنازٕ", + "visualeditor-savedialog-title-preview": "اؠڈِٹ نُمٲیِش وُچھِو", + "visualeditor-savedialog-title-review": "تَبدیٖلی وُچھِو", + "visualeditor-savedialog-title-save": "تَبدیٖلی کٔرِو مَحفوٗظ", + "visualeditor-section-body-placeholder": "نٔو حِصہٕ", + "visualeditor-section-title-placeholder": "موضوٗع", + "visualeditor-settings-tool": "صَفہٕ سؠٹِنگ", + "visualeditor-special-characters-group-other": "زیٛادٕ اِستِمال کَرنہٕ آمِت", + "visualeditor-templatesused-tool": "اِستِمال کَرنہٕ آمِت فرما", + "visualeditor-version-label": "وٕرجَن", + "visualeditor-wikitext-progress": "وِکی مَتَن تَبدیٖل کَرَن", + "visualeditor-wikitextconvert-convert": "وِکی مَتنَس مَنٛز تَبدیٖل کَرَن" +} diff --git a/i18n/ve-mw/mwlanguagevariant/ks.json b/i18n/ve-mw/mwlanguagevariant/ks.json new file mode 100644 index 0000000000..67452b6d9c --- /dev/null +++ b/i18n/ve-mw/mwlanguagevariant/ks.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [] + }, + "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "زَبان کوڑ", + "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "زَبان", + "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "آگُر" +} From 737b64e2b1127e86b54cf41ac74850d04620b5eb Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Jun 2025 15:04:50 +0100 Subject: [PATCH 363/730] Tests: Use new signature for runActionTests Change-Id: I40816d0d047f7235281c058bd84cee4f8a6c1b76 --- .../ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js | 11 ++++++----- .../ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js | 8 +++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js b/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js index 0128e24725..085783ba3d 100644 --- a/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js +++ b/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js @@ -67,12 +67,13 @@ QUnit.test.each( 'convert (MW-specific types)', ], ( assert, caseItem ) => { ve.test.utils.runActionTest( - 'format', assert, caseItem.html || ve.dm.example.isolationHtml, false, 'convert', - [ caseItem.type, caseItem.attributes ], caseItem.rangeOrSelection, caseItem.msg, + assert, { - expectedData: caseItem.expectedData, - expectedRangeOrSelection: caseItem.expectedRangeOrSelection, - undo: caseItem.undo + actionName: 'format', + method: 'convert', + html: ve.dm.example.isolationHtml, + args: [ caseItem.type, caseItem.attributes ], + ...caseItem } ); } diff --git a/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js b/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js index 9a53adf9c2..cf3b697cb9 100644 --- a/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js +++ b/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js @@ -118,12 +118,10 @@ QUnit.test( 'MW autolink', ( assert ) => { cases.forEach( ( caseItem ) => { ve.test.utils.runActionTest( - 'link', assert, caseItem.html, false, caseItem.method, [], caseItem.rangeOrSelection, caseItem.msg, + assert, { - expectedData: caseItem.expectedData, - expectedRangeOrSelection: caseItem.expectedRangeOrSelection, - expectedOriginalRangeOrSelection: caseItem.expectedOriginalRangeOrSelection, - undo: caseItem.undo + actionName: 'link', + ...caseItem } ); } ); From 5a86e9b86110253db839d4c0c2cff376a935943e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 10 Jun 2025 11:08:00 +0100 Subject: [PATCH 364/730] Tests: Use ve.dm.example.annotateText in more places Change-Id: Ia0a5cc410217d370cd2a6806dbb6d06315965e03 --- modules/ve-mw/tests/dm/ve.dm.mwExample.js | 75 +++--------- ...ui.MWWikitextStringTransferHandler.test.js | 110 +++++++++--------- .../ve.ui.UrlStringTransferHandler.test.js | 18 +-- 3 files changed, 79 insertions(+), 124 deletions(-) diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js b/modules/ve-mw/tests/dm/ve.dm.mwExample.js index 93287ead41..8d660b04bc 100644 --- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js +++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js @@ -265,24 +265,6 @@ ve.dm.mwExample.MWInternalSectionLink.absoluteData = { } }; -ve.dm.mwExample.MWMediaLinkExistsData = { - type: 'link/mwInternal', - attributes: { - lookupTitle: 'Media:Exists.png', - normalizedTitle: 'Media:Exists.png', - title: 'Media:Exists.png' - } -}; - -ve.dm.mwExample.MWMediaLinkMissingData = { - type: 'link/mwInternal', - attributes: { - lookupTitle: 'Media:Missing.png', - normalizedTitle: 'Media:Missing.png', - title: 'Media:Missing.png' - } -}; - ve.dm.mwExample.MWBlockImage = { html: ve.dm.example.singleLine`
@@ -401,13 +383,7 @@ ve.dm.mwExample.mwNowikiAnnotation = { ve.dm.mwExample.mwNowiki = [ { type: 'paragraph' }, ...'Foo', - [ '[', [ ve.dm.mwExample.mwNowikiAnnotation ] ], - [ '[', [ ve.dm.mwExample.mwNowikiAnnotation ] ], - [ 'B', [ ve.dm.mwExample.mwNowikiAnnotation ] ], - [ 'a', [ ve.dm.mwExample.mwNowikiAnnotation ] ], - [ 'r', [ ve.dm.mwExample.mwNowikiAnnotation ] ], - [ ']', [ ve.dm.mwExample.mwNowikiAnnotation ] ], - [ ']', [ ve.dm.mwExample.mwNowikiAnnotation ] ], + ...ve.dm.example.annotateText( '[[Bar]]', ve.dm.mwExample.mwNowikiAnnotation ), ...'Baz', { type: '/paragraph' }, { type: 'internalList' }, @@ -1867,22 +1843,14 @@ ve.dm.mwExample.domToDataCases = { body: '

Media:Exists.png

', data: [ { type: 'paragraph' }, - [ 'M', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'e', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'd', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'i', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'a', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ ':', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'E', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'x', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'i', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 's', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 't', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 's', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ '.', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'p', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'n', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], - [ 'g', [ ve.dm.mwExample.MWMediaLinkExistsData ] ], + ...ve.dm.example.annotateText( 'Media:Exists.png', { + type: 'link/mwInternal', + attributes: { + lookupTitle: 'Media:Exists.png', + normalizedTitle: 'Media:Exists.png', + title: 'Media:Exists.png' + } + } ), { type: '/paragraph' }, { type: 'internalList' }, { type: '/internalList' } @@ -1894,23 +1862,14 @@ ve.dm.mwExample.domToDataCases = { body: '

Media:Missing.png

', data: [ { type: 'paragraph' }, - [ 'M', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'e', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'd', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'i', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'a', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ ':', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'M', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'i', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 's', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 's', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'i', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'n', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'g', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ '.', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'p', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'n', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], - [ 'g', [ ve.dm.mwExample.MWMediaLinkMissingData ] ], + ...ve.dm.example.annotateText( 'Media:Missing.png', { + type: 'link/mwInternal', + attributes: { + lookupTitle: 'Media:Missing.png', + normalizedTitle: 'Media:Missing.png', + title: 'Media:Missing.png' + } + } ), { type: '/paragraph' }, { type: 'internalList' }, { type: '/internalList' } diff --git a/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js b/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js index 8f44844539..a4aca3e215 100644 --- a/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js +++ b/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js @@ -17,9 +17,34 @@ QUnit.module( 've.ui.MWWikitextStringTransferHandler', ve.test.utils.newMwEnviro } } ) ); -ve.test.utils.runWikitextStringHandlerTest = ( assert, server, string, mimeType, expectedResponse, expectedData, annotations, assertDom, base, msg ) => { +/** + * @param {QUnit.Assert} assert + * @param {Object} caseItem + * @param {Object} caseItem.server + * @param {string} caseItem.pasteString + * @param {string} caseItem.pasteType + * @param {string} caseItem.parsoidResponse + * @param {Array} caseItem.expectedData + * @param {boolean} caseItem.assertDom + * @param {string} caseItem.base + * @param {string} caseItem.msg + */ +ve.test.utils.runWikitextStringHandlerTest = function ( assert, caseItem ) { + if ( arguments.length > 2 ) { + caseItem = { + server: arguments[ 1 ], + pasteString: arguments[ 2 ], + pasteType: arguments[ 3 ], + parsoidResponse: arguments[ 4 ], + expectedData: arguments[ 5 ], + // annotations + assertDom: arguments[ 7 ], + base: arguments[ 8 ], + msg: arguments[ 9 ] + }; + } const done = assert.async(), - item = ve.ui.DataTransferItem.static.newFromString( string, mimeType ), + item = ve.ui.DataTransferItem.static.newFromString( caseItem.pasteString, caseItem.pasteType ), doc = ve.dm.Document.static.newBlankDocument(), mockSurface = { getModel: () => ( { @@ -28,27 +53,16 @@ ve.test.utils.runWikitextStringHandlerTest = ( assert, server, string, mimeType, createProgress: () => ve.createDeferred().promise() }; - ve.fixBase( doc.getHtmlDocument(), doc.getHtmlDocument(), base ); - - // Preprocess the expectedData array - for ( let i = 0; i < expectedData.length; i++ ) { - if ( Array.isArray( expectedData[ i ] ) ) { - for ( let j = 0; j < expectedData[ i ][ 1 ].length; j++ ) { - if ( typeof expectedData[ i ][ 1 ][ j ] === 'number' ) { - expectedData[ i ][ 1 ][ j ] = annotations[ expectedData[ i ][ 1 ][ j ] ]; - } - } - } - } + ve.fixBase( doc.getHtmlDocument(), doc.getHtmlDocument(), caseItem.base ); // Check we match the wikitext string handler const name = ve.ui.dataTransferHandlerFactory.getHandlerNameForItem( item ); - assert.strictEqual( name, 'wikitextString', msg + ': triggers match function' ); + assert.strictEqual( name, 'wikitextString', caseItem.msg + ': triggers match function' ); // Invoke the handler const handler = ve.ui.dataTransferHandlerFactory.create( 'wikitextString', mockSurface, item ); - handler.getInsertableData().done( ( docOrData ) => { + handler.getInsertableData().then( ( docOrData ) => { let actualData, store; if ( docOrData instanceof ve.dm.Document ) { actualData = docOrData.getData(); @@ -58,19 +72,19 @@ ve.test.utils.runWikitextStringHandlerTest = ( assert, server, string, mimeType, store = new ve.dm.HashValueStore(); } ve.dm.example.postprocessAnnotations( actualData, store ); - if ( assertDom ) { - assert.equalLinearDataWithDom( store, actualData, expectedData, msg + ': data match (with DOM)' ); + if ( caseItem.assertDom ) { + assert.equalLinearDataWithDom( store, actualData, caseItem.expectedData, caseItem.msg + ': data match (with DOM)' ); } else { - assert.equalLinearData( actualData, expectedData, msg + ': data match' ); + assert.equalLinearData( actualData, caseItem.expectedData, caseItem.msg + ': data match' ); } done(); } ); - if ( server && expectedResponse ) { - server.respond( [ 200, { 'Content-Type': 'application/json' }, JSON.stringify( { + if ( caseItem.server && caseItem.parsoidResponse ) { + caseItem.server.respond( [ 200, { 'Content-Type': 'application/json' }, JSON.stringify( { visualeditor: { result: 'success', - content: expectedResponse + content: caseItem.parsoidResponse } } ) ] ); } @@ -85,20 +99,17 @@ QUnit.test.each( 'convert', [ pasteString: 'some [[Foo]] text', pasteType: 'text/plain', parsoidResponse: '

some Foo text

', - annotations: [ { - type: 'link/mwInternal', - attributes: { - lookupTitle: 'Foo', - normalizedTitle: 'Foo', - title: 'Foo' - } - } ], expectedData: [ { type: 'paragraph' }, ...'some ', - [ 'F', [ 0 ] ], - [ 'o', [ 0 ] ], - [ 'o', [ 0 ] ], + ...ve.dm.example.annotateText( 'Foo', { + type: 'link/mwInternal', + attributes: { + lookupTitle: 'Foo', + normalizedTitle: 'Foo', + title: 'Foo' + } + } ), ...' text', { type: '/paragraph' }, { type: 'internalList' }, @@ -110,14 +121,6 @@ QUnit.test.each( 'convert', [ pasteString: '*[[Foo]]', pasteType: 'text/plain', parsoidResponse: '', - annotations: [ { - type: 'link/mwInternal', - attributes: { - lookupTitle: 'Foo', - normalizedTitle: 'Foo', - title: 'Foo' - } - } ], expectedData: [ { type: 'list', @@ -128,9 +131,14 @@ QUnit.test.each( 'convert', [ type: 'paragraph', internal: { generated: 'wrapper' } }, - [ 'F', [ 0 ] ], - [ 'o', [ 0 ] ], - [ 'o', [ 0 ] ], + ...ve.dm.example.annotateText( 'Foo', { + type: 'link/mwInternal', + attributes: { + lookupTitle: 'Foo', + normalizedTitle: 'Foo', + title: 'Foo' + } + } ), { type: '/paragraph' }, { type: '/listItem' }, { type: '/list' }, @@ -162,7 +170,6 @@ QUnit.test.each( 'convert', [ pasteString: '==heading==', pasteType: 'text/plain', parsoidResponse: '

foo

bar

', - annotations: [], assertDom: true, expectedData: [ { type: 'mwHeading', attributes: { level: 2 }, originalDomElements: $.parseHTML( '

foo

' ) }, @@ -180,7 +187,6 @@ QUnit.test.each( 'convert', [ pasteString: '== Tudnivalók ==', pasteType: 'text/plain', parsoidResponse: '

Tudnivalók

', - annotations: [], assertDom: true, expectedData: [ { type: 'mwHeading', attributes: { level: 2 }, originalDomElements: $.parseHTML( '

Tudnivalók

' ) }, @@ -195,7 +201,6 @@ QUnit.test.each( 'convert', [ pasteString: 'RFC 1234', pasteType: 'text/plain', parsoidResponse: false, - annotations: [], expectedData: [ { type: 'link/mwMagic', @@ -213,7 +218,6 @@ QUnit.test.each( 'convert', [ pasteString: 'PMID 1234', pasteType: 'text/plain', parsoidResponse: false, - annotations: [], expectedData: [ { type: 'link/mwMagic', @@ -231,7 +235,6 @@ QUnit.test.each( 'convert', [ pasteString: 'ISBN 123456789X', pasteType: 'text/plain', parsoidResponse: false, - annotations: [], expectedData: [ { type: 'link/mwMagic', @@ -250,8 +253,11 @@ QUnit.test.each( 'convert', [ } ); ve.test.utils.runWikitextStringHandlerTest( - assert, this.server, caseItem.pasteString, caseItem.pasteType, caseItem.parsoidResponse, - caseItem.expectedData, caseItem.annotations, caseItem.assertDom, ve.dm.mwExample.baseUri, - caseItem.msg + assert, + { + server: this.server, + base: ve.dm.mwExample.baseUri, + ...caseItem + } ); } ); diff --git a/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js b/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js index ea1635daaf..26e1a1907a 100644 --- a/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js +++ b/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js @@ -13,21 +13,11 @@ QUnit.test.each( 'paste', [ msg: 'External link converts to internal link', pasteString: location.origin + mw.Title.newFromText( 'Main Page' ).getUrl(), pasteType: 'text/plain', - expectedData: () => { + expectedData: () => ve.dm.example.annotateText( + 'Main Page', // Explicitly create an internal link so we can assert this behaviour is working - const a = ve.dm.MWInternalLinkAnnotation.static.newFromTitle( mw.Title.newFromText( 'Main Page' ) ).element; - return [ - [ 'M', [ a ] ], - [ 'a', [ a ] ], - [ 'i', [ a ] ], - [ 'n', [ a ] ], - [ ' ', [ a ] ], - [ 'P', [ a ] ], - [ 'a', [ a ] ], - [ 'g', [ a ] ], - [ 'e', [ a ] ] - ]; - } + ve.dm.MWInternalLinkAnnotation.static.newFromTitle( mw.Title.newFromText( 'Main Page' ) ).element + ) } ], ( assert, caseItem ) => { ve.test.utils.runUrlStringHandlerTest( assert, caseItem.pasteString, caseItem.pasteHtml, caseItem.pasteType, caseItem.expectedData, location.origin, caseItem.msg ); From 68e0c3bfc455c1f9a1bb30418a2126f98d593f23 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Jun 2025 17:58:08 +0100 Subject: [PATCH 365/730] Update VE core submodule to master (fed8086c4) New changes: cffbd96ec Tests: Use ve.dm.example.annotateText in more places f7c6eb0b3 Fix language lists broken by translation bot 5069a859d build: Updating brace-expansion to 1.1.12, 2.0.2 80f5b8171 Update OOUI to v0.52.0 02469e5b9 Use spread syntax in more places a36ef9c3a Test: Use cases arrays instead of keyed objects for consistency 9f4b37730 Tests: Pass caseItem to more test runners 2d21087bf Use String#startsWith/endsWith e388cccd6 Fix ve.createDocumentFromHtml override leaking into unrelated tests 10095d87f [BREAKING CHANGE] utils: Drop ve.entries, deprecated and not known to be used Localisation Updates: 33970dd2e Bug: T392764 Change-Id: I9a85a0458ba53a7df5bbc6b000dbe3c45756a288 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 99a06f9fd5..fed8086c4b 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 99a06f9fd5c3cc63ace146c310648bd44bf0ee3d +Subproject commit fed8086c4ba6f81c39d12eaca149fda12b8b3d66 From b9ec2625b131fb64d363c713ee8ef454c357d149 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 12 Jun 2025 15:37:46 +0100 Subject: [PATCH 366/730] Tests: Use new signature for ve.test.utils.runUrlStringHandlerTest Change-Id: If5722ea9ad5cb6ac0968f5894eede089f9326a3e Depends-On: I71b56d02db2c2cdb9b23f567a16590dc49ef8a9f --- .../ve.ui.UrlStringTransferHandler.test.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js b/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js index 26e1a1907a..da1e90cb7c 100644 --- a/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js +++ b/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js @@ -20,5 +20,11 @@ QUnit.test.each( 'paste', [ ) } ], ( assert, caseItem ) => { - ve.test.utils.runUrlStringHandlerTest( assert, caseItem.pasteString, caseItem.pasteHtml, caseItem.pasteType, caseItem.expectedData, location.origin, caseItem.msg ); + ve.test.utils.runUrlStringHandlerTest( + assert, + { + base: location.origin, + ...caseItem + } + ); } ); From 437611270d6eff87ae24f24e47cf1a4631e0254f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 13 Jun 2025 09:57:11 +0200 Subject: [PATCH 367/730] Localisation updates from https://translatewiki.net. Change-Id: If6441a4443adf9a4a633c0b42defc193b0b80e5e --- i18n/ve-mw/fi.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/ve-mw/fi.json b/i18n/ve-mw/fi.json index 9fdc74d08e..669e8a51fa 100644 --- a/i18n/ve-mw/fi.json +++ b/i18n/ve-mw/fi.json @@ -43,10 +43,10 @@ "tooltip-ca-ve-edit-local": "Muokkaa paikallista kuvaussivua", "tooltip-ca-ve-create": "Luo tämä sivu", "tooltip-ca-ve-create-local": "Luo paikallinen kuvaussivu", - "tooltip-ca-editsource": "Muokkaa tämän sivun lähdekoodia", - "tooltip-ca-editsource-local": "Muokkaa paikallisen kuvaussivun lähdekoodia", - "tooltip-ca-createsource": "Luo sivun lähdekoodi", - "tooltip-ca-createsource-local": "Luo paikallisen kuvaussivun lähdekoodi", + "tooltip-ca-editsource": "Muokkaa tämän sivun wikitekstiä", + "tooltip-ca-editsource-local": "Muokkaa paikallisen kuvaussivun wikitekstiä", + "tooltip-ca-createsource": "Luo tämän sivun wikiteksti", + "tooltip-ca-createsource-local": "Luo paikallisen kuvaussivun wikiteksti", "visualeditor-advancedsettings-tool": "Lisäasetukset", "visualeditor-annotations-default-description": "Tämä sivun osa on osa huomautusaluetta.", "visualeditor-annotations-default-end": "Huomautusalueen loppu", @@ -65,7 +65,7 @@ "visualeditor-ca-editlocaldescriptionsource": "Muokkaa paikallisen kuvauksen wikitekstiä", "visualeditor-ca-editsource": "Muokkaa wikitekstiä", "visualeditor-ca-editsource-section": "muokkaa wikitekstiä", - "visualeditor-ca-editsource-section-hint": "Muokkaa osion lähdekoodia: $1", + "visualeditor-ca-editsource-section-hint": "Muokkaa osion wikitekstiä: $1", "visualeditor-categories-tool": "Luokat", "visualeditor-changedesc-mwcategory-sortkey-changed": "Luokitusavain vaihdettu: $1 → $2", "visualeditor-changedesc-mwcategory-sortkey-set": "Luokitusavaimeksi asetettu $1", From e0758ec8a6a5e0cbbb9fe55cc2419b801b2e2f8a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 16 Jun 2025 09:42:09 +0200 Subject: [PATCH 368/730] Localisation updates from https://translatewiki.net. Change-Id: I3e835610d204166f5879bc40a55712493caf994b --- i18n/ve-mw/ja.json | 8 ++++---- i18n/ve-mw/ps.json | 26 ++++++++++++++++++++------ i18n/ve-mw/sk.json | 3 +++ 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/i18n/ve-mw/ja.json b/i18n/ve-mw/ja.json index 74121c39c6..e51ea78f72 100644 --- a/i18n/ve-mw/ja.json +++ b/i18n/ve-mw/ja.json @@ -91,7 +91,7 @@ "visualeditor-descriptionpagelink": "Project:ビジュアルエディター", "visualeditor-dialog-media-alttext-checkbox": "キャプションを代替テキストとして使用する", "visualeditor-dialog-media-alttext-section": "代替テキスト", - "visualeditor-dialog-media-alttext-section-help": "アイテムが見えない人のためにテキストによる説明を記述することができます。説明文はこのメディアによって与えられる目的と情報を理解するために十分なものでなければいけません。目が見えない人や、スクリーンリーダー・ソフトウェア、テキストブラウザなどを利用する人たちにとって、必要不可欠なものです。", + "visualeditor-dialog-media-alttext-section-help": "この機能を使うと、アイテムが見えない人のためにテキストによる説明を書けます。説明文は、そのメディアアイテムが伝える目的や情報を理解できるような内容でなければなりません。これは、視覚障害のある利用者や、スクリーンリーダーやテキスト専用ブラウザーを利用している人々にとって極めて重要です。", "visualeditor-dialog-media-change-image": "画像を変更", "visualeditor-dialog-media-choose-image": "この画像を使用", "visualeditor-dialog-media-content-description-link": "(説明ページ)", @@ -151,7 +151,7 @@ "visualeditor-dialog-meta-languages-section": "他言語", "visualeditor-dialog-meta-settings-displaytitle": "表示されるページ名", "visualeditor-dialog-meta-settings-displaytitle-help": "タイトルとして代替表示させたいラベル名を設定することにより、このページのタイトルの表示名が上書きされます。", - "visualeditor-dialog-meta-settings-hiddencat-help": "このカテゴリを、ページ内においてカテゴリ表示を行わないようにすることができます。これは、ほとんどの読者にとっては関心がありませんが、例えば'このページには図解が必要'等、編集者にとって有益なカテゴリとして使用できます。", + "visualeditor-dialog-meta-settings-hiddencat-help": "このカテゴリを、カテゴリに属するページ内のカテゴリ一覧に表示しないようにできます。これは「図解が必要なページ」のように、編集者には有用でも大半の読者には関心がないカテゴリに便利です。", "visualeditor-dialog-meta-settings-hiddencat-label": "隠しカテゴリ", "visualeditor-dialog-meta-settings-index-default": "既定", "visualeditor-dialog-meta-settings-index-disable": "いいえ", @@ -172,7 +172,7 @@ "visualeditor-dialog-meta-settings-nogallery-label": "ギャラリーを無効にする", "visualeditor-dialog-meta-settings-notitleconvert-help": "その他のスクリプトによる、このページのタイトルの自動的な言語変換を防ぐことができます。", "visualeditor-dialog-meta-settings-notitleconvert-label": "言語の変種間でタイトルの言語変換をしない", - "visualeditor-dialog-meta-settings-redirect-help": "このページを、リダイレクト(転送)のページとすることができます。これは、読者を自動的に、ウィキ内の別のページに誘導します。この方法は、綴り間違いや別称・別コンセプトの際に有用です。これを設定した場合、読者にはリダイレクト・ページの内容は表示されません。", + "visualeditor-dialog-meta-settings-redirect-help": "このページをリダイレクト (転送) ページにできます。これは、読者をこのウィキ内の別のページへ自動的に遷移させるものです。誤った綴りや別名、類似の概念に対して便利です。設定すると、読者にはこのページの内容は表示されません。", "visualeditor-dialog-meta-settings-redirect-label": "このページを以下のページにリダイレクト", "visualeditor-dialog-meta-settings-redirect-placeholder": "リダイレクト先のページ", "visualeditor-dialog-meta-settings-redirect-statichelp": "これが必要とされるのは非常に稀なケースですが、リダイレクト先のページが移動された際に、ここのリダイレクトが自動的に更新されることを防ぐことができます。", @@ -223,7 +223,7 @@ "visualeditor-dialog-transclusion-filter-show-all": "すべて表示", "visualeditor-dialog-transclusion-filter-title": "$1でパラメータ検索", "visualeditor-dialog-transclusion-help-title": "テンプレート編集サポート", - "visualeditor-dialog-transclusion-help-message": "テンプレートは、コンテンツのフォーマットを提供するものです。このエディタでは、左にテンプレートが提供するオプションを示し、右にそれらのオプションに値を追加することができます。", + "visualeditor-dialog-transclusion-help-message": "テンプレートはコンテンツの書式設定を提供します。このエディターでは、テンプレートが提供するオプションが左側に表示され、それぞれのオプションに対して右側で値を追加できます。", "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates テンプレートの編集に関するヘルプ]", "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions キーボード ショートカット]", "visualeditor-dialog-transclusion-deprecated-parameter": "非推奨のフィールド", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index c8ef0ef41b..e1f0849083 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -14,14 +14,14 @@ "collabpad-import-subtitle": "له $1 څخه راوړل شوی", "collabpad": "گډون‌پاڼه", "tooltip-ca-ve-edit": "دا مخ سمول", - "tooltip-ca-ve-edit-local": "د ځايي سپيناوي مخ سمول", + "tooltip-ca-ve-edit-local": "د ځايي څرگنداوي مخ سمول", "tooltip-ca-ve-create": "دا مخ جوړول", - "tooltip-ca-ve-create-local": "ځايي سپيناوي مخ جوړول", + "tooltip-ca-ve-create-local": "ځايي څرگنداوي مخ جوړول", "tooltip-ca-editsource": "د دې مخ د سرچينې کوډ سمول", - "tooltip-ca-editsource-local": "د ځايي سپيناوي مخ سرچينو کوډ سمول", + "tooltip-ca-editsource-local": "د ځايي څرگنداوي مخ سرچينو کوډ سمول", "tooltip-ca-createsource": "د دې مخ د سرچينې کوډ جوړول", - "tooltip-ca-createsource-local": "د ځايي سپيناوي مخ سرچينې کوډ جوړول", - "visualeditor-advancedsettings-tool": "پرمختللې امستنې", + "tooltip-ca-createsource-local": "د ځايي څرگنداوي مخ سرچينې کوډ جوړول", + "visualeditor-advancedsettings-tool": "پرمختللې اوڼنې", "visualeditor-annotations-default-description": "د پاڼې دا برخه د سپيناوي لړۍ برخه ده.", "visualeditor-annotations-default-end": "د سپيناوي لړۍ پای", "visualeditor-annotations-default-start": "سپيناوي لړۍ پيلول", @@ -35,7 +35,7 @@ "visualeditor-backbutton-tooltip": "پر شا تلل", "visualeditor-ca-createlocaldescriptionsource": "د سيمه ييزې څرگندونې سرچينې ورگډول", "visualeditor-ca-createsource": "سرچينه جوړول", - "visualeditor-ca-editlocaldescriptionsource": "د سيمه ايزې څرگندونې سرچينه سمول", + "visualeditor-ca-editlocaldescriptionsource": "د سيمه ييزې څرگندونې سرچينه سمول", "visualeditor-ca-editsource": "سرچينه سمول", "visualeditor-ca-editsource-section": "سرچينه سمول", "visualeditor-ca-editsource-section-hint": "سمون برخې سرچينې کوډ: $1", @@ -128,16 +128,29 @@ "visualeditor-dialog-transclusion-action-save": "خوندي کول", "visualeditor-dialog-transclusion-template-title-nonexistent": "دا کينډۍ نشته.", "visualeditor-dialog-transclusion-add-wikitext": "ويکي‌ليک ورگډول", + "visualeditor-dialog-transclusion-add-param-placeholder": "پاراميتر نوم", "visualeditor-dialog-transclusion-add-param-save": "ورگډول", "visualeditor-dialog-transclusion-add-template": "کينډۍ ورگډول", + "visualeditor-dialog-transclusion-add-template-button": "کينډۍ ورگډول", "visualeditor-dialog-transclusion-add-template-save": "ورگډول", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "پلټلو لپاره پر شا ولاړ شي؟ بدلونونه به مو له منځه ولاړ شي او دا بېرته نه راگرځول کېږي.", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "کينډۍ سمونگر وتړي؟ بدلونونه به مو له منځه ولاړ شي او دا بېرته نه راگرځول کېږي.", "visualeditor-dialog-transclusion-collapse-options": "خوښنې پټول", + "visualeditor-dialog-transclusion-confirmation-discard": "سمونونه غورځول", + "visualeditor-dialog-transclusion-confirmation-reject": "سمون پرمخ بېول", "visualeditor-dialog-transclusion-contextitem-description": "جوړ شوی له: $1", "visualeditor-dialog-transclusion-contextitem-loading": "رابرسېرېږي...", "visualeditor-dialog-transclusion-expand-options": "خوښنې ښکاره کول", + "visualeditor-dialog-transclusion-filter-hide-unused": "نا کارول شوي پټول", + "visualeditor-dialog-transclusion-filter-no-match": "هېڅ ورته والی و نهٔ موندل شو", + "visualeditor-dialog-transclusion-filter-placeholder": "ډگر موندل", "visualeditor-dialog-transclusion-filter-show-all": "ټول ښکاره کول", "visualeditor-dialog-transclusion-loading": "رابرسېرېږي...", "visualeditor-dialog-transclusion-param-default": "تلواليز: $1", + "visualeditor-dialog-transclusion-param-example-long": "بېلگه: $1", + "visualeditor-dialog-transclusion-param-selection-aria-label": "په $1 کې پاراميترونه", + "visualeditor-dialog-transclusion-param-undocumented": "(بې‌لاسونده پاراميتر)", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "کينډۍ موندل", "visualeditor-dialog-transclusion-required-parameter": "غوښتلی ډاگی", "visualeditor-dialog-transclusion-required-parameter-description": "دې ډاگي ته اړتيا ده.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "پر شا تلل", @@ -153,6 +166,7 @@ "visualeditor-dialogbutton-media-tooltip": "انځورونه او رسنۍ", "visualeditor-dialogbutton-template-tooltip": "کينډۍ", "visualeditor-editingtabdialog-ok": "تېر ځل کارېدلی سمونگر کارول", + "visualeditor-editingtabdialog-title": "سمون ريښکۍ", "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|يادښت|يادښتونه}}", "visualeditor-editnotices-tooltip": "يادښتونه سمول", "visualeditor-editsummary": "ووايۍ کوم بدلونونه مو راوستل", diff --git a/i18n/ve-mw/sk.json b/i18n/ve-mw/sk.json index 4d5cc07df9..f0e57ececa 100644 --- a/i18n/ve-mw/sk.json +++ b/i18n/ve-mw/sk.json @@ -239,6 +239,9 @@ "visualeditor-mwgallerydialog-title": "Galéria", "visualeditor-mwgallerydialog-widths-field-label": "Šírka obrázku", "visualeditor-mwgallerydialog-widths-input-placeholder": "Predvolená šírka: $1 pixelov", + "visualeditor-preference-visualeditor": "Zapnúť vizuálny editor", + "visualeditor-preference-newwikitexteditor-enable": "Namiesto iného editora wikitextu používať režim editácie wikitextu v rámci vizuálneho editora", + "visualeditor-preference-newwikitexteditor-help": "Toto sa niekedy nazýva „editor wikitextu 2017“.", "visualeditor-preference-tabs": "Režim úprav:", "visualeditor-preference-tabs-multi-tab": "Zobraziť záložky pre oba editory", "visualeditor-preference-tabs-prefer-ve": "Vždy použiť vizuálny editor, ak je to možné", From 038f4fe7a342f59a2810e7b06fc15226c1a07f0e Mon Sep 17 00:00:00 2001 From: David Chan Date: Sun, 12 Jan 2025 13:51:38 +0000 Subject: [PATCH 369/730] Tone check Also rework check framework to support asynchronicity Bug: T365301 Bug: T394818 Bug: T390248 Bug: T396786 Change-Id: I9d6efdfce20bed162ea20e6268bd14af6290c063 --- editcheck/i18n/en.json | 7 + editcheck/i18n/qqq.json | 11 +- editcheck/modules/AsyncTextCheck.js | 134 ++++++++++ editcheck/modules/BaseEditCheck.js | 89 +++++-- editcheck/modules/EditCheckAction.js | 16 +- editcheck/modules/EditCheckDialog.js | 17 +- editcheck/modules/EditCheckFactory.js | 46 ++-- .../modules/EditCheckGutterSidebarDialog.js | 20 +- editcheck/modules/controller.js | 248 ++++++++++-------- .../editchecks/experimental/ToneCheck.js | 92 +++++++ editcheck/modules/init.js | 2 + editcheck/modules/utils.js | 19 ++ extension.json | 9 + 13 files changed, 552 insertions(+), 158 deletions(-) create mode 100644 editcheck/modules/AsyncTextCheck.js create mode 100644 editcheck/modules/editchecks/experimental/ToneCheck.js create mode 100644 editcheck/modules/utils.js diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index 72f6a99256..3bf4396bea 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -8,6 +8,8 @@ "editcheck-config.json": "null", "editcheck-dialog-action-no": "No", "editcheck-dialog-action-yes": "Yes", + "editcheck-dialog-action-decline": "Decline", + "editcheck-dialog-action-revise": "Revise", "editcheck-dialog-addref-description": "Help readers understand where this information is coming from by adding a citation.", "editcheck-dialog-addref-reject-question": "Why are you not adding a citation?", "editcheck-dialog-addref-reject-description": "Other editors would value learning more about your decision to dismiss the citation.", @@ -20,6 +22,11 @@ "editcheck-dialog-title": "Before publishing", "editcheck-copyvio-title": "Pasted content", "editcheck-copyvio-description": "As a general rule, do not copy text from other sources. Doing so usually constitutes both a copyright violation and plagiarism.", + "editcheck-tone-title": "Revise Tone?", + "editcheck-tone-description": "Other editors often revise this kind of wording to have a more balanced tone. [$1 Learn more]", + "editcheck-tone-descriptionlink": "//en.wikipedia.org/wiki/Wikipedia:Neutral_point_of_view", + "editcheck-tone-title-acted": "Revising Tone", + "editcheck-tone-description-acted": "Look out for expressions that are flattering, disparaging, vague, cliché, or endorsing of a particular viewpoint.", "editcheck-review-title": "Review changes", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (references) declined (common knowledge)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck reference was declined as common knowledge", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index 92b74a2e5b..0b526ac351 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -7,8 +7,10 @@ ] }, "editcheck-config.json": "{{notranslate}}\n{{ignored}}\nJSON object configuring some edit check behavior.", - "editcheck-dialog-action-no": "Label for the no option when asking users if they want to add a citation.\n\n{{Identical|No}}", - "editcheck-dialog-action-yes": "Label for the no option when asking users if they want to add a citation.\n\n{{Identical|Yes}}", + "editcheck-dialog-action-no": "Label for the no option when asking users if they want to act on a check.\n\n{{Identical|No}}", + "editcheck-dialog-action-yes": "Label for the yes option when asking users if they want to act on a check.\n\n{{Identical|Yes}}", + "editcheck-dialog-action-decline": "Label for the decline option when asking users if they want to act on a check.\n\n{{Identical|Decline}}", + "editcheck-dialog-action-revise": "Label for the revise option when asking users if they want to act on a check.\n\n{{Identical|Revise}}", "editcheck-dialog-addref-description": "Help text explaining why it is helpful to add a citation.", "editcheck-dialog-addref-reject-question": "Heading for form question asking why the user didn't add a citation.", "editcheck-dialog-addref-reject-description": "Help text for form question asking why the user didn't add a citation.", @@ -21,6 +23,11 @@ "editcheck-dialog-title": "Title shown in the toolbar while the user is in the add a citation workflow.", "editcheck-copyvio-title": "Title of pasted content / copyvio check", "editcheck-copyvio-description": "Description of pasted content / copyvio check", + "editcheck-tone-title": "Title of tone check", + "editcheck-tone-description": "Help text explaining the tone check", + "editcheck-tone-descriptionlink": "Link to learn more about the tone check, shown as part of {{msg-mw|editcheck-tone-description}}", + "editcheck-tone-title-acted": "Title of tone check after it has been acted on", + "editcheck-tone-description-acted": "Help text explaining the tone check after it has been acted on", "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", "tag-editcheck-reference-decline-common-knowledge": "Short description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", "tag-editcheck-reference-decline-common-knowledge-description": "Long description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", diff --git a/editcheck/modules/AsyncTextCheck.js b/editcheck/modules/AsyncTextCheck.js new file mode 100644 index 0000000000..d3e658dbf4 --- /dev/null +++ b/editcheck/modules/AsyncTextCheck.js @@ -0,0 +1,134 @@ +/*! + * EditCheck ContentBranchNode check class + * + * @copyright See AUTHORS.txt + */ + +/** + * Abstract class for async checks that run on the plain text of a ContentBranchNode. + * + * The check runs when selection focus changes branch node, or on pre-save. The subclass + * implements `.checkAsync`. This is called with the ContentBranchNode's plain text + * and returns an outcome, which gets processed by the subclass's `.newAction` method, + * returning a new EditCheckAction if appropriate. + * + * @class + * @constructor + */ +mw.editcheck.AsyncTextCheck = function MWAsyncTextCheck( /* config */ ) { + // Parent constructor + mw.editcheck.AsyncTextCheck.super.apply( this, arguments ); + + // Construct memoizeCheckAsync if running for the first time for this constructor + if ( this.constructor.static.memoizedCheckAsync === null ) { + this.constructor.static.memoizedCheckAsync = mw.editcheck.memoize( + ( text ) => this.constructor.static.checkAsync( text ) + ); + } +}; + +OO.inheritClass( mw.editcheck.AsyncTextCheck, mw.editcheck.BaseEditCheck ); + +mw.editcheck.AsyncTextCheck.static.name = null; + +/** + * This static method gets implemented inside the AsyncTextCheck constructor. It + * memoizes the subclass's static method `checkAsync`. + * + * @static + * @param {string} text The text to check + * @return {Promise|any} The outcome of the check + */ +mw.editcheck.AsyncTextCheck.static.memoizedCheckAsync = null; + +/** + * @param {string} listener Type of listener, such as 'onBeforeSave' or 'onBranchNodeChange' + * @param {ve.dm.Surface} surfaceModel The surface + * @param {mw.editcheck.EditCheckAction[]} oldActions The actions last returned by this method + * @return {Promise[]} An array of promises containing either an action or null + */ +mw.editcheck.AsyncTextCheck.prototype.handleListener = function ( listener, surfaceModel /* , oldActions */ ) { + const documentModel = surfaceModel.getDocument(); + const selection = surfaceModel.getSelection(); + // TODO let currentBranchNode = null; + if ( selection instanceof ve.dm.LinearSelection && listener !== 'onBeforeSave' ) { + // TODO currentBranchNode = surfaceModel.getDocument().getBranchNodeFromOffset( selection.getRange().to ); + } + let modifiedContentRanges = this.getModifiedContentRanges( documentModel ) + .filter( ( range ) => !this.isDismissedRange( range ) ); + + if ( listener === 'onBeforeSave' ) { + modifiedContentRanges = modifiedContentRanges.filter( ( range ) => !this.isTaggedRange( 'interacted', range ) ); + } + + const actionPromises = []; + this.getModifiedContentBranchNodes( documentModel ).forEach( ( node ) => { + const nodeFragment = new ve.dm.SurfaceFragment( surfaceModel, new ve.dm.LinearSelection( node.getRange() ) ); + const fragments = modifiedContentRanges + .filter( ( range ) => node.getRange().containsRange( range ) ) + .map( ( range ) => surfaceModel.getLinearFragment( range ) ); + + /* All fragments have been dismissed */ + if ( !fragments.length ) { + return; + } + actionPromises.push( Promise.resolve( + this.constructor.static.memoizedCheckAsync( + documentModel.data.getText( true, node.getRange() ) + ) + ).then( ( outcome ) => { + if ( !outcome ) { + return null; + } + return this.newAction( nodeFragment, outcome ); + } ) ); + } ); + return actionPromises; +}; + +mw.editcheck.AsyncTextCheck.prototype.onBeforeSave = function ( ...args ) { + return this.handleListener( 'onBeforeSave', ...args ); +}; + +mw.editcheck.AsyncTextCheck.prototype.onBranchNodeChange = function ( ...args ) { + return this.handleListener( 'onBranchNodeChange', ...args ); +}; + +/** + * Perform a possibly-asynchronous check on the plaintext of a ContentBranchNode. + * + * The check must be deterministic; i.e. it must always return the same value for the same + * arguments. This allows the result to be memoized. + * + * @abstract + * @param {string} text The plaintext of the ContentBranchNode + * @return {Promise|any} The outcome of the check, to be passed into #newAction + */ +mw.editcheck.AsyncTextCheck.prototype.checkAsync = null; + +/** + * Build an action (or not), depending on the outcome of #checkAsync + * + * Caution: The ContentBranchNode may have changed while waiting for #checkAsync to settle. + * For example, the fragment could be empty if the ContentBranchNode has been deleted. + * + * @param {ve.dm.SurfaceFragment} fragment Fragment whose range was the ContentBranchNode + * @param {any} outcome The outcome returned by #checkAsync + * @return {mw.editcheck.EditCheckAction|null} A new action if appropriate, else null + */ +mw.editcheck.AsyncTextCheck.prototype.newAction = null; + +mw.editcheck.AsyncTextCheck.prototype.act = function ( choice, action, surface ) { + this.tag( 'interacted', action ); + if ( choice === 'dismiss' ) { + this.dismiss( action ); + // HACK: Recalculate check list + this.controller.updateForListener( 'onBranchNodeChange' ); + return ve.createDeferred().resolve( { action: choice } ).promise(); + } else if ( choice === 'edit' && surface ) { + return this.controller.closeDialog().then( () => { + surface.getView().activate(); + action.fragments[ action.fragments.length - 1 ].collapseToEnd().select(); + } ); + } +}; diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index b0dd504187..4dafed8e63 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -60,14 +60,6 @@ mw.editcheck.BaseEditCheck.prototype.onDocumentChange = null; */ mw.editcheck.BaseEditCheck.prototype.act = null; -/** - * @param {mw.editcheck.EditCheckAction} action - * @return {Object[]} - */ -mw.editcheck.BaseEditCheck.prototype.getChoices = function () { - return this.constructor.static.choices; -}; - /** * Get the title of the check * @@ -130,6 +122,20 @@ mw.editcheck.BaseEditCheck.prototype.getModifiedContentRanges = function ( docum return this.getModifiedRanges( documentModel, this.constructor.static.onlyCoveredNodes, true ); }; +/** + * Get ContentBranchNodes where some text has been changed + * + * @param {ve.dm.Document} documentModel + * @return {ve.dm.ContentBranchNode[]} + */ +mw.editcheck.BaseEditCheck.prototype.getModifiedContentBranchNodes = function ( documentModel ) { + const modified = new Set(); + this.getModifiedRanges( documentModel, false, true ).forEach( ( range ) => { + modified.add( documentModel.getBranchNodeFromOffset( range.start ) ); + } ); + return Array.from( modified ); +}; + /** * Find nodes that were added during the edit session * @@ -245,7 +251,7 @@ mw.editcheck.BaseEditCheck.prototype.isRangeValid = function ( range, documentMo * * @param {ve.Range} range * @param {ve.dm.Document} documentModel - * @return {boolean} + * @return {boolean} Whether the range is in a section we don't ignore */ mw.editcheck.BaseEditCheck.prototype.isRangeInValidSection = function ( range, documentModel ) { const ignoreSections = this.config.ignoreSections || []; @@ -280,17 +286,33 @@ mw.editcheck.BaseEditCheck.prototype.isRangeInValidSection = function ( range, d * Dismiss a check action * * @param {mw.editCheck.EditCheckAction} action + * @ */ mw.editcheck.BaseEditCheck.prototype.dismiss = function ( action ) { + this.tag( 'dismissed', action ); +}; + +/** + * Tag a check action + * + * TODO: This is asymmetrical. Do we want to split this into two functions, or + * unify isTaggedRange/isTaggedId into one function? + * + * @param {string} tag + * @param {mw.editCheck.EditCheckAction} action + */ +mw.editcheck.BaseEditCheck.prototype.tag = function ( tag, action ) { const name = this.constructor.static.name; if ( action.id ) { - const dismissedIds = this.controller.dismissedIds; - dismissedIds[ name ] = dismissedIds[ name ] || []; - dismissedIds[ name ].push( action.id ); + const taggedIds = this.controller.taggedIds; + taggedIds[ name ] = taggedIds[ name ] || {}; + taggedIds[ name ][ tag ] = taggedIds[ name ][ tag ] || new Set(); + taggedIds[ name ][ tag ].add( action.id ); } else { - const dismissedFragments = this.controller.dismissedFragments; - dismissedFragments[ name ] = dismissedFragments[ name ] || []; - dismissedFragments[ name ].push( + const taggedFragments = this.controller.taggedFragments; + taggedFragments[ name ] = taggedFragments[ name ] || {}; + taggedFragments[ name ][ tag ] = taggedFragments[ name ][ tag ] || []; + taggedFragments[ name ][ tag ].push( // Exclude insertions so we don't accidentally block unrelated changes: ...action.fragments.map( ( fragment ) => fragment.clone().setExcludeInsertions( true ) ) ); @@ -304,7 +326,23 @@ mw.editcheck.BaseEditCheck.prototype.dismiss = function ( action ) { * @return {boolean} */ mw.editcheck.BaseEditCheck.prototype.isDismissedRange = function ( range ) { - const fragments = this.controller.dismissedFragments[ this.constructor.static.name ]; + return this.isTaggedRange( 'dismissed', range ); +}; + +/** + * Check if this type of check has a given tag + * + * @param {string} tag + * @param {ve.Range} range + * @return {boolean} + */ +mw.editcheck.BaseEditCheck.prototype.isTaggedRange = function ( tag, range ) { + const tags = this.controller.taggedFragments[ this.constructor.static.name ]; + if ( tags === undefined ) { + return false; + } + + const fragments = tags[ tag ]; return !!fragments && fragments.some( ( fragment ) => fragment.getSelection().getCoveringRange().containsRange( range ) ); @@ -317,6 +355,21 @@ mw.editcheck.BaseEditCheck.prototype.isDismissedRange = function ( range ) { * @return {boolean} */ mw.editcheck.BaseEditCheck.prototype.isDismissedId = function ( id ) { - const ids = this.controller.dismissedIds[ this.constructor.static.name ]; - return ids && ids.includes( id ); + return this.isTaggedId( 'dismissed', id ); +}; + +/** + * Check if an action with a given ID has a given tag + * + * @param {string} tag + * @param {string} id + * @return {boolean} + */ +mw.editcheck.BaseEditCheck.prototype.isTaggedId = function ( tag, id ) { + const tags = this.controller.taggedIds[ this.constructor.static.name ]; + if ( tags === undefined ) { + return false; + } + const ids = tags[ tag ]; + return !!ids && ids.has( id ); }; diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 8ce858d095..fd3dd0dd90 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -16,14 +16,22 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.focusFragment = config.focusFragment; this.message = config.message; this.id = config.id; + this.paused = config.paused || false; this.title = config.title; this.icon = config.icon; this.type = config.type || 'warning'; + this.choices = config.choices || config.check.constructor.static.choices; }; OO.initClass( mw.editcheck.EditCheckAction ); OO.mixinClass( mw.editcheck.EditCheckAction, OO.EventEmitter ); +mw.editcheck.EditCheckAction.static.compareStarts = function ( a, b ) { + const aStart = a.getHighlightSelections()[ 0 ].getCoveringRange().start; + const bStart = b.getHighlightSelections()[ 0 ].getCoveringRange().start; + return aStart - bStart; +}; + /** * Get the action's title * @@ -39,7 +47,7 @@ mw.editcheck.EditCheckAction.prototype.getTitle = function () { * @return {Object[]} */ mw.editcheck.EditCheckAction.prototype.getChoices = function () { - return this.check.getChoices( this ); + return this.choices; }; /** @@ -112,9 +120,10 @@ mw.editcheck.EditCheckAction.prototype.onActionClick = function ( surface, actio /** * @param {mw.editcheck.EditCheckAction} other + * @param {boolean} ignorePaused Ignore whether the action is paused * @return {boolean} */ -mw.editcheck.EditCheckAction.prototype.equals = function ( other ) { +mw.editcheck.EditCheckAction.prototype.equals = function ( other, ignorePaused ) { // Same check type? if ( this.check.constructor !== other.check.constructor ) { return false; @@ -123,6 +132,9 @@ mw.editcheck.EditCheckAction.prototype.equals = function ( other ) { if ( this.id || other.id ) { return this.id === other.id; } + if ( !ignorePaused && this.paused !== other.paused ) { + return false; + } // Shortcut the fragment check if possible if ( this.fragments.length !== other.fragments.length ) { return false; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 13f375bcd5..210a8ffcb5 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -90,7 +90,7 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { }; ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions, rejected ) { - if ( listener !== this.listener ) { + if ( this.inBeforeSave !== ( listener === 'onBeforeSave' ) ) { return; } if ( this.updateFilter ) { @@ -190,13 +190,16 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data, process ) { this.controller.on( 'actionsUpdated', this.onActionsUpdated, false, this ); this.controller.on( 'focusAction', this.onFocusAction, false, this ); - const actions = data.actions || this.controller.getActions( this.listener ); + const actions = data.actions || this.controller.getActions(); - this.listener = data.listener || 'onDocumentChange'; + if ( !Object.prototype.hasOwnProperty.call( data, 'inBeforeSave' ) ) { + throw new Error( 'inBeforeSave argument required' ); + } + this.inBeforeSave = data.inBeforeSave; this.surface = data.surface; this.updateFilter = data.updateFilter; - this.singleAction = ( this.listener === 'onBeforeSave' ) || OO.ui.isMobile(); + this.singleAction = this.inBeforeSave || OO.ui.isMobile(); this.closeButton.toggle( OO.ui.isMobile() ); if ( data.footer !== undefined ) { @@ -243,7 +246,7 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { this.nextButton.setDisabled( false ); this.previousButton.setDisabled( false ); - if ( data && this.listener === 'onBeforeSave' ) { + if ( data && this.inBeforeSave ) { // If an action has been taken, we want to linger for a brief moment // to show the result of the action before moving away // TODO: This was written for AddReferenceEditCheck but should be @@ -251,7 +254,7 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { const pause = data.action !== 'reject' ? 500 : 0; setTimeout( () => { const rejected = [ 'feedback', 'reject', 'dismiss' ].includes( data.action ); - this.controller.removeAction( this.listener, action, rejected ); + this.controller.removeAction( 'onBeforeSave', action, rejected ); }, pause ); } else { this.controller.refresh(); @@ -355,7 +358,7 @@ ve.ui.SidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { }; ve.ui.SidebarEditCheckDialog.prototype.onPosition = function () { - if ( this.listener === 'onBeforeSave' ) { + if ( this.inBeforeSave ) { return; } const surfaceView = this.surface.getView(); diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index 58ad21cc68..5176edb5c5 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -4,6 +4,7 @@ mw.editcheck.EditCheckFactory = function MWEditEditCheckFactory() { this.checksByListener = { onDocumentChange: [], + onBranchNodeChange: [], onBeforeSave: [] }; }; @@ -80,30 +81,43 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener * TODO: Rename to createAllActionsByListener * * @param {mw.editcheck.Controller} controller - * @param {string} listener Listener name + * @param {string} listenerName Listener name * @param {ve.dm.Surface} surfaceModel Surface model - * @return {mw.editcheck.EditCheckActions[]} Actions, sorted by range + * @param {mw.editcheck.EditCheckActions[]} existing Existing actions + * @return {Promise} Promise that resolves with an updated list of Actions */ -mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( controller, listener, surfaceModel ) { - let newChecks = []; - this.getNamesByListener( listener ).forEach( ( checkName ) => { +mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( controller, listenerName, surfaceModel, existing ) { + const actionOrPromiseList = []; + this.getNamesByListener( listenerName ).forEach( ( checkName ) => { const check = this.create( checkName, controller, mw.editcheck.config[ checkName ] ); if ( !check.canBeShown() ) { return; } - const actions = check[ listener ]( surfaceModel ); - if ( actions.length > 0 ) { - ve.batchPush( newChecks, actions ); + if ( + mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle && + listenerName === 'onBeforeSave' && + check.getName() !== 'addReference' + ) { + return; + } + const checkListener = check[ listenerName ]; + let actionOrPromise; + try { + actionOrPromise = checkListener.call( check, surfaceModel, existing ); + } catch ( ex ) { + // HACK: ensure that synchronous exceptions are returned as rejected promises. + // TODO: Consider making all checks return promises. This would unify exception + // handling, at the cost of making debugging be async. + actionOrPromise = Promise.reject( ex ); } + ve.batchPush( actionOrPromiseList, actionOrPromise ); } ); - newChecks.sort( - ( a, b ) => a.getHighlightSelections()[ 0 ].getCoveringRange().start - b.getHighlightSelections()[ 0 ].getCoveringRange().start - ); - if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle && listener === 'onBeforeSave' ) { - newChecks = newChecks.filter( ( action ) => action.getName() === 'addReference' ); - newChecks.splice( 1 ); - } - return newChecks; + return Promise.all( actionOrPromiseList ) + .then( ( actions ) => actions.filter( ( action ) => action !== null ) ) + .then( ( actions ) => { + actions.sort( mw.editcheck.EditCheckAction.static.compareStarts ); + return actions; + } ); }; mw.editcheck.editCheckFactory = new mw.editcheck.EditCheckFactory(); diff --git a/editcheck/modules/EditCheckGutterSidebarDialog.js b/editcheck/modules/EditCheckGutterSidebarDialog.js index e539c42f4c..9c8c1bef45 100644 --- a/editcheck/modules/EditCheckGutterSidebarDialog.js +++ b/editcheck/modules/EditCheckGutterSidebarDialog.js @@ -29,14 +29,17 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) const process = this.constructor.super.prototype.getSetupProcess.call( this, data ); return process.first( () => { this.controller = data.controller; - this.listener = data.listener || data.controller.listener; + if ( !Object.prototype.hasOwnProperty.call( data, 'inBeforeSave' ) ) { + throw new Error( 'inBeforeSave argument required' ); + } + this.inBeforeSave = data.inBeforeSave; this.surface = data.controller.surface; this.surface.getTarget().$element.addClass( 've-ui-editCheck-gutter-active' ); this.controller.on( 'actionsUpdated', this.onActionsUpdated, null, this ); this.controller.on( 'position', this.onPosition, null, this ); - this.renderActions( data.actions || this.controller.getActions( this.listener ) ); + this.renderActions( data.actions || this.controller.getActions() ); }, this ); }; @@ -51,15 +54,15 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.getTeardownProcess = function ( dat }, this ); }; -ve.ui.GutterSidebarEditCheckDialog.prototype.onActionsUpdated = function ( listener, actions ) { - if ( listener !== this.listener ) { +ve.ui.GutterSidebarEditCheckDialog.prototype.onActionsUpdated = function ( inBeforeSave, actions ) { + if ( inBeforeSave !== this.inBeforeSave ) { return; } this.renderActions( actions ); }; ve.ui.GutterSidebarEditCheckDialog.prototype.onPosition = function () { - this.renderActions( this.controller.getActions( this.listener ) ); + this.renderActions( this.controller.getActions() ); }; ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions ) { @@ -127,7 +130,10 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions .addClass( 've-ui-editCheck-gutter-action-' + action.getType() ) .append( icon.$element, iconLabel.$element ) .on( 'click', () => { - if ( this.listener === 'onDocumentChange' ) { + // Should we trigger the popup? By default yes, unless + // we're in the onBeforeSave mode where we can assume + // something else is handling it. + if ( !this.inBeforeSave ) { // mid-edit const currentWindow = this.surface.getToolbarDialogs( ve.ui.FixedEditCheckDialog.static.position ).getCurrentWindow(); if ( !currentWindow || currentWindow.constructor.static.name !== 'fixedEditCheckDialog' ) { @@ -136,7 +142,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions 'fixedEditCheckDialog', { controller: this.controller, - listener: this.listener, + inBeforeSave: false, actions: section.actions, footer: section.actions.length !== 1, // just filter out any discarded actions from the allowed set diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 503d1db39e..361fa4c002 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -1,5 +1,7 @@ 'use strict'; +const midEditListeners = [ 'onDocumentChange', 'onBranchNodeChange' ]; + function Controller( target ) { // Mixin constructors OO.EventEmitter.call( this ); @@ -9,12 +11,13 @@ function Controller( target ) { this.target = target; this.surface = null; - this.listener = 'onDocumentChange'; + this.inBeforeSave = false; + this.branchNode = null; this.$highlights = $( '
' ); - this.dismissedFragments = {}; - this.dismissedIds = {}; + this.taggedFragments = {}; + this.taggedIds = {}; this.onDocumentChangeDebounced = ve.debounce( this.onDocumentChange.bind( this ), 100 ); this.onPositionDebounced = ve.debounce( this.onPosition.bind( this ), 100 ); @@ -62,8 +65,8 @@ Controller.prototype.setup = function () { this.surface = null; this.actionsByListener = {}; - this.dismissedFragments = {}; - this.dismissedIds = {}; + this.taggedFragments = {}; + this.taggedIds = {}; mw.editcheck.refCheckShown = false; mw.editcheck.toneCheckShown = false; @@ -99,28 +102,35 @@ Controller.prototype.refresh = function () { if ( this.target.deactivating || !this.target.active ) { return; } - if ( this.listener === 'onBeforeSave' ) { + if ( this.inBeforeSave ) { // These shouldn't be recalculated - this.emit( 'actionsUpdated', this.listener, this.getActions( this.listener ), [], [], false ); + this.emit( 'actionsUpdated', 'onBeforeSave', this.getActions(), [], [], false ); } else { - this.updateForListener( this.listener, true ); + midEditListeners.forEach( + ( listener ) => this.updateForListener( listener, true ) + ); } }; Controller.prototype.updateForListener = function ( listener, always ) { - listener = listener || this.listener; - const existing = this.actionsByListener[ listener ] || []; - const actions = mw.editcheck.editCheckFactory.createAllByListener( this, listener, this.surface.getModel() ) - .map( ( action ) => existing.find( ( oldAction ) => oldAction.equals( action ) ) || action ); - - this.actionsByListener[ listener ] = actions; - - const newActions = actions.filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); - const discardedActions = existing.filter( ( action ) => actions.every( ( newAction ) => !action.equals( newAction ) ) ); - if ( always || actions.length !== existing.length || newActions.length || discardedActions.length ) { - this.emit( 'actionsUpdated', listener, actions, newActions, discardedActions, false ); - } - return actions; + const existing = this.getActions( listener ) || []; + const otherListenersExisting = this.getActions().filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); + return mw.editcheck.editCheckFactory.createAllByListener( this, listener, this.surface.getModel(), existing ) + .then( ( actions ) => actions.map( ( action ) => existing.find( ( oldAction ) => oldAction.equals( action ) ) || action ) ) + .then( ( actions ) => { + this.actionsByListener[ listener ] = actions; + + const newActions = actions.filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); + const discardedActions = existing.filter( ( action ) => actions.every( ( newAction ) => !action.equals( newAction ) ) ); + if ( always || actions.length !== existing.length || newActions.length || discardedActions.length ) { + actions = actions.concat( otherListenersExisting ); + actions.sort( mw.editcheck.EditCheckAction.static.compareStarts ); + // TODO: We need to consider a consistency check here as the document state may have changed since the + // action within the promise was created + this.emit( 'actionsUpdated', listener, actions, newActions, discardedActions, false ); + } + return actions; + } ); }; Controller.prototype.removeAction = function ( listener, action, rejected ) { @@ -151,8 +161,22 @@ Controller.prototype.focusAction = function ( action, scrollTo ) { this.updatePositions(); }; +/** + * Get actions by listener + * + * If no listener is specified, then get all actions relevant to the current moment, i.e.: + * - During beforeSave, get onBeforeSave listeners + * - Otherwise, get all mid-edit listeners + * + * @param {string} [listener] The listener; if omitted, get all relevant actions + * @return {mw.editcheck.EditCheckAction[]} The actions + */ Controller.prototype.getActions = function ( listener ) { - return this.actionsByListener[ listener || this.listener ] || []; + if ( listener ) { + return this.actionsByListener[ listener ]; + } + const listeners = this.inBeforeSave ? [ 'onBeforeSave' ] : midEditListeners; + return [].concat( ...listeners.map( ( lr ) => this.actionsByListener[ lr ] || [] ) ); }; Controller.prototype.onSelect = function ( selection ) { @@ -164,6 +188,20 @@ Controller.prototype.onSelect = function ( selection ) { // In review mode the selection and display of checks is being managed by the dialog return; } + + if ( !this.inBeforeSave ) { + let newBranchNode; + if ( selection instanceof ve.dm.LinearSelection ) { + newBranchNode = this.surface.model.documentModel.getBranchNodeFromOffset( selection.range.to ); + } else { + newBranchNode = null; + } + if ( newBranchNode !== this.branchNode ) { + this.branchNode = newBranchNode; + this.updateForListener( 'onBranchNodeChange' ); + } + } + if ( OO.ui.isMobile() ) { // On mobile we want to close the drawer if the keyboard is shown if ( this.surface.getView().hasNativeCursorSelection() ) { @@ -211,7 +249,7 @@ Controller.prototype.onDocumentChange = function () { // This is debounced, and could potentially be called after teardown return; } - if ( this.listener !== 'onBeforeSave' ) { + if ( !this.inBeforeSave ) { this.updateForListener( 'onDocumentChange' ); } @@ -228,7 +266,7 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions } // do we need to show mid-edit actions? - if ( listener !== 'onDocumentChange' ) { + if ( listener === 'onBeforeSave' ) { return; } if ( !actions.length ) { @@ -242,7 +280,7 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); shownPromise = windowAction.open( windowName, - { listener: listener, actions: actions, controller: this } + { inBeforeSave: this.inBeforeSave, actions: actions, controller: this } ).then( ( instance ) => { ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-midedit' } ); instance.closed.then( () => { @@ -270,82 +308,83 @@ Controller.prototype.setupPreSaveProcess = function () { ve.track( 'counter.editcheck.preSaveChecksAvailable' ); const oldFocused = this.focused; - this.listener = 'onBeforeSave'; - const actions = this.updateForListener( 'onBeforeSave' ); - if ( actions.length ) { - ve.track( 'counter.editcheck.preSaveChecksShown' ); - mw.editcheck.refCheckShown = mw.editcheck.refCheckShown || - actions.some( ( action ) => action.getName() === 'addReference' ); - mw.editcheck.toneCheckShown = mw.editcheck.toneCheckShown || - actions.some( ( action ) => action.getName() === 'tone' ); - - this.setupToolbar( target ); - - let $contextContainer, contextPadding; - if ( surface.context.popup ) { - contextPadding = surface.context.popup.containerPadding; - $contextContainer = surface.context.popup.$container; - surface.context.popup.$container = surface.$element; - surface.context.popup.containerPadding = 20; - } - - return this.closeSidebars( 'preSaveProcess' ).then( () => this.closeDialog( 'preSaveProcess' ).then( () => { - this.originalToolbar.toggle( false ); - target.onContainerScroll(); - const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); - return windowAction.open( 'fixedEditCheckDialog', { listener: 'onBeforeSave', actions: actions, controller: this } ) - .then( ( instance ) => { - ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); - actions.forEach( ( action ) => { - ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); - } ); - instance.closed.then( () => {}, () => {} ).then( () => { - surface.getView().setReviewMode( false ); - this.listener = 'onDocumentChange'; - this.focused = oldFocused; - // Re-open the mid-edit sidebar if necessary. - this.refresh(); - } ); - return instance.closing.then( ( data ) => { - if ( target.deactivating || !target.active ) { - // Someone clicking "read" to leave the article - // will trigger the closing of this; in that - // case, just abandon what we're doing - return ve.createDeferred().reject().promise(); - } - this.restoreToolbar( target ); - - if ( $contextContainer ) { - surface.context.popup.$container = $contextContainer; - surface.context.popup.containerPadding = contextPadding; - } - - target.onContainerScroll(); - - if ( data ) { - const delay = ve.createDeferred(); - // If they inserted, wait 2 seconds on desktop - // before showing save dialog to give user time - // to see success notification. - setTimeout( () => { - ve.track( 'counter.editcheck.preSaveChecksCompleted' ); - delay.resolve(); - }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); - return delay.promise(); - } else { - // closed via "back" or otherwise - ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); - return ve.createDeferred().reject().promise(); - } + this.inBeforeSave = true; + return this.updateForListener( 'onBeforeSave' ).then( ( actions ) => { + if ( actions.length ) { + ve.track( 'counter.editcheck.preSaveChecksShown' ); + mw.editcheck.refCheckShown = mw.editcheck.refCheckShown || + actions.some( ( action ) => action.getName() === 'addReference' ); + mw.editcheck.toneCheckShown = mw.editcheck.toneCheckShown || + actions.some( ( action ) => action.getName() === 'tone' ); + + this.setupToolbar( target ); + + let $contextContainer, contextPadding; + if ( surface.context.popup ) { + contextPadding = surface.context.popup.containerPadding; + $contextContainer = surface.context.popup.$container; + surface.context.popup.$container = surface.$element; + surface.context.popup.containerPadding = 20; + } + + return this.closeSidebars( 'preSaveProcess' ).then( () => this.closeDialog( 'preSaveProcess' ).then( () => { + this.originalToolbar.toggle( false ); + target.onContainerScroll(); + const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); + return windowAction.open( 'fixedEditCheckDialog', { inBeforeSave: true, actions: actions, controller: this } ) + .then( ( instance ) => { + ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); + actions.forEach( ( action ) => { + ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); + } ); + instance.closed.then( () => { }, () => { } ).then( () => { + surface.getView().setReviewMode( false ); + this.inBeforeSave = false; + this.focused = oldFocused; + // Re-open the mid-edit sidebar if necessary. + this.refresh(); + } ); + return instance.closing.then( ( data ) => { + if ( target.deactivating || !target.active ) { + // Someone clicking "read" to leave the article + // will trigger the closing of this; in that + // case, just abandon what we're doing + return ve.createDeferred().reject().promise(); + } + this.restoreToolbar( target ); + + if ( $contextContainer ) { + surface.context.popup.$container = $contextContainer; + surface.context.popup.containerPadding = contextPadding; + } + + target.onContainerScroll(); + + if ( data ) { + const delay = ve.createDeferred(); + // If they inserted, wait 2 seconds on desktop + // before showing save dialog to give user time + // to see success notification. + setTimeout( () => { + ve.track( 'counter.editcheck.preSaveChecksCompleted' ); + delay.resolve(); + }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); + return delay.promise(); + } else { + // closed via "back" or otherwise + ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); + return ve.createDeferred().reject().promise(); + } + } ); } ); - } ); - } ) ); - } else { - this.listener = 'onDocumentChange'; - // Counterpart to earlier preSaveChecksShown, for use in tracking - // errors in check-generation: - ve.track( 'counter.editcheck.preSaveChecksNotShown' ); - } + } ) ); + } else { + this.inBeforeSave = false; + // Counterpart to earlier preSaveChecksShown, for use in tracking + // errors in check-generation: + ve.track( 'counter.editcheck.preSaveChecksNotShown' ); + } + } ); } ); }; @@ -386,10 +425,6 @@ Controller.prototype.setupToolbar = function ( target ) { target.toolbar.$element.before( reviewToolbar.$element ); target.toolbar = reviewToolbar; - reviewToolbar.connect( target, { - resize: 'onToolbarResize' - } ); - reviewToolbar.initialize(); this.originalToolbar = toolbar; @@ -425,13 +460,14 @@ Controller.prototype.drawSelections = function () { 'editCheckWarning', this.focused.getHighlightSelections().map( ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) - ) + ), + this.focused.paused ? { color: '#888' } : {} ); } else { surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); } - if ( this.listener === 'onBeforeSave' ) { + if ( this.inBeforeSave ) { // Review mode grays out everything that's not highlighted: const highlightNodes = []; this.getActions().forEach( ( action ) => { diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js new file mode 100644 index 0000000000..e7fddcf111 --- /dev/null +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -0,0 +1,92 @@ +mw.editcheck.ToneCheck = function MWToneCheck( /* config */ ) { + // Parent constructor + mw.editcheck.ToneCheck.super.apply( this, arguments ); +}; + +OO.inheritClass( mw.editcheck.ToneCheck, mw.editcheck.AsyncTextCheck ); + +/* Static properties */ + +mw.editcheck.ToneCheck.static.name = 'tone'; + +mw.editcheck.ToneCheck.static.predictionThreshold = 0.8; + +/* Static methods */ + +/** + * Perform an asynchronous check + * + * @param {string} text The plaintext to check + * @return {Promise|any} + */ +mw.editcheck.ToneCheck.static.checkAsync = function ( text ) { + /* Don't send requests for short strings */ + if ( text.trim().length <= 0 ) { + return false; + } + + return fetch( 'https://api.wikimedia.org/service/lw/inference/v1/models/edit-check:predict', { + method: 'POST', + headers: { + 'Content-Type': 'text/html' + }, + body: JSON.stringify( { + instances: [ + // eslint-disable-next-line camelcase + { original_text: '', modified_text: text, check_type: 'tone', lang: 'en' } + ] + } ) + } ).then( + ( response ) => response.json() + ).then( ( data ) => { + const outcome = data.predictions[ 0 ].prediction === true && + data.predictions[ 0 ].probability >= mw.editcheck.ToneCheck.static.predictionThreshold; + return !!outcome; + } ); +}; + +/* Instance methods */ + +mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { + if ( !outcome ) { + return null; + } + // TODO: variant message/labels when in back-from-presave state + return new mw.editcheck.EditCheckAction( { + fragments: [ fragment ], + title: ve.msg( 'editcheck-tone-title' ), + // eslint-disable-next-line no-jquery/no-append-html + message: $( '' ).append( ve.htmlMsg( 'editcheck-tone-description', ve.msg( 'editcheck-tone-descriptionlink' ) ) ) + .find( 'a' ).attr( 'target', '_blank' ).on( 'click', () => { + ve.track( 'activity.editCheck-' + this.getName(), { action: 'click-learn-more' } ); + } ).end(), + check: this, + choices: [ + { + action: 'edit', + label: ve.msg( 'editcheck-dialog-action-revise' ), + icon: 'edit' + }, + { + action: 'dismiss', + label: ve.msg( 'editcheck-dialog-action-decline' ), + icon: 'check' + } + ] + } ); +}; + +mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { + this.tag( 'interacted', action ); + if ( choice === 'dismiss' ) { + this.dismiss( action ); + return ve.createDeferred().resolve( { action: choice } ).promise(); + } else if ( choice === 'edit' && surface ) { + return this.controller.closeDialog().then( () => { + surface.getView().activate(); + action.fragments[ action.fragments.length - 1 ].collapseToStart().select(); + } ); + } +}; + +mw.editcheck.editCheckFactory.register( mw.editcheck.ToneCheck ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 1642fea040..273d997005 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -3,11 +3,13 @@ mw.editcheck = { ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ) }; +require( './utils.js' ); require( './EditCheckDialog.js' ); require( './EditCheckGutterSidebarDialog.js' ); require( './EditCheckFactory.js' ); require( './EditCheckAction.js' ); require( './BaseEditCheck.js' ); +require( './AsyncTextCheck.js' ); require( './editchecks/AddReferenceEditCheck.js' ); diff --git a/editcheck/modules/utils.js b/editcheck/modules/utils.js new file mode 100644 index 0000000000..a9f0402c02 --- /dev/null +++ b/editcheck/modules/utils.js @@ -0,0 +1,19 @@ +'use strict'; + +/** + * @param {Function} handler A deterministic asynchronous function taking a string and returning Any + * @return {Function} Memoized version (returns the original promise on subsequent calls) + */ +mw.editcheck.memoize = function ( handler ) { + const memory = new Map(); + return ( arg ) => { + if ( typeof arg !== 'string' ) { + throw new Error( 'Argument must be a string' ); + } + + if ( !memory.has( arg ) ) { + memory.set( arg, handler( arg ) ); + } + return memory.get( arg ); + }; +}; diff --git a/extension.json b/extension.json index 9eb2894122..342b607787 100644 --- a/extension.json +++ b/extension.json @@ -635,12 +635,14 @@ "group": "visualEditorA", "packageFiles": [ "editcheck/modules/init.js", + "editcheck/modules/utils.js", "editcheck/modules/controller.js", "editcheck/modules/EditCheckDialog.js", "editcheck/modules/EditCheckGutterSidebarDialog.js", "editcheck/modules/EditCheckFactory.js", "editcheck/modules/EditCheckAction.js", "editcheck/modules/BaseEditCheck.js", + "editcheck/modules/AsyncTextCheck.js", "editcheck/modules/editchecks/AddReferenceEditCheck.js", { "name": "editcheck/modules/config.json", @@ -658,6 +660,8 @@ "messages": [ "editcheck-dialog-action-no", "editcheck-dialog-action-yes", + "editcheck-dialog-action-decline", + "editcheck-dialog-action-revise", "editcheck-dialog-addref-description", "editcheck-dialog-addref-reject-question", "editcheck-dialog-addref-reject-description", @@ -670,6 +674,11 @@ "editcheck-dialog-title", "editcheck-copyvio-title", "editcheck-copyvio-description", + "editcheck-tone-title", + "editcheck-tone-title-acted", + "editcheck-tone-description", + "editcheck-tone-descriptionlink", + "editcheck-tone-description-acted", "editcheck-review-title", "visualeditor-backbutton-tooltip", "next", From b3c69dd660ef8a4d2b4a2980af08191a9d9238a4 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 3 Jun 2025 11:51:19 +0100 Subject: [PATCH 370/730] EditCheck controller: Rename this.focused to this.focusedAction Also clear this.focusedAction when the surface is destroyed as not doing so was causing the following bug: * Focus a check, then return to read mode, then start VE again * A phantom yellow highlight is visible, as focusedAction from the previous session was still set. Change-Id: Id80f663303939057e57877f5f7f11e9ab60e1c52 --- .../modules/EditCheckGutterSidebarDialog.js | 4 +-- editcheck/modules/controller.js | 34 ++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/editcheck/modules/EditCheckGutterSidebarDialog.js b/editcheck/modules/EditCheckGutterSidebarDialog.js index 9c8c1bef45..50c7fe414f 100644 --- a/editcheck/modules/EditCheckGutterSidebarDialog.js +++ b/editcheck/modules/EditCheckGutterSidebarDialog.js @@ -162,7 +162,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions }; this.$body.append( widget.$element ); } - if ( widget.actions.includes( this.controller.focused ) ) { + if ( widget.actions.includes( this.controller.focusedAction ) ) { widget.icon.setFlags( action.getType() ); } else { widget.icon.clearFlags(); @@ -170,7 +170,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions widget.$element.css( { top: section.rect.top + 2, height: section.rect.height - } ).toggleClass( 've-ui-editCheck-gutter-action-inactive', !section.actions.includes( this.controller.focused ) ); + } ).toggleClass( 've-ui-editCheck-gutter-action-inactive', !section.actions.includes( this.controller.focusedAction ) ); this.widgets.push( widget ); } ); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 23c6e56af7..b58123762b 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -13,6 +13,7 @@ function Controller( target ) { this.surface = null; this.inBeforeSave = false; this.branchNode = null; + this.focusedAction = null; this.$highlights = $( '
' ); @@ -64,6 +65,7 @@ Controller.prototype.setup = function () { this.surface = null; this.actionsByListener = {}; + this.focusedAction = null; this.taggedFragments = {}; this.taggedIds = {}; @@ -141,20 +143,20 @@ Controller.prototype.removeAction = function ( listener, action, rejected ) { } const removed = actions.splice( index, 1 ); - if ( action === this.focused ) { - this.focused = undefined; + if ( action === this.focusedAction ) { + this.focusedAction = null; } this.emit( 'actionsUpdated', listener, actions, [], removed, rejected ); }; Controller.prototype.focusAction = function ( action, scrollTo ) { - if ( !scrollTo && action === this.focused ) { + if ( !scrollTo && action === this.focusedAction ) { // Don't emit unnecessary events if there is no change or scroll return; } - this.focused = action; + this.focusedAction = action; this.emit( 'focusAction', action, this.getActions().indexOf( action ), scrollTo ); @@ -239,8 +241,8 @@ Controller.prototype.onPosition = function () { this.updatePositions(); - if ( this.getActions().length && this.focused && this.surface.getView().reviewMode ) { - this.scrollActionIntoViewDebounced( this.focused ); + if ( this.getActions().length && this.focusedAction && this.surface.getView().reviewMode ) { + this.scrollActionIntoViewDebounced( this.focusedAction ); } }; @@ -259,8 +261,8 @@ Controller.prototype.onDocumentChange = function () { Controller.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions ) { // do we need to redraw anything? if ( newActions.length || discardedActions.length ) { - if ( this.focused && discardedActions.includes( this.focused ) ) { - this.focused = undefined; + if ( this.focusedAction && discardedActions.includes( this.focusedAction ) ) { + this.focusedAction = null; } this.updatePositions(); } @@ -307,7 +309,7 @@ Controller.prototype.setupPreSaveProcess = function () { } ve.track( 'counter.editcheck.preSaveChecksAvailable' ); - const oldFocused = this.focused; + const oldFocusedAction = this.focusedAction; this.inBeforeSave = true; return this.updateForListener( 'onBeforeSave' ).then( ( actions ) => { if ( actions.length ) { @@ -337,10 +339,10 @@ Controller.prototype.setupPreSaveProcess = function () { actions.forEach( ( action ) => { ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); } ); - instance.closed.then( () => { }, () => { } ).then( () => { + instance.closed.then( () => {}, () => {} ).then( () => { surface.getView().setReviewMode( false ); this.inBeforeSave = false; - this.focused = oldFocused; + this.focusedAction = oldFocusedAction; // Re-open the mid-edit sidebar if necessary. this.refresh(); } ); @@ -453,15 +455,15 @@ Controller.prototype.restoreToolbar = function ( target ) { Controller.prototype.drawSelections = function () { const surfaceView = this.surface.getView(); - if ( this.focused ) { - // The currently-focused check gets a selection: + if ( this.focusedAction ) { + // The currently-focused action gets a selection: // TODO: clicking the selection should activate the sidebar-action surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', - this.focused.getHighlightSelections().map( + this.focusedAction.getHighlightSelections().map( ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) ), - this.focused.paused ? { color: '#888' } : {} + this.focusedAction.paused ? { color: '#888' } : {} ); } else { surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); @@ -508,7 +510,7 @@ Controller.prototype.drawGutter = function () { this.$highlights.append( $( '
' ) .addClass( 've-ui-editCheck-gutter-highlight' ) .addClass( 've-ui-editCheck-gutter-highlight-' + action.getType() ) - .addClass( 've-ui-editCheck-gutter-highlight-' + ( action === this.focused ? 'active' : 'inactive' ) ) + .addClass( 've-ui-editCheck-gutter-highlight-' + ( action === this.focusedAction ? 'active' : 'inactive' ) ) .css( { top: rect.top - 2, height: rect.height + 4 From 409c7bc76b636ad4f97adecc9c0e203da60547b2 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 16 Jun 2025 17:30:03 +0100 Subject: [PATCH 371/730] Move all teardown actions to surface teardown This matches the surfaceReady setup. Change-Id: I047ff0bc9575925f65423d123577935d8466cf33 --- editcheck/modules/controller.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index b58123762b..a94f0b74b8 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -72,11 +72,9 @@ Controller.prototype.setup = function () { mw.editcheck.refCheckShown = false; mw.editcheck.toneCheckShown = false; - } ); - }, null, this ); - target.on( 'teardown', () => { - document.documentElement.classList.remove( 've-editcheck-available' ); + document.documentElement.classList.remove( 've-editcheck-available' ); + } ); }, null, this ); this.setupPreSaveProcess(); From 5a3ababae457632de6a0a92d8cd76e7221f543c9 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 23 May 2025 12:52:52 +0100 Subject: [PATCH 372/730] EditCheck: Avoid reflow in Vector 2022 when opening sidebar Bug: T378151 Change-Id: Ifd4d0aaca29f7278f6b7282009a31b5dfab0a423 --- .stylelintrc.json | 2 +- editcheck/modules/EditCheck.less | 92 ++++++++++++++++++- editcheck/modules/EditCheckDialog.js | 16 ++++ editcheck/modules/controller.js | 27 ++++++ ...DesktopArticleTarget.init-vector-2022.less | 1 - 5 files changed, 131 insertions(+), 7 deletions(-) diff --git a/.stylelintrc.json b/.stylelintrc.json index a20327c166..120a32fc11 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -5,6 +5,6 @@ ], "rules": { "no-descending-specificity": null, - "selector-class-pattern": "^(ve|mw|oo-ui|client|skin)-" + "selector-class-pattern": "^(ve|mw|oo-ui|client|skin|vector)-" } } diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 7439572f18..18ef3ab276 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -1,15 +1,97 @@ @import '../../lib/codex-design-tokens/theme-wikimedia-ui.less'; -@media ( max-width: 1492px ) { - /* Hides the Vector sidebar while an editcheck-enabled editing session is occurring. See T379443. */ - /* stylelint-disable selector-class-pattern */ - .ve-editcheck-available { +.skin-vector-2022 { + .ve-editcheck-available & { + .mw-page-container-inner { + transition: grid-template-columns 250ms, column-gap 250ms; /* stylelint-disable-line plugin/no-unsupported-browser-features */ + } + + .mw-body { + transition: padding 250ms; + padding-right: 0; + + .vector-column-end { + transition: width 250ms; + } + } + + .ve-init-mw-desktopArticleTarget .ve-init-mw-target-surface .ve-ui-sidebarDialog { + // Sidebar fades in and slides in from the right side of the screen + margin-right: -300px; + overflow-x: visible; + opacity: 0; + left: 150px; + transition: opacity 250ms, left 250ms; + } + .mw-body .vector-column-end, .vector-pinnable-header-pin-button { + @media screen and ( max-width: 1492px ) { + // Pre-emptively hide right sidebar below width at which it would start + // squashing the main content area. Not 100% necessary but reduces amount + // of movement when EditCheck opens at these widths. + display: none !important; /* stylelint-disable-line declaration-no-important */ + } + } + } + + .ve-editcheck-enabled &, + .ve-editcheck-transitioning & { + .mw-body .vector-column-end, + .vector-main-menu-landmark, + .vector-pinnable-header-pin-button { + // Hide sidebars during transitions as they reflow their own text when the change width display: none !important; /* stylelint-disable-line declaration-no-important */ } } - /* stylelint-enable selector-class-pattern */ + + /* stylelint-disable-next-line selector-not-notation */ + .ve-editcheck-enabled:not( .vector-feature-main-menu-pinned-disabled.vector-toc-not-available, .vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 ) & { + .mw-page-container-inner { + // At maximum width: + // 7rem is approximate half the difference between the maximum width + // of the main page container and VE + EditCheck, so this places VE + // in the center. Using a numeric value for centering allows the + // transition to animate correctly. + grid-template-columns: ~'7rem minmax( 0, 1fr )'; + column-gap: 0; + + @media screen and ( max-width: @max-width-breakpoint-desktop ) { + // Width constrained by viewport: + // Calculate centering value as ( 100vw - ) / 2 + grid-template-columns: ~'calc(50vw - 44rem) minmax( 0, 1fr )'; + } + } + } + + .ve-editcheck-enabled & { + .mw-body { + // Padding to prevent EditCheck sidebar from going off screen + padding-right: 300px; + } + + .ve-init-mw-desktopArticleTarget .ve-init-mw-target-surface .ve-ui-sidebarDialog { + opacity: 1; + left: 0; + } + } + + .ve-editcheck-transitioning.vector-feature-main-menu-pinned-disabled.vector-toc-not-available &, + .ve-editcheck-enabled.vector-feature-main-menu-pinned-disabled.vector-toc-not-available &, + .ve-editcheck-transitioning.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 &, + .ve-editcheck-enabled.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 & { + @media screen and ( min-width: @min-width-breakpoint-desktop ) { + .mw-body { + padding-right: 0; + } + } + + .mw-body .vector-column-end { + display: block !important; /* stylelint-disable-line declaration-no-important */ + visibility: hidden; + width: 300px; + } + } } /* Toolbar */ diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 210a8ffcb5..e8794514f9 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -216,6 +216,11 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data, process ) { this.surface.context.hide(); this.showActions( actions, actions ); + if ( this.onPosition ) { + // This currently only applies to SidebarEditCheckDialog but needs to be + // called immediately so margin-top is set before the animation starts. + this.onPosition(); + } }, this ); }; @@ -230,6 +235,17 @@ ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data, process ) }, this ); }; +/** + * HACK: Override #ready to prevent trying to focus $content + */ +ve.ui.EditCheckDialog.prototype.ready = function ( data ) { + return this.getReadyProcess( data ).execute().then( () => { + // Force redraw by asking the browser to measure the elements' widths + this.$element.addClass( 'oo-ui-window-ready' ).width(); + this.$content.addClass( 'oo-ui-window-content-ready' ).width(); + } ); +}; + /** * Handle 'act' events from the mw.widget.EditCheckActionWidget * diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index a94f0b74b8..653a8f80f9 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -54,6 +54,11 @@ Controller.prototype.setup = function () { this.surface.getModel().on( 'select', this.onSelectDebounced ); this.surface.getModel().on( 'contextChange', this.onContextChangeDebounced ); + this.surface.getSidebarDialogs().connect( this, { + opening: 'onSidebarDialogsOpeningOrClosing', + closing: 'onSidebarDialogsOpeningOrClosing' + } ); + this.on( 'actionsUpdated', this.onActionsUpdated, null, this ); // Run on load (e.g. recovering from auto-save) @@ -80,6 +85,28 @@ Controller.prototype.setup = function () { this.setupPreSaveProcess(); }; +Controller.prototype.onSidebarDialogsOpeningOrClosing = function ( win, openingOrClosing ) { + if ( win.constructor.static.name !== 'sidebarEditCheckDialog' ) { + return; + } + const isOpening = !win.isOpened(); + // Wait for sidebar to render before applying CSS which starts transitions + requestAnimationFrame( () => { + $( document.documentElement ).toggleClass( 've-editcheck-enabled', isOpening ); + } ); + if ( isOpening ) { + $( document.documentElement ).addClass( 've-editcheck-transitioning' ); + } else { + openingOrClosing.then( () => { + $( document.documentElement ).removeClass( 've-editcheck-transitioning' ); + } ); + } + // Adjust toolbar position after animation ends + setTimeout( () => { + this.target.toolbar.onWindowResize(); + }, OO.ui.theme.getDialogTransitionDuration() ); +}; + Controller.prototype.editChecksArePossible = function () { return [ 'onBeforeSave', 'onDocumentChange' ].some( ( listener ) => mw.editcheck.editCheckFactory.getNamesByListener( listener ).some( diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less index cac616dfed..30fcc7189d 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less @@ -7,7 +7,6 @@ // Temporarily disable TOC in edit mode until TOC // works with both visual and source editors (T294950) -/* stylelint-disable-next-line selector-class-pattern */ .ve-activated .vector-toc { display: none; } From 07d6b67d31fd65460febcaea5c5431d06e76a5b3 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 17 Jun 2025 09:30:32 +0200 Subject: [PATCH 373/730] Localisation updates from https://translatewiki.net. Change-Id: I3dc1b93d5c9f177f81d7b3c761cedceeb04d342d --- editcheck/i18n/de.json | 6 ++++ editcheck/i18n/fr.json | 5 ++++ i18n/ve-mw/mwlanguagevariant/ps.json | 42 ++++++++++++++++++++++++++-- i18n/ve-mw/tok.json | 9 ++++++ i18n/ve-wmf/ps.json | 4 ++- 5 files changed, 62 insertions(+), 4 deletions(-) diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index 283e619525..cfe0d13e13 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -4,6 +4,8 @@ }, "editcheck-dialog-action-no": "Nein", "editcheck-dialog-action-yes": "Ja", + "editcheck-dialog-action-decline": "Ablehnen", + "editcheck-dialog-action-revise": "Überarbeiten", "editcheck-dialog-addref-description": "Hilf den Lesern zu verstehen, woher diese Informationen stammen, indem du einen Beleg hinzufügst.", "editcheck-dialog-addref-reject-question": "Warum fügst du keinen Beleg hinzu?", "editcheck-dialog-addref-reject-description": "Andere Benutzer würden es begrüßen, mehr über deine Entscheidung, keinen Beleg einzutragen, zu erfahren.", @@ -16,6 +18,10 @@ "editcheck-dialog-title": "Vor der Veröffentlichung", "editcheck-copyvio-title": "Eingefügter Inhalt", "editcheck-copyvio-description": "Kopiere in der Regel keinen Text aus anderen Quellen. Dies stellt in der Regel sowohl eine Verletzung des Urheberrechts als auch ein Plagiat dar.", + "editcheck-tone-title": "Tonfall überarbeiten?", + "editcheck-tone-description": "Andere Benutzer überarbeiten diese Formulierungen häufig, um einen ausgewogeneren Tonfall zu erzielen. [$1 Mehr erfahren]", + "editcheck-tone-title-acted": "Tonfall überarbeiten", + "editcheck-tone-description-acted": "Achte auf Ausdrücke, die schmeichelhaft, abfällig, vage, klischeehaft oder die Unterstützung eines bestimmten Standpunkts sind.", "editcheck-review-title": "Änderungen überprüfen", "tag-editcheck-reference-decline-common-knowledge": "Bearbeitungsprüfung (Belege) abgelehnt (Allgemeinwissen)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck: Beleg wurde als allgemein bekannt abgelehnt", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index ee2dd05ceb..300bc441e5 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -1,12 +1,15 @@ { "@metadata": { "authors": [ + "Derugon", "Gomoko", "Mahabarata" ] }, "editcheck-dialog-action-no": "Non", "editcheck-dialog-action-yes": "Oui", + "editcheck-dialog-action-decline": "Refuser", + "editcheck-dialog-action-revise": "Réviser", "editcheck-dialog-addref-description": "Aidez les lecteurs à comprendre d'où proviennent ces informations en ajoutant une source.", "editcheck-dialog-addref-reject-question": "Pourquoi n'ajoutez-vous pas une source ?", "editcheck-dialog-addref-reject-description": "Les autres éditeurs aimeraient en savoir plus sur votre décision de ne pas ajouter une source.", @@ -19,6 +22,8 @@ "editcheck-dialog-title": "Avant de publier", "editcheck-copyvio-title": "Contenu copié-collé", "editcheck-copyvio-description": "En règle générale, ne copiez pas de texte provenant d'autres sources. Cela constitue généralement une violation des droits d'auteur et un plagiat.", + "editcheck-tone-title": "Réviser le ton ?", + "editcheck-tone-description": "D’autres éditeurs révisent souvent ce type de formulation pour avoir un ton plus équilibré. [$1 En savoir plus]", "editcheck-review-title": "Relire les modifications", "tag-editcheck-reference-decline-common-knowledge": "Vérification de modification (références) refusée (savoir commun)", "tag-editcheck-reference-decline-common-knowledge-description": "La référence EditCheck a été refusée comme étant un savoir commun", diff --git a/i18n/ve-mw/mwlanguagevariant/ps.json b/i18n/ve-mw/mwlanguagevariant/ps.json index 45f62a6703..0125652ab2 100644 --- a/i18n/ve-mw/mwlanguagevariant/ps.json +++ b/i18n/ve-mw/mwlanguagevariant/ps.json @@ -2,10 +2,46 @@ "@metadata": { "authors": [ "Af420", - "Amjad Khan" + "Amjad Khan", + "شاه زمان پټان" ] }, + "visualeditor-mwlanguagevariant-disabled": "بل‌بڼې اړونه ناچارن‌شوې", + "visualeditor-mwlanguagevariant-filter": "بل‌بڼه $1 ته چاڼ‌شوي", + "visualeditor-mwlanguagevariant-name": "د ژبې نوم: $1", + "visualeditor-mwlanguagevariant-oneway": "يو اړخيزه اړونه: $1", + "visualeditor-mwlanguagevariant-twoway": "ژبې اړونه: $1", + "visualeditor-mwlanguagevariant-unknown": "ژبې بل‌بڼه", + "visualeditor-mwlanguagevariantcontextitem-flag-describe": "دا يوه روښانه شوې قاعده ده.", + "visualeditor-mwlanguagevariantcontextitem-flag-hidden": "دا يو پټه قاعده ده.", + "visualeditor-mwlanguagevariantcontextitem-flag-title": "دا قاعده د مخ سرليک اغېزمنوي.", + "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "ژب‌کوډ", + "visualeditor-mwlanguagevariantcontextitem-rule-invalid-language-label": "ناچل", + "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "ژبه", + "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "سرچينه", + "visualeditor-mwlanguagevariantcontextitem-rule-text-to-label": "موخه‌ځی", + "visualeditor-mwlanguagevariantcontextitem-rule-text-twoway-label": "ليک", + "visualeditor-mwlanguagevariantcontextitem-title-disabled": "بل‌بڼې اړونه ناچارن‌شوې", + "visualeditor-mwlanguagevariantcontextitem-title-filter": "بل‌بڼې چاڼگر", + "visualeditor-mwlanguagevariantcontextitem-title-name": "ژبې نوم", + "visualeditor-mwlanguagevariantcontextitem-title-oneway": "يو اړخيزې اړونې قاعده", + "visualeditor-mwlanguagevariantcontextitem-title-twoway": "ژبې اړونې قاعده", + "visualeditor-mwlanguagevariantcontextitem-title-unknown": "ژبې بل‌بڼه", + "visualeditor-mwlanguagevariantinspector-disabled-placeholder": "بل‌بڼې اړولو څخه ليک ژغورل‌شوی", "visualeditor-mwlanguagevariantinspector-filter-langs-label": "ژبې", - "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "د ژبې کوډ", - "visualeditor-mwlanguagevariantinspector-filter-text-label": "منځپانگې" + "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "ژب‌کوډ", + "visualeditor-mwlanguagevariantinspector-filter-text-label": "منځپانگې", + "visualeditor-mwlanguagevariantinspector-filter-text-placeholder": "چاڼ‌شوی ليک", + "visualeditor-mwlanguagevariantinspector-oneway-add-button": "نوی مورد ورگډول", + "visualeditor-mwlanguagevariantinspector-oneway-clear-button": "مورد لرې‌کول", + "visualeditor-mwlanguagevariantinspector-oneway-from-text-placeholder": "سرچينې ليک", + "visualeditor-mwlanguagevariantinspector-oneway-to-text-placeholder": "بل‌بڼه ليک", + "visualeditor-mwlanguagevariantinspector-title-disabled": "بل‌بڼې اړونه ناچارن‌شوې", + "visualeditor-mwlanguagevariantinspector-title-filter": "بل‌بڼې چاڼگر", + "visualeditor-mwlanguagevariantinspector-title-name": "ژبې نوم", + "visualeditor-mwlanguagevariantinspector-title-oneway": "يو اړخيزې اړونې قاعده", + "visualeditor-mwlanguagevariantinspector-title-twoway": "ژبې اړونې قاعده", + "visualeditor-mwlanguagevariantinspector-twoway-add-button": "نوی مورد ورگډول", + "visualeditor-mwlanguagevariantinspector-twoway-clear-button": "مورد لرې‌کول", + "visualeditor-mwlanguagevariantinspector-twoway-text-placeholder": "بل‌بڼه ليک" } diff --git a/i18n/ve-mw/tok.json b/i18n/ve-mw/tok.json index 663364fed1..03b6727ba0 100644 --- a/i18n/ve-mw/tok.json +++ b/i18n/ve-mw/tok.json @@ -1,12 +1,21 @@ { "@metadata": { "authors": [ + "Juwan~backup", "LesVisages", "Robin van der Vliet", "Tamzin", "Tbodt" ] }, + "visualeditor-autosave-modified-prompt-accept": "o awen e ante pini", + "visualeditor-autosave-modified-prompt-message": "sina kama ala lukin e lipu ni la, jan ante li ante e ona. {{GENDER:|sina}} wile ala wile awen e ante pini sina?", + "visualeditor-autosave-modified-prompt-reject": "o open e ante sin", + "visualeditor-autosave-modified-prompt-title": "{{GENDER:|sina}} wile ala wile awen e ante pini?", + "visualeditor-autosave-not-recovered-text": "mi ken ala kama sin e ante sina lon tenpo ni.", + "visualeditor-autosave-not-recovered-title": "ante li kama sin la pakala", + "visualeditor-autosave-recovered-text": "sina pana ala e ante la, mi kama e ona lon tenpo sin.", + "visualeditor-autosave-recovered-title": "ante li kama sin", "visualeditor-ca-createlocaldescriptionsource": "lipu ni la o pana e lipu sona kepeken toki ilo", "visualeditor-ca-createsource": "o pali e toki ilo", "visualeditor-ca-editsource": "o ante e toki ilo", diff --git a/i18n/ve-wmf/ps.json b/i18n/ve-wmf/ps.json index a966b7d224..17d861cde6 100644 --- a/i18n/ve-wmf/ps.json +++ b/i18n/ve-wmf/ps.json @@ -12,6 +12,8 @@ "tag-editcheck-references-activated-description": "سمون‌کتنه فکر کوي چې شايد يوې سرچينې ته اړتيا کېدای شي او ک‌م ښودل شوې", "tag-editcheck-references-shown": "سمون کتنې (سرچينې) ښودل شوې", "tag-editcheck-references-shown-description": "سمون کتنه فکر کوي چې يوې سرچينې ته شايد اړتيا وي او ک‌م شودل شوې", + "tag-editcheck-tone-shown": "سمون‌کتنه (غږبڼه) ښودل", + "tag-editcheck-tone-shown-description": "سمون‌کتنه فکر کوي چې شايد ځينو منځپانگو کې د غږبڼې سمون ته اړتيا وه، او UI ښودل شوی", "tag-visualeditor": "ليدنيز سمون", "tag-visualeditor-description": "دا سمون د [[{{MediaWiki:visualeditor-descriptionpagelink}}|ليدنيز سمونگر]] په مرسته شوی", "tag-visualeditor-needcheck": "ليدنيز سمون: کره کتنه", @@ -28,5 +30,5 @@ "visualeditor-welcomedialog-content-thanks": "د نړۍ سره د ډېر نور څه پېژندلو په مرسته کې له تاسې څخه مننه کوو!", "visualeditor-welcomedialog-switch": "سرچينې سمونگر چارنول", "visualeditor-welcomedialog-switch-ve": "ليدنيز سمونگر چارنول", - "visualeditor-welcomedialog-title": "$2 ته {{GENDER:$1|ښه راغلې}}" + "visualeditor-welcomedialog-title": "$2 ته {{GENDER:$1|ښه راغلاست}}" } From 0c9b5c5f0ff7033c45efba0b53b0eb7fedd0cc51 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 17 Jun 2025 13:18:04 +0100 Subject: [PATCH 374/730] Create ecenable=2 to test experimental checks more easily Also show a message in the sidebar when experimental checks are loaded. Bug: T397260 Change-Id: Ia3b2b79d70bb9ccf740b1c778502aac1542a5093 --- editcheck/includes/Hooks.php | 4 ---- editcheck/modules/BaseEditCheck.js | 2 +- editcheck/modules/EditCheckDialog.js | 9 +++++++++ editcheck/modules/init.js | 14 +++++++++++--- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/editcheck/includes/Hooks.php b/editcheck/includes/Hooks.php index 9442802351..08460ccf94 100644 --- a/editcheck/includes/Hooks.php +++ b/editcheck/includes/Hooks.php @@ -26,10 +26,6 @@ public function onResourceLoaderRegisterModules( ResourceLoader $resourceLoader $veConfig = $services->getConfigFactory()->makeConfig( 'visualeditor' ); $experimentalConfig = $veConfig->get( 'VisualEditorEditCheckLoadExperimental' ); - if ( !$experimentalConfig ) { - return; - } - $experimentalDir = dirname( __DIR__ ) . '/modules/editchecks/experimental'; $files = array_diff( scandir( $experimentalDir ), [ '..', '.' ] ); if ( is_array( $experimentalConfig ) ) { diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index 4dafed8e63..bb3037632f 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -93,7 +93,7 @@ mw.editcheck.BaseEditCheck.prototype.canBeShown = function () { return false; } // some checks are configured to only be for logged in / out users - if ( mw.editcheck.ecenable ) { + if ( mw.editcheck.forceEnable ) { return true; } // account status: diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 210a8ffcb5..92f68d5afc 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -86,6 +86,15 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { if ( OO.ui.isMobile() ) { this.$body.append( this.title.$element ); } + if ( mw.editcheck.experimental ) { + this.$body.append( + new OO.ui.MessageWidget( { + type: 'error', + label: 'Currently using experimental edit checks. For testing purposes only.', + inline: true + } ).$element + ); + } this.$body.append( this.closeButton.$element, this.$actions, this.footer.$element ); }; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 273d997005..4d7aecbcd2 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -1,6 +1,14 @@ +/* + * `ecenable` query string: + * 1: override user eligiblity criteria for all checks + * 2: also load experimental checks + */ +const ecenable = new URL( location.href ).searchParams.get( 'ecenable' ); + mw.editcheck = { config: require( './config.json' ), - ecenable: !!( new URL( location.href ).searchParams.get( 'ecenable' ) || window.MWVE_FORCE_EDIT_CHECK_ENABLED ) + forceEnable: !!( ecenable || window.MWVE_FORCE_EDIT_CHECK_ENABLED ), + experimental: !!( mw.config.get( 'wgVisualEditorConfig' ).editCheckExperimental || ecenable === '2' ) }; require( './utils.js' ); @@ -13,7 +21,7 @@ require( './AsyncTextCheck.js' ); require( './editchecks/AddReferenceEditCheck.js' ); -if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckExperimental ) { +if ( mw.editcheck.experimental ) { mw.loader.using( 'ext.visualEditor.editCheck.experimental' ); } @@ -80,7 +88,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { } ); } -if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.ecenable ) { +if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.forceEnable ) { const Controller = require( './controller.js' ).Controller; mw.hook( 've.newTarget' ).add( ( target ) => { if ( target.constructor.static.name !== 'article' ) { From 402d2f3e601d175f5a4a86dd4fa871f58eb32b1e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 18 Jun 2025 09:24:58 +0200 Subject: [PATCH 375/730] Localisation updates from https://translatewiki.net. Change-Id: I5fdc65802f33fe69598b2d3ccf69cfcf64671d34 --- editcheck/i18n/ar.json | 6 ++++++ editcheck/i18n/az.json | 6 ++++++ editcheck/i18n/fi.json | 6 ++++++ editcheck/i18n/fr.json | 2 ++ i18n/ve-mw/dlg.json | 1 + 5 files changed, 21 insertions(+) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index 8252ddf9e1..f01e83d394 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -7,6 +7,8 @@ }, "editcheck-dialog-action-no": "لا", "editcheck-dialog-action-yes": "نعم", + "editcheck-dialog-action-decline": "رفض", + "editcheck-dialog-action-revise": "مراجعة", "editcheck-dialog-addref-description": "ساعدوا القراء على فهم مصدر هذه المعلومات عن طريق إضافة استشهاد.", "editcheck-dialog-addref-reject-question": "لماذا لن تضيفوا استشهادًا؟", "editcheck-dialog-addref-reject-description": "سيقدر المحرّرون الآخرون معرفة المزيد عن قرارك بتجاوز الاستشهاد.", @@ -19,6 +21,10 @@ "editcheck-dialog-title": "قبل النشر", "editcheck-copyvio-title": "محتوى مُلصَق", "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. هذا عادة ما يشكل انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", + "editcheck-tone-title": "إعادة النظر في الأسلوب؟", + "editcheck-tone-description": "غالبًا ما يقوم المحررون الآخرون بمراجعة هذا النوع من الكلمات للحصول على أسلوب أكثر توازنًا. [$1 التعرف على المزيد]", + "editcheck-tone-title-acted": "مراجعة الأسلوب", + "editcheck-tone-description-acted": "الحذر من التعبيرات المجاملة، أو المهينة، أو الغامضة، أو المبتذلة، أو المؤيدة لوجهة نظر معينة.", "editcheck-review-title": "مراجعة التغييرات", "tag-editcheck-reference-decline-common-knowledge": "تم رفض (ثقافة عامة) التحقّق من التحرير (مراجع)", "tag-editcheck-reference-decline-common-knowledge-description": "تم رفض مرجع EditCheck (أداة التحقّق) باعتباره ثقافةً عامة", diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index 51619b56df..136255cf81 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -7,6 +7,8 @@ }, "editcheck-dialog-action-no": "Xeyr", "editcheck-dialog-action-yes": "Bəli", + "editcheck-dialog-action-decline": "Rədd et", + "editcheck-dialog-action-revise": "Nəzərdən keçir", "editcheck-dialog-addref-description": "İstinad əlavə etməklə oxuculara bu məlumatın haradan gəldiyini anlamağa kömək edin.", "editcheck-dialog-addref-reject-question": "Niyə mənbə əlavə etmirsiniz?", "editcheck-dialog-addref-reject-description": "Digər redaktorlar sizin mənbə əlavə etmək istəməmə qərarınız haqqında daha çox məlumat əldə etmək istəyəcəklər.", @@ -19,6 +21,10 @@ "editcheck-dialog-title": "Yayımlamadan əvvəl", "editcheck-copyvio-title": "Yapışdırılmış məzmun", "editcheck-copyvio-description": "Bir qayda olaraq, mətni digər mənbələrdən olduğu kimi kopyalamayın. Bunu etmək adətən həm müəllif hüquqlarının pozulması, həm də plagiat sayılır.", + "editcheck-tone-title": "Tona yenidən baxılsın?", + "editcheck-tone-description": "Digər redaktorlar tez-tez daha balanslı bir tona sahib olmaq üçün bu cür ifadələrə yenidən baxırlar. [$1 Ətraflı məlumat]", + "editcheck-tone-title-acted": "Tonu yenidən nəzərdən keçirmək", + "editcheck-tone-description-acted": "Mübaliğəli, aşağılayıcı, qeyri-müəyyən, klişe və ya müəyyən bir nöqteyi-nəzərə dəstək verən ifadələrə diqqət yetirin.", "editcheck-review-title": "Dəyişiklikləri yoxla", "tag-editcheck-reference-decline-common-knowledge": "Redaktə Yoxlanışı (istinadlar) rədd edildi (hamının bildiyi)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck istinadı hamının bildiyi məlumat kimi rədd edildi", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 1b848ccb6c..3400fa4ef0 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -8,6 +8,8 @@ }, "editcheck-dialog-action-no": "Ei", "editcheck-dialog-action-yes": "Kyllä", + "editcheck-dialog-action-decline": "Hylkää", + "editcheck-dialog-action-revise": "Muokkaa", "editcheck-dialog-addref-description": "Auta lukijoita ymmärtämään, mistä tämä tieto on peräisin lisäämällä lähdeviite.", "editcheck-dialog-addref-reject-question": "Mikset lisää lähdeviitettä?", "editcheck-dialog-addref-reject-description": "Muut muokkaajat arvostaisivat kuulla päätöksestäsi olla lisäämättä lähdeviitettä.", @@ -20,6 +22,10 @@ "editcheck-dialog-title": "Ennen julkaisemista", "editcheck-copyvio-title": "Liitetty sisältö", "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Se on usein sekä tekijänoikeusrikkomus että plagiarismia.", + "editcheck-tone-title": "Korjaa sävyä?", + "editcheck-tone-description": "Muut muokkaajat korjaavat usein tämänkaltaisia ilmauksia, jotta tekstin sävy olisi tasapainoisempi. [$1 Lisätietoja]", + "editcheck-tone-title-acted": "Sävyn korjaus", + "editcheck-tone-description-acted": "Varo ilmauksia, jotka ovat ylistäviä, väheksyviä, ympäripyöreitä tai jotka tukevat tiettyä näkökulmaa.", "editcheck-review-title": "Tarkasta muutokset", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", "tag-editcheck-reference-decline-common-knowledge-description": "Muokkaustarkistimen ehdotus hylättiin, koska lisäystä pidettiin yleisenä tietona", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index 300bc441e5..94d85f205e 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -24,6 +24,8 @@ "editcheck-copyvio-description": "En règle générale, ne copiez pas de texte provenant d'autres sources. Cela constitue généralement une violation des droits d'auteur et un plagiat.", "editcheck-tone-title": "Réviser le ton ?", "editcheck-tone-description": "D’autres éditeurs révisent souvent ce type de formulation pour avoir un ton plus équilibré. [$1 En savoir plus]", + "editcheck-tone-title-acted": "Révision du ton", + "editcheck-tone-description-acted": "Faites attention aux expressions flatteuses, désobligeantes, vagues, clichées ou qui soutiennent un point de vue particulier.", "editcheck-review-title": "Relire les modifications", "tag-editcheck-reference-decline-common-knowledge": "Vérification de modification (références) refusée (savoir commun)", "tag-editcheck-reference-decline-common-knowledge-description": "La référence EditCheck a été refusée comme étant un savoir commun", diff --git a/i18n/ve-mw/dlg.json b/i18n/ve-mw/dlg.json index 98f7272892..cca588ddb9 100644 --- a/i18n/ve-mw/dlg.json +++ b/i18n/ve-mw/dlg.json @@ -4,6 +4,7 @@ "Sauit" ] }, + "visualeditor-ca-createlocaldescriptionsource": "Локально код курдук тэрий", "visualeditor-ca-createsource": "Куоду тэрий", "visualeditor-ca-editsource": "Куоду уларыт", "visualeditor-ca-editsource-section": "куоду уларыт" From 923382976fb19ab57261d9b0b11c2257774aca98 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 18 Jun 2025 15:08:46 +0100 Subject: [PATCH 376/730] Update VE core submodule to master (b94d7f99e) New changes: b94d7f99e SurfaceFragment: Always use AnnotationSet if provided Bug: T397174 Change-Id: I790f0e1e830cef97abc2ddf56a052e91f478b27e --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index fed8086c4b..b94d7f99e7 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit fed8086c4ba6f81c39d12eaca149fda12b8b3d66 +Subproject commit b94d7f99e7a39a2786ed9df508c2ea771eb81bc1 From ce5ba800acbfd10fc106b8240639ad5f0472c61c Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 18 Jun 2025 18:38:11 +0100 Subject: [PATCH 377/730] EditCheck: Add border-radius to EditCheckActionWidget Bug: T397159 Change-Id: I5e1e167529b280068577efd81c75e8db3ea58f68 --- editcheck/modules/EditCheck.less | 1 + 1 file changed, 1 insertion(+) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 7439572f18..ead46dc327 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -82,6 +82,7 @@ padding: @spacing-50 @spacing-75; cursor: pointer; overflow: hidden; + border-radius: @border-radius-base; > .oo-ui-iconElement-icon { // Fixes icon placement in WMUI theme From aaaff477418d56d241f56e5738a5572902c95a82 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 18 Jun 2025 18:59:10 +0100 Subject: [PATCH 378/730] EditCheck: Add drop shadown to active actions Bug: T397159 Change-Id: I5010d7c476b270bc40a991f0823e774bc3bdf683 --- editcheck/modules/EditCheck.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index ead46dc327..10952be508 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -104,6 +104,10 @@ margin-top: @spacing-100; } + &:not( .ve-ui-editCheckActionWidget-collapsed ) { + box-shadow: 0 2px 2px 0 rgba( 0, 0, 0, 0.2 ); + } + &.ve-ui-editCheckActionWidget-collapsed { filter: grayscale( 1 ); From c1c4c876d29ff28c69974be551bb800945bed177 Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Wed, 18 Jun 2025 14:57:43 -0400 Subject: [PATCH 379/730] build: Update MediaWiki requirement to 1.45 All extensions in the MediaWiki tarball are expected to track MediaWiki's release directly. Change-Id: I8d44dcd92dafde3e3edefea902c8c0a043160b6c --- extension.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension.json b/extension.json index ef875bbdb4..e1a9c662d5 100644 --- a/extension.json +++ b/extension.json @@ -23,7 +23,7 @@ "license-name": "MIT", "type": "editor", "requires": { - "MediaWiki": ">= 1.44" + "MediaWiki": ">= 1.45" }, "callback": "MediaWiki\\Extension\\VisualEditor\\Hooks::onRegistration", "ServiceWiringFiles": [ From b806e0a96ebadd593f9067d7304dfa6c3b46ce73 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 18 Jun 2025 14:40:25 -0500 Subject: [PATCH 380/730] Edit check: checks are supposed to scroll into view when requested Follow-up to c9e8f0eba7d532ac643d3d7d52b806425d4975d1 Bug: T397365 Change-Id: I9890e0b0f755919e5ff48614b933e874ad2fbb7f --- editcheck/modules/controller.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index a94f0b74b8..e7e2b46aed 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -148,6 +148,15 @@ Controller.prototype.removeAction = function ( listener, action, rejected ) { this.emit( 'actionsUpdated', listener, actions, [], removed, rejected ); }; +/** + * Trigger a focus state for a given action + * + * Will emit a focusAction event if the focused action changed or if scrolling + * was requested. + * + * @param {mw.editcheck.EditCheckAction} action + * @param {boolean} scrollTo + */ Controller.prototype.focusAction = function ( action, scrollTo ) { if ( !scrollTo && action === this.focusedAction ) { // Don't emit unnecessary events if there is no change or scroll @@ -156,6 +165,10 @@ Controller.prototype.focusAction = function ( action, scrollTo ) { this.focusedAction = action; + if ( scrollTo ) { + this.scrollActionIntoViewDebounced( action ); + } + this.emit( 'focusAction', action, this.getActions().indexOf( action ), scrollTo ); this.updatePositions(); From 6caaf3bb24118226e944d13e05f1e689c1170879 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 19 Jun 2025 09:33:03 +0200 Subject: [PATCH 381/730] Localisation updates from https://translatewiki.net. Change-Id: I529820506eed42b21ce7381b293b400f7d7ab32d --- editcheck/i18n/bn.json | 1 + editcheck/i18n/ia.json | 6 ++++++ editcheck/i18n/skr-arab.json | 8 ++++++++ 3 files changed, 15 insertions(+) create mode 100644 editcheck/i18n/skr-arab.json diff --git a/editcheck/i18n/bn.json b/editcheck/i18n/bn.json index 73b3e3889a..4101cedf2d 100644 --- a/editcheck/i18n/bn.json +++ b/editcheck/i18n/bn.json @@ -7,6 +7,7 @@ }, "editcheck-dialog-action-no": "না", "editcheck-dialog-action-yes": "হ্যাঁ", + "editcheck-dialog-action-decline": "প্রত্যাখ্যান করুন", "editcheck-dialog-addref-description": "একটি উদ্ধৃতি যুক্ত করে পাঠকদের এই তথ্যটি কোথা থেকে আসছে তা বুঝতে সহায়তা করুন।", "editcheck-dialog-addref-reject-question": "আপনি কেন একটি উদ্ধৃতি যোগ করতে চান না?", "editcheck-dialog-addref-reject-description": "উদ্ধৃতিটি খারিজ করার কারণ জানিয়ে অন্যান্য সম্পাদকদের এটি নিয়ে বুঝতে সহায়তা করুন।", diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index daabecd84a..7ea2576df2 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -6,6 +6,8 @@ }, "editcheck-dialog-action-no": "No", "editcheck-dialog-action-yes": "Si", + "editcheck-dialog-action-decline": "Declinar", + "editcheck-dialog-action-revise": "Revisar", "editcheck-dialog-addref-description": "Adde un citation pro adjutar le lectores a comprender de ubi proveni iste information.", "editcheck-dialog-addref-reject-question": "Proque non adde tu un citation?", "editcheck-dialog-addref-reject-description": "Altere redactores vole saper proque tu ha decidite de non adder un citation.", @@ -18,6 +20,10 @@ "editcheck-dialog-title": "Ante de publicar", "editcheck-copyvio-title": "Contento collate", "editcheck-copyvio-description": "Como regula general, non copia contento de altere fontes. Isto es generalmente un violation del derecto de autor e un plagiato.", + "editcheck-tone-title": "Revisar le tono?", + "editcheck-tone-description": "Altere redactores sovente revisa iste typo de formulation pro haber un tono plus equilibrate. [$1 Leger plus]", + "editcheck-tone-title-acted": "Revision del tono", + "editcheck-tone-description-acted": "Presta attention al expressiones flattante, denigrante, vage, stereotypate o que sustene un puncto de vista particular.", "editcheck-review-title": "Revider cambiamentos", "tag-editcheck-reference-decline-common-knowledge": "Verification de modification (referentias) declinate (cognoscentia commun)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck: referentia declinate perque es cognoscentia commun", diff --git a/editcheck/i18n/skr-arab.json b/editcheck/i18n/skr-arab.json new file mode 100644 index 0000000000..a312cf6666 --- /dev/null +++ b/editcheck/i18n/skr-arab.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Saraiki" + ] + }, + "editcheck-dialog-action-decline": "انکار کرو" +} From 4c61460ec676e94e6fbd561240e544d9a3a752bb Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 19 Jun 2025 11:46:59 +0100 Subject: [PATCH 382/730] EditCheck: Emit window resize after hiding vector sidebar Change-Id: Iefb9a0cb662d1b1b483d5b4db29e126ba5b3ced2 --- editcheck/modules/controller.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index e7e2b46aed..f08e6464b4 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -46,8 +46,12 @@ Controller.prototype.setup = function () { if ( !this.editChecksArePossible() ) { return; } - // ideally this would happen slightly earlier: - document.documentElement.classList.add( 've-editcheck-available' ); + // Ideally this would happen slightly earlier: + $( document.documentElement ).addClass( 've-editcheck-available' ); + // Adding the class can cause large layout changes (e.g. hiding Vector + // side panels), so emit a window resize event to notify any components + // that may be affected, e.g. the VE toolbar + window.dispatchEvent( new Event( 'resize' ) ); this.surface.getView().on( 'position', this.onPositionDebounced ); this.surface.getModel().on( 'undoStackChange', this.onDocumentChangeDebounced ); @@ -73,7 +77,8 @@ Controller.prototype.setup = function () { mw.editcheck.refCheckShown = false; mw.editcheck.toneCheckShown = false; - document.documentElement.classList.remove( 've-editcheck-available' ); + $( document.documentElement ).removeClass( 've-editcheck-available' ); + window.dispatchEvent( new Event( 'resize' ) ); } ); }, null, this ); From ae513ef60ed83dfd4e02ef955385a5794cc9a9b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Thu, 19 Jun 2025 17:21:50 +0100 Subject: [PATCH 383/730] Adds jsdoc to some mw.editcheck.Controller methods Bug: T397345 Change-Id: I4baf7c7821db8e385bbefc77f59290eb9ad94546 --- editcheck/modules/controller.js | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 76f9f834e4..12a938f895 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -130,6 +130,12 @@ Controller.prototype.updatePositions = function () { this.emit( 'position' ); }; +/** + * Re-executes mid-edit checks. + * + * Used when state may have changed, for example upon exiting the pre-save dialog + * or after the user has interacted with a mid-edit action. + */ Controller.prototype.refresh = function () { if ( this.target.deactivating || !this.target.active ) { return; @@ -144,6 +150,21 @@ Controller.prototype.refresh = function () { } }; +/** + * Fires all edit checks associated with a given listener. + * + * Actions are created anew for every run, but we want continuity for certain + * state changes such as 'paused' state. We therefore match them up to existing + * actions by checking for equality, ie, the same constructor and same ID or + * fragments. + * + * We return a promise so that UI actions such as opening the pre-save dialog + * do not occur until checks have completed. + * + * @param listener {string} eg onBeforeSave, onDocumentChange, onBranchNodeChange + * @param always {bool} + * @return {Promise} An updated set of actions. + */ Controller.prototype.updateForListener = function ( listener, always ) { const existing = this.getActions( listener ) || []; const otherListenersExisting = this.getActions().filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); @@ -301,6 +322,17 @@ Controller.prototype.onDocumentChange = function () { this.updatePositions(); }; +/** + * Handler when 'actionsUpdated' fires. + * + * Updates gutter and highlights when the action list has changed. + * Displays the edit check dialog if it is not already on screen. + * + * @param listener {string} eg onBeforeSave, onDocumentChange, onBranchNodeChange + * @param actions {mw.editcheck.EditCheckAction[]} + * @param newActions {mw.editcheck.EditCheckAction[]} + * @param discardedActions {mw.editcheck.EditCheckAction[]} + */ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions ) { // do we need to redraw anything? if ( newActions.length || discardedActions.length ) { @@ -342,6 +374,17 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions } ); }; +/** + * Adds the pre-save edit check dialog before the normal page commit dialog. + * Handles closing the mid-edit dialog, as well as restoring it if the user + * exits the pre-save check dialog. + * + * We execute all pre-save checks, which may be asynchronous, and wait for them + * to complete before opening the pre-save dialog. + * + * TODO: Set a time-out so that we don't hang forever if an async check takes + * too long. + */ Controller.prototype.setupPreSaveProcess = function () { const target = this.target; const preSaveProcess = target.getPreSaveProcess(); From ddfa4f31a9f9817b1af38c7a738d03221d61810b Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 20 Jun 2025 10:08:15 +0200 Subject: [PATCH 384/730] Localisation updates from https://translatewiki.net. Change-Id: Ieae022a27eb90e7a685a0a3b986ee95f08c2ae21 --- editcheck/i18n/sr-ec.json | 1 + i18n/ve-wmf/de.json | 2 ++ 2 files changed, 3 insertions(+) diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index 409b62de0e..96006b2674 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -6,6 +6,7 @@ }, "editcheck-dialog-action-no": "Не", "editcheck-dialog-action-yes": "Да", + "editcheck-dialog-action-decline": "Одбаци", "editcheck-dialog-addref-description": "Помозите читаоцима да знају одакле информација долази додавањем референце.", "editcheck-dialog-addref-reject-question": "Зашто не додајете референцу?", "editcheck-dialog-addref-reject-description": "Остали уредници радо би знали зашто сте одлучили не додати референцу.", diff --git a/i18n/ve-wmf/de.json b/i18n/ve-wmf/de.json index a349295f3e..00df8b6d49 100644 --- a/i18n/ve-wmf/de.json +++ b/i18n/ve-wmf/de.json @@ -10,6 +10,7 @@ "Kghbln", "Kurt Jansson", "Metalhead64", + "MoritzMT20", "Murma174", "Se4598", "Tomabrafix" @@ -22,6 +23,7 @@ "tag-editcheck-references-activated-description": "EditCheck geht davon aus, dass möglicherweise ein Einzelnachweis erforderlich war, und die Benutzeroberfläche wurde angezeigt", "tag-editcheck-references-shown": "Bearbeitungsprüfung (Belege) wurde angezeigt", "tag-editcheck-references-shown-description": "Die Bearbeitungsprüfung ist der Meinung, dass ein Beleg erforderlich gewesen sein könnte; die Benutzeroberfläche wurde angezeigt", + "tag-editcheck-tone-shown-description": "EditCheck meint, dass eine Anpassung des Tons in einigen Inhalten nötig gewesen wäre, und die Benutzeroberfläche wurde angezeigt", "tag-visualeditor": "Visuelle Bearbeitung", "tag-visualeditor-description": "Bearbeitungen, die mit dem [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editor]] ausgeführt wurden.", "tag-visualeditor-needcheck": "Visuelle Bearbeitung: Überprüfung", From 7148c65f25f6880c377f4c305d7deaf3e8fee61d Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 19 Jun 2025 11:59:04 +0100 Subject: [PATCH 385/730] EditCheck: Only align selection to top in pre-save check on desktop Bug: T397438 Change-Id: I1fe5266caefa7da8b1fbbe3a1c1c135d4a22a35f --- editcheck/modules/EditCheckDialog.js | 8 +++++++- editcheck/modules/controller.js | 26 ++++++++++++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 3b86d02fbe..6b55478375 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -182,7 +182,13 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc this.updateSize(); if ( !internal ) { - this.controller.focusAction( this.currentActions[ this.currentOffset ], fromUserAction ); + this.controller.focusAction( + this.currentActions[ this.currentOffset ], + // Scroll selection into view if user interacted with dialog + fromUserAction, + // Scroll to top of page in desktop fixed dialog (pre-save) + this.constructor.static.name === 'fixedEditCheckDialog' && !OO.ui.isMobile() + ); } }; diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 12a938f895..adf15d0427 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -208,9 +208,10 @@ Controller.prototype.removeAction = function ( listener, action, rejected ) { * was requested. * * @param {mw.editcheck.EditCheckAction} action - * @param {boolean} scrollTo + * @param {boolean} [scrollTo] Scroll focused selection into view + * @param {boolean} [alignToTop] Align selection to top of page when scrolling */ -Controller.prototype.focusAction = function ( action, scrollTo ) { +Controller.prototype.focusAction = function ( action, scrollTo, alignToTop ) { if ( !scrollTo && action === this.focusedAction ) { // Don't emit unnecessary events if there is no change or scroll return; @@ -219,7 +220,7 @@ Controller.prototype.focusAction = function ( action, scrollTo ) { this.focusedAction = action; if ( scrollTo ) { - this.scrollActionIntoViewDebounced( action ); + this.scrollActionIntoViewDebounced( action, alignToTop ); } this.emit( 'focusAction', action, this.getActions().indexOf( action ), scrollTo ); @@ -306,7 +307,7 @@ Controller.prototype.onPosition = function () { this.updatePositions(); if ( this.getActions().length && this.focusedAction && this.surface.getView().reviewMode ) { - this.scrollActionIntoViewDebounced( this.focusedAction ); + this.scrollActionIntoViewDebounced( this.focusedAction, true, !OO.ui.isMobile() ); } }; @@ -610,14 +611,19 @@ Controller.prototype.drawGutter = function () { surfaceView.appendHighlights( this.$highlights, false ); }; -Controller.prototype.scrollActionIntoView = function ( action ) { +Controller.prototype.scrollActionIntoView = function ( action, alignToTop ) { // scrollSelectionIntoView scrolls to the focus of a selection, but we // want the very beginning to be in view, so collapse it: const selection = action.getHighlightSelections()[ 0 ].collapseToStart(); - const padding = { - top: OO.ui.isMobile() ? 80 : action.widget.$element[ 0 ].getBoundingClientRect().top, - bottom: 20 - }; + const padding = ve.copy( this.surface.getPadding() ); + if ( alignToTop ) { + padding.top = action.widget.$element[ 0 ].getBoundingClientRect().top; + } + if ( OO.ui.isMobile() ) { + // TODO: Fix mobile surface padding + padding.top = 80; + } + if ( ve.ui.FixedEditCheckDialog.static.position === 'below' ) { // TODO: ui.surface getPadding should really be fixed for this const currentWindow = this.surface.getToolbarDialogs( ve.ui.FixedEditCheckDialog.static.position ).getCurrentWindow(); @@ -628,7 +634,7 @@ Controller.prototype.scrollActionIntoView = function ( action ) { this.surface.scrollSelectionIntoView( selection, { animate: true, padding: padding, - alignToTop: true + alignToTop: alignToTop } ); }; From 1dcc1f842d5a1817a62eab55238f6fc58b7c95a0 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 19 Jun 2025 14:39:13 +0100 Subject: [PATCH 386/730] EditCheck: Fix font size resets Bug: T397170 Change-Id: I87b27723f81b3669d7b70810e6ca31d343c4e83a --- editcheck/modules/EditCheck.less | 2 -- .../init/styles/ve.init.mw.DesktopTarget-monobook.less | 3 ++- .../init/styles/ve.init.mw.MobileArticleTarget.less | 9 ++++++--- ...ve.init.mw.DesktopArticleTarget.init-vector-2022.less | 3 ++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 8016d70d66..cc24231054 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -138,8 +138,6 @@ /* Actions */ .ve-ui-editCheckDialog { - font-size: 0.875rem; // ignore content scaling - &-title { display: block; font-weight: bold; diff --git a/modules/ve-mw/init/styles/ve.init.mw.DesktopTarget-monobook.less b/modules/ve-mw/init/styles/ve.init.mw.DesktopTarget-monobook.less index c8e45adb29..f755f2cbb1 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.DesktopTarget-monobook.less +++ b/modules/ve-mw/init/styles/ve.init.mw.DesktopTarget-monobook.less @@ -25,7 +25,8 @@ font-size: 0.9921875em; /* 1/ ( 0.8em / x-small / 127% ) */ } -.ve-ui-overlay-local { +.ve-ui-overlay-local, +.ve-ui-sidebarDialogWindowManager { /* Fix font-size for overlays inside surfaces */ font-size: 1.007874em; /* 12.8/12.7 */ } diff --git a/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less b/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less index cd8c1fa841..cf41f30754 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less +++ b/modules/ve-mw/init/styles/ve.init.mw.MobileArticleTarget.less @@ -57,9 +57,12 @@ } /* stylelint-enable selector-class-pattern */ -.ve-init-mw-mobileArticleTarget .ve-ui-overlay-local { - // Reset line height set by .content - line-height: 1.4; +.ve-init-mw-mobileArticleTarget { + .ve-ui-overlay-local, + .ve-ui-sidebarDialogWindowManager { + // Reset line height set by .content + line-height: 1.4; + } } .oo-ui-windowManager-ios-modal-ready .ve-init-mw-mobileArticleTarget { diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less index 30fcc7189d..2c6ebba22f 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less @@ -14,7 +14,8 @@ .ve-init-mw-desktopArticleTarget-toolbar, .ve-init-mw-desktopArticleTarget-toolbarPlaceholder, .ve-ui-overlay-local, -.ve-ui-overlay-global { +.ve-ui-overlay-global, +.ve-ui-sidebarDialogWindowManager { font-size: 0.875rem; } From a8410ac00cb3760b27878e4a89a305af86f5d837 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 19 Jun 2025 14:55:38 +0100 Subject: [PATCH 387/730] EditCheck: Improve styling of experimental notice Change-Id: Ia9c4d78bf7e3937b86caac8a2da1662ee20f3ae9 --- editcheck/modules/EditCheckDialog.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 6b55478375..4bc14adf6f 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -92,7 +92,10 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { type: 'error', label: 'Currently using experimental edit checks. For testing purposes only.', inline: true - } ).$element + } ).$element.css( { + 'white-space': 'normal', + margin: '0.5em 1em' + } ) ); } this.$body.append( this.closeButton.$element, this.$actions, this.footer.$element ); From 2ffc9ab597f6849448fe35f3ad7baab27adedfe9 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 20 Jun 2025 13:41:07 +0100 Subject: [PATCH 388/730] Filter out i18n placeholders when rendering templates If we don't filter correctly then nodes which should insert an inline will get inserted as block. Bug: T397491 Change-Id: Ic3a27479c55f0a9a5549ca8576ddf536c09ba384 --- .../ce/nodes/ve.ce.MWTransclusionNode.js | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js b/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js index 13f8ff7efd..1139de9585 100644 --- a/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js +++ b/modules/ve-mw/ce/nodes/ve.ce.MWTransclusionNode.js @@ -116,14 +116,20 @@ ve.ce.MWTransclusionNode.static.filterRendering = function ( contentNodes ) { const whitespaceRegex = new RegExp( '^[' + ve.dm.Converter.static.whitespaceList + ']+$' ); - // Filter out auto-generated items, e.g. reference lists contentNodes = contentNodes.filter( ( node ) => { - const dataMw = node && - node.nodeType === Node.ELEMENT_NODE && - node.hasAttribute( 'data-mw' ) && - JSON.parse( node.getAttribute( 'data-mw' ) ); - - return !dataMw || !dataMw.autoGenerated; + if ( !node || node.nodeType !== Node.ELEMENT_NODE ) { + return true; + } + // Filter out i18n placeholders (T397491) + if ( node.getAttribute( 'typeof' ) === 'mw:I18n' ) { + return false; + } + // Filter out auto-generated items, e.g. reference lists + const dataMw = node.hasAttribute( 'data-mw' ) && JSON.parse( node.getAttribute( 'data-mw' ) ); + if ( dataMw && dataMw.autoGenerated ) { + return false; + } + return true; } ); contentNodes.forEach( ( node ) => { From ace67527e24b8fe2a7a44d4bd56cee2530945409 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 20 Jun 2025 10:29:04 +0100 Subject: [PATCH 389/730] Update VE core submodule to master (61011439a) New changes: ea310686f PositionedTargetToolbar: Call parent onWindowResize 4be57815a Remove deprecated toolbarHeight 3f60f3006 Remove unused InternalList.getIndexPosition method a0a0825cf Use default parameter value for config 11a701e1c Use default parameter value for config even when passed through 1d8f82806 Use default parameters for constants 61011439a Use default parameters for expressions Local changes: - Pass 'undefined' for empty param to test util Bug: T397395 Change-Id: I48192b81ea840b5cf9d5fd6cefea37910d46c2d5 --- lib/ve | 2 +- .../tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ve b/lib/ve index b94d7f99e7..61011439a9 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit b94d7f99e7a39a2786ed9df508c2ea771eb81bc1 +Subproject commit 61011439a9d565e933047919baab3ab1e86c7c17 diff --git a/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js b/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js index 6b7fec1986..0525d15bd4 100644 --- a/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js +++ b/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js @@ -185,7 +185,7 @@ QUnit.test( 'toDataElement', ( assert ) => { // Set up global state (site configuration) mw.config.set( pathData.config ); - const doc = ve.dm.mwExample.createExampleDocumentFromData( [], null, pathData.base ); + const doc = ve.dm.mwExample.createExampleDocumentFromData( [], undefined, pathData.base ); // toDataElement is called during a converter run, so we need to fake up a bit of state to test it. // This would normally be done by ve.dm.converter.getModelFromDom. converter.doc = doc.getHtmlDocument(); From 8b1c3b38c3ec5344c14d5e7a1cda6f8dd5263bf0 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Sat, 21 Jun 2025 06:17:54 +0000 Subject: [PATCH 390/730] build: Updating brace-expansion to 1.1.12, 2.0.2 * https://github.com/advisories/GHSA-v6h2-p8h4-qcjw Change-Id: Ic6bdd8423a7d52455701e7ace15efa62defe532c --- package-lock.json | 112 ++++++++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6b04454a4e..9479d3f38e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1551,9 +1551,9 @@ } }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -1697,11 +1697,10 @@ } }, "node_modules/@wdio/config/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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -1820,9 +1819,9 @@ } }, "node_modules/@wdio/mocha-framework/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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -3035,9 +3034,9 @@ "dev": true }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -5509,9 +5508,9 @@ } }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -6319,9 +6318,9 @@ } }, "node_modules/filelist/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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -9990,11 +9989,10 @@ } }, "node_modules/mocha/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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -11726,11 +11724,10 @@ } }, "node_modules/readdir-glob/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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -14367,11 +14364,10 @@ } }, "node_modules/webdriverio/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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -16117,9 +16113,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -16223,9 +16219,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -16313,9 +16309,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -17244,9 +17240,9 @@ "dev": true }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -19099,9 +19095,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -19682,9 +19678,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -22473,9 +22469,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -23732,9 +23728,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -25687,9 +25683,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" From f42e0ab5252fb991c54cc7794c3f8928e996284d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 23 Jun 2025 09:32:27 +0200 Subject: [PATCH 391/730] Localisation updates from https://translatewiki.net. Change-Id: I11d366ce6227a93da5f981b7d0b746b8851004dc --- editcheck/i18n/lb.json | 3 +++ editcheck/i18n/mk.json | 6 ++++++ i18n/ve-mw/ps.json | 4 ++-- i18n/ve-wmf/br.json | 2 ++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index 2a727f1d64..2c43879e90 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -6,5 +6,8 @@ }, "editcheck-dialog-action-no": "Neen", "editcheck-dialog-action-yes": "Jo", + "editcheck-dialog-action-revise": "Iwwerschaffen", + "editcheck-tone-title": "Tounfall iwwerschaffen?", + "editcheck-tone-title-acted": "Tounfall iwwerschaffen", "editcheck-review-title": "Ännerungen nokucken" } diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index 7ebc658b40..e4fb75508f 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -6,6 +6,8 @@ }, "editcheck-dialog-action-no": "Не", "editcheck-dialog-action-yes": "Да", + "editcheck-dialog-action-decline": "Одбиј", + "editcheck-dialog-action-revise": "Преработи", "editcheck-dialog-addref-description": "Помогнете им на читателите да разберат од каде доаѓаат информациите ставајќи навод.", "editcheck-dialog-addref-reject-question": "Зошто не додавате навод?", "editcheck-dialog-addref-reject-description": "Другите уредници би ценеле ако дознаат зошто сте решиле да не ставите навод.", @@ -18,6 +20,10 @@ "editcheck-dialog-title": "Пред да објавите", "editcheck-copyvio-title": "Налепена содржина", "editcheck-copyvio-description": "По општо правило, не копирајте текст од други извори. Копирањето на текст претставува кршење на авторски права и плагијат.", + "editcheck-tone-title": "Да се преработи тонот?", + "editcheck-tone-description": "Други уредници често преработуваат вакви срочувања за да се добие поврамнотежен тон. [$1 Дознајте повеќе]", + "editcheck-tone-title-acted": "Преработка на тонот", + "editcheck-tone-description-acted": "Внимавајте на изрази кои се ласкави, омаловажувачки, нејасни, клиширани или што се застапуваат за одредено гледиште.", "editcheck-review-title": "Прегледај промени", "tag-editcheck-reference-decline-common-knowledge": "Проверката на уредувањето (наводи) е одбиена (општопознато)", "tag-editcheck-reference-decline-common-knowledge-description": "Наводот со EditCheck е одбиен како општопознат", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index e1f0849083..5a1bb5fe5a 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -229,7 +229,7 @@ "visualeditor-savedialog-label-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-label-review-good": "د خوندي کولو چوکاټ ته ورگرځېدل", "visualeditor-savedialog-label-save-short": "خوندي کول", - "visualeditor-savedialog-label-save-short-start": "خوندي کيږي…", + "visualeditor-savedialog-label-save-short-start": "خوندي‌کېږي…", "visualeditor-savedialog-review-nosummary": "د سمون لنډیز نشته", "visualeditor-savedialog-review-wikitext": "ویکي‌ليک", "visualeditor-savedialog-title-conflict": "کړکېچ", @@ -240,7 +240,7 @@ "visualeditor-settings-tool": "مخ امستنې", "visualeditor-special-characters-group-other": "اکثر کارېدونکی", "visualeditor-tooltip-non-breaking-space": "نه ماتېدونکی واټن", - "visualeditor-version-label": "بڼه", + "visualeditor-version-label": "بل‌بڼه", "visualeditor-wikitext-progress": "ويکي متن ته اړونه", "visualeditor-wikitextconvert-title": "ويکي‌ليک ته يې بڼه بدلول؟", "visualeditor-wikitextconvert-convert": "ويکي‌ليک ته اړول" diff --git a/i18n/ve-wmf/br.json b/i18n/ve-wmf/br.json index 8296208807..42ef30a1d4 100644 --- a/i18n/ve-wmf/br.json +++ b/i18n/ve-wmf/br.json @@ -16,6 +16,8 @@ "tag-editcheck-references-activated-description": "Hervez EditCheck e vefe ezhomm eus un daveenn, ha diskouezet eo bet an etrefas implijer", "tag-editcheck-references-shown": "Edit Check (daveoù) diskouezet", "tag-editcheck-references-shown-description": "Hervez EditCheck e vefe ezhomm eus un daveenn, ha diskouezet eo bet an etrefas implijer", + "tag-editcheck-tone-shown": "Edit Check (ton) diskouezet", + "tag-editcheck-tone-shown-description": "Hervez EditCheck ez eus ezhomm da gemmañ an ton en endalc'hadoù zo, ha diskouezet eo bet an etrefas implijer", "tag-visualeditor": "Gwelaozer", "tag-visualeditor-description": "Kemm graet gant ar [[{{MediaWiki:visualeditor-descriptionpagelink}}|gwelaozer]]", "tag-visualeditor-needcheck": "Gwelaozer: Da wiriañ", From 852ca97a71d16b48e0a9370f2d848a2de9c50893 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 20 Jun 2025 15:17:56 -0500 Subject: [PATCH 392/730] Update VE core submodule to master (a6dd246fa) New changes: e89b4cf32 DiffElement: Use vertical ellipsis for list spacers, matching content spacers b2d362c18 Surface padding: Refactor so that surface calculates own padding Local changes: - Update ve.init.mw.MobileArticleTarget to float the toolbar so that padding is set automatically. Bug: T397518 Change-Id: I5737958748f3bdb71abeaed9b87936338d0dc1eb --- lib/ve | 2 +- .../init/targets/ve.init.mw.MobileArticleTarget.js | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/ve b/lib/ve index 61011439a9..a6dd246fa8 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 61011439a9d565e933047919baab3ab1e86c7c17 +Subproject commit a6dd246fa869303c834283f5ce6f32a18eed6eaf diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index ab990c5297..06a5c1243b 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -351,13 +351,10 @@ ve.init.mw.MobileArticleTarget.prototype.afterSurfaceReady = function () { ve.init.mw.MobileArticleTarget.prototype.adjustContentPadding = function () { const surface = this.getSurface(), surfaceView = surface.getView(), - toolbarHeight = this.getToolbar().$element[ 0 ].clientHeight; + paddingTop = surface.getPadding().top; - surface.setPadding( { - top: toolbarHeight - } ); - surfaceView.$attachedRootNode.css( 'padding-top', toolbarHeight ); - surface.$placeholder.css( 'padding-top', toolbarHeight ); + surfaceView.$attachedRootNode.css( 'padding-top', paddingTop ); + surface.$placeholder.css( 'padding-top', paddingTop ); surfaceView.emit( 'position' ); surface.scrollSelectionIntoView(); }; @@ -503,6 +500,9 @@ ve.init.mw.MobileArticleTarget.prototype.attachToolbar = function () { // Move the toolbar to the overlay header this.overlay.$el.find( '.overlay-header > .toolbar' ).append( this.toolbar.$element ); this.toolbar.initialize(); + // MobileFrontend handles toolbar floating, but mark it as floating so we + // calculate a height for surface padding. + this.toolbar.float(); }; /** From 0691907f020997d07eaf121fa0af02c50f7108a6 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 19 Jun 2025 12:37:30 +0100 Subject: [PATCH 393/730] EditCheck: Simplify review mode toolbar Instead of appending a new toolbar which breaks things like scroll/resize listeners for floating and the toolbarDialog window manager, just append the toolbar group from a newly-constructed toolbar. Bug: T397436 Change-Id: Ia86c9a1f5afac8038be601368e85cca367dff206 --- editcheck/modules/EditCheck.less | 32 ++----------------------- editcheck/modules/controller.js | 41 +++++++++++--------------------- 2 files changed, 16 insertions(+), 57 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index cc24231054..8b5161c461 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -96,36 +96,8 @@ /* Toolbar */ -.ve-ui-editCheck-toolbar { - font-size: 0.875rem; // ignore content scaling - - .mw-mf & { - font-size: inherit; - } - - .oo-ui-toolbar-bar { - display: flex; - flex-wrap: wrap; - } - - .oo-ui-toolbar-tools { - flex: 1; - display: flex; - } - - .oo-ui-toolbar-tools.oo-ui-toolbar-after { - flex: 0; - } - - .oo-ui-toolbar-actions + div { - // There's a clear div that we need to enhance slightly - flex-basis: 100%; - height: 0; - } - - &.ve-init-mw-mobileArticleTarget-toolbar .oo-ui-toolbar-tools.oo-ui-toolbar-after { - display: none; - } +.ve-ui-editCheck-toolbar-tools { + display: flex; } .ve-ui-toolbar-group-title { diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index adf15d0427..603a523bf9 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -417,7 +417,6 @@ Controller.prototype.setupPreSaveProcess = function () { } return this.closeSidebars( 'preSaveProcess' ).then( () => this.closeDialog( 'preSaveProcess' ).then( () => { - this.originalToolbar.toggle( false ); target.onContainerScroll(); const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); return windowAction.open( 'fixedEditCheckDialog', { inBeforeSave: true, actions: actions, controller: this } ) @@ -480,7 +479,9 @@ Controller.prototype.setupPreSaveProcess = function () { Controller.prototype.setupToolbar = function ( target ) { const surface = target.getSurface(); const toolbar = target.getToolbar(); - const reviewToolbar = new ve.ui.PositionedTargetToolbar( target, target.toolbarConfig ); + this.$originalToolbarTools = toolbar.$group.add( toolbar.$after ).addClass( 'oo-ui-element-hidden' ); + + const reviewToolbar = new ve.ui.TargetToolbar( target, target.toolbarConfig ); reviewToolbar.setup( [ { name: 'back', @@ -496,48 +497,34 @@ Controller.prototype.setupToolbar = function ( target ) { }, { name: 'save', - // TODO: MobileArticleTarget should ignore 'align' - align: OO.ui.isMobile() ? 'before' : 'after', type: 'bar', include: [ 'showSaveDisabled' ] } ], surface ); - reviewToolbar.$element.addClass( 've-ui-editCheck-toolbar' ); reviewToolbar.items[ 1 ].$element.removeClass( 'oo-ui-toolGroup-empty' ); reviewToolbar.items[ 1 ].$group.append( $( '' ).addClass( 've-ui-editCheck-toolbar-title' ).text( ve.msg( 'editcheck-dialog-title' ) ) ); - if ( OO.ui.isMobile() ) { - reviewToolbar.$element.addClass( 've-init-mw-mobileArticleTarget-toolbar' ); - } - target.toolbar.$element.before( reviewToolbar.$element ); - target.toolbar = reviewToolbar; + // Just append the $group of the new toolbar, so we don't have to wire up all the toolbar events. + this.$reviewToolbarGroup = reviewToolbar.$group.addClass( 've-ui-editCheck-toolbar-tools' ); + toolbar.$group.after( this.$reviewToolbarGroup ); - reviewToolbar.initialize(); - - this.originalToolbar = toolbar; - this.reviewToolbar = reviewToolbar; + toolbar.onWindowResize(); }; Controller.prototype.restoreToolbar = function ( target ) { - if ( !this.reviewToolbar ) { + if ( !this.$reviewToolbarGroup ) { return; } - this.reviewToolbar.$element.remove(); - this.originalToolbar.toggle( true ); - target.toolbar = this.originalToolbar; + const toolbar = target.getToolbar(); + + this.$reviewToolbarGroup.remove(); + this.$reviewToolbarGroup = null; - // Creating a new PositionedTargetToolbar stole the - // toolbar windowmanagers, so we need to make the - // original toolbar reclaims them: - target.setupToolbar( target.getSurface() ); - // If the window was resized while the originalToolbar was hidden then - // the cached measurements will be wrong. Recalculate. - this.originalToolbar.onWindowResize(); + this.$originalToolbarTools.removeClass( 'oo-ui-element-hidden' ); - this.reviewToolbar = null; - this.originalToolbar = null; + toolbar.onWindowResize(); }; Controller.prototype.drawSelections = function () { From 7fcd6523a1f63e12bbbf18e773c2d82b57198788 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 19 Jun 2025 13:04:21 +0100 Subject: [PATCH 394/730] EditCheck: Rely on surface padding for scroll top padding Change-Id: Idab791df5379d19665a7de10d10691240e3c5f0d --- editcheck/modules/controller.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 603a523bf9..4e694138fd 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -603,13 +603,9 @@ Controller.prototype.scrollActionIntoView = function ( action, alignToTop ) { // want the very beginning to be in view, so collapse it: const selection = action.getHighlightSelections()[ 0 ].collapseToStart(); const padding = ve.copy( this.surface.getPadding() ); - if ( alignToTop ) { - padding.top = action.widget.$element[ 0 ].getBoundingClientRect().top; - } - if ( OO.ui.isMobile() ) { - // TODO: Fix mobile surface padding - padding.top = 80; - } + + padding.top += 10; + padding.bottom += 10; if ( ve.ui.FixedEditCheckDialog.static.position === 'below' ) { // TODO: ui.surface getPadding should really be fixed for this From 3ad9ef591bdfe4559ab377e7534d9148630ba31a Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 19 Jun 2025 14:41:54 +0100 Subject: [PATCH 395/730] EditCheck: Don't scroll when position event is passive Change-Id: I33dcb6bbe2541551377f0bab15923a3f4d5f812a --- editcheck/modules/controller.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 4e694138fd..5829a58c6b 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -298,7 +298,7 @@ Controller.prototype.onContextChange = function () { } }; -Controller.prototype.onPosition = function () { +Controller.prototype.onPosition = function ( passive ) { if ( !this.surface ) { // This is debounced, and could potentially be called after teardown return; @@ -306,7 +306,7 @@ Controller.prototype.onPosition = function () { this.updatePositions(); - if ( this.getActions().length && this.focusedAction && this.surface.getView().reviewMode ) { + if ( !passive && this.getActions().length && this.focusedAction && this.surface.getView().reviewMode ) { this.scrollActionIntoViewDebounced( this.focusedAction, true, !OO.ui.isMobile() ); } }; From 784a41ec37b64ca0a1e3dd5674afda0fb5da81d6 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 20 Jun 2025 11:54:21 +0100 Subject: [PATCH 396/730] EditCheck: Add missing documentation Bug: T397516 Change-Id: I8b8bb811b03de541103f5cfaa49d3c3a01ea80a1 --- editcheck/modules/AsyncTextCheck.js | 19 ++- editcheck/modules/BaseEditCheck.js | 29 +++- editcheck/modules/EditCheckAction.js | 121 +++++++++++--- editcheck/modules/EditCheckDialog.js | 128 +++++++++++--- editcheck/modules/EditCheckFactory.js | 13 +- .../modules/EditCheckGutterSidebarDialog.js | 35 +++- editcheck/modules/controller.js | 157 ++++++++++++++++-- .../experimental/ConvertReferenceEditCheck.js | 2 +- .../experimental/DisambiguationEditCheck.js | 2 +- .../experimental/ExternalLinksEditCheck.js | 2 +- .../experimental/ImportCopyvioEditCheck.js | 2 +- .../experimental/TextMatchEditCheck.js | 2 +- .../editchecks/experimental/ToneCheck.js | 2 +- editcheck/modules/init.js | 4 +- editcheck/modules/utils.js | 2 - 15 files changed, 447 insertions(+), 73 deletions(-) diff --git a/editcheck/modules/AsyncTextCheck.js b/editcheck/modules/AsyncTextCheck.js index d3e658dbf4..45a9337df2 100644 --- a/editcheck/modules/AsyncTextCheck.js +++ b/editcheck/modules/AsyncTextCheck.js @@ -14,8 +14,10 @@ * * @class * @constructor + * @param {mw.editcheck.Controller} controller + * @param {Object} [config] */ -mw.editcheck.AsyncTextCheck = function MWAsyncTextCheck( /* config */ ) { +mw.editcheck.AsyncTextCheck = function MWAsyncTextCheck() { // Parent constructor mw.editcheck.AsyncTextCheck.super.apply( this, arguments ); @@ -27,8 +29,12 @@ mw.editcheck.AsyncTextCheck = function MWAsyncTextCheck( /* config */ ) { } }; +/* Inheritance */ + OO.inheritClass( mw.editcheck.AsyncTextCheck, mw.editcheck.BaseEditCheck ); +/* Static properties */ + mw.editcheck.AsyncTextCheck.static.name = null; /** @@ -41,6 +47,8 @@ mw.editcheck.AsyncTextCheck.static.name = null; */ mw.editcheck.AsyncTextCheck.static.memoizedCheckAsync = null; +/* Methods */ + /** * @param {string} listener Type of listener, such as 'onBeforeSave' or 'onBranchNodeChange' * @param {ve.dm.Surface} surfaceModel The surface @@ -86,10 +94,16 @@ mw.editcheck.AsyncTextCheck.prototype.handleListener = function ( listener, surf return actionPromises; }; +/** + * @inheritdoc + */ mw.editcheck.AsyncTextCheck.prototype.onBeforeSave = function ( ...args ) { return this.handleListener( 'onBeforeSave', ...args ); }; +/** + * @inheritdoc + */ mw.editcheck.AsyncTextCheck.prototype.onBranchNodeChange = function ( ...args ) { return this.handleListener( 'onBranchNodeChange', ...args ); }; @@ -118,6 +132,9 @@ mw.editcheck.AsyncTextCheck.prototype.checkAsync = null; */ mw.editcheck.AsyncTextCheck.prototype.newAction = null; +/** + * @inheritdoc + */ mw.editcheck.AsyncTextCheck.prototype.act = function ( choice, action, surface ) { this.tag( 'interacted', action ); if ( choice === 'dismiss' ) { diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index bb3037632f..c601add384 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -1,10 +1,27 @@ +/** + * BaseEditCheck + * + * Abstract base class for edit checks. Provides common configuration, tagging, + * and utility methods for subclasses implementing specific edit check logic. + * + * Subclasses should implement event handler methods such as onBeforeSave and onDocumentChange. + * + * @class + * @abstract + * @param {mw.editcheck.Controller} controller Edit check controller + * @param {Object} [config] Configuration options + */ mw.editcheck.BaseEditCheck = function MWBaseEditCheck( controller, config ) { this.controller = controller; this.config = ve.extendObject( {}, this.constructor.static.defaultConfig, config ); }; +/* Inheritance */ + OO.initClass( mw.editcheck.BaseEditCheck ); +/* Static properties */ + mw.editcheck.BaseEditCheck.static.onlyCoveredNodes = false; mw.editcheck.BaseEditCheck.static.choices = [ @@ -31,6 +48,8 @@ mw.editcheck.BaseEditCheck.static.title = ve.msg( 'editcheck-review-title' ); mw.editcheck.BaseEditCheck.static.description = ve.msg( 'editcheck-dialog-addref-description' ); +/* Methods */ + /** * Get the name of the check type * @@ -41,18 +60,27 @@ mw.editcheck.BaseEditCheck.prototype.getName = function () { }; /** + * Get actions to show before save + * + * @abstract * @param {ve.dm.Surface} surfaceModel * @return {mw.editcheck.EditCheckAction[]} */ mw.editcheck.BaseEditCheck.prototype.onBeforeSave = null; /** + * Get actions to show when document changed + * + * @abstract * @param {ve.dm.Surface} surfaceModel * @return {mw.editcheck.EditCheckAction[]} */ mw.editcheck.BaseEditCheck.prototype.onDocumentChange = null; /** + * User performs an action on an check + * + * @abstract * @param {string} choice `action` key from static.choices * @param {mw.editcheck.EditCheckAction} action * @param {ve.ui.Surface} surface @@ -286,7 +314,6 @@ mw.editcheck.BaseEditCheck.prototype.isRangeInValidSection = function ( range, d * Dismiss a check action * * @param {mw.editCheck.EditCheckAction} action - * @ */ mw.editcheck.BaseEditCheck.prototype.dismiss = function ( action ) { this.tag( 'dismissed', action ); diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index fd3dd0dd90..58c7729ccf 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -1,14 +1,23 @@ /** * EditCheckAction * - * @param {Object} config - * @param {mw.editcheck.BaseEditCheck} check - * @param {ve.dm.SurfaceFragment[]} fragments Affected fragments - * @param {jQuery|string|Function|OO.ui.HtmlSnippet} message Check message body - * @param {jQuery|string|Function|OO.ui.HtmlSnippet} title Check title + * @class + * @mixes OO.EventEmitter + * + * @param {Object} config Configuration options + * @param {mw.editcheck.BaseEditCheck} config.check Check which created this action + * @param {ve.dm.SurfaceFragment[]} config.fragments Affected fragments + * @param {ve.dm.SurfaceFragment} [config.focusFragment] Fragment to focus + * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.title] Title + * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.message] Body message + * @param {string} [config.id] Optional unique identifier + * @param {boolean} [config.paused=false] The check is paused + * @param {string} [config.icon] Optional icon name + * @param {string} [config.type='warning'] Type of message (e.g., 'warning', 'error') + * @param {Object[]} [config.choices] User choices */ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { - // Mixin constructors + // Mixin constructor OO.EventEmitter.call( this ); this.check = config.check; @@ -23,9 +32,28 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.choices = config.choices || config.check.constructor.static.choices; }; -OO.initClass( mw.editcheck.EditCheckAction ); +/* Inheritance */ + OO.mixinClass( mw.editcheck.EditCheckAction, OO.EventEmitter ); +/* Events */ + +/** + * Fired when the user selects an action (e.g., clicks a suggestion button). + * + * @event mw.editcheck.EditCheckAction#act + * @param {jQuery.Promise} promise A promise that resolves when the action is complete + */ + +/* Methods */ + +/** + * Compare the start offsets of two actions. + * + * @param {mw.editcheck.EditCheckAction} a + * @param {mw.editcheck.EditCheckAction} b + * @return {number} + */ mw.editcheck.EditCheckAction.static.compareStarts = function ( a, b ) { const aStart = a.getHighlightSelections()[ 0 ].getCoveringRange().start; const bStart = b.getHighlightSelections()[ 0 ].getCoveringRange().start; @@ -59,8 +87,13 @@ mw.editcheck.EditCheckAction.prototype.getHighlightSelections = function () { return this.fragments.map( ( fragment ) => fragment.getSelection() ); }; +/** + * Get the selection to focus for this check + * + * @return {ve.dm.Selection} + */ mw.editcheck.EditCheckAction.prototype.getFocusSelection = function () { - // TOOD: Instead of fragments[0], create a fragment that covers all fragments? + // TODO: Instead of fragments[0], create a fragment that covers all fragments? return ( this.focusFragment || this.fragments[ 0 ] ).getSelection(); }; @@ -73,6 +106,11 @@ mw.editcheck.EditCheckAction.prototype.getDescription = function () { return this.message || this.check.getDescription( this ); }; +/** + * Get the type of this action (e.g., 'warning', 'error') + * + * @return {string} + */ mw.editcheck.EditCheckAction.prototype.getType = function () { return this.type; }; @@ -86,6 +124,14 @@ mw.editcheck.EditCheckAction.prototype.getName = function () { return this.check.getName(); }; +/** + * Render as an EditCheckActionWidget + * + * @param {boolean} collapsed Start collapsed + * @param {boolean} singleAction This is the only action shown + * @param {ve.ui.Surface} surface Surface + * @return {mw.editcheck.EditCheckActionWidget} + */ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleAction, surface ) { const widget = new mw.editcheck.EditCheckActionWidget( { type: this.type, @@ -107,59 +153,71 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi }; /** - * Called when a button in the rendered widget is clicked + * Handle click events from an action button * - * @param {ve.ui.Surface} surface - * @param {OO.ui.ActionWidget} actionWidget ActionWidget for the choice that was clicked + * @param {ve.ui.Surface} surface Surface + * @param {OO.ui.ActionWidget} actionWidget Clicked action widget + * @fires mw.editcheck.EditCheckAction#act */ mw.editcheck.EditCheckAction.prototype.onActionClick = function ( surface, actionWidget ) { const promise = this.check.act( actionWidget.action, this, surface ); this.emit( 'act', promise || ve.createDeferred().resolve().promise() ); - ve.track( 'activity.editCheck-' + this.getName(), { action: 'action-' + ( actionWidget.getAction() || 'unknown' ) } ); + ve.track( 'activity.editCheck-' + this.getName(), { + action: 'action-' + ( actionWidget.getAction() || 'unknown' ) + } ); }; /** - * @param {mw.editcheck.EditCheckAction} other - * @param {boolean} ignorePaused Ignore whether the action is paused + * Compare to another action + * + * @param {mw.editcheck.EditCheckAction} other Other action + * @param {boolean} [ignorePaused] Ignore `paused` flag * @return {boolean} */ mw.editcheck.EditCheckAction.prototype.equals = function ( other, ignorePaused ) { - // Same check type? if ( this.check.constructor !== other.check.constructor ) { return false; } - // If ids are present, they're the only thing that counts if ( this.id || other.id ) { return this.id === other.id; } if ( !ignorePaused && this.paused !== other.paused ) { return false; } - // Shortcut the fragment check if possible if ( this.fragments.length !== other.fragments.length ) { return false; } - // Now they're the same if every fragment is found in both actions return this.fragments.every( ( fragment ) => { const selection = fragment.getSelection(); return other.fragments.some( ( otherFragment ) => otherFragment.getSelection().equals( selection ) ); } ); }; +/** + * EditCheckActionWidget + * + * @class + * @extends OO.ui.MessageWidget + * + * @param {Object} config Configuration options + * @param {string} config.type Type of message (e.g., 'warning', 'error') + * @param {string} [config.icon] Icon name + * @param {string|jQuery|Function|OO.ui.HtmlSnippet} config.label Title + * @param {string|jQuery|Function|OO.ui.HtmlSnippet} config.message Body message + * @param {boolean} [config.singleAction] This is the only action shown + * @param {string} [config.mode] Mode for the action set widget + */ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) { - // Configuration initialization config = config || {}; this.singleAction = config.singleAction; this.mode = config.mode || ''; this.actions = new OO.ui.ActionSet(); - this.actions.connect( this, { change: 'onActionsChange' } ); - // Parent constructor mw.editcheck.EditCheckActionWidget.super.call( this, config ); this.message = new OO.ui.LabelWidget( { label: config.message } ); @@ -176,10 +234,23 @@ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) .addClass( 've-ui-editCheckActionWidget' ); }; +/* Inheritance */ + OO.inheritClass( mw.editcheck.EditCheckActionWidget, OO.ui.MessageWidget ); +/* Events */ + /** - * Called when actions are changed + * Fired when the user toggles the collapsed state of the widget. + * + * @event mw.editcheck.EditCheckActionWidget#togglecollapse + * @param {boolean} collapsed Whether the widget is now collapsed + */ + +/* Methods */ + +/** + * Handle change events on the action set */ mw.editcheck.EditCheckActionWidget.prototype.onActionsChange = function () { this.$actions.empty().addClass( 'oo-ui-element-hidden' ); @@ -198,6 +269,12 @@ mw.editcheck.EditCheckActionWidget.prototype.setDisabled = function ( disabled ) } ); }; +/** + * Handle click events anywhere on the widget + * + * @param {jQuery.Event} e Click event + * @fires mw.editcheck.EditCheckActionWidget#togglecollapse + */ mw.editcheck.EditCheckActionWidget.prototype.onClick = function ( e ) { if ( this.singleAction ) { return; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 4bc14adf6f..295d8bcfe9 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -5,13 +5,14 @@ */ /** - * Find and replace dialog. + * Edit check dialog + * + * Abstract mixin for FixedEditCheckDialog and SidebarEditCheckDialog. * * @class - * @extends ve.ui.ToolbarDialog + * @abstract * * @constructor - * @param {Object} [config] Configuration options */ ve.ui.EditCheckDialog = function VeUiEditCheckDialog() { // Pre-initialization @@ -101,6 +102,15 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { this.$body.append( this.closeButton.$element, this.$actions, this.footer.$element ); }; +/** + * Handle updates to the list of edit check actions. + * + * @param {string} listener Check listener + * @param {mw.editcheck.EditCheckAction[]} actions All current actions + * @param {mw.editcheck.EditCheckAction[]} newActions Newly added actions + * @param {mw.editcheck.EditCheckAction[]} discardedActions Newly removed actions + * @param {boolean} rejected The last action was rejected/dismissed + */ ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions, rejected ) { if ( this.inBeforeSave !== ( listener === 'onBeforeSave' ) ) { return; @@ -111,10 +121,18 @@ ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, this.showActions( actions, newActions, rejected ); }; +/** + * Show the actions list + * + * @param {mw.editcheck.EditCheckAction[]} actions Actions + * @param {mw.editcheck.EditCheckAction[]} newActions Newly added actions + * @param {boolean} lastActionRejected Last action was rejected/dismissed + */ ve.ui.EditCheckDialog.prototype.showActions = function ( actions, newActions, lastActionRejected ) { this.currentActions = actions; if ( actions.length === 0 ) { - return this.close( { action: lastActionRejected ? 'reject' : 'complete' } ); + this.close( { action: lastActionRejected ? 'reject' : 'complete' } ); + return; } // This just adjusts so the previously selected check remains selected: @@ -128,10 +146,19 @@ ve.ui.EditCheckDialog.prototype.showActions = function ( actions, newActions, la this.setCurrentOffset( newOffset, false ); }; +/** + * Check if an action exists in the current actions. + * + * @param {Object} action Action + * @return {boolean} + */ ve.ui.EditCheckDialog.prototype.hasAction = function ( action ) { - return this.currentActions.some( ( caction ) => action.equals( caction ) ); + return this.currentActions.some( ( a ) => action.equals( a ) ); }; +/** + * Refresh the action list + */ ve.ui.EditCheckDialog.prototype.refresh = function () { this.$actions.empty(); @@ -147,11 +174,11 @@ ve.ui.EditCheckDialog.prototype.refresh = function () { }; /** - * Set the offset of the current check, within the list of all checks + * Set the offset of the current check, within the list of all checks. * - * @param {number|null} offset - * @param {boolean} fromUserAction - * @param {boolean} internal + * @param {number|null} offset New offset + * @param {boolean} fromUserAction The change was triggered by a user action + * @param {boolean} [internal] Change was triggered internally */ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAction, internal ) { // TODO: work out how to tell the window to recalculate height here @@ -195,6 +222,13 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc } }; +/** + * Handle focusAction events from the controller + * + * @param {mw.editcheck.EditCheckAction} action Action + * @param {number} index Index of the action in #getActions + * @param {boolean} scrollTo Scroll the action's selection into view + */ ve.ui.EditCheckDialog.prototype.onFocusAction = function ( action, index, scrollTo ) { this.setCurrentOffset( this.currentActions.indexOf( action ), scrollTo, true ); }; @@ -255,6 +289,9 @@ ve.ui.EditCheckDialog.prototype.getTeardownProcess = function ( data, process ) /** * HACK: Override #ready to prevent trying to focus $content + * + * @param {Object} data + * @return {jQuery.Promise} */ ve.ui.EditCheckDialog.prototype.ready = function ( data ) { return this.getReadyProcess( data ).execute().then( () => { @@ -265,10 +302,10 @@ ve.ui.EditCheckDialog.prototype.ready = function ( data ) { }; /** - * Handle 'act' events from the mw.widget.EditCheckActionWidget + * Handle 'act' events from the mw.widget.EditCheckActionWidget. * - * @param {mw.editcheck.EditCheckAction} action - * @param {mw.editcheck.EditCheckActionWidget} widget + * @param {mw.editcheck.EditCheckAction} action Action + * @param {mw.editcheck.EditCheckActionWidget} widget Action's widget * @param {jQuery.Promise} promise Promise which resolves when the action is complete */ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { @@ -297,11 +334,11 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { }; /** - * Handle 'togglecollapse' events from the mw.widget.EditCheckActionWidget + * Handle 'togglecollapse' events from the mw.widget.EditCheckActionWidget. * - * @param {mw.editcheck.EditCheckAction} action - * @param {number} index - * @param {boolean} collapsed + * @param {mw.editcheck.EditCheckAction} action Action being expanded/collapsed + * @param {number} index Index of action in list + * @param {boolean} collapsed Whether the action is collapsed */ ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, collapsed ) { if ( !collapsed ) { @@ -327,7 +364,7 @@ ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, col }; /** - * Handle click events from the close button + * Handle click events from the close button. */ ve.ui.EditCheckDialog.prototype.onCloseButtonClick = function () { // eslint-disable-next-line no-jquery/no-class-state @@ -337,19 +374,25 @@ ve.ui.EditCheckDialog.prototype.onCloseButtonClick = function () { }; /** - * Handle click events from the next button + * Handle click events from the next button. */ ve.ui.EditCheckDialog.prototype.onNextButtonClick = function () { this.setCurrentOffset( this.currentOffset === null ? 0 : this.currentOffset + 1, true ); }; /** - * Handle click events from the previous button + * Handle click events from the previous button. */ ve.ui.EditCheckDialog.prototype.onPreviousButtonClick = function () { this.setCurrentOffset( this.currentOffset === null ? this.currentActions.length - 1 : this.currentOffset - 1, true ); }; +/** + * @class + * @extends ve.ui.SidebarDialog + * @mixes ve.ui.EditCheckDialog + * @param {Object} config + */ ve.ui.SidebarEditCheckDialog = function VeUiSidebarEditCheckDialog( config ) { // Parent constructor ve.ui.SidebarEditCheckDialog.super.call( this, config ); @@ -358,14 +401,23 @@ ve.ui.SidebarEditCheckDialog = function VeUiSidebarEditCheckDialog( config ) { ve.ui.EditCheckDialog.call( this, config ); }; +/* Inheritance */ + OO.inheritClass( ve.ui.SidebarEditCheckDialog, ve.ui.SidebarDialog ); OO.mixinClass( ve.ui.SidebarEditCheckDialog, ve.ui.EditCheckDialog ); +/* Static properties */ + ve.ui.SidebarEditCheckDialog.static.name = 'sidebarEditCheckDialog'; ve.ui.SidebarEditCheckDialog.static.size = 'medium'; +/* Methods */ + +/** + * @inheritdoc + */ ve.ui.SidebarEditCheckDialog.prototype.initialize = function () { // Parent method ve.ui.SidebarEditCheckDialog.super.prototype.initialize.call( this ); @@ -373,6 +425,9 @@ ve.ui.SidebarEditCheckDialog.prototype.initialize = function () { return ve.ui.EditCheckDialog.prototype.initialize.call( this ); }; +/** + * @inheritdoc + */ ve.ui.SidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) { // Parent method const process = ve.ui.SidebarEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); @@ -382,6 +437,9 @@ ve.ui.SidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) { } ); }; +/** + * @inheritdoc + */ ve.ui.SidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { // Parent method const process = ve.ui.SidebarEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); @@ -391,6 +449,9 @@ ve.ui.SidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { } ); }; +/** + * Handle position events from the controller + */ ve.ui.SidebarEditCheckDialog.prototype.onPosition = function () { if ( this.inBeforeSave ) { return; @@ -418,6 +479,9 @@ ve.ui.SidebarEditCheckDialog.prototype.onPosition = function () { } ); }; +/** + * @inheritdoc ve.ui.EditCheckDialog + */ ve.ui.SidebarEditCheckDialog.prototype.onToggleCollapse = function () { // mixin ve.ui.EditCheckDialog.prototype.onToggleCollapse.apply( this, arguments ); @@ -429,6 +493,14 @@ ve.ui.SidebarEditCheckDialog.prototype.onToggleCollapse = function () { ve.ui.windowFactory.register( ve.ui.SidebarEditCheckDialog ); +/** + * FixedEditCheckDialog constructor. + * + * @class + * @extends ve.ui.ToolbarDialog + * @mixes ve.ui.EditCheckDialog + * @param {Object} config + */ ve.ui.FixedEditCheckDialog = function VeUiFixedEditCheckDialog( config ) { // Parent constructor ve.ui.FixedEditCheckDialog.super.call( this, config ); @@ -437,16 +509,25 @@ ve.ui.FixedEditCheckDialog = function VeUiFixedEditCheckDialog( config ) { ve.ui.EditCheckDialog.call( this, config ); }; +/* Inheritance */ + OO.inheritClass( ve.ui.FixedEditCheckDialog, ve.ui.ToolbarDialog ); OO.mixinClass( ve.ui.FixedEditCheckDialog, ve.ui.EditCheckDialog ); +/* Static properties */ + ve.ui.FixedEditCheckDialog.static.name = 'fixedEditCheckDialog'; ve.ui.FixedEditCheckDialog.static.position = OO.ui.isMobile() ? 'below' : 'side'; ve.ui.FixedEditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; +/* Methods */ + +/** + * @inheritdoc + */ ve.ui.FixedEditCheckDialog.prototype.initialize = function () { // Parent method ve.ui.FixedEditCheckDialog.super.prototype.initialize.call( this ); @@ -454,6 +535,9 @@ ve.ui.FixedEditCheckDialog.prototype.initialize = function () { return ve.ui.EditCheckDialog.prototype.initialize.call( this ); }; +/** + * @inheritdoc + */ ve.ui.FixedEditCheckDialog.prototype.getSetupProcess = function ( data ) { // Parent method const process = ve.ui.FixedEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); @@ -461,6 +545,9 @@ ve.ui.FixedEditCheckDialog.prototype.getSetupProcess = function ( data ) { return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ); }; +/** + * @inheritdoc + */ ve.ui.FixedEditCheckDialog.prototype.getTeardownProcess = function ( data ) { // Parent method const process = ve.ui.FixedEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); @@ -468,6 +555,9 @@ ve.ui.FixedEditCheckDialog.prototype.getTeardownProcess = function ( data ) { return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ); }; +/** + * @inheritdoc ve.ui.EditCheckDialog + */ ve.ui.FixedEditCheckDialog.prototype.onFocusAction = function ( action, index, scrollTo ) { if ( this.singleAction && action === null ) { // Can't unset the offset in single-action mode, because it hides the sidebar contents diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index 5176edb5c5..04eaa425ce 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -1,6 +1,13 @@ -mw.editcheck.EditCheckFactory = function MWEditEditCheckFactory() { +/** + * EditCheckFactory + * + * @class + * @constructor + * @extends OO.Factory + */ +mw.editcheck.EditCheckFactory = function MWEditCheckFactory() { // Parent constructor - mw.editcheck.EditCheckFactory.super.call( this, this.arguments ); + mw.editcheck.EditCheckFactory.super.call( this, arguments ); this.checksByListener = { onDocumentChange: [], @@ -83,7 +90,7 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener * @param {mw.editcheck.Controller} controller * @param {string} listenerName Listener name * @param {ve.dm.Surface} surfaceModel Surface model - * @param {mw.editcheck.EditCheckActions[]} existing Existing actions + * @param {mw.editcheck.EditCheckAction[]} existing Existing actions * @return {Promise} Promise that resolves with an updated list of Actions */ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( controller, listenerName, surfaceModel, existing ) { diff --git a/editcheck/modules/EditCheckGutterSidebarDialog.js b/editcheck/modules/EditCheckGutterSidebarDialog.js index 50c7fe414f..c44ef7a364 100644 --- a/editcheck/modules/EditCheckGutterSidebarDialog.js +++ b/editcheck/modules/EditCheckGutterSidebarDialog.js @@ -4,6 +4,12 @@ * @copyright See AUTHORS.txt */ +/** + * @class + * @extends ve.ui.SidebarDialog + * @constructor + * @param {Object} config Configuration options + */ ve.ui.GutterSidebarEditCheckDialog = function VeUiGutterSidebarEditCheckDialog( config ) { // Parent constructor ve.ui.GutterSidebarEditCheckDialog.super.call( this, config ); @@ -11,8 +17,12 @@ ve.ui.GutterSidebarEditCheckDialog = function VeUiGutterSidebarEditCheckDialog( this.$element.addClass( 've-ui-editCheckGutterSidebarDialog' ); }; +/* Inheritance */ + OO.inheritClass( ve.ui.GutterSidebarEditCheckDialog, ve.ui.SidebarDialog ); +/* Static properties */ + ve.ui.GutterSidebarEditCheckDialog.static.name = 'gutterSidebarEditCheckDialog'; ve.ui.GutterSidebarEditCheckDialog.static.size = 'gutter'; @@ -20,11 +30,19 @@ ve.ui.GutterSidebarEditCheckDialog.static.size = 'gutter'; // The gutter should never steal the focus, as it's intended to be a discreet notification ve.ui.GutterSidebarEditCheckDialog.static.activeSurface = true; +/* Methods */ + +/** + * @inheritdoc + */ ve.ui.GutterSidebarEditCheckDialog.prototype.initialize = function () { // Parent method ve.ui.GutterSidebarEditCheckDialog.super.prototype.initialize.call( this ); }; +/** + * @inheritdoc + */ ve.ui.GutterSidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) { const process = this.constructor.super.prototype.getSetupProcess.call( this, data ); return process.first( () => { @@ -43,6 +61,9 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) }, this ); }; +/** + * @inheritdoc + */ ve.ui.GutterSidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { // Parent method const process = ve.ui.GutterSidebarEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); @@ -54,6 +75,9 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.getTeardownProcess = function ( dat }, this ); }; +/** + * @inheritdoc + */ ve.ui.GutterSidebarEditCheckDialog.prototype.onActionsUpdated = function ( inBeforeSave, actions ) { if ( inBeforeSave !== this.inBeforeSave ) { return; @@ -61,13 +85,22 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.onActionsUpdated = function ( inBef this.renderActions( actions ); }; +/** + * @inheritdoc + */ ve.ui.GutterSidebarEditCheckDialog.prototype.onPosition = function () { this.renderActions( this.controller.getActions() ); }; +/** + * Render the edit check actions as gutter icons, grouping overlapping actions. + * + * @param {mw.editcheck.EditCheckAction[]} actions List of actions to render + */ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions ) { if ( actions.length === 0 ) { - return this.close( 'complete' ); + this.close( 'complete' ); + return; } const surfaceView = this.surface.getView(); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 5829a58c6b..ad0c31c9e5 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -2,6 +2,16 @@ const midEditListeners = [ 'onDocumentChange', 'onBranchNodeChange' ]; +/** + * EditCheck controller + * + * Manages triggering and updating edit checks. + * + * @class + * @constructor + * @mixes OO.EventEmitter + * @param {ve.init.mw.Target} target The VisualEditor target + */ function Controller( target ) { // Mixin constructors OO.EventEmitter.call( this ); @@ -29,8 +39,41 @@ function Controller( target ) { this.scrollActionIntoViewDebounced = ve.debounce( this.scrollActionIntoView.bind( this ), 200, true ); } +/* Inheritance */ + OO.mixinClass( Controller, OO.EventEmitter ); +/* Events */ + +/** + * Actions for a given listener are updated + * + * @event Controller#actionsUpdated + * @param {string} listener The listener type (e.g. 'onBeforeSave') + * @param {mw.editcheck.EditCheckAction[]} actions All current actions + * @param {mw.editcheck.EditCheckAction[]} newActions Actions newly added + * @param {mw.editcheck.EditCheckAction[]} discardedActions Actions newly removed + * @param {boolean} rejected The update was due to a user rejecting/dismissing a check + */ + +/** + * An action is focused + * + * @event Controller#focusAction + * @param {mw.editcheck.EditCheckAction} action Action + * @param {number} index Index of the action in #getActions + * @param {boolean} scrollTo Scroll the action's selection into view + */ + +/** + * Actions have been redrawn or repositioned + * + * @event Controller#position + */ + +/** + * Set up controller + */ Controller.prototype.setup = function () { const target = this.target; target.on( 'surfaceReady', () => { @@ -54,9 +97,11 @@ Controller.prototype.setup = function () { window.dispatchEvent( new Event( 'resize' ) ); this.surface.getView().on( 'position', this.onPositionDebounced ); - this.surface.getModel().on( 'undoStackChange', this.onDocumentChangeDebounced ); - this.surface.getModel().on( 'select', this.onSelectDebounced ); - this.surface.getModel().on( 'contextChange', this.onContextChangeDebounced ); + this.surface.getModel().connect( this, { + undoStackChange: 'onDocumentChangeDebounced', + select: 'onSelectDebounced', + contextChange: 'onContextChangeDebounced' + } ); this.surface.getSidebarDialogs().connect( this, { opening: 'onSidebarDialogsOpeningOrClosing', @@ -90,6 +135,14 @@ Controller.prototype.setup = function () { this.setupPreSaveProcess(); }; +/** + * Handle sidebar dialog open/close events + * + * Transition skin/VE components around to make room for sidebar + * + * @param {OO.ui.Window} win The window instance + * @param {jQuery.Promise} openingOrClosing Promise that resolves when closing finishes + */ Controller.prototype.onSidebarDialogsOpeningOrClosing = function ( win, openingOrClosing ) { if ( win.constructor.static.name !== 'sidebarEditCheckDialog' ) { return; @@ -112,6 +165,11 @@ Controller.prototype.onSidebarDialogsOpeningOrClosing = function ( win, openingO }, OO.ui.theme.getDialogTransitionDuration() ); }; +/** + * Check if any edit checks could be run for the current user/context + * + * @return {boolean} + */ Controller.prototype.editChecksArePossible = function () { return [ 'onBeforeSave', 'onDocumentChange' ].some( ( listener ) => mw.editcheck.editCheckFactory.getNamesByListener( listener ).some( @@ -123,6 +181,11 @@ Controller.prototype.editChecksArePossible = function () { ); }; +/** + * Update position of edit check highlights + * + * @fires Controller#position + */ Controller.prototype.updatePositions = function () { this.drawSelections(); this.drawGutter(); @@ -131,10 +194,9 @@ Controller.prototype.updatePositions = function () { }; /** - * Re-executes mid-edit checks. + * Update edit check list * - * Used when state may have changed, for example upon exiting the pre-save dialog - * or after the user has interacted with a mid-edit action. + * @fires Controller#actionsUpdated */ Controller.prototype.refresh = function () { if ( this.target.deactivating || !this.target.active ) { @@ -161,9 +223,10 @@ Controller.prototype.refresh = function () { * We return a promise so that UI actions such as opening the pre-save dialog * do not occur until checks have completed. * - * @param listener {string} eg onBeforeSave, onDocumentChange, onBranchNodeChange - * @param always {bool} - * @return {Promise} An updated set of actions. + * @param {string} listener e.g. onBeforeSave, onDocumentChange, onBranchNodeChange + * @param {boolean} always Emit updates even if no actions changed + * @return {Promise} An updated set of actions. + * @fires Controller#actionsUpdated */ Controller.prototype.updateForListener = function ( listener, always ) { const existing = this.getActions( listener ) || []; @@ -186,6 +249,14 @@ Controller.prototype.updateForListener = function ( listener, always ) { } ); }; +/** + * Remove an edit check action + * + * @param {string} listener Listener which triggered the action + * @param {mw.editcheck.EditCheckAction} action Action to remove + * @param {boolean} rejected The action was rejected + * @fires Controller#actionsUpdated + */ Controller.prototype.removeAction = function ( listener, action, rejected ) { const actions = this.getActions( listener ); const index = actions.indexOf( action ); @@ -207,9 +278,11 @@ Controller.prototype.removeAction = function ( listener, action, rejected ) { * Will emit a focusAction event if the focused action changed or if scrolling * was requested. * - * @param {mw.editcheck.EditCheckAction} action - * @param {boolean} [scrollTo] Scroll focused selection into view + * @param {mw.editcheck.EditCheckAction} action Action to focus + * @param {boolean} [scrollTo] Scroll action's selection into view * @param {boolean} [alignToTop] Align selection to top of page when scrolling + * @fires Controller#focusAction + * @fires Controller#position */ Controller.prototype.focusAction = function ( action, scrollTo, alignToTop ) { if ( !scrollTo && action === this.focusedAction ) { @@ -236,7 +309,7 @@ Controller.prototype.focusAction = function ( action, scrollTo, alignToTop ) { * - Otherwise, get all mid-edit listeners * * @param {string} [listener] The listener; if omitted, get all relevant actions - * @return {mw.editcheck.EditCheckAction[]} The actions + * @return {mw.editcheck.EditCheckAction[]} Actions */ Controller.prototype.getActions = function ( listener ) { if ( listener ) { @@ -246,6 +319,13 @@ Controller.prototype.getActions = function ( listener ) { return [].concat( ...listeners.map( ( lr ) => this.actionsByListener[ lr ] || [] ) ); }; +/** + * Handle select events from the surface model + * + * @param {ve.dm.Selection} selection New selection + * @fires Controller#actionsUpdated + * @fires Controller#focusAction + */ Controller.prototype.onSelect = function ( selection ) { if ( !this.surface ) { // This is debounced, and could potentially be called after teardown @@ -287,6 +367,9 @@ Controller.prototype.onSelect = function ( selection ) { this.focusAction( actions[ 0 ] || null, false ); }; +/** + * Handle contextChange events from the surface model + */ Controller.prototype.onContextChange = function () { if ( !this.surface ) { // This is debounced, and could potentially be called after teardown @@ -298,6 +381,11 @@ Controller.prototype.onContextChange = function () { } }; +/** + * Handle position events from the surface view + * + * @param {boolean} passive Event is passive (don't scroll) + */ Controller.prototype.onPosition = function ( passive ) { if ( !this.surface ) { // This is debounced, and could potentially be called after teardown @@ -311,6 +399,9 @@ Controller.prototype.onPosition = function ( passive ) { } }; +/** + * Handle changes to the document model (undoStackChange) + */ Controller.prototype.onDocumentChange = function () { if ( !this.surface ) { // This is debounced, and could potentially be called after teardown @@ -329,10 +420,10 @@ Controller.prototype.onDocumentChange = function () { * Updates gutter and highlights when the action list has changed. * Displays the edit check dialog if it is not already on screen. * - * @param listener {string} eg onBeforeSave, onDocumentChange, onBranchNodeChange - * @param actions {mw.editcheck.EditCheckAction[]} - * @param newActions {mw.editcheck.EditCheckAction[]} - * @param discardedActions {mw.editcheck.EditCheckAction[]} + * @param {string} listener e.g. onBeforeSave, onDocumentChange, onBranchNodeChange + * @param {mw.editcheck.EditCheckAction[]} actions + * @param {mw.editcheck.EditCheckAction[]} newActions + * @param {mw.editcheck.EditCheckAction[]} discardedActions */ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions, discardedActions ) { // do we need to redraw anything? @@ -476,6 +567,11 @@ Controller.prototype.setupPreSaveProcess = function () { } ); }; +/** + * Replace toolbar tools for review mode during pre-save checks. + * + * @param {ve.init.mw.ArticleTarget} target + */ Controller.prototype.setupToolbar = function ( target ) { const surface = target.getSurface(); const toolbar = target.getToolbar(); @@ -513,6 +609,11 @@ Controller.prototype.setupToolbar = function ( target ) { toolbar.onWindowResize(); }; +/** + * Restores the original toolbar tools after review mode is complete. + * + * @param {ve.init.mw.ArticleTarget} target + */ Controller.prototype.restoreToolbar = function ( target ) { if ( !this.$reviewToolbarGroup ) { return; @@ -527,6 +628,9 @@ Controller.prototype.restoreToolbar = function ( target ) { toolbar.onWindowResize(); }; +/** + * Redraw selection highlights + */ Controller.prototype.drawSelections = function () { const surfaceView = this.surface.getView(); if ( this.focusedAction ) { @@ -555,6 +659,9 @@ Controller.prototype.drawSelections = function () { } }; +/** + * Draw gutter indicators next to each action's selection (on desktop). + */ Controller.prototype.drawGutter = function () { if ( OO.ui.isMobile() ) { return; @@ -598,6 +705,12 @@ Controller.prototype.drawGutter = function () { surfaceView.appendHighlights( this.$highlights, false ); }; +/** + * Scrolls an action's selection into view + * + * @param {mw.editcheck.EditCheckAction} action + * @param {boolean} [alignToTop] Align the selection to the top of the viewport + */ Controller.prototype.scrollActionIntoView = function ( action, alignToTop ) { // scrollSelectionIntoView scrolls to the focus of a selection, but we // want the very beginning to be in view, so collapse it: @@ -621,12 +734,24 @@ Controller.prototype.scrollActionIntoView = function ( action, alignToTop ) { } ); }; +/** + * Closes the fixed edit check dialog (pre-save). + * + * @param {string} [action] Name of action which triggered the close ('mobile-keyboard', 'context', 'preSaveProcess') + * @return {jQuery.Promise} + */ Controller.prototype.closeDialog = function ( action ) { this.focusAction( undefined ); const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); return windowAction.close( 'fixedEditCheckDialog', action ? { action: action } : undefined ).closed.then( () => {}, () => {} ); }; +/** + * Closes the sidebar edit check dialogs (mid-edit). + * + * @param {string} [action] Name of action which triggered the close (currently only 'preSaveProcess') + * @return {jQuery.Promise} + */ Controller.prototype.closeSidebars = function ( action ) { const currentWindow = this.surface.getSidebarDialogs().getCurrentWindow(); if ( currentWindow ) { diff --git a/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js b/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js index 8a93fb112d..269a5d9dca 100644 --- a/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js +++ b/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js @@ -1,4 +1,4 @@ -mw.editcheck.ConvertReferenceEditCheck = function MWConvertReferenceEditCheck( /* config */ ) { +mw.editcheck.ConvertReferenceEditCheck = function MWConvertReferenceEditCheck() { // Parent constructor mw.editcheck.ConvertReferenceEditCheck.super.apply( this, arguments ); }; diff --git a/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js b/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js index 6c4ab6c81d..d2bf584d2b 100644 --- a/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js +++ b/editcheck/modules/editchecks/experimental/DisambiguationEditCheck.js @@ -1,4 +1,4 @@ -mw.editcheck.DisambiguationEditCheck = function MWDisambiguationEditCheck( /* config */ ) { +mw.editcheck.DisambiguationEditCheck = function MWDisambiguationEditCheck() { // Parent constructor mw.editcheck.DisambiguationEditCheck.super.apply( this, arguments ); }; diff --git a/editcheck/modules/editchecks/experimental/ExternalLinksEditCheck.js b/editcheck/modules/editchecks/experimental/ExternalLinksEditCheck.js index dc02b92951..c76158c24e 100644 --- a/editcheck/modules/editchecks/experimental/ExternalLinksEditCheck.js +++ b/editcheck/modules/editchecks/experimental/ExternalLinksEditCheck.js @@ -1,4 +1,4 @@ -mw.editcheck.ExternalLinksEditCheck = function MWExternalLinksEditCheck( /* config */ ) { +mw.editcheck.ExternalLinksEditCheck = function MWExternalLinksEditCheck() { // Parent constructor mw.editcheck.ExternalLinksEditCheck.super.apply( this, arguments ); }; diff --git a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js index 6de8bd4e02..fd3f5fdde3 100644 --- a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js +++ b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js @@ -1,4 +1,4 @@ -mw.editcheck.ImportCopyvioEditCheck = function MWImportCopyvioEditCheck( /* config */ ) { +mw.editcheck.ImportCopyvioEditCheck = function MWImportCopyvioEditCheck() { // Parent constructor mw.editcheck.ImportCopyvioEditCheck.super.apply( this, arguments ); }; diff --git a/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js index 04e942ee42..48d6146e73 100644 --- a/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js +++ b/editcheck/modules/editchecks/experimental/TextMatchEditCheck.js @@ -1,4 +1,4 @@ -mw.editcheck.TextMatchEditCheck = function MWTextMatchEditCheck( /* config */ ) { +mw.editcheck.TextMatchEditCheck = function MWTextMatchEditCheck() { // Parent constructor mw.editcheck.TextMatchEditCheck.super.apply( this, arguments ); diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index e7fddcf111..2409d1d8d1 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -1,4 +1,4 @@ -mw.editcheck.ToneCheck = function MWToneCheck( /* config */ ) { +mw.editcheck.ToneCheck = function MWToneCheck() { // Parent constructor mw.editcheck.ToneCheck.super.apply( this, arguments ); }; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 4d7aecbcd2..5276c5dbed 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -1,6 +1,6 @@ /* * `ecenable` query string: - * 1: override user eligiblity criteria for all checks + * 1: override user eligibility criteria for all checks * 2: also load experimental checks */ const ecenable = new URL( location.href ).searchParams.get( 'ecenable' ); @@ -29,7 +29,7 @@ if ( mw.editcheck.experimental ) { * Check if the document has content needing a reference, for AddReferenceEditCheck * * @param {ve.dm.Document} documentModel - * @param {boolean} includeReferencedContent Include contents that already contains a reference + * @param {boolean} includeReferencedContent Include content that already contains a reference * @return {boolean} */ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, includeReferencedContent ) { diff --git a/editcheck/modules/utils.js b/editcheck/modules/utils.js index a9f0402c02..3365b58562 100644 --- a/editcheck/modules/utils.js +++ b/editcheck/modules/utils.js @@ -1,5 +1,3 @@ -'use strict'; - /** * @param {Function} handler A deterministic asynchronous function taking a string and returning Any * @return {Function} Memoized version (returns the original promise on subsequent calls) From a99b45fa5e856849d4a5b69c1c252c1e09e0e90e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 20 Jun 2025 12:16:46 +0100 Subject: [PATCH 397/730] EditCheck: Generate JSDoc Change-Id: I3a2e4cf44c95f1ffdbbe7984515d96b8afa6ec54 --- jsdoc.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jsdoc.json b/jsdoc.json index 5bdc5b114f..0298504d33 100644 --- a/jsdoc.json +++ b/jsdoc.json @@ -16,7 +16,7 @@ "node_modules/jsdoc-wmf-theme/plugins/default" ], "source": { - "include": [ "modules/ve-mw", "modules/ve-mw-collab" ], + "include": [ "modules/ve-mw", "modules/ve-mw-collab", "editcheck/modules" ], "exclude": [ "modules/ve-mw/tests" ] }, "templates": { @@ -34,7 +34,9 @@ "ve.dm.MW": true, "ve.init.mw.": true, "ve.ui.MW": true, - "mw.libs.ve.": true + "mw.libs.ve.": true, + "ve.ui.EditCheck": true, + "mw.editcheck.": true }, "linkMap": { "VisualEditorOverlay": "https://doc.wikimedia.org/MobileFrontend/master/js/js/VisualEditorOverlay.html" From 2ac3d4a559c29e7436bb70deccc175b30ab242e3 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 20 Jun 2025 12:28:44 +0100 Subject: [PATCH 398/730] EditCheck: Use separate files for separate classes Change-Id: Icfc4c4373b9f6fd0f953cf3cb83810918dbdf4b6 --- editcheck/modules/EditCheckAction.js | 97 --------- editcheck/modules/EditCheckActionWidget.js | 96 ++++++++ editcheck/modules/EditCheckDialog.js | 206 +----------------- editcheck/modules/EditCheckDialogTool.js | 20 ++ .../modules/EditCheckPreSaveToolbarTools.js | 38 ++++ editcheck/modules/FixedEditCheckDialog.js | 77 +++++++ editcheck/modules/SidebarEditCheckDialog.js | 105 +++++++++ editcheck/modules/init.js | 45 +--- extension.json | 4 + 9 files changed, 345 insertions(+), 343 deletions(-) create mode 100644 editcheck/modules/EditCheckActionWidget.js create mode 100644 editcheck/modules/EditCheckDialogTool.js create mode 100644 editcheck/modules/EditCheckPreSaveToolbarTools.js create mode 100644 editcheck/modules/FixedEditCheckDialog.js create mode 100644 editcheck/modules/SidebarEditCheckDialog.js diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 58c7729ccf..6a8cdde364 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -192,100 +192,3 @@ mw.editcheck.EditCheckAction.prototype.equals = function ( other, ignorePaused ) return other.fragments.some( ( otherFragment ) => otherFragment.getSelection().equals( selection ) ); } ); }; - -/** - * EditCheckActionWidget - * - * @class - * @extends OO.ui.MessageWidget - * - * @param {Object} config Configuration options - * @param {string} config.type Type of message (e.g., 'warning', 'error') - * @param {string} [config.icon] Icon name - * @param {string|jQuery|Function|OO.ui.HtmlSnippet} config.label Title - * @param {string|jQuery|Function|OO.ui.HtmlSnippet} config.message Body message - * @param {boolean} [config.singleAction] This is the only action shown - * @param {string} [config.mode] Mode for the action set widget - */ -mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) { - config = config || {}; - - this.singleAction = config.singleAction; - this.mode = config.mode || ''; - - this.actions = new OO.ui.ActionSet(); - this.actions.connect( this, { - change: 'onActionsChange' - } ); - - mw.editcheck.EditCheckActionWidget.super.call( this, config ); - - this.message = new OO.ui.LabelWidget( { label: config.message } ); - this.$actions = $( '
' ).addClass( 've-ui-editCheckActionWidget-actions oo-ui-element-hidden' ); - - this.$element.on( 'click', this.onClick.bind( this ) ); - - this.$body = $( '
' ) - .append( this.message.$element, this.$actions ) - .addClass( 've-ui-editCheckActionWidget-body' ); - - this.$element - .append( this.$body ) - .addClass( 've-ui-editCheckActionWidget' ); -}; - -/* Inheritance */ - -OO.inheritClass( mw.editcheck.EditCheckActionWidget, OO.ui.MessageWidget ); - -/* Events */ - -/** - * Fired when the user toggles the collapsed state of the widget. - * - * @event mw.editcheck.EditCheckActionWidget#togglecollapse - * @param {boolean} collapsed Whether the widget is now collapsed - */ - -/* Methods */ - -/** - * Handle change events on the action set - */ -mw.editcheck.EditCheckActionWidget.prototype.onActionsChange = function () { - this.$actions.empty().addClass( 'oo-ui-element-hidden' ); - this.actions.get( { modes: [ this.mode ] } ).forEach( ( actionWidget ) => { - this.$actions.append( actionWidget.$element ).removeClass( 'oo-ui-element-hidden' ); - } ); -}; - -/** - * @inheritdoc - */ -mw.editcheck.EditCheckActionWidget.prototype.setDisabled = function ( disabled ) { - OO.ui.Widget.prototype.setDisabled.call( this, disabled ); - this.actions.forEach( null, ( action ) => { - action.setDisabled( disabled ); - } ); -}; - -/** - * Handle click events anywhere on the widget - * - * @param {jQuery.Event} e Click event - * @fires mw.editcheck.EditCheckActionWidget#togglecollapse - */ -mw.editcheck.EditCheckActionWidget.prototype.onClick = function ( e ) { - if ( this.singleAction ) { - return; - } - if ( this.$body[ 0 ].contains( e.target ) ) { - return; - } - - e.preventDefault(); - // eslint-disable-next-line no-jquery/no-class-state - this.$element.toggleClass( 've-ui-editCheckActionWidget-collapsed' ); - // eslint-disable-next-line no-jquery/no-class-state - this.emit( 'togglecollapse', this.$element.hasClass( 've-ui-editCheckActionWidget-collapsed' ) ); -}; diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js new file mode 100644 index 0000000000..3b8a9714f1 --- /dev/null +++ b/editcheck/modules/EditCheckActionWidget.js @@ -0,0 +1,96 @@ +/** + * EditCheckActionWidget + * + * @class + * @extends OO.ui.MessageWidget + * + * @param {Object} config Configuration options + * @param {string} config.type Type of message (e.g., 'warning', 'error') + * @param {string} [config.icon] Icon name + * @param {string|jQuery|Function|OO.ui.HtmlSnippet} config.label Title + * @param {string|jQuery|Function|OO.ui.HtmlSnippet} config.message Body message + * @param {boolean} [config.singleAction] This is the only action shown + * @param {string} [config.mode] Mode for the action set widget + */ +mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) { + config = config || {}; + + this.singleAction = config.singleAction; + this.mode = config.mode || ''; + + this.actions = new OO.ui.ActionSet(); + this.actions.connect( this, { + change: 'onActionsChange' + } ); + + mw.editcheck.EditCheckActionWidget.super.call( this, config ); + + this.message = new OO.ui.LabelWidget( { label: config.message } ); + this.$actions = $( '
' ).addClass( 've-ui-editCheckActionWidget-actions oo-ui-element-hidden' ); + + this.$element.on( 'click', this.onClick.bind( this ) ); + + this.$body = $( '
' ) + .append( this.message.$element, this.$actions ) + .addClass( 've-ui-editCheckActionWidget-body' ); + + this.$element + .append( this.$body ) + .addClass( 've-ui-editCheckActionWidget' ); +}; + +/* Inheritance */ + +OO.inheritClass( mw.editcheck.EditCheckActionWidget, OO.ui.MessageWidget ); + +/* Events */ + +/** + * Fired when the user toggles the collapsed state of the widget. + * + * @event mw.editcheck.EditCheckActionWidget#togglecollapse + * @param {boolean} collapsed Whether the widget is now collapsed + */ + +/* Methods */ + +/** + * Handle change events on the action set + */ +mw.editcheck.EditCheckActionWidget.prototype.onActionsChange = function () { + this.$actions.empty().addClass( 'oo-ui-element-hidden' ); + this.actions.get( { modes: [ this.mode ] } ).forEach( ( actionWidget ) => { + this.$actions.append( actionWidget.$element ).removeClass( 'oo-ui-element-hidden' ); + } ); +}; + +/** + * @inheritdoc + */ +mw.editcheck.EditCheckActionWidget.prototype.setDisabled = function ( disabled ) { + OO.ui.Widget.prototype.setDisabled.call( this, disabled ); + this.actions.forEach( null, ( action ) => { + action.setDisabled( disabled ); + } ); +}; + +/** + * Handle click events anywhere on the widget + * + * @param {jQuery.Event} e Click event + * @fires mw.editcheck.EditCheckActionWidget#togglecollapse + */ +mw.editcheck.EditCheckActionWidget.prototype.onClick = function ( e ) { + if ( this.singleAction ) { + return; + } + if ( this.$body[ 0 ].contains( e.target ) ) { + return; + } + + e.preventDefault(); + // eslint-disable-next-line no-jquery/no-class-state + this.$element.toggleClass( 've-ui-editCheckActionWidget-collapsed' ); + // eslint-disable-next-line no-jquery/no-class-state + this.emit( 'togglecollapse', this.$element.hasClass( 've-ui-editCheckActionWidget-collapsed' ) ); +}; diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/EditCheckDialog.js index 295d8bcfe9..a4e75f61c5 100644 --- a/editcheck/modules/EditCheckDialog.js +++ b/editcheck/modules/EditCheckDialog.js @@ -387,189 +387,7 @@ ve.ui.EditCheckDialog.prototype.onPreviousButtonClick = function () { this.setCurrentOffset( this.currentOffset === null ? this.currentActions.length - 1 : this.currentOffset - 1, true ); }; -/** - * @class - * @extends ve.ui.SidebarDialog - * @mixes ve.ui.EditCheckDialog - * @param {Object} config - */ -ve.ui.SidebarEditCheckDialog = function VeUiSidebarEditCheckDialog( config ) { - // Parent constructor - ve.ui.SidebarEditCheckDialog.super.call( this, config ); - - // Mixin constructor - ve.ui.EditCheckDialog.call( this, config ); -}; - -/* Inheritance */ - -OO.inheritClass( ve.ui.SidebarEditCheckDialog, ve.ui.SidebarDialog ); - -OO.mixinClass( ve.ui.SidebarEditCheckDialog, ve.ui.EditCheckDialog ); - -/* Static properties */ - -ve.ui.SidebarEditCheckDialog.static.name = 'sidebarEditCheckDialog'; - -ve.ui.SidebarEditCheckDialog.static.size = 'medium'; - -/* Methods */ - -/** - * @inheritdoc - */ -ve.ui.SidebarEditCheckDialog.prototype.initialize = function () { - // Parent method - ve.ui.SidebarEditCheckDialog.super.prototype.initialize.call( this ); - // Mixin method - return ve.ui.EditCheckDialog.prototype.initialize.call( this ); -}; - -/** - * @inheritdoc - */ -ve.ui.SidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) { - // Parent method - const process = ve.ui.SidebarEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); - // Mixin method - return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ).next( () => { - this.controller.on( 'position', this.onPosition, null, this ); - } ); -}; - -/** - * @inheritdoc - */ -ve.ui.SidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { - // Parent method - const process = ve.ui.SidebarEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); - // Mixin method - return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ).next( () => { - this.controller.off( 'position', this.onPosition, this ); - } ); -}; - -/** - * Handle position events from the controller - */ -ve.ui.SidebarEditCheckDialog.prototype.onPosition = function () { - if ( this.inBeforeSave ) { - return; - } - const surfaceView = this.surface.getView(); - const surfaceTop = surfaceView.$element.offset().top + 10; - this.currentActions.forEach( ( action ) => { - const widget = action.widget; - if ( widget ) { - let top = Infinity; - action.getHighlightSelections().forEach( ( selection ) => { - const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); - const rect = selectionView.getSelectionBoundingRect(); - if ( !rect ) { - return; - } - top = Math.min( top, rect.top ); - } ); - widget.$element.css( 'margin-top', '' ); - widget.$element.css( - 'margin-top', - Math.max( 0, top + surfaceTop - widget.$element.offset().top ) - ); - } - } ); -}; - -/** - * @inheritdoc ve.ui.EditCheckDialog - */ -ve.ui.SidebarEditCheckDialog.prototype.onToggleCollapse = function () { - // mixin - ve.ui.EditCheckDialog.prototype.onToggleCollapse.apply( this, arguments ); - - this.onPosition(); -}; - -/* Registration */ - -ve.ui.windowFactory.register( ve.ui.SidebarEditCheckDialog ); - -/** - * FixedEditCheckDialog constructor. - * - * @class - * @extends ve.ui.ToolbarDialog - * @mixes ve.ui.EditCheckDialog - * @param {Object} config - */ -ve.ui.FixedEditCheckDialog = function VeUiFixedEditCheckDialog( config ) { - // Parent constructor - ve.ui.FixedEditCheckDialog.super.call( this, config ); - - // Mixin constructor - ve.ui.EditCheckDialog.call( this, config ); -}; - -/* Inheritance */ - -OO.inheritClass( ve.ui.FixedEditCheckDialog, ve.ui.ToolbarDialog ); - -OO.mixinClass( ve.ui.FixedEditCheckDialog, ve.ui.EditCheckDialog ); - -/* Static properties */ - -ve.ui.FixedEditCheckDialog.static.name = 'fixedEditCheckDialog'; - -ve.ui.FixedEditCheckDialog.static.position = OO.ui.isMobile() ? 'below' : 'side'; - -ve.ui.FixedEditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; - -/* Methods */ - -/** - * @inheritdoc - */ -ve.ui.FixedEditCheckDialog.prototype.initialize = function () { - // Parent method - ve.ui.FixedEditCheckDialog.super.prototype.initialize.call( this ); - // Mixin method - return ve.ui.EditCheckDialog.prototype.initialize.call( this ); -}; - -/** - * @inheritdoc - */ -ve.ui.FixedEditCheckDialog.prototype.getSetupProcess = function ( data ) { - // Parent method - const process = ve.ui.FixedEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); - // Mixin method - return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ); -}; - -/** - * @inheritdoc - */ -ve.ui.FixedEditCheckDialog.prototype.getTeardownProcess = function ( data ) { - // Parent method - const process = ve.ui.FixedEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); - // Mixin method - return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ); -}; - -/** - * @inheritdoc ve.ui.EditCheckDialog - */ -ve.ui.FixedEditCheckDialog.prototype.onFocusAction = function ( action, index, scrollTo ) { - if ( this.singleAction && action === null ) { - // Can't unset the offset in single-action mode, because it hides the sidebar contents - return; - } - // Mixin method - return ve.ui.EditCheckDialog.prototype.onFocusAction.call( this, action, index, scrollTo ); -}; - -/* Registration */ - -ve.ui.windowFactory.register( ve.ui.FixedEditCheckDialog ); +/* Command registration */ ve.ui.commandRegistry.register( new ve.ui.Command( @@ -588,25 +406,3 @@ ve.ui.commandRegistry.register( 'editCheckDialogBeforeSave', 'window', 'toggle', { args: [ 'editCheckDialog', { listener: 'onBeforeSave' } ] } ) ); - -/** - * @class - * @extends ve.ui.ToolbarDialogTool - * @constructor - * @param {OO.ui.ToolGroup} toolGroup - * @param {Object} [config] Configuration options - */ -ve.ui.EditCheckDialogTool = function VeUiEditCheckDialogTool() { - ve.ui.EditCheckDialogTool.super.apply( this, arguments ); -}; -OO.inheritClass( ve.ui.EditCheckDialogTool, ve.ui.ToolbarDialogTool ); -ve.ui.EditCheckDialogTool.static.name = 'editCheckDialog'; -ve.ui.EditCheckDialogTool.static.group = 'notices'; -ve.ui.EditCheckDialogTool.static.icon = 'robot'; -ve.ui.EditCheckDialogTool.static.title = 'Edit check'; // OO.ui.deferMsg( 'visualeditor-dialog-command-help-title' ); -ve.ui.EditCheckDialogTool.static.autoAddToCatchall = false; -ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialogInProcessToggle'; -// ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialogBeforeSave'; - -// Demo button for opening edit check sidebar -// ve.ui.toolFactory.register( ve.ui.EditCheckDialogTool ); diff --git a/editcheck/modules/EditCheckDialogTool.js b/editcheck/modules/EditCheckDialogTool.js new file mode 100644 index 0000000000..f6bf5c488c --- /dev/null +++ b/editcheck/modules/EditCheckDialogTool.js @@ -0,0 +1,20 @@ +/** + * @class + * @extends ve.ui.ToolbarDialogTool + * @constructor + * @param {OO.ui.ToolGroup} toolGroup + * @param {Object} [config] Configuration options + */ +ve.ui.EditCheckDialogTool = function VeUiEditCheckDialogTool() { + ve.ui.EditCheckDialogTool.super.apply( this, arguments ); +}; +OO.inheritClass( ve.ui.EditCheckDialogTool, ve.ui.ToolbarDialogTool ); +ve.ui.EditCheckDialogTool.static.name = 'editCheckDialog'; +ve.ui.EditCheckDialogTool.static.group = 'notices'; +ve.ui.EditCheckDialogTool.static.icon = 'robot'; +ve.ui.EditCheckDialogTool.static.title = 'Edit check'; // OO.ui.deferMsg( 'visualeditor-dialog-command-help-title' ); +ve.ui.EditCheckDialogTool.static.autoAddToCatchall = false; +ve.ui.EditCheckDialogTool.static.commandName = 'editCheckDialogInProcessToggle'; + +// Demo button for opening edit check sidebar +ve.ui.toolFactory.register( ve.ui.EditCheckDialogTool ); diff --git a/editcheck/modules/EditCheckPreSaveToolbarTools.js b/editcheck/modules/EditCheckPreSaveToolbarTools.js new file mode 100644 index 0000000000..db20eee2fc --- /dev/null +++ b/editcheck/modules/EditCheckPreSaveToolbarTools.js @@ -0,0 +1,38 @@ +ve.ui.EditCheckBack = function VeUiEditCheckBack() { + // Parent constructor + ve.ui.EditCheckBack.super.apply( this, arguments ); + + this.setDisabled( false ); +}; +OO.inheritClass( ve.ui.EditCheckBack, ve.ui.Tool ); +ve.ui.EditCheckBack.static.name = 'editCheckBack'; +ve.ui.EditCheckBack.static.icon = 'previous'; +ve.ui.EditCheckBack.static.autoAddToCatchall = false; +ve.ui.EditCheckBack.static.autoAddToGroup = false; +ve.ui.EditCheckBack.static.title = + OO.ui.deferMsg( 'visualeditor-backbutton-tooltip' ); +ve.ui.EditCheckBack.prototype.onSelect = function () { + const surface = this.toolbar.getSurface(); + surface.getContext().hide(); + surface.execute( 'window', 'close', 'fixedEditCheckDialog' ); + this.setActive( false ); + ve.track( 'activity.' + this.getName(), { action: 'tool-used' } ); +}; +ve.ui.EditCheckBack.prototype.onUpdateState = function () { + this.setDisabled( false ); +}; +ve.ui.toolFactory.register( ve.ui.EditCheckBack ); + +ve.ui.EditCheckSaveDisabled = function VeUiEditCheckSaveDisabled() { + // Parent constructor + ve.ui.EditCheckSaveDisabled.super.apply( this, arguments ); +}; +OO.inheritClass( ve.ui.EditCheckSaveDisabled, ve.ui.MWSaveTool ); +ve.ui.EditCheckSaveDisabled.static.name = 'showSaveDisabled'; +ve.ui.EditCheckSaveDisabled.static.autoAddToCatchall = false; +ve.ui.EditCheckSaveDisabled.static.autoAddToGroup = false; +ve.ui.EditCheckSaveDisabled.prototype.onUpdateState = function () { + this.setDisabled( true ); +}; + +ve.ui.toolFactory.register( ve.ui.EditCheckSaveDisabled ); diff --git a/editcheck/modules/FixedEditCheckDialog.js b/editcheck/modules/FixedEditCheckDialog.js new file mode 100644 index 0000000000..ef7f408246 --- /dev/null +++ b/editcheck/modules/FixedEditCheckDialog.js @@ -0,0 +1,77 @@ +/** + * FixedEditCheckDialog constructor. + * + * @class + * @extends ve.ui.ToolbarDialog + * @mixes ve.ui.EditCheckDialog + * @param {Object} config + */ +ve.ui.FixedEditCheckDialog = function VeUiFixedEditCheckDialog( config ) { + // Parent constructor + ve.ui.FixedEditCheckDialog.super.call( this, config ); + + // Mixin constructor + ve.ui.EditCheckDialog.call( this, config ); +}; + +/* Inheritance */ + +OO.inheritClass( ve.ui.FixedEditCheckDialog, ve.ui.ToolbarDialog ); + +OO.mixinClass( ve.ui.FixedEditCheckDialog, ve.ui.EditCheckDialog ); + +/* Static properties */ + +ve.ui.FixedEditCheckDialog.static.name = 'fixedEditCheckDialog'; + +ve.ui.FixedEditCheckDialog.static.position = OO.ui.isMobile() ? 'below' : 'side'; + +ve.ui.FixedEditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; + +/* Methods */ + +/** + * @inheritdoc + */ +ve.ui.FixedEditCheckDialog.prototype.initialize = function () { + // Parent method + ve.ui.FixedEditCheckDialog.super.prototype.initialize.call( this ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.initialize.call( this ); +}; + +/** + * @inheritdoc + */ +ve.ui.FixedEditCheckDialog.prototype.getSetupProcess = function ( data ) { + // Parent method + const process = ve.ui.FixedEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ); +}; + +/** + * @inheritdoc + */ +ve.ui.FixedEditCheckDialog.prototype.getTeardownProcess = function ( data ) { + // Parent method + const process = ve.ui.FixedEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ); +}; + +/** + * @inheritdoc ve.ui.EditCheckDialog + */ +ve.ui.FixedEditCheckDialog.prototype.onFocusAction = function ( action, index, scrollTo ) { + if ( this.singleAction && action === null ) { + // Can't unset the offset in single-action mode, because it hides the sidebar contents + return; + } + // Mixin method + return ve.ui.EditCheckDialog.prototype.onFocusAction.call( this, action, index, scrollTo ); +}; + +/* Registration */ + +ve.ui.windowFactory.register( ve.ui.FixedEditCheckDialog ); diff --git a/editcheck/modules/SidebarEditCheckDialog.js b/editcheck/modules/SidebarEditCheckDialog.js new file mode 100644 index 0000000000..42afffb173 --- /dev/null +++ b/editcheck/modules/SidebarEditCheckDialog.js @@ -0,0 +1,105 @@ +/** + * @class + * @extends ve.ui.SidebarDialog + * @mixes ve.ui.EditCheckDialog + * @param {Object} config + */ +ve.ui.SidebarEditCheckDialog = function VeUiSidebarEditCheckDialog( config ) { + // Parent constructor + ve.ui.SidebarEditCheckDialog.super.call( this, config ); + + // Mixin constructor + ve.ui.EditCheckDialog.call( this, config ); +}; + +/* Inheritance */ + +OO.inheritClass( ve.ui.SidebarEditCheckDialog, ve.ui.SidebarDialog ); + +OO.mixinClass( ve.ui.SidebarEditCheckDialog, ve.ui.EditCheckDialog ); + +/* Static properties */ + +ve.ui.SidebarEditCheckDialog.static.name = 'sidebarEditCheckDialog'; + +ve.ui.SidebarEditCheckDialog.static.size = 'medium'; + +/* Methods */ + +/** + * @inheritdoc + */ +ve.ui.SidebarEditCheckDialog.prototype.initialize = function () { + // Parent method + ve.ui.SidebarEditCheckDialog.super.prototype.initialize.call( this ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.initialize.call( this ); +}; + +/** + * @inheritdoc + */ +ve.ui.SidebarEditCheckDialog.prototype.getSetupProcess = function ( data ) { + // Parent method + const process = ve.ui.SidebarEditCheckDialog.super.prototype.getSetupProcess.call( this, data ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.getSetupProcess.call( this, data, process ).next( () => { + this.controller.on( 'position', this.onPosition, null, this ); + } ); +}; + +/** + * @inheritdoc + */ +ve.ui.SidebarEditCheckDialog.prototype.getTeardownProcess = function ( data ) { + // Parent method + const process = ve.ui.SidebarEditCheckDialog.super.prototype.getTeardownProcess.call( this, data ); + // Mixin method + return ve.ui.EditCheckDialog.prototype.getTeardownProcess.call( this, data, process ).next( () => { + this.controller.off( 'position', this.onPosition, this ); + } ); +}; + +/** + * Handle position events from the controller + */ +ve.ui.SidebarEditCheckDialog.prototype.onPosition = function () { + if ( this.inBeforeSave ) { + return; + } + const surfaceView = this.surface.getView(); + const surfaceTop = surfaceView.$element.offset().top + 10; + this.currentActions.forEach( ( action ) => { + const widget = action.widget; + if ( widget ) { + let top = Infinity; + action.getHighlightSelections().forEach( ( selection ) => { + const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); + const rect = selectionView.getSelectionBoundingRect(); + if ( !rect ) { + return; + } + top = Math.min( top, rect.top ); + } ); + widget.$element.css( 'margin-top', '' ); + widget.$element.css( + 'margin-top', + Math.max( 0, top + surfaceTop - widget.$element.offset().top ) + ); + } + } ); +}; + +/** + * @inheritdoc ve.ui.EditCheckDialog + */ +ve.ui.SidebarEditCheckDialog.prototype.onToggleCollapse = function () { + // mixin + ve.ui.EditCheckDialog.prototype.onToggleCollapse.apply( this, arguments ); + + this.onPosition(); +}; + +/* Registration */ + +ve.ui.windowFactory.register( ve.ui.SidebarEditCheckDialog ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 5276c5dbed..9250e6af99 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -13,9 +13,13 @@ mw.editcheck = { require( './utils.js' ); require( './EditCheckDialog.js' ); +require( './FixedEditCheckDialog.js' ); +require( './SidebarEditCheckDialog.js' ); require( './EditCheckGutterSidebarDialog.js' ); +require( './EditCheckPreSaveToolbarTools.js' ); require( './EditCheckFactory.js' ); require( './EditCheckAction.js' ); +require( './EditCheckActionWidget.js' ); require( './BaseEditCheck.js' ); require( './AsyncTextCheck.js' ); @@ -98,44 +102,3 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.forceEnab controller.setup(); } ); } - -// This is for the toolbar: - -ve.ui.EditCheckBack = function VeUiEditCheckBack() { - // Parent constructor - ve.ui.EditCheckBack.super.apply( this, arguments ); - - this.setDisabled( false ); -}; -OO.inheritClass( ve.ui.EditCheckBack, ve.ui.Tool ); -ve.ui.EditCheckBack.static.name = 'editCheckBack'; -ve.ui.EditCheckBack.static.icon = 'previous'; -ve.ui.EditCheckBack.static.autoAddToCatchall = false; -ve.ui.EditCheckBack.static.autoAddToGroup = false; -ve.ui.EditCheckBack.static.title = - OO.ui.deferMsg( 'visualeditor-backbutton-tooltip' ); -ve.ui.EditCheckBack.prototype.onSelect = function () { - const surface = this.toolbar.getSurface(); - surface.getContext().hide(); - surface.execute( 'window', 'close', 'fixedEditCheckDialog' ); - this.setActive( false ); - ve.track( 'activity.' + this.getName(), { action: 'tool-used' } ); -}; -ve.ui.EditCheckBack.prototype.onUpdateState = function () { - this.setDisabled( false ); -}; -ve.ui.toolFactory.register( ve.ui.EditCheckBack ); - -ve.ui.EditCheckSaveDisabled = function VeUiEditCheckSaveDisabled() { - // Parent constructor - ve.ui.EditCheckSaveDisabled.super.apply( this, arguments ); -}; -OO.inheritClass( ve.ui.EditCheckSaveDisabled, ve.ui.MWSaveTool ); -ve.ui.EditCheckSaveDisabled.static.name = 'showSaveDisabled'; -ve.ui.EditCheckSaveDisabled.static.autoAddToCatchall = false; -ve.ui.EditCheckSaveDisabled.static.autoAddToGroup = false; -ve.ui.EditCheckSaveDisabled.prototype.onUpdateState = function () { - this.setDisabled( true ); -}; - -ve.ui.toolFactory.register( ve.ui.EditCheckSaveDisabled ); diff --git a/extension.json b/extension.json index e1a9c662d5..e25495d345 100644 --- a/extension.json +++ b/extension.json @@ -638,9 +638,13 @@ "editcheck/modules/utils.js", "editcheck/modules/controller.js", "editcheck/modules/EditCheckDialog.js", + "editcheck/modules/FixedEditCheckDialog.js", + "editcheck/modules/SidebarEditCheckDialog.js", "editcheck/modules/EditCheckGutterSidebarDialog.js", + "editcheck/modules/EditCheckPreSaveToolbarTools.js", "editcheck/modules/EditCheckFactory.js", "editcheck/modules/EditCheckAction.js", + "editcheck/modules/EditCheckActionWidget.js", "editcheck/modules/BaseEditCheck.js", "editcheck/modules/AsyncTextCheck.js", "editcheck/modules/editchecks/AddReferenceEditCheck.js", From 85741b91969a9b939b9d625c82be5dfc0c2fc6b2 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 23 Jun 2025 16:05:01 +0100 Subject: [PATCH 399/730] Target#initAutosave: Remove deprecated function signature This was fixed in DT a while ago. Change-Id: I9ee2cba9c0f9c60f183e1d6e0126ffaeb143e6ea --- modules/ve-mw/init/targets/ve.init.mw.Target.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.Target.js b/modules/ve-mw/init/targets/ve.init.mw.Target.js index 5643fb598e..95ab412128 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.Target.js +++ b/modules/ve-mw/init/targets/ve.init.mw.Target.js @@ -432,13 +432,7 @@ ve.init.mw.Target.prototype.setSurface = function ( surface ) { * @param {number} [config.storageExpiry] Storage expiry time in seconds (optional) */ ve.init.mw.Target.prototype.initAutosave = function ( config ) { - // Old function signature - // TODO: Remove after fixed downstream - if ( typeof config === 'boolean' ) { - config = { suppressNotification: config }; - } else { - config = config || {}; - } + config = config || {}; const surfaceModel = this.getSurface().getModel(); From a3abfe3845d236dd8824e285f1d2b15b3aa669f3 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 23 Jun 2025 16:13:29 +0100 Subject: [PATCH 400/730] Add default params to config options Change-Id: I8bd8f23d0f2a7054e54548c68e7ac902bc23d96c --- editcheck/modules/EditCheckActionWidget.js | 2 -- modules/ve-mw-collab/ve.init.mw.CollabTarget.js | 3 +-- modules/ve-mw/dm/models/ve.dm.MWImageModel.js | 4 +--- .../init/targets/ve.init.mw.ArticleTarget.js | 5 ++--- .../targets/ve.init.mw.MobileArticleTarget.js | 5 ++--- modules/ve-mw/init/targets/ve.init.mw.Target.js | 15 +++++---------- .../preinit/ve.init.mw.ArticleTargetLoader.js | 9 +++------ .../preinit/ve.init.mw.ArticleTargetSaver.js | 6 ++---- modules/ve-mw/tests/ve.test.utils.js | 3 +-- .../ve-mw/ui/dialogs/ve.ui.MWExtensionDialog.js | 9 +++------ modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js | 9 +++------ .../ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js | 8 ++------ .../ui/inspectors/ve.ui.MWExtensionInspector.js | 9 +++------ .../ve.ui.MWLanguageVariantInspector.js | 3 +-- .../ui/inspectors/ve.ui.MWLinkNodeInspector.js | 3 +-- .../inspectors/ve.ui.MWMagicLinkNodeInspector.js | 3 +-- .../ve.ui.MWWikitextLinkAnnotationInspector.js | 3 +-- .../ui/pages/ve.ui.MWAdvancedSettingsPage.js | 4 +--- modules/ve-mw/ui/pages/ve.ui.MWCategoriesPage.js | 9 +++------ modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js | 4 +--- .../ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js | 3 --- .../ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js | 3 --- .../ve-mw/ui/widgets/ve.ui.MWEditSummaryWidget.js | 4 +--- .../ui/widgets/ve.ui.MWEducationPopupWidget.js | 2 -- .../ui/widgets/ve.ui.MWGalleryGroupWidget.js | 5 +---- .../ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js | 5 +---- .../ui/widgets/ve.ui.MWMediaInfoFieldWidget.js | 5 +---- 27 files changed, 41 insertions(+), 102 deletions(-) diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index 3b8a9714f1..bae1593603 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -13,8 +13,6 @@ * @param {string} [config.mode] Mode for the action set widget */ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) { - config = config || {}; - this.singleAction = config.singleAction; this.mode = config.mode || ''; diff --git a/modules/ve-mw-collab/ve.init.mw.CollabTarget.js b/modules/ve-mw-collab/ve.init.mw.CollabTarget.js index a29aedf98d..b1bc3c1101 100644 --- a/modules/ve-mw-collab/ve.init.mw.CollabTarget.js +++ b/modules/ve-mw-collab/ve.init.mw.CollabTarget.js @@ -17,8 +17,7 @@ * @param {Object} [config] Configuration options * @param {mw.Title} [config.importTitle] Title to import */ -ve.init.mw.CollabTarget = function VeInitMwCollabTarget( title, rebaserUrl, config ) { - config = config || {}; +ve.init.mw.CollabTarget = function VeInitMwCollabTarget( title, rebaserUrl, config = {} ) { config.toolbarConfig = ve.extendObject( { shadow: true, actions: true, diff --git a/modules/ve-mw/dm/models/ve.dm.MWImageModel.js b/modules/ve-mw/dm/models/ve.dm.MWImageModel.js index 7b6d5153f4..889d7a5748 100644 --- a/modules/ve-mw/dm/models/ve.dm.MWImageModel.js +++ b/modules/ve-mw/dm/models/ve.dm.MWImageModel.js @@ -19,9 +19,7 @@ * @param {Object} [config.minDimensions={}] Minimum dimensions, width & height * @param {boolean} [config.isDefaultSize=false] Object is using its default size dimensions */ -ve.dm.MWImageModel = function VeDmMWImageModel( parentDoc, config ) { - config = config || {}; - +ve.dm.MWImageModel = function VeDmMWImageModel( parentDoc, config = {} ) { // Mixin constructors OO.EventEmitter.call( this ); diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 4895d50c4e..c57164fa04 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -18,8 +18,7 @@ * @param {Object} [config.toolbarConfig] * @param {boolean} [config.register=true] */ -ve.init.mw.ArticleTarget = function VeInitMwArticleTarget( config ) { - config = config || {}; +ve.init.mw.ArticleTarget = function VeInitMwArticleTarget( config = {} ) { config.toolbarConfig = ve.extendObject( { shadow: true, actions: true, @@ -1732,7 +1731,7 @@ ve.init.mw.ArticleTarget.prototype.track = function ( name ) { /** * @inheritdoc */ -ve.init.mw.ArticleTarget.prototype.createSurface = function ( dmDoc, config ) { +ve.init.mw.ArticleTarget.prototype.createSurface = function ( dmDoc, config = {} ) { const sections = dmDoc.getNodesByType( 'section' ); let attachedRoot; if ( sections.length && sections.length === 1 ) { diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index 06a5c1243b..598eb1cc97 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -21,12 +21,11 @@ * @param {Object} [config.toolbarConfig] * @param {string|null} [config.section] Number of the section target should scroll to */ -ve.init.mw.MobileArticleTarget = function VeInitMwMobileArticleTarget( overlay, config ) { +ve.init.mw.MobileArticleTarget = function VeInitMwMobileArticleTarget( overlay, config = {} ) { this.overlay = overlay; this.$overlay = overlay.$el; this.$overlaySurface = overlay.$el.find( '.surface' ); - config = config || {}; config.toolbarConfig = ve.extendObject( { actions: false }, config.toolbarConfig ); @@ -263,7 +262,7 @@ ve.init.mw.MobileArticleTarget.prototype.onSurfaceScroll = function () { /** * @inheritdoc */ -ve.init.mw.MobileArticleTarget.prototype.createSurface = function ( dmDoc, config ) { +ve.init.mw.MobileArticleTarget.prototype.createSurface = function ( dmDoc, config = {} ) { if ( this.overlay.isNewPage ) { config = ve.extendObject( { placeholder: this.overlay.options.placeholder diff --git a/modules/ve-mw/init/targets/ve.init.mw.Target.js b/modules/ve-mw/init/targets/ve.init.mw.Target.js index 95ab412128..9853b3aad6 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.Target.js +++ b/modules/ve-mw/init/targets/ve.init.mw.Target.js @@ -319,7 +319,7 @@ ve.init.mw.Target.prototype.createTargetWidget = function ( config ) { /** * @inheritdoc */ -ve.init.mw.Target.prototype.createSurface = function ( dmDoc, config ) { +ve.init.mw.Target.prototype.createSurface = function ( dmDoc, config = {} ) { if ( config && config.mode === 'source' ) { const importRules = ve.copy( this.constructor.static.importRules ); importRules.all = importRules.all || {}; @@ -431,9 +431,7 @@ ve.init.mw.Target.prototype.setSurface = function ( surface ) { * @param {ve.init.SafeStorage} [config.storage] Storage interface * @param {number} [config.storageExpiry] Storage expiry time in seconds (optional) */ -ve.init.mw.Target.prototype.initAutosave = function ( config ) { - config = config || {}; - +ve.init.mw.Target.prototype.initAutosave = function ( config = {} ) { const surfaceModel = this.getSurface().getModel(); if ( config.docId ) { @@ -604,9 +602,8 @@ ve.init.mw.Target.prototype.getWikitextFragment = function ( doc, useRevision ) * @param {Object} [ajaxOptions] * @return {jQuery.Promise} Abortable promise */ -ve.init.mw.Target.prototype.parseWikitextFragment = function ( wikitext, pst, doc, ajaxOptions ) { +ve.init.mw.Target.prototype.parseWikitextFragment = function ( wikitext, pst, doc, ajaxOptions = {} ) { const api = this.getContentApi( doc ); - ajaxOptions = ajaxOptions || {}; const abortable = api.makeAbortablePromise( ajaxOptions ); // Acquire a temporary user username before previewing or diffing, so that signatures and @@ -651,8 +648,7 @@ ve.init.mw.Target.prototype.getPageName = function () { * include action=query, format=json, and formatversion=2 if not specified otherwise. * @return {mw.Api} */ -ve.init.mw.Target.prototype.getContentApi = function ( doc, options ) { - options = options || {}; +ve.init.mw.Target.prototype.getContentApi = function ( doc, options = {} ) { options.parameters = ve.extendObject( { formatversion: 2 }, options.parameters ); return new mw.Api( options ); }; @@ -666,8 +662,7 @@ ve.init.mw.Target.prototype.getContentApi = function ( doc, options ) { * @param {Object} [options] API options * @return {mw.Api} */ -ve.init.mw.Target.prototype.getLocalApi = function ( options ) { - options = options || {}; +ve.init.mw.Target.prototype.getLocalApi = function ( options = {} ) { options.parameters = ve.extendObject( { formatversion: 2 }, options.parameters ); return new mw.Api( options ); }; diff --git a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js index b31514c3d4..27629ec09a 100644 --- a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js +++ b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js @@ -223,8 +223,7 @@ * @param {string[]} [options.preloadparams] Parameters to substitute into preload if it's used * @return {jQuery.Promise} Abortable promise resolved with a JSON object */ - requestPageData: function ( mode, pageName, options ) { - options = options || {}; + requestPageData: function ( mode, pageName, options = {} ) { if ( mode === 'visual' && options.section === 'new' ) { throw new Error( 'Adding new section is not supported in visual mode' ); } @@ -304,11 +303,10 @@ * is not required for some use cases, e.g. diffing. * @return {jQuery.Promise} Abortable promise resolved with a JSON object */ - requestParsoidData: function ( pageName, options, noRestbase, noMetadata ) { + requestParsoidData: function ( pageName, options = {}, noRestbase = false, noMetadata = false ) { const section = options.section !== undefined ? options.section : null, useRestbase = !noRestbase && ( conf.fullRestbaseUrl || conf.restbaseUrl ) && section === null; - options = options || {}; const data = { action: 'visualeditor', paction: useRestbase ? 'metadata' : 'parse', @@ -499,8 +497,7 @@ * @param {Object} [options] See #requestPageData * @return {jQuery.Promise} Abortable promise resolved with a JSON object */ - requestWikitext: function ( pageName, options ) { - options = options || {}; + requestWikitext: function ( pageName, options = {} ) { const data = { action: 'visualeditor', paction: 'wikitext', diff --git a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js index 1281dcfe18..e56bac4da5 100644 --- a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js +++ b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js @@ -171,8 +171,7 @@ * @param {Object} [options] * @return {jQuery.Promise} Promise which resolves with API save data, or rejects with error details */ - postHtml: function ( html, cacheKey, extraData, options ) { - options = options || {}; + postHtml: function ( html, cacheKey, extraData = {}, options = {} ) { let data; if ( cacheKey ) { data = $.extend( { cachekey: cacheKey }, extraData ); @@ -215,8 +214,7 @@ * @param {string} [options.eventName] Event name for tracking * @return {jQuery.Promise} Promise which resolves with API save data, or rejects with error details */ - postContent: function ( data, options ) { - options = options || {}; + postContent: function ( data, options = {} ) { const api = options.api || new mw.Api(); let start; diff --git a/modules/ve-mw/tests/ve.test.utils.js b/modules/ve-mw/tests/ve.test.utils.js index 0730bafd76..0a76758fe4 100644 --- a/modules/ve-mw/tests/ve.test.utils.js +++ b/modules/ve-mw/tests/ve.test.utils.js @@ -106,8 +106,7 @@ // On load, teardown overrides so the first core tests run correctly teardownOverrides(); - ve.test.utils.newMwEnvironment = function ( env ) { - env = env || {}; + ve.test.utils.newMwEnvironment = function ( env = {} ) { return QUnit.newMwEnvironment( ve.extendObject( {}, env, { beforeEach: function () { setupOverrides(); diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWExtensionDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWExtensionDialog.js index ce4d122a14..929b49d77b 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWExtensionDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWExtensionDialog.js @@ -49,8 +49,7 @@ ve.ui.MWExtensionDialog.prototype.initialize = function () { /** * @inheritdoc */ -ve.ui.MWExtensionDialog.prototype.getSetupProcess = function ( data ) { - data = data || {}; +ve.ui.MWExtensionDialog.prototype.getSetupProcess = function ( data = {} ) { // Parent process const process = ve.ui.MWExtensionDialog.super.prototype.getSetupProcess.call( this, data ); // Mixin process @@ -60,8 +59,7 @@ ve.ui.MWExtensionDialog.prototype.getSetupProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWExtensionDialog.prototype.getReadyProcess = function ( data ) { - data = data || {}; +ve.ui.MWExtensionDialog.prototype.getReadyProcess = function ( data = {} ) { // Parent process const process = ve.ui.MWExtensionDialog.super.prototype.getReadyProcess.call( this, data ); // Mixin process @@ -71,8 +69,7 @@ ve.ui.MWExtensionDialog.prototype.getReadyProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWExtensionDialog.prototype.getTeardownProcess = function ( data ) { - data = data || {}; +ve.ui.MWExtensionDialog.prototype.getTeardownProcess = function ( data = {} ) { // Parent process const process = ve.ui.MWExtensionDialog.super.prototype.getTeardownProcess.call( this, data ); // Mixin process diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js index f92aac524f..eb3178902b 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWMetaDialog.js @@ -213,8 +213,7 @@ ve.ui.MWMetaDialog.prototype.getActionProcess = function ( action ) { /** * @inheritdoc */ -ve.ui.MWMetaDialog.prototype.getSetupProcess = function ( data ) { - data = data || {}; +ve.ui.MWMetaDialog.prototype.getSetupProcess = function ( data = {} ) { return ve.ui.MWMetaDialog.super.prototype.getSetupProcess.call( this, data ) .next( () => { const surfaceModel = this.getFragment().getSurface(), @@ -269,8 +268,7 @@ ve.ui.MWMetaDialog.prototype.getSetupProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWMetaDialog.prototype.getReadyProcess = function ( data ) { - data = data || {}; +ve.ui.MWMetaDialog.prototype.getReadyProcess = function ( data = {} ) { return ve.ui.MWMetaDialog.super.prototype.getReadyProcess.call( this, data ) .next( () => { if ( data.page && this.bookletLayout.getPage( data.page ) ) { @@ -282,8 +280,7 @@ ve.ui.MWMetaDialog.prototype.getReadyProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWMetaDialog.prototype.getTeardownProcess = function ( data ) { - data = data || {}; +ve.ui.MWMetaDialog.prototype.getTeardownProcess = function ( data = {} ) { return ve.ui.MWMetaDialog.super.prototype.getTeardownProcess.call( this, data ) .first( () => { // Let each page tear itself down ('languages' page doesn't need this yet) diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js index bee5dab57a..9f67e09eab 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js @@ -250,12 +250,9 @@ ve.ui.MWTemplateDialog.prototype.getPageFromPart = function ( part ) { /** * @inheritdoc */ -ve.ui.MWTemplateDialog.prototype.getSelectedNode = function ( data ) { +ve.ui.MWTemplateDialog.prototype.getSelectedNode = function ( data = {} ) { const selectedNode = ve.ui.MWTemplateDialog.super.prototype.getSelectedNode.call( this ); - // Data initialization - data = data || {}; - // Require template to match if specified if ( selectedNode && data.template && !selectedNode.isSingleTemplate( data.template ) ) { return null; @@ -413,8 +410,7 @@ ve.ui.MWTemplateDialog.prototype.getActionProcess = function ( action ) { /** * @inheritdoc */ -ve.ui.MWTemplateDialog.prototype.getSetupProcess = function ( data ) { - data = data || {}; +ve.ui.MWTemplateDialog.prototype.getSetupProcess = function ( data = {} ) { return ve.ui.MWTemplateDialog.super.prototype.getSetupProcess.call( this, data ) .next( () => { let promise; diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWExtensionInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWExtensionInspector.js index e969236f61..2adcddbe37 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWExtensionInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWExtensionInspector.js @@ -50,8 +50,7 @@ ve.ui.MWExtensionInspector.prototype.initialize = function () { /** * @inheritdoc */ -ve.ui.MWExtensionInspector.prototype.getSetupProcess = function ( data ) { - data = data || {}; +ve.ui.MWExtensionInspector.prototype.getSetupProcess = function ( data = {} ) { // Parent process const process = ve.ui.MWExtensionInspector.super.prototype.getSetupProcess.call( this, data ); // Mixin process @@ -61,8 +60,7 @@ ve.ui.MWExtensionInspector.prototype.getSetupProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWExtensionInspector.prototype.getReadyProcess = function ( data ) { - data = data || {}; +ve.ui.MWExtensionInspector.prototype.getReadyProcess = function ( data = {} ) { // Parent process const process = ve.ui.MWExtensionInspector.super.prototype.getReadyProcess.call( this, data ); // Mixin process @@ -75,8 +73,7 @@ ve.ui.MWExtensionInspector.prototype.getReadyProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWExtensionInspector.prototype.getTeardownProcess = function ( data ) { - data = data || {}; +ve.ui.MWExtensionInspector.prototype.getTeardownProcess = function ( data = {} ) { // Parent process const process = ve.ui.MWExtensionInspector.super.prototype.getTeardownProcess.call( this, data ); // Mixin process diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWLanguageVariantInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWLanguageVariantInspector.js index 08bb99c9fe..2463e03b29 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWLanguageVariantInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWLanguageVariantInspector.js @@ -235,8 +235,7 @@ ve.ui.MWLanguageVariantInspector.prototype.getSetupProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWLanguageVariantInspector.prototype.getTeardownProcess = function ( data ) { - data = data || {}; +ve.ui.MWLanguageVariantInspector.prototype.getTeardownProcess = function ( data = {} ) { return ve.ui.MWLanguageVariantInspector.super.prototype.getTeardownProcess.call( this, data ) .first( () => { const surfaceModel = this.getFragment().getSurface(); diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWLinkNodeInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWLinkNodeInspector.js index 55ab1b6cd7..833f1e075f 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWLinkNodeInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWLinkNodeInspector.js @@ -97,8 +97,7 @@ ve.ui.MWLinkNodeInspector.prototype.getReadyProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWLinkNodeInspector.prototype.getTeardownProcess = function ( data ) { - data = data || {}; +ve.ui.MWLinkNodeInspector.prototype.getTeardownProcess = function ( data = {} ) { return ve.ui.MWLinkNodeInspector.super.prototype.getTeardownProcess.call( this, data ) .first( () => { let value = this.targetInput.getValue(); diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWMagicLinkNodeInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWMagicLinkNodeInspector.js index 555f5a5026..d3974c395e 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWMagicLinkNodeInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWMagicLinkNodeInspector.js @@ -142,8 +142,7 @@ ve.ui.MWMagicLinkNodeInspector.prototype.getReadyProcess = function ( data ) { /** * @inheritdoc */ -ve.ui.MWMagicLinkNodeInspector.prototype.getTeardownProcess = function ( data ) { - data = data || {}; +ve.ui.MWMagicLinkNodeInspector.prototype.getTeardownProcess = function ( data = {} ) { return ve.ui.MWMagicLinkNodeInspector.super.prototype.getTeardownProcess.call( this, data ) .first( () => { const surfaceView = this.manager.getSurface().getView(), diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js index 78696f8a15..eecb7cef04 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js @@ -257,8 +257,7 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getSetupProcess = function ( d /** * @inheritdoc */ -ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function ( data ) { - data = data || {}; +ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function ( data = {} ) { // Call grand-parent return ve.ui.FragmentInspector.prototype.getTeardownProcess.call( this, data ) .first( () => { diff --git a/modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js b/modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js index e91e246141..6507789083 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js @@ -241,9 +241,7 @@ ve.ui.MWAdvancedSettingsPage.prototype.setup = function ( fragment, config ) { * * @param {Object} [data] Dialog tear down data */ -ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) { - // Data initialization - data = data || {}; +ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data = {} ) { if ( data.action !== 'done' ) { return; } diff --git a/modules/ve-mw/ui/pages/ve.ui.MWCategoriesPage.js b/modules/ve-mw/ui/pages/ve.ui.MWCategoriesPage.js index 5cec2bd630..4aa70202a0 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWCategoriesPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWCategoriesPage.js @@ -16,10 +16,7 @@ * @param {Object} [config] Configuration options * @param {jQuery} [config.$overlay] Overlay to render dropdowns in */ -ve.ui.MWCategoriesPage = function VeUiMWCategoriesPage( name, config ) { - // Configuration initialization - config = config || {}; - +ve.ui.MWCategoriesPage = function VeUiMWCategoriesPage( name, config = {} ) { // Parent constructor ve.ui.MWCategoriesPage.super.apply( this, arguments ); @@ -224,12 +221,12 @@ ve.ui.MWCategoriesPage.prototype.getCategoryItemForInsertion = function ( item, * Setup categories page. * * @param {ve.dm.SurfaceFragment} fragment Surface fragment - * @param {Object} config + * @param {Object} [config] * @param {Object} [config.data] Dialog setup data * @param {boolean} [config.isReadOnly=false] Dialog is in read-only mode * @return {jQuery.Promise} */ -ve.ui.MWCategoriesPage.prototype.setup = function ( fragment, config ) { +ve.ui.MWCategoriesPage.prototype.setup = function ( fragment, config = {} ) { this.fragment = fragment; this.fragment.getDocument().getMetaList().connect( this, { insert: 'onMetaListInsert', diff --git a/modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js b/modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js index 5dd032df11..a77c2a04e2 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js @@ -325,9 +325,7 @@ ve.ui.MWSettingsPage.prototype.setup = function ( fragment, config ) { * * @param {Object} [data] Dialog tear down data */ -ve.ui.MWSettingsPage.prototype.teardown = function ( data ) { - // Data initialisation - data = data || {}; +ve.ui.MWSettingsPage.prototype.teardown = function ( data = {} ) { if ( data.action !== 'done' ) { return; } diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js index b0d3a8d23b..f0bda2c329 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWAceEditorWidget.js @@ -31,9 +31,6 @@ * autocomplete to */ ve.ui.MWAceEditorWidget = function VeUiMWAceEditorWidget( config ) { - // Configuration - config = config || {}; - this.autocomplete = config.autocomplete || 'none'; this.autocompleteWordList = config.autocompleteWordList || null; diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js index 8853d21dd9..f30d821c90 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js @@ -19,9 +19,6 @@ * @param {jQuery} [config.$overlay] Overlay to render dropdowns in */ ve.ui.MWCategoryWidget = function VeUiMWCategoryWidget( config ) { - // Config initialization - config = config || {}; - // Parent constructor ve.ui.MWCategoryWidget.super.call( this, config ); diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWEditSummaryWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWEditSummaryWidget.js index 0c2061d4dd..ef9dcbc270 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWEditSummaryWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWEditSummaryWidget.js @@ -16,9 +16,7 @@ * @param {Object} [config] Configuration options * @param {number} [config.limit=6] Number of suggestions to show */ -ve.ui.MWEditSummaryWidget = function VeUiMWEditSummaryWidget( config ) { - config = config || {}; - +ve.ui.MWEditSummaryWidget = function VeUiMWEditSummaryWidget( config = {} ) { // Parent method ve.ui.MWEditSummaryWidget.super.call( this, ve.extendObject( { autosize: true, diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWEducationPopupWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWEducationPopupWidget.js index 07334dab0c..2f50011a6e 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWEducationPopupWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWEducationPopupWidget.js @@ -23,8 +23,6 @@ * @param {string} [config.trackingName] */ ve.ui.MWEducationPopupWidget = function VeUiMwEducationPopup( $target, config ) { - config = config || {}; - // HACK: Do not display on platforms other than desktop if ( !( ve.init.mw.DesktopArticleTarget && ve.init.target instanceof ve.init.mw.DesktopArticleTarget ) ) { return; diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWGalleryGroupWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWGalleryGroupWidget.js index 924fddaf71..a5664928be 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWGalleryGroupWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWGalleryGroupWidget.js @@ -16,10 +16,7 @@ * @param {Object} [config] Configuration options * @param {string} [config.orientation='vertical'] */ -ve.ui.MWGalleryGroupWidget = function VeUiMWGalleryGroupWidget( config ) { - // Configuration initialization - config = config || {}; - +ve.ui.MWGalleryGroupWidget = function VeUiMWGalleryGroupWidget( config = {} ) { // Parent constructor ve.ui.MWGalleryGroupWidget.super.apply( this, arguments ); diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js index 18f6a352df..85e209d0f6 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWGalleryItemWidget.js @@ -18,7 +18,7 @@ * @param {boolean} [config.isMobile=false] * @param {boolean} [config.draggable=true] */ -ve.ui.MWGalleryItemWidget = function VeUiMWGalleryItemWidget( imageInfo, config ) { +ve.ui.MWGalleryItemWidget = function VeUiMWGalleryItemWidget( imageInfo, config = {} ) { this.resource = imageInfo.resource; this.altText = imageInfo.altText || ''; this.altTextSame = imageInfo.altTextSame; @@ -39,9 +39,6 @@ ve.ui.MWGalleryItemWidget = function VeUiMWGalleryItemWidget( imageInfo, config this.mediaClass = imageInfo.mediaClass; this.mediaTag = imageInfo.mediaTag; - // Configuration initialization - config = config || {}; - // Parent constructor ve.ui.MWGalleryItemWidget.super.call( this, config ); diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWMediaInfoFieldWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWMediaInfoFieldWidget.js index 5456ae4fb3..c89d4a4406 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWMediaInfoFieldWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWMediaInfoFieldWidget.js @@ -24,10 +24,7 @@ * @param {string} [config.type='attribute'] Field type, either 'description' or 'attribute' * @param {string} [config.descriptionHeight='4em'] Height limit for description fields */ -ve.ui.MWMediaInfoFieldWidget = function VeUiMWMediaInfoFieldWidget( content, config ) { - // Configuration initialization - config = config || {}; - +ve.ui.MWMediaInfoFieldWidget = function VeUiMWMediaInfoFieldWidget( content, config = {} ) { // Parent constructor ve.ui.MWMediaInfoFieldWidget.super.call( this, config ); From cc968eb06733d00a66e367db18ace2062871a77b Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 24 Jun 2025 09:29:36 +0200 Subject: [PATCH 401/730] Localisation updates from https://translatewiki.net. Change-Id: Ia5c6375253d2f10765b48c355b51d8c189a59932 --- editcheck/i18n/ar.json | 5 +++-- i18n/ve-mw/ps.json | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index f01e83d394..6aa0fffd43 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -2,7 +2,8 @@ "@metadata": { "authors": [ "Dyolf77 (WMF)", - "Meno25" + "Meno25", + "محمد أحمد عبد الفتاح" ] }, "editcheck-dialog-action-no": "لا", @@ -19,7 +20,7 @@ "editcheck-dialog-addref-success-notify": "شكرًا لكم على إضافة استشهاد!", "editcheck-dialog-addref-title": "إضافة استشهاد", "editcheck-dialog-title": "قبل النشر", - "editcheck-copyvio-title": "محتوى مُلصَق", + "editcheck-copyvio-title": "محتوى ملصوق", "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. هذا عادة ما يشكل انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", "editcheck-tone-title": "إعادة النظر في الأسلوب؟", "editcheck-tone-description": "غالبًا ما يقوم المحررون الآخرون بمراجعة هذا النوع من الكلمات للحصول على أسلوب أكثر توازنًا. [$1 التعرف على المزيد]", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 5a1bb5fe5a..cc79b132a9 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -69,7 +69,7 @@ "visualeditor-dialog-media-search-tab-search": "پلټل", "visualeditor-dialog-media-search-tab-upload": "پورته کول", "visualeditor-dialog-media-size-section": "انځور کچه", - "visualeditor-dialog-media-title": "د رسنۍ امستنې", + "visualeditor-dialog-media-title": "د رسنۍ اوڼنې", "visualeditor-dialog-media-type-border": "پوله", "visualeditor-dialog-media-type-frame": "چوکاټ", "visualeditor-dialog-media-type-frameless": "بې چوکاټه", @@ -77,8 +77,8 @@ "visualeditor-dialog-media-type-section": "انځور ډول", "visualeditor-dialog-media-type-thumb": "بټنوک", "visualeditor-dialog-media-upload": "پورته کول", - "visualeditor-dialog-meta-advancedsettings-label": "پرمختللې امستنې", - "visualeditor-dialog-meta-advancedsettings-section": "پرمختللې امستنې", + "visualeditor-dialog-meta-advancedsettings-label": "پرمختللې اوڼنې", + "visualeditor-dialog-meta-advancedsettings-section": "پرمختللې اوڼنې", "visualeditor-dialog-meta-categories-addcategory-label": "دې مخ ته وېشنيزه ورگډول", "visualeditor-dialog-meta-categories-category": "وېشنيزه", "visualeditor-dialog-meta-categories-data-label": "وېشنيزې", @@ -105,7 +105,7 @@ "visualeditor-dialog-meta-settings-index-force": "هو", "visualeditor-dialog-meta-settings-index-help": "تاسې کولای شئ چې پلټن ماشينونه دې ته اړ باسئ چې همدا مخ خپلو اړوندو پايلو لړليک کې راوړي او يا هم اړ يې باسئ چې را يې نه وړي.", "visualeditor-dialog-meta-settings-index-label": "همدا مخ د پلټنې ماشينونو له خوا ليکلړ کښنې ته پرېښودل", - "visualeditor-dialog-meta-settings-label": "مخ امستنې", + "visualeditor-dialog-meta-settings-label": "مخ اوڼنې", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "تلواليز", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "نه", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "هو", @@ -113,7 +113,7 @@ "visualeditor-dialog-meta-settings-redirect-label": "همدې مخ ته مخ ورگرځول", "visualeditor-dialog-meta-settings-redirect-placeholder": "د مخ گرځونې لپاره د موخې مخ", "visualeditor-dialog-meta-settings-redirect-staticlabel": "د موخې مخ د لېږدولو په وخت کې د همدې مخ گرځونې د هممهالېدنې مخنيوی کول", - "visualeditor-dialog-meta-settings-section": "مخ امستنې", + "visualeditor-dialog-meta-settings-section": "مخ اوڼنې", "visualeditor-dialog-meta-settings-toc-default": "د اړتيا په وخت کې", "visualeditor-dialog-meta-settings-toc-disable": "هېڅکله", "visualeditor-dialog-meta-settings-toc-force": "تل", @@ -237,7 +237,7 @@ "visualeditor-savedialog-title-save": "بدلونونه مو خوندي کړئ", "visualeditor-section-body-placeholder": "نوې برخه", "visualeditor-section-title-placeholder": "سکالو", - "visualeditor-settings-tool": "مخ امستنې", + "visualeditor-settings-tool": "مخ اوڼنې", "visualeditor-special-characters-group-other": "اکثر کارېدونکی", "visualeditor-tooltip-non-breaking-space": "نه ماتېدونکی واټن", "visualeditor-version-label": "بل‌بڼه", From f3972e8a39e2a70aa88074741369b86727894328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Tue, 24 Jun 2025 11:30:26 +0100 Subject: [PATCH 402/730] Added some JsDoc to EditCheckFactory Bug: T397616 Change-Id: I683094b968bb7837119f35646301d8821587cb97 --- editcheck/modules/EditCheckFactory.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index 04eaa425ce..1b93b22374 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -1,6 +1,11 @@ /** * EditCheckFactory * + * This class provides a registry of Edit Checks, and instantiates and calls them when createAllByListener() is called. + * + * The controller keeps track of the actions which have been returned by previous invocations, and deduplicates actions + * which it has seen before. This allows us to keep state (mostly) out of the checks and EditCheckFactory itself. + * * @class * @constructor * @extends OO.Factory @@ -85,6 +90,12 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener /** * Create all checks actions for a given listener * + * Invoked by Controller.prototype.updateForListener, which itself is called in response to user actions such as + * navigating away from a paragraph, making changes to the document, or clicking 'Save changes...' + * + * Checks are created statelessly and then mapped to their 'originals' by the controller. The existing actions are + * provided so that checks may, if necessary, do this mapping themselves in order to add state. + * * TODO: Rename to createAllActionsByListener * * @param {mw.editcheck.Controller} controller From 5a90a4b47d314c5e65f0ca93ef4085fb7c365c80 Mon Sep 17 00:00:00 2001 From: David Chan Date: Mon, 16 Jun 2025 19:00:25 +0100 Subject: [PATCH 403/730] Change wording for Tone Check Bug: T390248 Change-Id: I55a03bb45e8c6555412caae8e67396d1058b92c2 --- editcheck/i18n/en.json | 6 ++++-- editcheck/i18n/qqq.json | 4 +++- editcheck/modules/BaseEditCheck.js | 10 ++++++++++ editcheck/modules/EditCheck.less | 7 ++++++- editcheck/modules/EditCheckAction.js | 11 +++++++++++ editcheck/modules/EditCheckActionWidget.js | 8 ++++++++ .../modules/editchecks/experimental/ToneCheck.js | 5 +++++ extension.json | 2 ++ 8 files changed, 49 insertions(+), 4 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index 3bf4396bea..5e656ab1f3 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -23,8 +23,10 @@ "editcheck-copyvio-title": "Pasted content", "editcheck-copyvio-description": "As a general rule, do not copy text from other sources. Doing so usually constitutes both a copyright violation and plagiarism.", "editcheck-tone-title": "Revise Tone?", - "editcheck-tone-description": "Other editors often revise this kind of wording to have a more balanced tone. [$1 Learn more]", - "editcheck-tone-descriptionlink": "//en.wikipedia.org/wiki/Wikipedia:Neutral_point_of_view", + "editcheck-tone-description": "Other users often revise this kind of wording, saying the tone is unbalanced. [$1 Learn more]", + "editcheck-tone-descriptionlink": "//meta.wikimedia.org/wiki/Special:MyLanguage/Neutral_point_of_view", + "editcheck-tone-footer": "Identified using a [$1 BERT model]", + "editcheck-tone-footerlink": "//meta.wikimedia.org/wiki/Special:MyLanguage/Machine_learning_models/Proposed/Tone_Check", "editcheck-tone-title-acted": "Revising Tone", "editcheck-tone-description-acted": "Look out for expressions that are flattering, disparaging, vague, cliché, or endorsing of a particular viewpoint.", "editcheck-review-title": "Review changes", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index 0b526ac351..a4716541ea 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -25,7 +25,9 @@ "editcheck-copyvio-description": "Description of pasted content / copyvio check", "editcheck-tone-title": "Title of tone check", "editcheck-tone-description": "Help text explaining the tone check", - "editcheck-tone-descriptionlink": "Link to learn more about the tone check, shown as part of {{msg-mw|editcheck-tone-description}}", + "editcheck-tone-descriptionlink": "{{notranslate}}\nLink to learn more about the tone check, shown as part of {{msg-mw|editcheck-tone-description}}", + "editcheck-tone-footer": "Footer explaining the tone check model", + "editcheck-tone-footerlink": "{{notranslate}}\nLink to the tone check model card, shown as part of {{msg-mw|editcheck-tone-footer}}", "editcheck-tone-title-acted": "Title of tone check after it has been acted on", "editcheck-tone-description-acted": "Help text explaining the tone check after it has been acted on", "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/BaseEditCheck.js index c601add384..09bce21dfd 100644 --- a/editcheck/modules/BaseEditCheck.js +++ b/editcheck/modules/BaseEditCheck.js @@ -98,6 +98,16 @@ mw.editcheck.BaseEditCheck.prototype.getTitle = function () { return this.constructor.static.title; }; +/** + * Get the footer of the check, if any + * + * @param {mw.editcheck.EditCheckAction} action + * @return {jQuery|string|Function|OO.ui.HtmlSnippet|undefined} + */ +mw.editcheck.BaseEditCheck.prototype.getFooter = function () { + return this.constructor.static.footer || undefined; +}; + /** * @param {mw.editcheck.EditCheckAction} action * @return {string} diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 8b5161c461..ced7f54705 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -149,11 +149,16 @@ cursor: auto; background-color: @background-color-base; margin: @spacing-50 -@spacing-75 -@spacing-50 -@spacing-75; - padding: @spacing-50 @spacing-75 @spacing-100; + padding: @spacing-50 @spacing-75 @spacing-75; } &-actions { margin-top: @spacing-100; + margin-bottom: @spacing-100; + } + + &-footer { + color: @color-disabled; } &:not( .ve-ui-editCheckActionWidget-collapsed ) { diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 6a8cdde364..2daee1cc7b 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -24,6 +24,7 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.fragments = config.fragments; this.focusFragment = config.focusFragment; this.message = config.message; + this.footer = config.footer; this.id = config.id; this.paused = config.paused || false; this.title = config.title; @@ -69,6 +70,15 @@ mw.editcheck.EditCheckAction.prototype.getTitle = function () { return this.title || this.check.getTitle( this ); }; +/** + * Get the action's footer, if any + * + * @return {jQuery|string|Function|OO.ui.HtmlSnippet} + */ +mw.editcheck.EditCheckAction.prototype.getFooter = function () { + return this.footer || this.check.getFooter(); +}; + /** * Get the available choices * @@ -138,6 +148,7 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi icon: this.icon, label: this.getTitle(), message: this.getDescription(), + footer: this.getFooter(), classes: collapsed ? [ 've-ui-editCheckActionWidget-collapsed' ] : '', mode: this.check.mode, singleAction: singleAction diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index 3b8a9714f1..8ff2677e99 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -26,6 +26,10 @@ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) mw.editcheck.EditCheckActionWidget.super.call( this, config ); this.message = new OO.ui.LabelWidget( { label: config.message } ); + this.footer = config.footer && new OO.ui.LabelWidget( { + label: config.footer, + classes: [ 've-ui-editCheckActionWidget-footer' ] + } ); this.$actions = $( '
' ).addClass( 've-ui-editCheckActionWidget-actions oo-ui-element-hidden' ); this.$element.on( 'click', this.onClick.bind( this ) ); @@ -34,6 +38,10 @@ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) .append( this.message.$element, this.$actions ) .addClass( 've-ui-editCheckActionWidget-body' ); + if ( this.footer ) { + this.$body.append( this.footer.$element ); + } + this.$element .append( this.$body ) .addClass( 've-ui-editCheckActionWidget' ); diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 2409d1d8d1..998780f605 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -60,6 +60,11 @@ mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { .find( 'a' ).attr( 'target', '_blank' ).on( 'click', () => { ve.track( 'activity.editCheck-' + this.getName(), { action: 'click-learn-more' } ); } ).end(), + // eslint-disable-next-line no-jquery/no-append-html + footer: $( '' ).append( ve.htmlMsg( 'editcheck-tone-footer', ve.msg( 'editcheck-tone-footerlink' ) ) ) + .find( 'a' ).attr( 'target', '_blank' ).on( 'click', () => { + ve.track( 'activity.editCheck-' + this.getName(), { action: 'click-model-card' } ); + } ).end(), check: this, choices: [ { diff --git a/extension.json b/extension.json index e25495d345..aa50105b14 100644 --- a/extension.json +++ b/extension.json @@ -682,6 +682,8 @@ "editcheck-tone-title-acted", "editcheck-tone-description", "editcheck-tone-descriptionlink", + "editcheck-tone-footer", + "editcheck-tone-footerlink", "editcheck-tone-description-acted", "editcheck-review-title", "visualeditor-backbutton-tooltip", From 85cf75c1523167a62cdba04685440f1b88d25773 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 30 May 2025 20:29:57 -0500 Subject: [PATCH 404/730] Edit check SLO: migrate old counter stats to statslib Bug: T395444 Change-Id: I690c13df9228b0798aab017d929c3f65ca2676b6 --- editcheck/modules/controller.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ad0c31c9e5..8874e7320d 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -485,7 +485,7 @@ Controller.prototype.setupPreSaveProcess = function () { if ( surface.getMode() !== 'visual' ) { return; } - ve.track( 'counter.editcheck.preSaveChecksAvailable' ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'Available' } ); const oldFocusedAction = this.focusedAction; this.inBeforeSave = true; @@ -528,6 +528,7 @@ Controller.prototype.setupPreSaveProcess = function () { // Someone clicking "read" to leave the article // will trigger the closing of this; in that // case, just abandon what we're doing + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'Abandoned' } ); return ve.createDeferred().reject().promise(); } this.restoreToolbar( target ); @@ -545,13 +546,13 @@ Controller.prototype.setupPreSaveProcess = function () { // before showing save dialog to give user time // to see success notification. setTimeout( () => { - ve.track( 'counter.editcheck.preSaveChecksCompleted' ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'Completed' } ); delay.resolve(); }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); return delay.promise(); } else { // closed via "back" or otherwise - ve.track( 'counter.editcheck.preSaveChecksAbandoned' ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'Abandoned' } ); return ve.createDeferred().reject().promise(); } } ); @@ -561,7 +562,7 @@ Controller.prototype.setupPreSaveProcess = function () { this.inBeforeSave = false; // Counterpart to earlier preSaveChecksShown, for use in tracking // errors in check-generation: - ve.track( 'counter.editcheck.preSaveChecksNotShown' ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'NotShown' } ); } } ); } ); From bec09fc97420384d4b72842700345f5c72d31e7c Mon Sep 17 00:00:00 2001 From: Peter Wangai Date: Tue, 24 Jun 2025 11:59:07 -0500 Subject: [PATCH 405/730] selenium: Upgrade to webdriver.io 9 Bug: T397666 Change-Id: I6f98da05be16b9c48a30010ac545071aba4c48f6 --- package-lock.json | 10433 ++++++++++++++++++++++++++------------------ package.json | 12 +- 2 files changed, 6170 insertions(+), 4275 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9479d3f38e..03bafa04ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,11 @@ "name": "visualeditor", "version": "0.0.0", "devDependencies": { - "@wdio/cli": "7.40.0", - "@wdio/junit-reporter": "7.40.0", - "@wdio/local-runner": "7.40.0", - "@wdio/mocha-framework": "7.40.0", - "@wdio/spec-reporter": "7.40.0", + "@wdio/cli": "9.15.0", + "@wdio/junit-reporter": "9.15.0", + "@wdio/local-runner": "9.15.0", + "@wdio/mocha-framework": "9.15.0", + "@wdio/spec-reporter": "9.15.0", "api-testing": "1.7.1", "eslint-config-wikimedia": "0.30.0", "grunt": "1.6.1", @@ -30,7 +30,7 @@ "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", - "wdio-mediawiki": "2.7.1" + "wdio-mediawiki": "4.1.3" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -43,111 +43,28 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { "version": "7.24.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", @@ -275,172 +192,814 @@ "node": ">=16" } }, - "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==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=18" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10.10.0" + "node": ">=18" } }, - "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==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=18" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/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==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "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.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/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/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "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": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@inquirer/checkbox": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", + "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/confirm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", + "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "dev": true, + "dependencies": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core/node_modules/@types/node": { + "version": "22.15.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz", + "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==", + "dev": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@inquirer/core/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/@inquirer/core/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==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/editor": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", + "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "external-editor": "^3.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/expand": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", + "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz", + "integrity": "sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", + "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/number": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", + "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/password": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", + "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/prompts": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", + "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", + "dev": true, + "dependencies": { + "@inquirer/checkbox": "^3.0.1", + "@inquirer/confirm": "^4.0.1", + "@inquirer/editor": "^3.0.1", + "@inquirer/expand": "^3.0.1", + "@inquirer/input": "^3.0.1", + "@inquirer/number": "^2.0.1", + "@inquirer/password": "^3.0.1", + "@inquirer/rawlist": "^3.0.1", + "@inquirer/search": "^2.0.1", + "@inquirer/select": "^3.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/rawlist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", + "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/search": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", + "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/select": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", + "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "dev": true, + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/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, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" }, "engines": { "node": ">=12" @@ -467,20 +1026,77 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.2.tgz", + "integrity": "sha512-FHF2YdtFBUQOo0/qdgt+6UdBFcNPF/TkVzcc+4vvf8uaBzUlONytGBeeudufIHHW1khRfM1sBbRT1VCK7n/0dQ==", + "dev": true, + "dependencies": { + "@jest/get-type": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz", + "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==", + "dev": true, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz", + "integrity": "sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz", + "integrity": "sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jimp/bmp": { @@ -956,6 +1572,12 @@ "regenerator-runtime": "^0.13.3" } }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, "node_modules/@jsdoc/salty": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz", @@ -1041,17 +1663,68 @@ "node": ">=14" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "node_modules/@promptbook/utils": { + "version": "0.69.5", + "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.69.5.tgz", + "integrity": "sha512-xm5Ti/Hp3o4xHrsK9Yy3MS6KbDxYbq485hDsFvxqaNA7equHLPdo8H8faTitTeb14QCDfLW4iwCxdVYu5sn6YQ==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/webgptorg/promptbook/blob/main/README.md#%EF%B8%8F-contributing" + } + ], + "dependencies": { + "spacetrim": "0.11.59" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz", + "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==", + "dev": true, + "dependencies": { + "debug": "^4.4.1", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.2", + "tar-fs": "^3.0.8", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, "engines": { - "node": ">=10" + "node": ">=18" + } + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.37", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz", + "integrity": "sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==", + "dev": true + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@stylistic/stylelint-config": { @@ -1117,583 +1790,737 @@ "node": ">=4" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "dev": true, - "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "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/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, - "license": "MIT" + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "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/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==", + "dev": true, + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" } }, - "node_modules/@types/diff": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.3.tgz", - "integrity": "sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==", + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true, "license": "MIT" }, - "node_modules/@types/easy-table": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-1.2.3.tgz", - "integrity": "sha512-uT9nuF3D1+KgNXRCft0/Z4BL5S/73D7dZ+Ky4796MvWPgwUp6gLudt1YOfvtOuuet+buFk+WqUR7j1K77gMnAw==", - "deprecated": "This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.", + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true + }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", "dev": true, - "license": "MIT", "dependencies": { - "easy-table": "*" + "@types/node": "*" } }, - "node_modules/@types/ejs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.0.tgz", - "integrity": "sha512-DCg+Ka+uDQ31lJ/UtEXVlaeV3d6t81gifaVWKJy4MYVVgvJttyX/viREy+If7fz+tK/gVxTGMtyrFPnm4gjrVA==", + "node_modules/@types/node": { + "version": "20.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.1.tgz", + "integrity": "sha512-jJD50LtlD2dodAEO653i3YF04NWak6jN3ky+Ri3Em3mGR39/glWiboM/IePaRbgwSfqM1TpGXfAg8ohn/4dTgA==", + "dev": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", + "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", + "dev": true + }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "@types/node": "*" } }, - "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==", + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, - "node_modules/@types/fs-extra": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", - "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/jsonfile": "*", - "@types/node": "*" + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "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.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@types/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/glob/node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/inquirer": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.1.tgz", - "integrity": "sha512-wKW3SKIUMmltbykg4I5JzCVzUhkuD9trD6efAmYgN2MrSntY0SMRQzEnD3mkyJ/rv9NLbTC7g3hKKE86YwEDLw==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { - "@types/through": "*", - "rxjs": "^7.2.0" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "node_modules/@typescript-eslint/utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", + "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-report": "*" + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/json-schema": { - "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/json-stringify-safe": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz", - "integrity": "sha512-UUA1sH0RSRROdInuDOA1yoRzbi5xVFD1RHCoOvNRPTNwR8zBkJ/84PZ6NhKVDtKp0FTeIccJCdQz1X2aJPr4uw==", + "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/@types/jsonfile": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", - "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", + "node_modules/@vitest/pretty-format": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*" + "tinyrainbow": "^1.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "node_modules/@vitest/snapshot": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", + "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*" + "@vitest/pretty-format": "2.1.9", + "magic-string": "^0.30.12", + "pathe": "^1.1.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "dev": true - }, - "node_modules/@types/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", - "dev": true - }, - "node_modules/@types/lodash.flattendeep": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.7.tgz", - "integrity": "sha512-1h6GW/AeZw/Wej6uxrqgmdTDZX1yFS39lRsXYkg+3kWvOWWrlGCI6H7lXxlUHOzxDT4QeYGmgPpQ3BX9XevzOg==", - "dev": true, - "dependencies": { - "@types/lodash": "*" + "node_modules/@wdio/cli": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.15.0.tgz", + "integrity": "sha512-51fuO5nalIFMay94VrAl11hLwcUVrfKZ+4+2lmEtaZKpfTLUj6ugp9ls3suBPgrhWQimikICc1oIs5TmwXHQGg==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.1", + "@vitest/snapshot": "^2.1.1", + "@wdio/config": "9.15.0", + "@wdio/globals": "9.15.0", + "@wdio/logger": "9.15.0", + "@wdio/protocols": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "async-exit-hook": "^2.0.1", + "chalk": "^5.2.0", + "chokidar": "^4.0.0", + "dotenv": "^16.3.1", + "ejs": "^3.1.9", + "execa": "^9.2.0", + "import-meta-resolve": "^4.0.0", + "inquirer": "^11.0.1", + "lodash.flattendeep": "^4.4.0", + "lodash.pickby": "^4.6.0", + "lodash.union": "^4.6.0", + "read-pkg-up": "^10.0.0", + "recursive-readdir": "^2.2.3", + "tsx": "^4.7.2", + "webdriverio": "9.15.0", + "yargs": "^17.7.2" + }, + "bin": { + "wdio": "bin/wdio.js" + }, + "engines": { + "node": ">=18.20.0" } }, - "node_modules/@types/lodash.pickby": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.7.tgz", - "integrity": "sha512-4ebXRusuLflfscbD0PUX4eVknDHD9Yf+uMtBIvA/hrnTqeAzbuHuDjvnYriLjUrI9YrhCPVKUf4wkRSXJQ6gig==", + "node_modules/@wdio/cli/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, - "dependencies": { - "@types/lodash": "*" + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@types/lodash.union": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.7.tgz", - "integrity": "sha512-6HXM6tsnHJzKgJE0gA/LhTGf/7AbjUk759WZ1MziVm+OBNAATHhdgj+a3KVE8g76GCLAnN4ZEQQG1EGgtBIABA==", + "node_modules/@wdio/cli/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "dependencies": { - "@types/lodash": "*" + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@types/markdown-it": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz", - "integrity": "sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==", + "node_modules/@wdio/cli/node_modules/execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", "dev": true, "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.19.84", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.84.tgz", - "integrity": "sha512-ACYy2HGcZPHxEeWTqowTF7dhXN+JU1o7Gr4b41klnn6pj2LD6rsiGqSZojMdk1Jh2ys3m76ap+ae1vvE4+5+vg==", + "node_modules/@wdio/cli/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, - "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true - }, - "node_modules/@types/object-inspect": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.13.0.tgz", - "integrity": "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "node_modules/@types/recursive-readdir": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.1.tgz", - "integrity": "sha512-Xd+Ptc4/F2ueInqy5yK2FI5FxtwwbX2+VZpcg+9oYsFJVen8qQKGapCr+Bi5wQtHU1cTXT8s+07lo/nKPgu8Gg==", + "node_modules/@wdio/cli/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "dependencies": { - "@types/node": "*" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "node_modules/@wdio/cli/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*" + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/stream-buffers": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz", - "integrity": "sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w==", + "node_modules/@wdio/cli/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/supports-color": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", - "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "node_modules/@wdio/cli/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/tmp": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", + "node_modules/@wdio/cli/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, - "license": "MIT" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/@types/ua-parser-js": { - "version": "0.7.39", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", - "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==", + "node_modules/@wdio/cli/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/validator": { - "version": "13.7.2", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz", - "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==", - "dev": true + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, - "node_modules/@types/which": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", - "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==", + "node_modules/@wdio/cli/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, - "license": "MIT" + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@wdio/cli/node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "node_modules/@wdio/cli/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, - "license": "MIT", - "optional": true, "dependencies": { - "@types/node": "*" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", - "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "node_modules/@wdio/cli/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/visitor-keys": "7.12.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/types": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", - "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", + "node_modules/@wdio/cli/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", - "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", + "node_modules/@wdio/cli/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/visitor-keys": "7.12.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/@wdio/cli/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "node_modules/@wdio/cli/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", - "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", + "node_modules/@wdio/cli/node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.12.0", - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/typescript-estree": "7.12.0" + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", - "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "node_modules/@wdio/cli/node_modules/read-pkg-up": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.12.0", - "eslint-visitor-keys": "^3.4.3" + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/@wdio/cli": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.40.0.tgz", - "integrity": "sha512-M0txYEqqamBvJe4FEuqwWq1jd879sElF047BXSv2GRu4R1/iEBPYJHjn9KuL60Fkkpp/L1NMHTl7gW9i445edQ==", + "node_modules/@wdio/cli/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/ejs": "^3.0.5", - "@types/fs-extra": "^11.0.1", - "@types/inquirer": "^8.1.2", - "@types/lodash.flattendeep": "^4.4.6", - "@types/lodash.pickby": "^4.6.6", - "@types/lodash.union": "^4.6.6", - "@types/node": "^18.0.0", - "@types/recursive-readdir": "^2.2.0", - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.27.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "async-exit-hook": "^2.0.1", - "chalk": "^4.0.0", - "chokidar": "^3.0.0", - "cli-spinners": "^2.1.0", - "ejs": "^3.0.1", - "fs-extra": "^11.1.1", - "inquirer": "8.2.4", - "lodash.flattendeep": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.union": "^4.6.0", - "mkdirp": "^3.0.0", - "recursive-readdir": "^2.2.2", - "webdriverio": "7.40.0", - "yargs": "^17.0.0", - "yarn-install": "^1.0.0" - }, - "bin": { - "wdio": "bin/wdio.js" + "engines": { + "node": ">= 14.18.0" }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wdio/cli/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": ">=12.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wdio/cli/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "node_modules/@wdio/cli/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" + "engines": { + "node": ">=16" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@wdio/config": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.40.0.tgz", - "integrity": "sha512-ayQELXyxa+k9/2a509F5a1oTsCa/w8D1nDrd+hzm+1mYb4Te2lceWCCzm+atGKkMpvjLH4GvhrEBYLh3rIWk2A==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.15.0.tgz", + "integrity": "sha512-IQzSZx2Y0KdAVWHSdcBLkuUjCmYtOnc1oDY7Psi814wDR7dEPVOuKgMo8ZZ0P1yhioMzqvy5tBemYSzj7CrFTA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/glob": "^8.1.0", - "@wdio/logger": "7.26.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "deepmerge": "^4.0.0", - "glob": "^8.0.3" + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "deepmerge-ts": "^7.0.3", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" } }, "node_modules/@wdio/config/node_modules/brace-expansion": { @@ -1706,116 +2533,182 @@ } }, "node_modules/@wdio/config/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=12" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@wdio/config/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@wdio/dot-reporter": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.15.0.tgz", + "integrity": "sha512-dga+nwqZtsruAnERYGXa41O/APPpG6IClXA0gk35zKe24aMez/XgU7ZDHVJ3JYGmr7XTSEGiWXudvthaX/EbSg==", + "dev": true, + "dependencies": { + "@wdio/reporter": "9.15.0", + "@wdio/types": "9.15.0", + "chalk": "^5.0.1" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/dot-reporter/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wdio/globals": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.15.0.tgz", + "integrity": "sha512-4bEnqoHr676x4hyq7yOp+V+wVgclisNeOwMyLPEIJOv+cAAxESzIOdFyiQcbAu7gq+HUIuoWMZGlV9UgDnXh1w==", + "dev": true, + "engines": { + "node": ">=18.20.0" + }, + "optionalDependencies": { + "expect-webdriverio": "^5.1.0", + "webdriverio": "9.15.0" } }, "node_modules/@wdio/junit-reporter": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.40.0.tgz", - "integrity": "sha512-nGxzvdCBHUQOtKbCrihO+MjLdfyeYPVeoCAWBNbPHP06nnjsoVDT7k1Ic7BwAbrDZn1SUOVhwdGOxqDdc1E8Fg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.15.0.tgz", + "integrity": "sha512-ZulPH628zp/V1IolHtMkLPEmlWeoAa4Go5hAe46wyfB879PHD9bm5RUXZYJvVAphlvvSljpXd4YOqINN0hWVuQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/json-stringify-safe": "^5.0.0", - "@types/validator": "^13.1.3", - "@wdio/reporter": "7.40.0", - "@wdio/types": "7.40.0", + "@wdio/reporter": "9.15.0", + "@wdio/types": "9.15.0", "json-stringify-safe": "^5.0.1", - "junit-report-builder": "^3.0.0", - "validator": "^13.0.0" + "junit-report-builder": "^5.1.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/local-runner": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.15.0.tgz", + "integrity": "sha512-SbmQpzXSxaLvvjDAJpHvfRq5Df9nfdD3LxOM/L4QytI09rK3Y94Re2QEFIk1MyFmUAuoIgJ99L4TSRw9hhrIbg==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0", + "@wdio/logger": "9.15.0", + "@wdio/repl": "9.4.4", + "@wdio/runner": "9.15.0", + "@wdio/types": "9.15.0", + "async-exit-hook": "^2.0.1", + "split2": "^4.1.0", + "stream-buffers": "^3.0.2" }, - "peerDependencies": { - "@wdio/cli": "^7.0.0" + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/logger": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.15.0.tgz", + "integrity": "sha512-3IkaissyOsUQwg8IinkVm1svsvRMGJpFyaSiEhQ0oQXD7mnWrNVFSU9kmeFvbKAtoc4j60FRjU6XqtH94xRceg==", + "dev": true, + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/logger/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/@wdio/local-runner": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.40.0.tgz", - "integrity": "sha512-OBuN7TlFhbPUH7Wbh2S8OKZOjeW4rHXOfuGzJfaKkzjHje2Dqide/uC3Gd25MwmzgZcVkOo9DUYiGFCHXc44ug==", + "node_modules/@wdio/logger/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/stream-buffers": "^3.0.3", - "@wdio/logger": "7.26.0", - "@wdio/repl": "7.40.0", - "@wdio/runner": "7.40.0", - "@wdio/types": "7.40.0", - "async-exit-hook": "^2.0.1", - "split2": "^4.0.0", - "stream-buffers": "^3.0.2" - }, "engines": { - "node": ">=12.0.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependencies": { - "@wdio/cli": "^7.0.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@wdio/logger": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz", - "integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==", + "node_modules/@wdio/logger/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, - "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@wdio/mocha-framework": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.40.0.tgz", - "integrity": "sha512-Pc+c4M07qhz3CdhitETWq8htMPb3xwmmQF5CKUpcy+F6nBTy4Q3wDOSLRQnFD7iP+JqnpJ2o3k1NPeuNYc7+CQ==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.15.0.tgz", + "integrity": "sha512-sM9NK3vQA+gITS8OlBB14F85xg4gPD4oBM4kLhgvbFqyCNGMe8yy9P5c9D8Ti0ISUDkkfgAcN2EwMqBp/Ot2Lg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/mocha": "^10.0.0", - "@wdio/logger": "7.26.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "expect-webdriverio": "^3.0.0", - "mocha": "^10.0.0" + "@types/mocha": "^10.0.6", + "@types/node": "^20.11.28", + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "mocha": "^10.3.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" } }, "node_modules/@wdio/mocha-framework/node_modules/brace-expansion": { @@ -1827,23 +2720,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@wdio/mocha-framework/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@wdio/mocha-framework/node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -1911,12 +2787,6 @@ "node": ">= 14.0.0" } }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -1945,126 +2815,144 @@ } }, "node_modules/@wdio/protocols": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz", - "integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.15.0.tgz", + "integrity": "sha512-5O7bwiG7t8nmSVOx888YryO/9AQgQ7p/Ecd9rS13UyDQL169HmVKXP0vvJKGH3X+oeE92U1wVrwrIl4Xx3BQ6Q==", + "dev": true }, "node_modules/@wdio/repl": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.40.0.tgz", - "integrity": "sha512-6tzT7lOMxBwdqMVdW4QxlzrQadGPta4HedFcJo4LyRz9PkXPTF68qeIGs0GyZvy/5AqspNWaAJvIR7f3T3tCyw==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz", + "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", "dev": true, - "license": "MIT", "dependencies": { - "@wdio/utils": "7.40.0" + "@types/node": "^20.1.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" } }, "node_modules/@wdio/reporter": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.40.0.tgz", - "integrity": "sha512-nWVh20JONsN4xf2PRWAS+81r1a6t6M5OtlVOti7G8/pODCul1kxmi9l07s0JaU9g64C1nDc4bOxvAPOWR3/wIw==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.15.0.tgz", + "integrity": "sha512-p120dZr+fUQ7HE54L/RDG/7BfE/LkFORyNaZ/G2KE6gEr8gIyL3sW9kVbTZtYOBW68KgU+CC7x4yxfZCXfRUuw==", "dev": true, - "license": "MIT", "dependencies": { - "@types/diff": "^5.0.0", - "@types/node": "^18.0.0", - "@types/object-inspect": "^1.8.0", - "@types/supports-color": "^8.1.0", - "@types/tmp": "^0.2.0", - "@wdio/types": "7.40.0", - "diff": "^5.0.0", - "fs-extra": "^11.1.1", - "object-inspect": "^1.10.3", - "supports-color": "8.1.1" + "@types/node": "^20.1.0", + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "diff": "^7.0.0", + "object-inspect": "^1.12.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/reporter/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "engines": { + "node": ">=0.3.1" } }, "node_modules/@wdio/runner": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.40.0.tgz", - "integrity": "sha512-3dGn8sU9Oc0kTq+hcxNSqkF1acqiTAzamyNWsWXAX7V0FOfZxp0wmD9aMqY+sVT6g8mUE5aePT1ydONE5o+6QA==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.15.0.tgz", + "integrity": "sha512-KHDM4L02Aqmmsi83Yum2c026eNqpQysrMPnHiSzZm0+wMmDNLIMwq6xAj/vlBHDiVgrSKho3LlMz7mNyagkkgw==", "dev": true, - "license": "MIT", "dependencies": { - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "deepmerge": "^4.0.0", - "gaze": "^1.1.2", - "webdriver": "7.40.0", - "webdriverio": "7.40.0" + "@types/node": "^20.11.28", + "@wdio/config": "9.15.0", + "@wdio/dot-reporter": "9.15.0", + "@wdio/globals": "9.15.0", + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "deepmerge-ts": "^7.0.3", + "expect-webdriverio": "^5.1.0", + "webdriver": "9.15.0", + "webdriverio": "9.15.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" } }, "node_modules/@wdio/spec-reporter": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.40.0.tgz", - "integrity": "sha512-DhkfnWrN/X0DKpj/maIsk76yr5iG0t/ZbbajtBXLv9lMn8j+ALY34dfj0mvvTKX77wlzDtgeuC+8BzxPKBWU6g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.15.0.tgz", + "integrity": "sha512-xu8uVGyk2HEAvdzPmspxTJMJc3UxGzdKjqNIUVpCQpVYkKOd6zm1RH2Cpdb7gsx2j/+ddYZEVhftFGR9YOQF6g==", "dev": true, - "license": "MIT", "dependencies": { - "@types/easy-table": "^1.2.0", - "@wdio/reporter": "7.40.0", - "@wdio/types": "7.40.0", - "chalk": "^4.0.0", - "easy-table": "^1.1.1", - "pretty-ms": "^7.0.0" + "@wdio/reporter": "9.15.0", + "@wdio/types": "9.15.0", + "chalk": "^5.1.2", + "easy-table": "^1.2.0", + "pretty-ms": "^9.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/spec-reporter/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependencies": { - "@wdio/cli": "^7.0.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@wdio/types": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.40.0.tgz", - "integrity": "sha512-MWMbU+8uk+JrF7ygP/TJDsaSvFozKauiW6EnG7rxx9+GvU1Q1B3l4UjAc7GDbgLKjwt8T2y5GDRiDoD3UOjVyw==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.15.0.tgz", + "integrity": "sha512-hR0Dm9TsrjtgOLWOjUMYTOB1hWIlnDzFgZt7XGOzI9Ig8Qa+TDfZSFaZukGxqLIZS/eGhxpnunSHaTAXwJIxYA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "^18.0.0", - "got": "^11.8.1" + "@types/node": "^20.1.0" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "^4.6.2" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18.20.0" } }, "node_modules/@wdio/utils": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.40.0.tgz", - "integrity": "sha512-jLF57xHmz5nnGuM6ZRWjVYa/LQb22CS7yG50dUFa9wJ509mC1HlUzaA01Gjk9TV5jf9vnwE/yZfUMCoecTgG9w==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.15.0.tgz", + "integrity": "sha512-XuT1PE1nh4wwJfQW6IN4UT6+iv0+Yf4zhgMh5et04OX6tfrIXkWdx2SDimghDtRukp9i85DvIGWjdPEoQFQdaA==", "dev": true, - "license": "MIT", "dependencies": { - "@wdio/logger": "7.26.0", - "@wdio/types": "7.40.0", - "p-iteration": "^1.1.8" + "@puppeteer/browsers": "^2.2.0", + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "decamelize": "^6.0.0", + "deepmerge-ts": "^7.0.3", + "edgedriver": "^6.1.1", + "geckodriver": "^5.0.0", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.2.24", + "safaridriver": "^1.0.0", + "split2": "^4.2.0", + "wait-port": "^1.1.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/utils/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@wikimedia/codex-design-tokens": { @@ -2077,12 +2965,35 @@ "npm": ">=7.21.0" } }, + "node_modules/@zip.js/zip.js": { + "version": "2.7.62", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.62.tgz", + "integrity": "sha512-OaLvZ8j4gCkLn048ypkZu29KX30r8/OfFF2w4Jo5WXFr+J04J+lzJ5TKZBVgFXhlvSkqNFQdfnY1Q8TMTCyBVA==", + "dev": true, + "engines": { + "bun": ">=0.7.0", + "deno": ">=1.0.0", + "node": ">=16.5.0" + } + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", @@ -2105,16 +3016,12 @@ } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -2147,7 +3054,6 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -2163,7 +3069,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2269,101 +3174,201 @@ } }, "node_modules/archiver": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", - "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", "dev": true, - "license": "MIT", "dependencies": { - "archiver-utils": "^2.1.0", + "archiver-utils": "^5.0.2", "async": "^3.2.4", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", "readdir-glob": "^1.1.2", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" }, "engines": { - "node": ">= 10" + "node": ">= 14" } }, "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", "dev": true, - "license": "MIT", "dependencies": { - "glob": "^7.1.4", + "glob": "^10.0.0", "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", + "lodash": "^4.17.15", "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" + "readable-stream": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "balanced-match": "^1.0.0" } }, - "node_modules/archiver-utils/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/archiver-utils/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, - "license": "MIT" + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } }, - "node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/archiver-utils/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/archiver-utils/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/archiver/node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/archiver/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, - "license": "MIT" + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } }, - "node_modules/archiver/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "node_modules/archiver/node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, - "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/archiver/node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/are-docs-informative": { @@ -2386,7 +3391,6 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -2489,6 +3493,18 @@ "@mdn/browser-compat-data": "^5.2.34" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -2538,12 +3554,90 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bare-events": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "dev": true, + "optional": true + }, + "node_modules/bare-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", + "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "dev": true, + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "dev": true, + "optional": true, + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "optional": true, + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "dev": true, + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2564,6 +3658,15 @@ } ] }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2991,18 +4094,6 @@ "node": ">=8" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3146,259 +4237,42 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true, "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", - "dev": true - }, - "node_modules/cac": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", - "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=", - "dev": true, - "dependencies": { - "camelcase-keys": "^3.0.0", - "chalk": "^1.1.3", - "indent-string": "^3.0.0", - "minimist": "^1.2.0", - "read-pkg-up": "^1.0.1", - "suffix": "^0.1.0", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cac/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/camelcase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", - "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/cac/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cac/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" + "node": "*" } }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", "dev": true, - "license": "MIT", "engines": { - "node": ">=10.6.0" + "node": ">=0.4.0" } }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -3585,8 +4459,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/check-error": { "version": "1.0.3", @@ -3600,6 +4473,220 @@ "node": "*" } }, + "node_modules/cheerio": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz", + "integrity": "sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^10.0.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.10.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio-select/node_modules/css-select": { + "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": "^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/cheerio-select/node_modules/css-what": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio-select/node_modules/dom-serializer": { + "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.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/cheerio-select/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/dom-serializer": { + "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.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/cheerio/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, + "node_modules/cheerio/node_modules/htmlparser2/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/undici": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz", + "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==", + "dev": true, + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -3627,36 +4714,10 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "license": "ISC" - }, - "node_modules/chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, "node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", "dev": true, "funding": [ { @@ -3689,40 +4750,13 @@ "node": ">=0.8.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, - "license": "ISC", "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/cliui": { @@ -3739,8 +4773,9 @@ "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, + "optional": true, "engines": { "node": ">=0.8" } @@ -3896,32 +4931,84 @@ "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, "engines": { - "node": ">= 12.0.0" + "node": ">= 12.0.0" + } + }, + "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/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" } }, - "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==", + "node_modules/compress-commons/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/compress-commons/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "engines": { + "node": ">=8" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/compress-commons": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", - "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, - "license": "MIT", "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/concat-map": { @@ -4020,7 +5107,6 @@ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, - "license": "Apache-2.0", "bin": { "crc32": "bin/crc32.njs" }, @@ -4029,27 +5115,56 @@ } }, "node_modules/crc32-stream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", - "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", "dev": true, - "license": "MIT", "dependencies": { "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" + "readable-stream": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">= 14" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "node_modules/crc32-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, - "license": "MIT", "dependencies": { - "node-fetch": "2.6.7" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/cross-spawn": { @@ -4107,8 +5222,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", "integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/css-tokenize": { "version": "1.0.1", @@ -4264,11 +5378,14 @@ "node": ">=0.10" } }, - "node_modules/date-format": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-0.0.2.tgz", - "integrity": "sha1-+v1Ej3IRXvHitzkVWukvK+bCjdE=", - "dev": true + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } }, "node_modules/dateformat": { "version": "4.6.3", @@ -4280,12 +5397,12 @@ } }, "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.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4333,35 +5450,6 @@ "node": ">=4" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -4488,33 +5576,26 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=16.0.0" } }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, + "optional": true, "dependencies": { "clone": "^1.0.2" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-properties": { @@ -4533,6 +5614,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -4551,137 +5646,6 @@ "node": ">=0.10.0" } }, - "node_modules/devtools": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.40.0.tgz", - "integrity": "sha512-hiDPCNG/mpD+bSgegxoe5nwyxWav+QpIvT+7H9D0dUwjB0q04OF473qGflSQ1QpGig6l4qG92tA7dVnLsdP75A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^18.0.0", - "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.27.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "chrome-launcher": "^0.15.0", - "edge-paths": "^2.1.0", - "puppeteer-core": "13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.1260888", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1260888.tgz", - "integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/devtools/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, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/devtools/node_modules/devtools-protocol": { - "version": "0.0.948846", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", - "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/devtools/node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/devtools/node_modules/puppeteer-core": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.1.3.tgz", - "integrity": "sha512-96pzvVBzq5lUGt3L/QrIH3mxn3NfZylHeusNhq06xBAHPI0Upc0SC/9u7tXjL0oRnmcExeVRJivr1lj7Ah/yDQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "debug": "4.3.2", - "devtools-protocol": "0.0.948846", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.7", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.2.3" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/devtools/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/devtools/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -4701,15 +5665,6 @@ "node": ">=0.3.1" } }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4836,6 +5791,18 @@ "domelementtype": "1" } }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/download": { "version": "6.2.5", "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", @@ -5028,14 +5995,79 @@ } }, "node_modules/edge-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz", - "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", + "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/which": "^1.3.2", + "@types/which": "^2.0.1", "which": "^2.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/shirshak55" + } + }, + "node_modules/edgedriver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.1.tgz", + "integrity": "sha512-/dM/PoBf22Xg3yypMWkmRQrBKEnSyNaZ7wHGCT9+qqT14izwtFT+QvdR89rjNkMfXwW+bSFoqOfbcvM+2Cyc7w==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@wdio/logger": "^9.1.3", + "@zip.js/zip.js": "^2.7.53", + "decamelize": "^6.0.0", + "edge-paths": "^3.0.5", + "fast-xml-parser": "^4.5.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^3.3.2", + "which": "^5.0.0" + }, + "bin": { + "edgedriver": "bin/edgedriver.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/edgedriver/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/edgedriver/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/edgedriver/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/ejs": { @@ -5066,6 +6098,31 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -5220,6 +6277,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -5242,6 +6339,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eslint": { "version": "8.57.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", @@ -5864,12 +6992,30 @@ "node": ">=0.10.0" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter2": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", "dev": true }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/exec-buffer": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", @@ -6043,28 +7189,92 @@ } }, "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.2.tgz", + "integrity": "sha512-YN9Mgv2mtTWXVmifQq3QT+ixCL/uLuLJw+fdp8MOjKqu8K3XQh3o5aulMM1tn+O2DdrWNxLZTeJsCY/VofUA0A==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "30.0.2", + "@jest/get-type": "30.0.1", + "jest-matcher-utils": "30.0.2", + "jest-message-util": "30.0.2", + "jest-mock": "30.0.2", + "jest-util": "30.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/expect-webdriverio": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-3.3.1.tgz", - "integrity": "sha512-G+MLBIbIMvruHtB+ONQEN6q6tazM/6j6j22Db+PiM7V5/fv/QsMSP0p+JFm6ladJtjxokmDoIxQLTM5J6WzTQA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.3.4.tgz", + "integrity": "sha512-FU+96C0nqeYTXrJcGLUDB6hPKKaSm1/tVHjFDE4EDHGCYvajAHCC2MBQJ5MomjCmp6lGMz36lDHeZj52LHylyA==", + "dev": true, + "dependencies": { + "@vitest/snapshot": "^3.2.4", + "expect": "^30.0.0", + "jest-matcher-utils": "^30.0.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">=18 || >=20 || >=22" + }, + "peerDependencies": { + "@wdio/globals": "^9.0.0", + "@wdio/logger": "^9.0.0", + "webdriverio": "^9.0.0" + }, + "peerDependenciesMeta": { + "@wdio/globals": { + "optional": false + }, + "@wdio/logger": { + "optional": false + }, + "webdriverio": { + "optional": false + } + } + }, + "node_modules/expect-webdriverio/node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/expect-webdriverio/node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "dependencies": { - "expect": "^27.0.2", - "jest-matcher-utils": "^27.0.2" + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/expect-webdriverio/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true + }, + "node_modules/expect-webdriverio/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "engines": { + "node": ">=14.0.0" } }, "node_modules/ext-list": { @@ -6103,7 +7313,6 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -6118,7 +7327,6 @@ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -6149,6 +7357,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -6201,22 +7415,18 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" } ], "dependencies": { - "strnum": "^1.0.5" + "strnum": "^1.1.1" }, "bin": { "fxparser": "src/cli/cli.js" @@ -6261,30 +7471,54 @@ "pend": "~1.2.0" } }, - "node_modules/figures": { + "node_modules/fetch-blob": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "dependencies": { - "escape-string-regexp": "^1.0.5" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, "engines": { - "node": ">=8" + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/figures/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/file-entry-cache": { @@ -6572,6 +7806,18 @@ "node": ">= 0.12" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/formidable": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", @@ -6635,21 +7881,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6657,9 +7888,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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, @@ -6691,6 +7922,65 @@ "node": ">= 4.0.0" } }, + "node_modules/geckodriver": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-5.0.0.tgz", + "integrity": "sha512-vn7TtQ3b9VMJtVXsyWtQQl1fyBVFhQy7UvJF96kPuuJ0or5THH496AD3eUyaDD11+EqCxH9t6V+EP9soZQk4YQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@wdio/logger": "^9.1.3", + "@zip.js/zip.js": "^2.7.53", + "decamelize": "^6.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^3.3.2", + "tar-fs": "^3.0.6", + "which": "^5.0.0" + }, + "bin": { + "geckodriver": "bin/geckodriver.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/geckodriver/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/geckodriver/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/geckodriver/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -6739,6 +8029,18 @@ "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", "dev": true }, + "node_modules/get-port": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", + "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -6778,7 +8080,6 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, - "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -6817,6 +8118,29 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/getobject": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", @@ -7142,44 +8466,17 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "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/grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/graphemer": { "version": "1.4.0", @@ -7803,6 +9100,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/htmlfy": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz", + "integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==", + "dev": true + }, "node_modules/htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", @@ -7879,19 +9182,25 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/http-parser-js": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -7907,32 +9216,26 @@ "npm": ">=1.3.7" } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, - "license": "MIT", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=10.19.0" + "node": ">= 14" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, "engines": { - "node": ">= 6" + "node": ">=18.18.0" } }, "node_modules/iconv-lite": { @@ -7940,7 +9243,6 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -8023,6 +9325,16 @@ "node": ">=6" } }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -8064,30 +9376,22 @@ "dev": true }, "node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz", + "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "@inquirer/core": "^9.2.1", + "@inquirer/prompts": "^6.0.1", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "ansi-escapes": "^4.3.2", + "mute-stream": "^1.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=18" } }, "node_modules/internal-slot": { @@ -8116,13 +9420,32 @@ "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", "dev": true, "dependencies": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=4" + "node": ">= 12" } }, + "node_modules/ip-address/node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -8236,22 +9559,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8321,16 +9628,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-jpg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", @@ -8608,19 +9905,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -8702,62 +9986,105 @@ "dev": true }, "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.2.tgz", + "integrity": "sha512-2UjrNvDJDn/oHFpPrUTVmvYYDNeNtw2DlY3er8bI6vJJb9Fb35ycp/jFLd5RdV59tJ8ekVXX3o/nwPcscgXZJQ==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.0.1", + "chalk": "^4.1.2", + "pretty-format": "30.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "node_modules/jest-matcher-utils": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.2.tgz", + "integrity": "sha512-1FKwgJYECR8IT93KMKmjKHSLyru0DqguThov/aWpFccC0wbiXGOxYEu7SScderBD7ruDOpl7lc5NG6w3oxKfaA==", "dev": true, + "dependencies": { + "@jest/get-type": "30.0.1", + "chalk": "^4.1.2", + "jest-diff": "30.0.2", + "pretty-format": "30.0.2" + }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "node_modules/jest-message-util": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz", + "integrity": "sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.1", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.0.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "node_modules/jest-mock": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz", + "integrity": "sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@jest/types": "30.0.1", + "@types/node": "*", + "jest-util": "30.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz", + "integrity": "sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==", + "dev": true, + "dependencies": { + "@jest/types": "30.0.1", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/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/jimp": { @@ -8957,19 +10284,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -9028,18 +10342,41 @@ } }, "node_modules/junit-report-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/junit-report-builder/-/junit-report-builder-3.0.0.tgz", - "integrity": "sha512-aW7DnfLddUb51T+V08bJyecexaLomy5ID/0FXvhwsRXs9E0abvDaDT024U99J2agU3dt4q0ppzfKxSwrIIgXWg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/junit-report-builder/-/junit-report-builder-5.1.1.tgz", + "integrity": "sha512-ZNOIIGMzqCGcHQEA2Q4rIQQ3Df6gSIfne+X9Rly9Bc2y55KxAZu8iGv+n2pP0bLf0XAOctJZgeloC54hWzCahQ==", "dev": true, "dependencies": { - "date-format": "0.0.2", - "lodash": "^4.17.15", - "make-dir": "^1.3.0", + "lodash": "^4.17.21", + "make-dir": "^3.1.0", "xmlbuilder": "^15.1.1" }, + "engines": { + "node": ">=16" + } + }, + "node_modules/junit-report-builder/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/junit-report-builder/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/keyv": { @@ -9076,25 +10413,11 @@ "dev": true, "license": "MIT" }, - "node_modules/ky": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", - "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, "node_modules/lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "^2.0.5" }, @@ -9107,7 +10430,6 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9122,15 +10444,13 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/lazystream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -9191,34 +10511,6 @@ "node": ">= 8" } }, - "node_modules/lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "debug": "^2.6.9", - "marky": "^1.2.2" - } - }, - "node_modules/lighthouse-logger/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/lighthouse-logger/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -9305,6 +10597,39 @@ "node": ">=0.10.0" } }, + "node_modules/locate-app": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.5.0.tgz", + "integrity": "sha512-xIqbzPMBYArJRmPGUZD9CzV9wOqmVtQnaAn3wrj3s6WYW0bQvPI7x+sPYUGmDTYMHefVK//zc6HEYZ1qnxIK+Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/hejny/locate-app/blob/main/README.md#%EF%B8%8F-contributing" + } + ], + "dependencies": { + "@promptbook/utils": "0.69.5", + "type-fest": "4.26.0", + "userhome": "1.0.1" + } + }, + "node_modules/locate-app/node_modules/type-fest": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", + "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -9330,29 +10655,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/lodash.flattendeep": { "version": "4.4.0", @@ -9360,19 +10663,12 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "node_modules/lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT" + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "dev": true }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -9409,8 +10705,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", @@ -9468,7 +10763,6 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6.0" }, @@ -9481,8 +10775,7 @@ "version": "0.8.4", "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/longest": { "version": "1.0.1", @@ -9515,16 +10808,6 @@ "get-func-name": "^2.0.1" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/lpad-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", @@ -9568,6 +10851,15 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, "node_modules/make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -9670,13 +10962,6 @@ "node": ">= 12" } }, - "node_modules/marky": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", - "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -9868,16 +11153,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -9945,13 +11220,6 @@ "node": ">=10" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true, - "license": "MIT" - }, "node_modules/mocha": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", @@ -9997,24 +11265,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/mocha/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/mocha/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -10065,13 +11315,6 @@ "node": ">=10" } }, - "node_modules/mocha/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, - "license": "MIT" - }, "node_modules/mozjpeg": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-6.0.1.tgz", @@ -10091,9 +11334,9 @@ } }, "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/multimatch": { @@ -10117,11 +11360,13 @@ } }, "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true, - "license": "ISC" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/mwbot": { "version": "2.1.3", @@ -10162,31 +11407,57 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, - "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-releases": { @@ -10238,19 +11509,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", @@ -10502,30 +11760,6 @@ "node": ">=8" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/os-filter-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", @@ -10566,16 +11800,6 @@ "os-tmpdir": "^1.0.0" } }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/p-event": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", @@ -10606,16 +11830,6 @@ "node": ">=4" } }, - "node_modules/p-iteration": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", - "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -10688,6 +11902,38 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -10796,12 +12042,15 @@ } }, "node_modules/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parse-passwd": { @@ -10813,6 +12062,55 @@ "node": ">=0.10.0" } }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dev": true, + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -10893,6 +12191,12 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", @@ -10981,75 +12285,6 @@ "pixelmatch": "bin/pixelmatch" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/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, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/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, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/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, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -11307,17 +12542,17 @@ } }, "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz", + "integrity": "sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "@jest/schemas": "30.0.1", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -11333,15 +12568,15 @@ } }, "node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dev": true, "dependencies": { - "parse-ms": "^2.1.0" + "parse-ms": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11389,7 +12624,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -11400,12 +12634,39 @@ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", "dev": true }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/pseudomap": { "version": "1.0.2", @@ -11447,37 +12708,6 @@ "node": ">=6" } }, - "node_modules/puppeteer-core": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", - "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -11507,8 +12737,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/query-string": { "version": "5.1.1", @@ -11544,19 +12773,6 @@ } ] }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/rambda": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", @@ -11592,9 +12808,9 @@ "dev": true }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/read-pkg": { @@ -11718,7 +12934,6 @@ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "minimatch": "^5.1.0" } @@ -11737,7 +12952,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11964,13 +13178,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, - "license": "MIT" - }, "node_modules/resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", @@ -12044,25 +13251,11 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/resq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^2.0.1" } @@ -12071,38 +13264,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", - "dev": true, - "license": "MIT" - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, "node_modules/reusify": { "version": "1.0.4", @@ -12118,8 +13280,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/rimraf": { "version": "3.0.2", @@ -12143,11 +13304,10 @@ "dev": true }, "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -12176,14 +13336,23 @@ } }, "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "dependencies": { "tslib": "^2.1.0" } }, + "node_modules/safaridriver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.0.tgz", + "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", + "dev": true, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -12358,9 +13527,9 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -12400,16 +13569,27 @@ } }, "node_modules/serialize-error": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", - "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", + "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", "dev": true, - "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "type-fest": "^2.12.2" }, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12565,6 +13745,44 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", + "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -12609,6 +13827,22 @@ "node": ">=0.10.0" } }, + "node_modules/spacetrim": { + "version": "0.11.59", + "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.59.tgz", + "integrity": "sha512-lLYsktklSRKprreOm7NXReW8YiX2VBjbgmXYEziOoGf/qsJqAEACaDvoTtUOycwjpaSh+bT8eu0KrJn7UNxiCg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/hejny/spacetrim/blob/main/README.md#%EF%B8%8F-contributing" + } + ] + }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -12642,18 +13876,18 @@ "dev": true }, "node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, "engines": { "node": ">= 10.x" } }, "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, "node_modules/squeak": { @@ -12766,9 +14000,9 @@ "dev": true }, "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" @@ -12802,6 +14036,19 @@ "dev": true, "license": "MIT" }, + "node_modules/streamx": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -12954,6 +14201,18 @@ "node": ">=0.10.0" } }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -13000,10 +14259,16 @@ } }, "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ] }, "node_modules/style-search": { "version": "0.1.0", @@ -13202,24 +14467,6 @@ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/stylelint/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "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", @@ -13285,13 +14532,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/stylelint/node_modules/postcss-safe-parser": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", @@ -13342,15 +14582,6 @@ "node": ">=8" } }, - "node_modules/suffix": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", - "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/superagent": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", @@ -13664,33 +14895,28 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.10.tgz", + "integrity": "sha512-C1SwlQGNLe/jPNqapK8epDsXME7CAJR5RL3GcE6KWx1d9OUByzoHVcbu1VPI8tevg9H8Alae0AApHHFGzrD5zA==", "dev": true, - "license": "MIT", "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" } }, "node_modules/tar-fs/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, - "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/tar-stream": { @@ -13773,6 +14999,15 @@ "node": ">=4" } }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -13832,12 +15067,20 @@ "node": "*" } }, + "node_modules/tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -13876,13 +15119,6 @@ "node": ">=0.8" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, "node_modules/trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -13926,11 +15162,30 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, + "node_modules/tsx": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", + "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", + "dev": true, + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -13996,33 +15251,6 @@ "node": ">=4.2.0" } }, - "node_modules/ua-parser-js": { - "version": "1.0.40", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", - "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "license": "MIT", - "bin": { - "ua-parser-js": "script/cli.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -14082,21 +15310,31 @@ "node": "*" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "node_modules/undici": { + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", + "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=18.17" + } }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unquote": { @@ -14176,6 +15414,21 @@ "node": ">= 4" } }, + "node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", + "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", + "dev": true + }, + "node_modules/userhome": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.1.tgz", + "integrity": "sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/utif": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", @@ -14238,15 +15491,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -14285,116 +15529,137 @@ "eslint": ">=6.0.0" } }, + "node_modules/wait-port": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz", + "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "commander": "^9.3.0", + "debug": "^4.3.4" + }, + "bin": { + "wait-port": "bin/wait-port.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wait-port/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, + "optional": true, "dependencies": { "defaults": "^1.0.3" } }, "node_modules/wdio-mediawiki": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.7.1.tgz", - "integrity": "sha512-GMNnz/TIdASuD0Ufo76P7EkUCAW8Cs1c/T9XAVG2PgBWrw7KDM0oOqRRuXKcuCOKqn6VwNXTDkXwiL4u4AU7Fg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-4.1.3.tgz", + "integrity": "sha512-PjBIXcORCd5sdQ5/lf0WtMp2MCDCHHba58VJcdNvLod8/yEuvzERh49mISiRGGP0C+w3Lr3qLmsihTzpyIeWvg==", "dev": true, "dependencies": { "mwbot": "2.1.3" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/webdriver": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.40.0.tgz", - "integrity": "sha512-CKi3cDWgNVE/ibcsBfdtA+pQVeZ4oYlecLlwemulVxJdgr4l5bv+nXuoIhnYeVb6aAI4naK772vmWQ0XuRYhDQ==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.15.0.tgz", + "integrity": "sha512-JCW5xvhZtL6kjbckdePgVYMOlvWbh22F1VFkIf9pw3prwXI2EHED5Eq/nfDnNfHiqr0AfFKWmIDPziSafrVv4Q==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "^18.0.0", - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.27.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "got": "^11.0.2", - "ky": "0.30.0", - "lodash.merge": "^4.6.1" + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "9.15.0", + "@wdio/logger": "9.15.0", + "@wdio/protocols": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "deepmerge-ts": "^7.0.3", + "undici": "^6.20.1", + "ws": "^8.8.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.20.0" } }, "node_modules/webdriverio": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.40.0.tgz", - "integrity": "sha512-UswBOjpWwk7ziGi9beZGX/XFrp4m1Ws0ni5HI9mzAkOlpKKKWhnX6i95pWQV6sPF4Urv4RJf8WXayHhTbzXzdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/aria-query": "^5.0.0", - "@types/node": "^18.0.0", - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.27.0", - "@wdio/repl": "7.40.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "archiver": "^5.0.0", - "aria-query": "^5.2.1", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.15.0.tgz", + "integrity": "sha512-910g6ktwXdAKGyhgCPGw9BzIKOEBBYMFN1bLwC3bW/3mFlxGHO/n70c7Sg9hrsu9VWTzv6m+1Clf27B9uz4a/Q==", + "dev": true, + "dependencies": { + "@types/node": "^20.11.30", + "@types/sinonjs__fake-timers": "^8.1.5", + "@wdio/config": "9.15.0", + "@wdio/logger": "9.15.0", + "@wdio/protocols": "9.15.0", + "@wdio/repl": "9.4.4", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "archiver": "^7.0.1", + "aria-query": "^5.3.0", + "cheerio": "^1.0.0-rc.12", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools": "7.40.0", - "devtools-protocol": "^0.0.1260888", - "fs-extra": "^11.1.1", - "grapheme-splitter": "^1.0.2", + "grapheme-splitter": "^1.0.4", + "htmlfy": "^0.6.0", + "is-plain-obj": "^4.1.0", + "jszip": "^3.10.1", "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", "lodash.zip": "^4.2.0", - "minimatch": "^6.0.4", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", + "query-selector-shadow-dom": "^1.0.1", + "resq": "^1.11.0", "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.40.0" + "serialize-error": "^11.0.3", + "urlpattern-polyfill": "^10.0.0", + "webdriver": "9.15.0" }, "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=18.20.0" + }, + "peerDependencies": { + "puppeteer-core": ">=22.x || <=24.x" + }, + "peerDependenciesMeta": { + "puppeteer-core": { + "optional": true + } } }, - "node_modules/webdriverio/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "node_modules/webdriverio/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -14415,18 +15680,40 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">=18" } }, "node_modules/which": { @@ -14534,17 +15821,16 @@ } }, "node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -14755,126 +16041,6 @@ "node": ">=12" } }, - "node_modules/yarn-install": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==", - "dev": true, - "dependencies": { - "cac": "^3.0.3", - "chalk": "^1.1.3", - "cross-spawn": "^4.0.2" - }, - "bin": { - "yarn-install": "bin/yarn-install.js", - "yarn-remove": "bin/yarn-remove.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yarn-install/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "node_modules/yarn-install/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/yarn-install/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/yarn-install/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/yarn-install/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/yarn-install/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -14897,153 +16063,127 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zip-stream": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", - "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", "dev": true, - "license": "MIT", - "dependencies": { - "archiver-utils": "^3.0.4", - "compress-commons": "^4.1.2", - "readable-stream": "^3.6.0" - }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zip-stream/node_modules/archiver-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", - "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^7.2.3", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zopflipng-bin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/zopflipng-bin/-/zopflipng-bin-5.0.0.tgz", - "integrity": "sha512-8AWRT/CPkIBEup96LSiVdhLT4n7b4bpzY0BcQ26OjdRnjODa+JWNK55Ii63CiOEyqObPSwjLifuUI5ooFmjiGQ==", + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", "dev": true, - "hasInstallScript": true, "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1", - "logalot": "^2.1.0" - }, - "bin": { - "zopflipng": "cli.js" + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">= 14" } - } - }, - "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 }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "node_modules/zip-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/zopflipng-bin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/zopflipng-bin/-/zopflipng-bin-5.0.0.tgz", + "integrity": "sha512-8AWRT/CPkIBEup96LSiVdhLT4n7b4bpzY0BcQ26OjdRnjODa+JWNK55Ii63CiOEyqObPSwjLifuUI5ooFmjiGQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bin-build": "^3.0.0", + "bin-wrapper": "^4.0.1", + "logalot": "^2.1.0" + }, + "bin": { + "zopflipng": "cli.js" + }, + "engines": { + "node": ">=6" + } + } + }, + "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 + }, + "@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" } }, + "@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true + }, "@babel/parser": { "version": "7.24.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", @@ -15107,6 +16247,181 @@ "jsdoc-type-pratt-parser": "~4.0.0" } }, + "@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "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", @@ -15168,6 +16483,199 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, + "@inquirer/checkbox": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", + "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/confirm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", + "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + } + }, + "@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "dev": true, + "requires": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "dependencies": { + "@types/node": { + "version": "22.15.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz", + "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, + "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 + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "@inquirer/editor": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", + "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "external-editor": "^3.1.0" + } + }, + "@inquirer/expand": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", + "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/figures": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz", + "integrity": "sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==", + "dev": true + }, + "@inquirer/input": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", + "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + } + }, + "@inquirer/number": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", + "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + } + }, + "@inquirer/password": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", + "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2" + } + }, + "@inquirer/prompts": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", + "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", + "dev": true, + "requires": { + "@inquirer/checkbox": "^3.0.1", + "@inquirer/confirm": "^4.0.1", + "@inquirer/editor": "^3.0.1", + "@inquirer/expand": "^3.0.1", + "@inquirer/input": "^3.0.1", + "@inquirer/number": "^2.0.1", + "@inquirer/password": "^3.0.1", + "@inquirer/rawlist": "^3.0.1", + "@inquirer/search": "^2.0.1", + "@inquirer/select": "^3.0.1" + } + }, + "@inquirer/rawlist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", + "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/search": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", + "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/select": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", + "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", + "dev": true, + "requires": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "dev": true, + "requires": { + "mute-stream": "^1.0.0" + } + }, "@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -15233,17 +16741,59 @@ } } }, + "@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true + }, + "@jest/expect-utils": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.2.tgz", + "integrity": "sha512-FHF2YdtFBUQOo0/qdgt+6UdBFcNPF/TkVzcc+4vvf8uaBzUlONytGBeeudufIHHW1khRfM1sBbRT1VCK7n/0dQ==", + "dev": true, + "requires": { + "@jest/get-type": "30.0.1" + } + }, + "@jest/get-type": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz", + "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==", + "dev": true + }, + "@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + } + }, + "@jest/schemas": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz", + "integrity": "sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.34.0" + } + }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz", + "integrity": "sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" } }, "@jimp/bmp": { @@ -15615,6 +17165,12 @@ "regenerator-runtime": "^0.13.3" } }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, "@jsdoc/salty": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz", @@ -15678,10 +17234,46 @@ "dev": true, "optional": true }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "@promptbook/utils": { + "version": "0.69.5", + "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.69.5.tgz", + "integrity": "sha512-xm5Ti/Hp3o4xHrsK9Yy3MS6KbDxYbq485hDsFvxqaNA7equHLPdo8H8faTitTeb14QCDfLW4iwCxdVYu5sn6YQ==", + "dev": true, + "requires": { + "spacetrim": "0.11.59" + } + }, + "@puppeteer/browsers": { + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz", + "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==", + "dev": true, + "requires": { + "debug": "^4.4.1", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.2", + "tar-fs": "^3.0.8", + "yargs": "^17.7.2" + } + }, + "@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.34.37", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz", + "integrity": "sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==", + "dev": true + }, + "@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true }, "@stylistic/stylelint-config": { @@ -15713,66 +17305,24 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "postcss-selector-parser": { - "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", - "util-deprecate": "^1.0.2" - } - } - } - }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true - }, - "@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "@types/diff": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.3.tgz", - "integrity": "sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==", - "dev": true - }, - "@types/easy-table": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-1.2.3.tgz", - "integrity": "sha512-uT9nuF3D1+KgNXRCft0/Z4BL5S/73D7dZ+Ky4796MvWPgwUp6gLudt1YOfvtOuuet+buFk+WqUR7j1K77gMnAw==", - "dev": true, - "requires": { - "easy-table": "*" + "dev": true + }, + "postcss-selector-parser": { + "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", + "util-deprecate": "^1.0.2" + } + } } }, - "@types/ejs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.0.tgz", - "integrity": "sha512-DCg+Ka+uDQ31lJ/UtEXVlaeV3d6t81gifaVWKJy4MYVVgvJttyX/viREy+If7fz+tK/gVxTGMtyrFPnm4gjrVA==", + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "dev": true }, "@types/eslint": { @@ -15791,69 +17341,25 @@ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, - "@types/fs-extra": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", - "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", - "dev": true, - "requires": { - "@types/jsonfile": "*", - "@types/node": "*" - } - }, - "@types/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", - "dev": true, - "requires": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" - }, - "dependencies": { - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - } - } - }, - "@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true - }, - "@types/inquirer": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.1.tgz", - "integrity": "sha512-wKW3SKIUMmltbykg4I5JzCVzUhkuD9trD6efAmYgN2MrSntY0SMRQzEnD3mkyJ/rv9NLbTC7g3hKKE86YwEDLw==", - "dev": true, - "requires": { - "@types/through": "*", - "rxjs": "^7.2.0" - } - }, "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" } }, "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "requires": { "@types/istanbul-lib-report": "*" @@ -15865,69 +17371,12 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "@types/json-stringify-safe": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz", - "integrity": "sha512-UUA1sH0RSRROdInuDOA1yoRzbi5xVFD1RHCoOvNRPTNwR8zBkJ/84PZ6NhKVDtKp0FTeIccJCdQz1X2aJPr4uw==", - "dev": true - }, - "@types/jsonfile": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", - "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", "dev": true }, - "@types/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", - "dev": true - }, - "@types/lodash.flattendeep": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.7.tgz", - "integrity": "sha512-1h6GW/AeZw/Wej6uxrqgmdTDZX1yFS39lRsXYkg+3kWvOWWrlGCI6H7lXxlUHOzxDT4QeYGmgPpQ3BX9XevzOg==", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, - "@types/lodash.pickby": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.7.tgz", - "integrity": "sha512-4ebXRusuLflfscbD0PUX4eVknDHD9Yf+uMtBIvA/hrnTqeAzbuHuDjvnYriLjUrI9YrhCPVKUf4wkRSXJQ6gig==", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, - "@types/lodash.union": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.7.tgz", - "integrity": "sha512-6HXM6tsnHJzKgJE0gA/LhTGf/7AbjUk759WZ1MziVm+OBNAATHhdgj+a3KVE8g76GCLAnN4ZEQQG1EGgtBIABA==", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, "@types/markdown-it": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz", @@ -15956,13 +17405,22 @@ "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", "dev": true }, + "@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/node": { - "version": "18.19.84", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.84.tgz", - "integrity": "sha512-ACYy2HGcZPHxEeWTqowTF7dhXN+JU1o7Gr4b41klnn6pj2LD6rsiGqSZojMdk1Jh2ys3m76ap+ae1vvE4+5+vg==", + "version": "20.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.1.tgz", + "integrity": "sha512-jJD50LtlD2dodAEO653i3YF04NWak6jN3ky+Ri3Em3mGR39/glWiboM/IePaRbgwSfqM1TpGXfAg8ohn/4dTgA==", "dev": true, "requires": { - "undici-types": "~5.26.4" + "undici-types": "~6.21.0" } }, "@types/normalize-package-data": { @@ -15971,103 +17429,58 @@ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, - "@types/object-inspect": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.13.0.tgz", - "integrity": "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w==", - "dev": true - }, "@types/q": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", "dev": true }, - "@types/recursive-readdir": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.1.tgz", - "integrity": "sha512-Xd+Ptc4/F2ueInqy5yK2FI5FxtwwbX2+VZpcg+9oYsFJVen8qQKGapCr+Bi5wQtHU1cTXT8s+07lo/nKPgu8Gg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "dev": true, - "requires": { - "@types/node": "*" - } + "@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true }, "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, - "@types/stream-buffers": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz", - "integrity": "sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w==", - "dev": true, - "requires": { - "@types/node": "*" - } + "@types/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", + "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", + "dev": true }, - "@types/supports-color": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.3.tgz", - "integrity": "sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==", + "@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", "dev": true }, - "@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "requires": { "@types/node": "*" } }, - "@types/tmp": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", - "dev": true - }, - "@types/ua-parser-js": { - "version": "0.7.39", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", - "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==", - "dev": true - }, - "@types/validator": { - "version": "13.7.2", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz", - "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==", - "dev": true - }, - "@types/which": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", - "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==", - "dev": true - }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, "@types/yauzl": { @@ -16118,104 +17531,330 @@ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { - "balanced-match": "^1.0.0" + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", + "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.12.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 + }, + "@vitest/pretty-format": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", + "dev": true, + "requires": { + "tinyrainbow": "^1.2.0" + } + }, + "@vitest/snapshot": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", + "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", + "dev": true, + "requires": { + "@vitest/pretty-format": "2.1.9", + "magic-string": "^0.30.12", + "pathe": "^1.1.2" + } + }, + "@wdio/cli": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.15.0.tgz", + "integrity": "sha512-51fuO5nalIFMay94VrAl11hLwcUVrfKZ+4+2lmEtaZKpfTLUj6ugp9ls3suBPgrhWQimikICc1oIs5TmwXHQGg==", + "dev": true, + "requires": { + "@types/node": "^20.1.1", + "@vitest/snapshot": "^2.1.1", + "@wdio/config": "9.15.0", + "@wdio/globals": "9.15.0", + "@wdio/logger": "9.15.0", + "@wdio/protocols": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "async-exit-hook": "^2.0.1", + "chalk": "^5.2.0", + "chokidar": "^4.0.0", + "dotenv": "^16.3.1", + "ejs": "^3.1.9", + "execa": "^9.2.0", + "import-meta-resolve": "^4.0.0", + "inquirer": "^11.0.1", + "lodash.flattendeep": "^4.4.0", + "lodash.pickby": "^4.6.0", + "lodash.union": "^4.6.0", + "read-pkg-up": "^10.0.0", + "recursive-readdir": "^2.2.3", + "tsx": "^4.7.2", + "webdriverio": "9.15.0", + "yargs": "^17.7.2" + }, + "dependencies": { + "chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true + }, + "chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "requires": { + "readdirp": "^4.0.1" + } + }, + "execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "dev": true, + "requires": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + } + }, + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "requires": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + } + }, + "hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + } + }, + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true + }, + "is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true + }, + "lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "requires": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "dependencies": { + "type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true + } + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" } }, - "minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "read-pkg-up": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" } - } - } - }, - "@typescript-eslint/utils": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", - "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.12.0", - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/typescript-estree": "7.12.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", - "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "7.12.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 - }, - "@wdio/cli": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.40.0.tgz", - "integrity": "sha512-M0txYEqqamBvJe4FEuqwWq1jd879sElF047BXSv2GRu4R1/iEBPYJHjn9KuL60Fkkpp/L1NMHTl7gW9i445edQ==", - "dev": true, - "requires": { - "@types/ejs": "^3.0.5", - "@types/fs-extra": "^11.0.1", - "@types/inquirer": "^8.1.2", - "@types/lodash.flattendeep": "^4.4.6", - "@types/lodash.pickby": "^4.6.6", - "@types/lodash.union": "^4.6.6", - "@types/node": "^18.0.0", - "@types/recursive-readdir": "^2.2.0", - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.27.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "async-exit-hook": "^2.0.1", - "chalk": "^4.0.0", - "chokidar": "^3.0.0", - "cli-spinners": "^2.1.0", - "ejs": "^3.0.1", - "fs-extra": "^11.1.1", - "inquirer": "8.2.4", - "lodash.flattendeep": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.union": "^4.6.0", - "mkdirp": "^3.0.0", - "recursive-readdir": "^2.2.2", - "webdriverio": "7.40.0", - "yargs": "^17.0.0", - "yarn-install": "^1.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + }, + "readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true + }, + "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 + }, + "type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true + }, + "yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "dev": true } } }, "@wdio/config": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.40.0.tgz", - "integrity": "sha512-ayQELXyxa+k9/2a509F5a1oTsCa/w8D1nDrd+hzm+1mYb4Te2lceWCCzm+atGKkMpvjLH4GvhrEBYLh3rIWk2A==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.15.0.tgz", + "integrity": "sha512-IQzSZx2Y0KdAVWHSdcBLkuUjCmYtOnc1oDY7Psi814wDR7dEPVOuKgMo8ZZ0P1yhioMzqvy5tBemYSzj7CrFTA==", "dev": true, "requires": { - "@types/glob": "^8.1.0", - "@wdio/logger": "7.26.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "deepmerge": "^4.0.0", - "glob": "^8.0.3" + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "deepmerge-ts": "^7.0.3", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" }, "dependencies": { "brace-expansion": { @@ -16228,22 +17867,23 @@ } }, "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" } }, "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "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" @@ -16251,61 +17891,110 @@ } } }, + "@wdio/dot-reporter": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.15.0.tgz", + "integrity": "sha512-dga+nwqZtsruAnERYGXa41O/APPpG6IClXA0gk35zKe24aMez/XgU7ZDHVJ3JYGmr7XTSEGiWXudvthaX/EbSg==", + "dev": true, + "requires": { + "@wdio/reporter": "9.15.0", + "@wdio/types": "9.15.0", + "chalk": "^5.0.1" + }, + "dependencies": { + "chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true + } + } + }, + "@wdio/globals": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.15.0.tgz", + "integrity": "sha512-4bEnqoHr676x4hyq7yOp+V+wVgclisNeOwMyLPEIJOv+cAAxESzIOdFyiQcbAu7gq+HUIuoWMZGlV9UgDnXh1w==", + "dev": true, + "requires": { + "expect-webdriverio": "^5.1.0", + "webdriverio": "9.15.0" + } + }, "@wdio/junit-reporter": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.40.0.tgz", - "integrity": "sha512-nGxzvdCBHUQOtKbCrihO+MjLdfyeYPVeoCAWBNbPHP06nnjsoVDT7k1Ic7BwAbrDZn1SUOVhwdGOxqDdc1E8Fg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.15.0.tgz", + "integrity": "sha512-ZulPH628zp/V1IolHtMkLPEmlWeoAa4Go5hAe46wyfB879PHD9bm5RUXZYJvVAphlvvSljpXd4YOqINN0hWVuQ==", "dev": true, "requires": { - "@types/json-stringify-safe": "^5.0.0", - "@types/validator": "^13.1.3", - "@wdio/reporter": "7.40.0", - "@wdio/types": "7.40.0", + "@wdio/reporter": "9.15.0", + "@wdio/types": "9.15.0", "json-stringify-safe": "^5.0.1", - "junit-report-builder": "^3.0.0", - "validator": "^13.0.0" + "junit-report-builder": "^5.1.1" } }, "@wdio/local-runner": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.40.0.tgz", - "integrity": "sha512-OBuN7TlFhbPUH7Wbh2S8OKZOjeW4rHXOfuGzJfaKkzjHje2Dqide/uC3Gd25MwmzgZcVkOo9DUYiGFCHXc44ug==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.15.0.tgz", + "integrity": "sha512-SbmQpzXSxaLvvjDAJpHvfRq5Df9nfdD3LxOM/L4QytI09rK3Y94Re2QEFIk1MyFmUAuoIgJ99L4TSRw9hhrIbg==", "dev": true, "requires": { - "@types/stream-buffers": "^3.0.3", - "@wdio/logger": "7.26.0", - "@wdio/repl": "7.40.0", - "@wdio/runner": "7.40.0", - "@wdio/types": "7.40.0", + "@types/node": "^20.1.0", + "@wdio/logger": "9.15.0", + "@wdio/repl": "9.4.4", + "@wdio/runner": "9.15.0", + "@wdio/types": "9.15.0", "async-exit-hook": "^2.0.1", - "split2": "^4.0.0", + "split2": "^4.1.0", "stream-buffers": "^3.0.2" } }, "@wdio/logger": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz", - "integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.15.0.tgz", + "integrity": "sha512-3IkaissyOsUQwg8IinkVm1svsvRMGJpFyaSiEhQ0oQXD7mnWrNVFSU9kmeFvbKAtoc4j60FRjU6XqtH94xRceg==", "dev": true, "requires": { - "chalk": "^4.0.0", + "chalk": "^5.1.2", "loglevel": "^1.6.0", "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" + "strip-ansi": "^7.1.0" + }, + "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 + }, + "chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "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" + } + } } }, "@wdio/mocha-framework": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.40.0.tgz", - "integrity": "sha512-Pc+c4M07qhz3CdhitETWq8htMPb3xwmmQF5CKUpcy+F6nBTy4Q3wDOSLRQnFD7iP+JqnpJ2o3k1NPeuNYc7+CQ==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.15.0.tgz", + "integrity": "sha512-sM9NK3vQA+gITS8OlBB14F85xg4gPD4oBM4kLhgvbFqyCNGMe8yy9P5c9D8Ti0ISUDkkfgAcN2EwMqBp/Ot2Lg==", "dev": true, "requires": { - "@types/mocha": "^10.0.0", - "@wdio/logger": "7.26.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "expect-webdriverio": "^3.0.0", - "mocha": "^10.0.0" + "@types/mocha": "^10.0.6", + "@types/node": "^20.11.28", + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "mocha": "^10.3.0" }, "dependencies": { "brace-expansion": { @@ -16317,15 +18006,6 @@ "balanced-match": "^1.0.0" } }, - "debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "requires": { - "ms": "^2.1.3" - } - }, "glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -16376,12 +18056,6 @@ "yargs-unparser": "^2.0.0" } }, - "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 - }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -16406,87 +18080,117 @@ } }, "@wdio/protocols": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz", - "integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.15.0.tgz", + "integrity": "sha512-5O7bwiG7t8nmSVOx888YryO/9AQgQ7p/Ecd9rS13UyDQL169HmVKXP0vvJKGH3X+oeE92U1wVrwrIl4Xx3BQ6Q==", "dev": true }, "@wdio/repl": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.40.0.tgz", - "integrity": "sha512-6tzT7lOMxBwdqMVdW4QxlzrQadGPta4HedFcJo4LyRz9PkXPTF68qeIGs0GyZvy/5AqspNWaAJvIR7f3T3tCyw==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz", + "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", "dev": true, "requires": { - "@wdio/utils": "7.40.0" + "@types/node": "^20.1.0" } }, "@wdio/reporter": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.40.0.tgz", - "integrity": "sha512-nWVh20JONsN4xf2PRWAS+81r1a6t6M5OtlVOti7G8/pODCul1kxmi9l07s0JaU9g64C1nDc4bOxvAPOWR3/wIw==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.15.0.tgz", + "integrity": "sha512-p120dZr+fUQ7HE54L/RDG/7BfE/LkFORyNaZ/G2KE6gEr8gIyL3sW9kVbTZtYOBW68KgU+CC7x4yxfZCXfRUuw==", "dev": true, "requires": { - "@types/diff": "^5.0.0", - "@types/node": "^18.0.0", - "@types/object-inspect": "^1.8.0", - "@types/supports-color": "^8.1.0", - "@types/tmp": "^0.2.0", - "@wdio/types": "7.40.0", - "diff": "^5.0.0", - "fs-extra": "^11.1.1", - "object-inspect": "^1.10.3", - "supports-color": "8.1.1" + "@types/node": "^20.1.0", + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "diff": "^7.0.0", + "object-inspect": "^1.12.0" + }, + "dependencies": { + "diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true + } } }, "@wdio/runner": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.40.0.tgz", - "integrity": "sha512-3dGn8sU9Oc0kTq+hcxNSqkF1acqiTAzamyNWsWXAX7V0FOfZxp0wmD9aMqY+sVT6g8mUE5aePT1ydONE5o+6QA==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.15.0.tgz", + "integrity": "sha512-KHDM4L02Aqmmsi83Yum2c026eNqpQysrMPnHiSzZm0+wMmDNLIMwq6xAj/vlBHDiVgrSKho3LlMz7mNyagkkgw==", "dev": true, "requires": { - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "deepmerge": "^4.0.0", - "gaze": "^1.1.2", - "webdriver": "7.40.0", - "webdriverio": "7.40.0" + "@types/node": "^20.11.28", + "@wdio/config": "9.15.0", + "@wdio/dot-reporter": "9.15.0", + "@wdio/globals": "9.15.0", + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "deepmerge-ts": "^7.0.3", + "expect-webdriverio": "^5.1.0", + "webdriver": "9.15.0", + "webdriverio": "9.15.0" } }, "@wdio/spec-reporter": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.40.0.tgz", - "integrity": "sha512-DhkfnWrN/X0DKpj/maIsk76yr5iG0t/ZbbajtBXLv9lMn8j+ALY34dfj0mvvTKX77wlzDtgeuC+8BzxPKBWU6g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.15.0.tgz", + "integrity": "sha512-xu8uVGyk2HEAvdzPmspxTJMJc3UxGzdKjqNIUVpCQpVYkKOd6zm1RH2Cpdb7gsx2j/+ddYZEVhftFGR9YOQF6g==", "dev": true, "requires": { - "@types/easy-table": "^1.2.0", - "@wdio/reporter": "7.40.0", - "@wdio/types": "7.40.0", - "chalk": "^4.0.0", - "easy-table": "^1.1.1", - "pretty-ms": "^7.0.0" + "@wdio/reporter": "9.15.0", + "@wdio/types": "9.15.0", + "chalk": "^5.1.2", + "easy-table": "^1.2.0", + "pretty-ms": "^9.0.0" + }, + "dependencies": { + "chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true + } } }, "@wdio/types": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.40.0.tgz", - "integrity": "sha512-MWMbU+8uk+JrF7ygP/TJDsaSvFozKauiW6EnG7rxx9+GvU1Q1B3l4UjAc7GDbgLKjwt8T2y5GDRiDoD3UOjVyw==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.15.0.tgz", + "integrity": "sha512-hR0Dm9TsrjtgOLWOjUMYTOB1hWIlnDzFgZt7XGOzI9Ig8Qa+TDfZSFaZukGxqLIZS/eGhxpnunSHaTAXwJIxYA==", "dev": true, "requires": { - "@types/node": "^18.0.0", - "got": "^11.8.1" + "@types/node": "^20.1.0" } }, "@wdio/utils": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.40.0.tgz", - "integrity": "sha512-jLF57xHmz5nnGuM6ZRWjVYa/LQb22CS7yG50dUFa9wJ509mC1HlUzaA01Gjk9TV5jf9vnwE/yZfUMCoecTgG9w==", - "dev": true, - "requires": { - "@wdio/logger": "7.26.0", - "@wdio/types": "7.40.0", - "p-iteration": "^1.1.8" + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.15.0.tgz", + "integrity": "sha512-XuT1PE1nh4wwJfQW6IN4UT6+iv0+Yf4zhgMh5et04OX6tfrIXkWdx2SDimghDtRukp9i85DvIGWjdPEoQFQdaA==", + "dev": true, + "requires": { + "@puppeteer/browsers": "^2.2.0", + "@wdio/logger": "9.15.0", + "@wdio/types": "9.15.0", + "decamelize": "^6.0.0", + "deepmerge-ts": "^7.0.3", + "edgedriver": "^6.1.1", + "geckodriver": "^5.0.0", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.2.24", + "safaridriver": "^1.0.0", + "split2": "^4.2.0", + "wait-port": "^1.1.0" + }, + "dependencies": { + "decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true + } } }, "@wikimedia/codex-design-tokens": { @@ -16495,12 +18199,27 @@ "integrity": "sha512-qFX7LcR/l90yqVTBApvrIDY3Xa0WifoMlBJRGD1DoWff8e/yMhLmxF1o2DRcIfQlOvKDg0Vhy8jAttF6MUfMAA==", "dev": true }, + "@zip.js/zip.js": { + "version": "2.7.62", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.62.tgz", + "integrity": "sha512-OaLvZ8j4gCkLn048ypkZu29KX30r8/OfFF2w4Jo5WXFr+J04J+lzJ5TKZBVgFXhlvSkqNFQdfnY1Q8TMTCyBVA==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, "acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", @@ -16515,13 +18234,10 @@ "requires": {} }, "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true }, "ajv": { "version": "6.12.6", @@ -16623,18 +18339,18 @@ } }, "archiver": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", - "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", "dev": true, "requires": { - "archiver-utils": "^2.1.0", + "archiver-utils": "^5.0.2", "async": "^3.2.4", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", "readdir-glob": "^1.1.2", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" }, "dependencies": { "async": { @@ -16643,67 +18359,122 @@ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + }, "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } } } }, "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", "dev": true, "requires": { - "glob": "^7.1.4", + "glob": "^10.0.0", "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", + "lodash": "^4.17.15", "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" + "readable-stream": "^4.0.0" }, "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "balanced-match": "^1.0.0" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "brace-expansion": "^2.0.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" } } } @@ -16798,6 +18569,15 @@ "@mdn/browser-compat-data": "^5.2.34" } }, + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -16837,18 +18617,76 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, + "b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "bare-events": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "dev": true, + "optional": true + }, + "bare-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", + "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "dev": true, + "optional": true, + "requires": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4" + } + }, + "bare-os": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "dev": true, + "optional": true + }, + "bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "optional": true, + "requires": { + "bare-os": "^3.0.1" + } + }, + "bare-stream": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "dev": true, + "optional": true, + "requires": { + "streamx": "^2.21.0" + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, + "basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -17198,309 +19036,135 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "bluebird": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", - "dev": true - }, - "body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", - "dev": true, - "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - } - }, - "browserslist-config-wikimedia": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/browserslist-config-wikimedia/-/browserslist-config-wikimedia-0.7.0.tgz", - "integrity": "sha512-CTa0lv78dXKEgrYsOLCkqO+9UUS3CV9MWEOYHcymgEvx4mYxB80sCoKRCR7wW2SOMNxjaP9hohrZripjnKuRTA==", - "dev": true - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true - }, - "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", - "dev": true - }, - "cac": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", - "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=", - "dev": true, - "requires": { - "camelcase-keys": "^3.0.0", - "chalk": "^1.1.3", - "indent-string": "^3.0.0", - "minimist": "^1.2.0", - "read-pkg-up": "^1.0.1", - "suffix": "^0.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "camelcase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", - "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "map-obj": "^1.0.0" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", + "dev": true + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" } }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + } + }, + "browserslist-config-wikimedia": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/browserslist-config-wikimedia/-/browserslist-config-wikimedia-0.7.0.tgz", + "integrity": "sha512-CTa0lv78dXKEgrYsOLCkqO+9UUS3CV9MWEOYHcymgEvx4mYxB80sCoKRCR7wW2SOMNxjaP9hohrZripjnKuRTA==", + "dev": true + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -17646,6 +19310,156 @@ "get-func-name": "^2.0.2" } }, + "cheerio": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz", + "integrity": "sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==", + "dev": true, + "requires": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^10.0.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.10.0", + "whatwg-mimetype": "^4.0.0" + }, + "dependencies": { + "dom-serializer": { + "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.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + }, + "dependencies": { + "entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true + } + } + }, + "undici": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz", + "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==", + "dev": true + } + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "dependencies": { + "css-select": { + "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": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "dom-serializer": { + "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.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + } + } + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -17662,28 +19476,10 @@ "readdirp": "~3.6.0" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "dev": true, - "requires": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - } - }, "ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", "dev": true }, "clean-regexp": { @@ -17703,25 +19499,10 @@ } } }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true - }, "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true }, "cliui": { @@ -17738,8 +19519,9 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "optional": true }, "clone-response": { "version": "1.0.2", @@ -17874,15 +19656,47 @@ "dev": true }, "compress-commons": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", - "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", "dev": true, "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "readable-stream": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } } }, "concat-map": { @@ -17962,22 +19776,38 @@ "dev": true }, "crc32-stream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", - "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", "dev": true, "requires": { "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - } - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "requires": { - "node-fetch": "2.6.7" + "readable-stream": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } } }, "cross-spawn": { @@ -18155,10 +19985,10 @@ "assert-plus": "^1.0.0" } }, - "date-format": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-0.0.2.tgz", - "integrity": "sha1-+v1Ej3IRXvHitzkVWukvK+bCjdE=", + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true }, "dateformat": { @@ -18168,12 +19998,12 @@ "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.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "decamelize": { @@ -18212,23 +20042,6 @@ } } }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -18323,27 +20136,22 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", "dev": true }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, + "optional": true, "requires": { "clone": "^1.0.2" } }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -18354,6 +20162,17 @@ "object-keys": "^1.1.1" } }, + "degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "requires": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -18366,93 +20185,6 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, - "devtools": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.40.0.tgz", - "integrity": "sha512-hiDPCNG/mpD+bSgegxoe5nwyxWav+QpIvT+7H9D0dUwjB0q04OF473qGflSQ1QpGig6l4qG92tA7dVnLsdP75A==", - "dev": true, - "requires": { - "@types/node": "^18.0.0", - "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.27.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "chrome-launcher": "^0.15.0", - "edge-paths": "^2.1.0", - "puppeteer-core": "13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^9.0.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" - } - }, - "devtools-protocol": { - "version": "0.0.948846", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", - "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", - "dev": true - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "puppeteer-core": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.1.3.tgz", - "integrity": "sha512-96pzvVBzq5lUGt3L/QrIH3mxn3NfZylHeusNhq06xBAHPI0Upc0SC/9u7tXjL0oRnmcExeVRJivr1lj7Ah/yDQ==", - "dev": true, - "requires": { - "debug": "4.3.2", - "devtools-protocol": "0.0.948846", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.7", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.2.3" - } - }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - } - } - }, - "devtools-protocol": { - "version": "0.0.1260888", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1260888.tgz", - "integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==", - "dev": true - }, "dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -18469,12 +20201,6 @@ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -18572,6 +20298,12 @@ "domelementtype": "1" } }, + "dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "dev": true + }, "download": { "version": "6.2.5", "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", @@ -18729,15 +20461,55 @@ } }, "edge-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz", - "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", + "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", "dev": true, "requires": { - "@types/which": "^1.3.2", + "@types/which": "^2.0.1", "which": "^2.0.2" } }, + "edgedriver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.1.tgz", + "integrity": "sha512-/dM/PoBf22Xg3yypMWkmRQrBKEnSyNaZ7wHGCT9+qqT14izwtFT+QvdR89rjNkMfXwW+bSFoqOfbcvM+2Cyc7w==", + "dev": true, + "requires": { + "@wdio/logger": "^9.1.3", + "@zip.js/zip.js": "^2.7.53", + "decamelize": "^6.0.0", + "edge-paths": "^3.0.5", + "fast-xml-parser": "^4.5.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^3.3.2", + "which": "^5.0.0" + }, + "dependencies": { + "decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true + }, + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + }, + "which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "requires": { + "isexe": "^3.1.1" + } + } + } + }, "ejs": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", @@ -18759,6 +20531,27 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -18880,6 +20673,39 @@ "is-symbol": "^1.0.2" } }, + "esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, "escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -18892,6 +20718,27 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, "eslint": { "version": "8.57.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", @@ -19327,12 +21174,24 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, "eventemitter2": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", "dev": true }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, "exec-buffer": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", @@ -19476,25 +21335,63 @@ } }, "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.2.tgz", + "integrity": "sha512-YN9Mgv2mtTWXVmifQq3QT+ixCL/uLuLJw+fdp8MOjKqu8K3XQh3o5aulMM1tn+O2DdrWNxLZTeJsCY/VofUA0A==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "30.0.2", + "@jest/get-type": "30.0.1", + "jest-matcher-utils": "30.0.2", + "jest-message-util": "30.0.2", + "jest-mock": "30.0.2", + "jest-util": "30.0.2" } }, "expect-webdriverio": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-3.3.1.tgz", - "integrity": "sha512-G+MLBIbIMvruHtB+ONQEN6q6tazM/6j6j22Db+PiM7V5/fv/QsMSP0p+JFm6ladJtjxokmDoIxQLTM5J6WzTQA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.3.4.tgz", + "integrity": "sha512-FU+96C0nqeYTXrJcGLUDB6hPKKaSm1/tVHjFDE4EDHGCYvajAHCC2MBQJ5MomjCmp6lGMz36lDHeZj52LHylyA==", "dev": true, "requires": { - "expect": "^27.0.2", - "jest-matcher-utils": "^27.0.2" + "@vitest/snapshot": "^3.2.4", + "expect": "^30.0.0", + "jest-matcher-utils": "^30.0.0", + "lodash.isequal": "^4.5.0" + }, + "dependencies": { + "@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "requires": { + "tinyrainbow": "^2.0.0" + } + }, + "@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "requires": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + } + }, + "pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true + }, + "tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true + } } }, "ext-list": { @@ -19557,6 +21454,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -19595,12 +21498,12 @@ "dev": true }, "fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", "dev": true, "requires": { - "strnum": "^1.0.5" + "strnum": "^1.1.1" } }, "fastest-levenshtein": { @@ -19636,19 +21539,29 @@ "pend": "~1.2.0" } }, - "figures": { + "fetch-blob": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "requires": { + "is-unicode-supported": "^2.0.0" }, "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true } } @@ -19857,6 +21770,15 @@ "mime-types": "^2.1.12" } }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "requires": { + "fetch-blob": "^3.1.2" + } + }, "formidable": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", @@ -19916,17 +21838,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -19934,9 +21845,9 @@ "dev": true }, "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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 }, @@ -19955,6 +21866,45 @@ "globule": "^1.0.0" } }, + "geckodriver": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-5.0.0.tgz", + "integrity": "sha512-vn7TtQ3b9VMJtVXsyWtQQl1fyBVFhQy7UvJF96kPuuJ0or5THH496AD3eUyaDD11+EqCxH9t6V+EP9soZQk4YQ==", + "dev": true, + "requires": { + "@wdio/logger": "^9.1.3", + "@zip.js/zip.js": "^2.7.53", + "decamelize": "^6.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^3.3.2", + "tar-fs": "^3.0.6", + "which": "^5.0.0" + }, + "dependencies": { + "decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true + }, + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + }, + "which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "requires": { + "isexe": "^3.1.1" + } + } + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -19991,6 +21941,12 @@ "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", "dev": true }, + "get-port": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", + "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", + "dev": true + }, "get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -20044,6 +22000,25 @@ "resolve-pkg-maps": "^1.0.0" } }, + "get-uri": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "dev": true, + "requires": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "dependencies": { + "data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true + } + } + }, "getobject": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", @@ -20291,29 +22266,10 @@ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true }, - "got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "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 }, "grapheme-splitter": { @@ -20791,6 +22747,12 @@ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true }, + "htmlfy": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz", + "integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==", + "dev": true + }, "htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", @@ -20839,18 +22801,22 @@ } } }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, "http-parser-js": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -20862,26 +22828,22 @@ "sshpk": "^1.7.0" } }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "requires": { - "agent-base": "6", + "agent-base": "^7.1.2", "debug": "4" } }, + "human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -20942,6 +22904,12 @@ "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", "dev": true }, + "import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -20977,26 +22945,19 @@ "dev": true }, "inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz", + "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", "dev": true, "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "@inquirer/core": "^9.2.1", + "@inquirer/prompts": "^6.0.1", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "ansi-escapes": "^4.3.2", + "mute-stream": "^1.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.1" } }, "internal-slot": { @@ -21026,6 +22987,24 @@ "p-is-promise": "^1.1.0" } }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + } + } + }, "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -21103,12 +23082,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -21159,12 +23132,6 @@ "is-extglob": "^2.1.1" } }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true - }, "is-jpg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", @@ -21352,15 +23319,6 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -21426,50 +23384,83 @@ } }, "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.2.tgz", + "integrity": "sha512-2UjrNvDJDn/oHFpPrUTVmvYYDNeNtw2DlY3er8bI6vJJb9Fb35ycp/jFLd5RdV59tJ8ekVXX3o/nwPcscgXZJQ==", "dev": true, "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.0.1", + "chalk": "^4.1.2", + "pretty-format": "30.0.2" } }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - }, "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.2.tgz", + "integrity": "sha512-1FKwgJYECR8IT93KMKmjKHSLyru0DqguThov/aWpFccC0wbiXGOxYEu7SScderBD7ruDOpl7lc5NG6w3oxKfaA==", "dev": true, "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@jest/get-type": "30.0.1", + "chalk": "^4.1.2", + "jest-diff": "30.0.2", + "pretty-format": "30.0.2" } }, "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz", + "integrity": "sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.1", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.0.2", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "stack-utils": "^2.0.6" + } + }, + "jest-mock": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz", + "integrity": "sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==", + "dev": true, + "requires": { + "@jest/types": "30.0.1", + "@types/node": "*", + "jest-util": "30.0.2" + } + }, + "jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true + }, + "jest-util": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz", + "integrity": "sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==", + "dev": true, + "requires": { + "@jest/types": "30.0.1", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "dependencies": { + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true + } } }, "jimp": { @@ -21639,16 +23630,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, "jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -21706,15 +23687,31 @@ } }, "junit-report-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/junit-report-builder/-/junit-report-builder-3.0.0.tgz", - "integrity": "sha512-aW7DnfLddUb51T+V08bJyecexaLomy5ID/0FXvhwsRXs9E0abvDaDT024U99J2agU3dt4q0ppzfKxSwrIIgXWg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/junit-report-builder/-/junit-report-builder-5.1.1.tgz", + "integrity": "sha512-ZNOIIGMzqCGcHQEA2Q4rIQQ3Df6gSIfne+X9Rly9Bc2y55KxAZu8iGv+n2pP0bLf0XAOctJZgeloC54hWzCahQ==", "dev": true, "requires": { - "date-format": "0.0.2", - "lodash": "^4.17.15", - "make-dir": "^1.3.0", + "lodash": "^4.17.21", + "make-dir": "^3.1.0", "xmlbuilder": "^15.1.1" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } } }, "keyv": { @@ -21747,12 +23744,6 @@ "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", "dev": true }, - "ky": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", - "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", - "dev": true - }, "lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -21843,33 +23834,6 @@ } } }, - "lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "marky": "^1.2.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -21948,6 +23912,25 @@ } } }, + "locate-app": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.5.0.tgz", + "integrity": "sha512-xIqbzPMBYArJRmPGUZD9CzV9wOqmVtQnaAn3wrj3s6WYW0bQvPI7x+sPYUGmDTYMHefVK//zc6HEYZ1qnxIK+Q==", + "dev": true, + "requires": { + "@promptbook/utils": "0.69.5", + "type-fest": "4.26.0", + "userhome": "1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", + "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", + "dev": true + } + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -21969,40 +23952,16 @@ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "dev": true }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", "dev": true }, "lodash.memoize": { @@ -22116,12 +24075,6 @@ "get-func-name": "^2.0.1" } }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, "lpad-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", @@ -22157,6 +24110,15 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, + "magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, "make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -22230,12 +24192,6 @@ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true }, - "marky": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", - "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", - "dev": true - }, "math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -22380,12 +24336,6 @@ "mime-db": "1.52.0" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -22434,12 +24384,6 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, "mocha": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", @@ -22477,15 +24421,6 @@ "balanced-match": "^1.0.0" } }, - "debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "requires": { - "ms": "^2.1.3" - } - }, "glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -22519,12 +24454,6 @@ "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 } } }, @@ -22540,9 +24469,9 @@ } }, "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 }, "multimatch": { @@ -22559,9 +24488,9 @@ } }, "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true }, "mwbot": { @@ -22588,19 +24517,33 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true + }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, "requires": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" } }, "node-releases": { @@ -22644,12 +24587,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, "normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", @@ -22835,23 +24772,6 @@ "logalot": "^2.0.0" } }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, "os-filter-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", @@ -22883,12 +24803,6 @@ "os-tmpdir": "^1.0.0" } }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true - }, "p-event": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", @@ -22910,12 +24824,6 @@ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", "dev": true }, - "p-iteration": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", - "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", - "dev": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -22964,6 +24872,32 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dev": true, + "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + } + }, + "pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "requires": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + } + }, "package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -23055,9 +24989,9 @@ } }, "parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "dev": true }, "parse-passwd": { @@ -23066,6 +25000,42 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "requires": { + "entities": "^6.0.0" + }, + "dependencies": { + "entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true + } + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "requires": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + } + }, + "parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dev": true, + "requires": { + "parse5": "^7.0.0" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -23121,6 +25091,12 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, "pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", @@ -23187,54 +25163,6 @@ "pngjs": "^3.0.0" } }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "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-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.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" - } - } - } - }, "pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -23411,14 +25339,14 @@ "dev": true }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz", + "integrity": "sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==", "dev": true, "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "@jest/schemas": "30.0.1", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "dependencies": { "ansi-styles": { @@ -23430,12 +25358,12 @@ } }, "pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dev": true, "requires": { - "parse-ms": "^2.1.0" + "parse-ms": "^4.0.0" } }, "prettyjson": { @@ -23480,6 +25408,30 @@ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", "dev": true }, + "proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dev": true, + "requires": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "dependencies": { + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + } + } + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -23520,34 +25472,6 @@ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true }, - "puppeteer-core": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", - "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", - "dev": true, - "requires": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "dependencies": { - "devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", - "dev": true - } - } - }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -23586,12 +25510,6 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, "rambda": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", @@ -23626,9 +25544,9 @@ } }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "read-pkg": { @@ -23916,12 +25834,6 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", @@ -23979,15 +25891,6 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true }, - "responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "requires": { - "lowercase-keys": "^2.0.0" - } - }, "resq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", @@ -24005,27 +25908,6 @@ } } }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "dependencies": { - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - } - } - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -24054,9 +25936,9 @@ "dev": true }, "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true }, "run-parallel": { @@ -24069,14 +25951,20 @@ } }, "rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "requires": { "tslib": "^2.1.0" } }, + "safaridriver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.0.tgz", + "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", + "dev": true + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -24210,9 +26098,9 @@ } }, "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true }, "semver-regex": { @@ -24239,12 +26127,20 @@ } }, "serialize-error": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", - "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", + "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", "dev": true, "requires": { - "type-fest": "^0.20.2" + "type-fest": "^2.12.2" + }, + "dependencies": { + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + } } }, "serialize-javascript": { @@ -24354,6 +26250,33 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socks": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", + "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", + "dev": true, + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "requires": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + } + }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -24384,6 +26307,12 @@ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true }, + "spacetrim": { + "version": "0.11.59", + "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.59.tgz", + "integrity": "sha512-lLYsktklSRKprreOm7NXReW8YiX2VBjbgmXYEziOoGf/qsJqAEACaDvoTtUOycwjpaSh+bT8eu0KrJn7UNxiCg==", + "dev": true + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -24417,15 +26346,15 @@ "dev": true }, "split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true }, "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, "squeak": { @@ -24511,9 +26440,9 @@ "dev": true }, "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -24539,6 +26468,17 @@ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", "dev": true }, + "streamx": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "dev": true, + "requires": { + "bare-events": "^2.2.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -24657,6 +26597,12 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true + }, "strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -24690,9 +26636,9 @@ } }, "strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", "dev": true }, "style-search": { @@ -24777,15 +26723,6 @@ "source-map-js": "^1.0.1" } }, - "debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "requires": { - "ms": "^2.1.3" - } - }, "file-entry-cache": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", @@ -24829,12 +26766,6 @@ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "postcss-safe-parser": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", @@ -24893,12 +26824,6 @@ "postcss": "^8.4.32" } }, - "suffix": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", - "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=", - "dev": true - }, "superagent": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", @@ -25141,28 +27066,26 @@ "dev": true }, "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.10.tgz", + "integrity": "sha512-C1SwlQGNLe/jPNqapK8epDsXME7CAJR5RL3GcE6KWx1d9OUByzoHVcbu1VPI8tevg9H8Alae0AApHHFGzrD5zA==", "dev": true, "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" }, "dependencies": { "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } } } @@ -25240,6 +27163,15 @@ "uuid": "^3.0.1" } }, + "text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, + "requires": { + "b4a": "^1.6.4" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -25295,6 +27227,12 @@ "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", "dev": true }, + "tinyrainbow": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "dev": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -25329,12 +27267,6 @@ "punycode": "^2.1.1" } }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -25366,11 +27298,22 @@ "requires": {} }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, + "tsx": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", + "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", + "dev": true, + "requires": { + "esbuild": "~0.25.0", + "fsevents": "~2.3.3", + "get-tsconfig": "^4.7.5" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -25414,12 +27357,6 @@ "dev": true, "peer": true }, - "ua-parser-js": { - "version": "1.0.40", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", - "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", - "dev": true - }, "uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -25470,16 +27407,22 @@ "util-deprecate": "^1.0.2" } }, + "undici": { + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", + "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", + "dev": true + }, "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true }, - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true }, "unquote": { @@ -25528,6 +27471,18 @@ "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", "dev": true }, + "urlpattern-polyfill": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", + "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", + "dev": true + }, + "userhome": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.1.tgz", + "integrity": "sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA==", + "dev": true + }, "utif": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", @@ -25580,12 +27535,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -25612,102 +27561,109 @@ "semver": "^7.3.6" } }, + "wait-port": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz", + "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "commander": "^9.3.0", + "debug": "^4.3.4" + }, + "dependencies": { + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true + } + } + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, + "optional": true, "requires": { "defaults": "^1.0.3" } }, "wdio-mediawiki": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.7.1.tgz", - "integrity": "sha512-GMNnz/TIdASuD0Ufo76P7EkUCAW8Cs1c/T9XAVG2PgBWrw7KDM0oOqRRuXKcuCOKqn6VwNXTDkXwiL4u4AU7Fg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-4.1.3.tgz", + "integrity": "sha512-PjBIXcORCd5sdQ5/lf0WtMp2MCDCHHba58VJcdNvLod8/yEuvzERh49mISiRGGP0C+w3Lr3qLmsihTzpyIeWvg==", "dev": true, "requires": { "mwbot": "2.1.3" } }, + "web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true + }, "webdriver": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.40.0.tgz", - "integrity": "sha512-CKi3cDWgNVE/ibcsBfdtA+pQVeZ4oYlecLlwemulVxJdgr4l5bv+nXuoIhnYeVb6aAI4naK772vmWQ0XuRYhDQ==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.15.0.tgz", + "integrity": "sha512-JCW5xvhZtL6kjbckdePgVYMOlvWbh22F1VFkIf9pw3prwXI2EHED5Eq/nfDnNfHiqr0AfFKWmIDPziSafrVv4Q==", "dev": true, "requires": { - "@types/node": "^18.0.0", - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.27.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "got": "^11.0.2", - "ky": "0.30.0", - "lodash.merge": "^4.6.1" + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "9.15.0", + "@wdio/logger": "9.15.0", + "@wdio/protocols": "9.15.0", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "deepmerge-ts": "^7.0.3", + "undici": "^6.20.1", + "ws": "^8.8.0" } }, "webdriverio": { - "version": "7.40.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.40.0.tgz", - "integrity": "sha512-UswBOjpWwk7ziGi9beZGX/XFrp4m1Ws0ni5HI9mzAkOlpKKKWhnX6i95pWQV6sPF4Urv4RJf8WXayHhTbzXzdA==", - "dev": true, - "requires": { - "@types/aria-query": "^5.0.0", - "@types/node": "^18.0.0", - "@wdio/config": "7.40.0", - "@wdio/logger": "7.26.0", - "@wdio/protocols": "7.27.0", - "@wdio/repl": "7.40.0", - "@wdio/types": "7.40.0", - "@wdio/utils": "7.40.0", - "archiver": "^5.0.0", - "aria-query": "^5.2.1", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.15.0.tgz", + "integrity": "sha512-910g6ktwXdAKGyhgCPGw9BzIKOEBBYMFN1bLwC3bW/3mFlxGHO/n70c7Sg9hrsu9VWTzv6m+1Clf27B9uz4a/Q==", + "dev": true, + "requires": { + "@types/node": "^20.11.30", + "@types/sinonjs__fake-timers": "^8.1.5", + "@wdio/config": "9.15.0", + "@wdio/logger": "9.15.0", + "@wdio/protocols": "9.15.0", + "@wdio/repl": "9.4.4", + "@wdio/types": "9.15.0", + "@wdio/utils": "9.15.0", + "archiver": "^7.0.1", + "aria-query": "^5.3.0", + "cheerio": "^1.0.0-rc.12", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools": "7.40.0", - "devtools-protocol": "^0.0.1260888", - "fs-extra": "^11.1.1", - "grapheme-splitter": "^1.0.2", + "grapheme-splitter": "^1.0.4", + "htmlfy": "^0.6.0", + "is-plain-obj": "^4.1.0", + "jszip": "^3.10.1", "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", "lodash.zip": "^4.2.0", - "minimatch": "^6.0.4", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", + "query-selector-shadow-dom": "^1.0.1", + "resq": "^1.11.0", "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.40.0" + "serialize-error": "^11.0.3", + "urlpattern-polyfill": "^10.0.0", + "webdriver": "9.15.0" }, "dependencies": { - "brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true } } }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, "websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -25725,16 +27681,32 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, + "whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -25810,9 +27782,9 @@ } }, "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "dev": true, "requires": {} }, @@ -25965,100 +27937,6 @@ } } }, - "yarn-install": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==", - "dev": true, - "requires": { - "cac": "^3.0.3", - "chalk": "^1.1.3", - "cross-spawn": "^4.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -26075,33 +27953,50 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true + }, + "yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true + }, "zip-stream": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", - "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", "dev": true, "requires": { - "archiver-utils": "^3.0.4", - "compress-commons": "^4.1.2", - "readable-stream": "^3.6.0" + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" }, "dependencies": { - "archiver-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", - "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "requires": { - "glob": "^7.2.3", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" } } } diff --git a/package.json b/package.json index 4cb1d898d2..f3e66e4fff 100644 --- a/package.json +++ b/package.json @@ -14,11 +14,11 @@ "test": "grunt test && node build/checkModules.js" }, "devDependencies": { - "@wdio/cli": "7.40.0", - "@wdio/junit-reporter": "7.40.0", - "@wdio/local-runner": "7.40.0", - "@wdio/mocha-framework": "7.40.0", - "@wdio/spec-reporter": "7.40.0", + "@wdio/cli": "9.15.0", + "@wdio/junit-reporter": "9.15.0", + "@wdio/local-runner": "9.15.0", + "@wdio/mocha-framework": "9.15.0", + "@wdio/spec-reporter": "9.15.0", "api-testing": "1.7.1", "eslint-config-wikimedia": "0.30.0", "grunt": "1.6.1", @@ -36,6 +36,6 @@ "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", - "wdio-mediawiki": "2.7.1" + "wdio-mediawiki": "4.1.3" } } From c7a8f757cdd1c526c0f04096bcaee998e1499842 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 25 Jun 2025 09:27:47 +0200 Subject: [PATCH 406/730] Localisation updates from https://translatewiki.net. Change-Id: I4ef25b645ddcd11d91dc379a4fbe230773517532 --- editcheck/i18n/fi.json | 3 ++- i18n/ve-mw/ru.json | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 3400fa4ef0..6f9467ad41 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -23,7 +23,8 @@ "editcheck-copyvio-title": "Liitetty sisältö", "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Se on usein sekä tekijänoikeusrikkomus että plagiarismia.", "editcheck-tone-title": "Korjaa sävyä?", - "editcheck-tone-description": "Muut muokkaajat korjaavat usein tämänkaltaisia ilmauksia, jotta tekstin sävy olisi tasapainoisempi. [$1 Lisätietoja]", + "editcheck-tone-description": "Muut käyttäjät korjaavat usein tämänkaltaisia ilmauksia, koska ne ovat sävyltään epätasapainoisia. [$1 Lisätietoja]", + "editcheck-tone-footer": "Tunnistettu [$1 BERT-mallin] avulla", "editcheck-tone-title-acted": "Sävyn korjaus", "editcheck-tone-description-acted": "Varo ilmauksia, jotka ovat ylistäviä, väheksyviä, ympäripyöreitä tai jotka tukevat tiettyä näkökulmaa.", "editcheck-review-title": "Tarkasta muutokset", diff --git a/i18n/ve-mw/ru.json b/i18n/ve-mw/ru.json index ce32218423..51c450fdb8 100644 --- a/i18n/ve-mw/ru.json +++ b/i18n/ve-mw/ru.json @@ -33,6 +33,7 @@ "Megakott", "Merrahtar", "Meshkov.a", + "MidnightLG", "Movses", "NBS", "Niklem", @@ -67,8 +68,13 @@ "collabpad-import-subtitle": "Импортировано из $1", "collabpad": "CollabPad", "tooltip-ca-ve-edit": "Редактировать данную страницу", + "tooltip-ca-ve-edit-local": "Редактировать страницу локального описания", + "tooltip-ca-ve-create": "Создать эту страницу", + "tooltip-ca-ve-create-local": "Создать страницу локального описания", "tooltip-ca-editsource": "Править исходный текст этой страницы", + "tooltip-ca-editsource-local": "Править код страницы локального описания.", "tooltip-ca-createsource": "Создать страницу в редакторе исходного текста", + "tooltip-ca-createsource-local": "Создать код страницы локального описания", "visualeditor-advancedsettings-tool": "Дополнительные настройки", "visualeditor-annotations-default-description": "Эта часть страницы является частью диапазона аннотаций.", "visualeditor-annotations-default-end": "Конец диапазона аннотаций", @@ -92,11 +98,13 @@ "visualeditor-categories-tool": "Категории", "visualeditor-changedesc-mwcategory-sortkey-changed": "Ключ сортировки изменён с $1 на $2", "visualeditor-changedesc-mwcategory-sortkey-set": "Для ключа сортировки установлено значение $1", + "visualeditor-changedesc-mwcategory-sortkey-unset": "Ключ сортировки убран из $1", "visualeditor-changedesc-mwlanguagevariant": "Изменена разметка языкового варианта", "visualeditor-changedesc-mwredirect": "Цель перенаправления изменена с $1 на $2", "visualeditor-changedesc-mwtransclusion": "Параметры шаблона изменены", "visualeditor-desc": "Визуальный редактор для MediaWiki", "visualeditor-descriptionpagelink": "Project:Визуальный редактор", + "visualeditor-dialog-extension-abandonedit": "Вы уверены, что хотите закрыть этот диалог, не применяя изменения?", "visualeditor-dialog-media-alttext-checkbox": "Использовать заголовок в качестве альтернативного текста", "visualeditor-dialog-media-alttext-section": "Альтернативный текст", "visualeditor-dialog-media-alttext-section-help": "Текстовое описание, которое будет использоваться, если визуальное отображение элемента недоступно. Описание должно предоставлять цель и информацию, заключенную в элементе. Это необходимо незрячим пользователям и людям, использующим программное обеспечение для чтения с экрана или текстовые браузеры.", @@ -295,6 +303,7 @@ "visualeditor-includes-includeonly-description": "Когда содержание этой страницы используется на другой странице, то следующее дополнительное содержание будет внесено сюда:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Узнать больше о частичном включении]", "visualeditor-languages-tool": "Языки", + "visualeditor-linkcontext-uneditable": "К сожалению, в настоящее время эта ссылка может быть изменена только в режиме правки кода.", "visualeditor-linkinspector-button-link-external": "Внешний веб-сайт", "visualeditor-linkinspector-button-link-internal": "Поиск внутренних страниц", "visualeditor-linkinspector-convert-link-isbn": "Превратить в ISBN-ссылку", @@ -303,6 +312,7 @@ "visualeditor-linkinspector-educationpopup-text": "Создавайте для важных слов вики-ссылки на другие статьи и сайты. Это упростит читателям понимание контекста.", "visualeditor-linkinspector-educationpopup-title": "Ссылки", "visualeditor-linkinspector-illegal-title": "Недопустимый заголовок страницы", + "visualeditor-linkinspector-invalid-blocked": "К сожалению, ссылки на этот сайт нельзя использовать на этой вики. Попробуйте другую ссылку.", "visualeditor-linkinspector-invalid-external": "Укажите URL полностью, например https://example.org", "visualeditor-linknodeinspector-add-label": "Добавить подпись", "visualeditor-linknodeinspector-title": "Простая ссылка", @@ -362,6 +372,8 @@ "visualeditor-preference-tabs-prefer-ve": "Всегда открывать визуальный редактор, если это возможно", "visualeditor-preference-tabs-prefer-wt": "Всегда открывать редактор исходного текста", "visualeditor-preference-tabs-remember-last": "Помнить мой последний редактор", + "visualeditor-preference-collab-label": "Совместное редактирование", + "visualeditor-preference-collab-description": "Пригласить других участников присоединиться к вашей сессии редактирования в визуальном редакторе.", "visualeditor-rebase-client-export": "Экспорт", "visualeditor-rebase-client-export-start": "Экспорт...", "visualeditor-rebase-client-import": "Импортировать", From 006d1d6333102084d976481e9efc5329e0f25d46 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 25 Jun 2025 14:21:32 +0100 Subject: [PATCH 407/730] Follow-up I79a82a8dd6: Ensure xhr promise is still abortable Change-Id: Ib0dcc5a92218b7fbd471a7cd590529ca227df64e --- modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js b/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js index 34d9f26cd7..39203d1707 100644 --- a/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js +++ b/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js @@ -76,7 +76,8 @@ ve.ce.MWExtensionNode.prototype.generateContents = function ( config ) { const wikitext = mw.html.element( tagName, attrs, new mw.html.Raw( extsrc ) ); if ( this.constructor.static.rendersEmpty || extsrc.trim() !== '' ) { - const xhr = ve.init.target.parseWikitextFragment( wikitext, false, this.getModel().getDocument() ).then( + const xhr = ve.init.target.parseWikitextFragment( wikitext, false, this.getModel().getDocument() ); + xhr.then( this.onParseSuccess.bind( this, deferred ), this.onParseError.bind( this, deferred ) ); From 203652c2d644c8313c644dcac0e71aeb62d4c264 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 25 Jun 2025 14:06:22 +0100 Subject: [PATCH 408/730] ArticleTarget: Avoid using chained promises with different return values This was highlighted as a potential issue in I79a82a8dd66 and it turns out these promise values are modified by the chaining and cause problems (can't switch from visual to source mode). Bug: T397818 Change-Id: I842483c095389c507bd9d73c12b7f40b80a4230b --- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index b24b837ecf..2bc2928b59 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1555,7 +1555,8 @@ ve.init.mw.ArticleTarget.prototype.save = function ( doc, options ) { data.vetags = taglist.join( ',' ); - const promise = this.saving = this.tryWithPreparedCacheKey( doc, data, 'save' ).then( + const promise = this.saving = this.tryWithPreparedCacheKey( doc, data, 'save' ); + promise.then( this.saveComplete.bind( this ), this.saveFail.bind( this, doc, data ) ).always( () => { @@ -1695,7 +1696,8 @@ ve.init.mw.ArticleTarget.prototype.serialize = function ( doc, callback ) { page: this.getPageName(), oldid: this.revid, etag: this.etag - }, 'serialize' ).then( + }, 'serialize' ); + promise.then( this.emit.bind( this, 'serializeComplete' ), this.emit.bind( this, 'serializeError' ) ).always( () => { From 77bf89cd95e528d33d92ca0fdba30b797eb52c44 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 25 Jun 2025 15:26:53 +0100 Subject: [PATCH 409/730] Fix filename of GutterSidebarEditCheckDialog Change-Id: I96294bb00b152687b2e4321ad6c819ff783a265a --- editcheck/modules/EditCheck.less | 2 +- ...GutterSidebarDialog.js => GutterSidebarEditCheckDialog.js} | 4 ++-- editcheck/modules/init.js | 2 +- extension.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename editcheck/modules/{EditCheckGutterSidebarDialog.js => GutterSidebarEditCheckDialog.js} (98%) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index ced7f54705..1eefc8f0ce 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -281,7 +281,7 @@ /* Mobile sidebar */ .ve-ui-editCheck-gutter-active { - div.ve-ui-editCheckGutterSidebarDialog { + div.ve-ui-gutterSidebarEditCheckDialog { background-color: @background-color-interactive-subtle; .ve-ui-editCheck-gutter-action { diff --git a/editcheck/modules/EditCheckGutterSidebarDialog.js b/editcheck/modules/GutterSidebarEditCheckDialog.js similarity index 98% rename from editcheck/modules/EditCheckGutterSidebarDialog.js rename to editcheck/modules/GutterSidebarEditCheckDialog.js index c44ef7a364..5eb91c4766 100644 --- a/editcheck/modules/EditCheckGutterSidebarDialog.js +++ b/editcheck/modules/GutterSidebarEditCheckDialog.js @@ -1,5 +1,5 @@ /*! - * VisualEditor UserInterface EditCheckGutterSidebarDialog class. + * VisualEditor UserInterface GutterSidebarEditCheckDialog class. * * @copyright See AUTHORS.txt */ @@ -14,7 +14,7 @@ ve.ui.GutterSidebarEditCheckDialog = function VeUiGutterSidebarEditCheckDialog( // Parent constructor ve.ui.GutterSidebarEditCheckDialog.super.call( this, config ); - this.$element.addClass( 've-ui-editCheckGutterSidebarDialog' ); + this.$element.addClass( 've-ui-gutterSidebarEditCheckDialog' ); }; /* Inheritance */ diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 9250e6af99..c267054b5b 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -15,7 +15,7 @@ require( './utils.js' ); require( './EditCheckDialog.js' ); require( './FixedEditCheckDialog.js' ); require( './SidebarEditCheckDialog.js' ); -require( './EditCheckGutterSidebarDialog.js' ); +require( './GutterSidebarEditCheckDialog.js' ); require( './EditCheckPreSaveToolbarTools.js' ); require( './EditCheckFactory.js' ); require( './EditCheckAction.js' ); diff --git a/extension.json b/extension.json index aa50105b14..d8e1aa4b27 100644 --- a/extension.json +++ b/extension.json @@ -640,7 +640,7 @@ "editcheck/modules/EditCheckDialog.js", "editcheck/modules/FixedEditCheckDialog.js", "editcheck/modules/SidebarEditCheckDialog.js", - "editcheck/modules/EditCheckGutterSidebarDialog.js", + "editcheck/modules/GutterSidebarEditCheckDialog.js", "editcheck/modules/EditCheckPreSaveToolbarTools.js", "editcheck/modules/EditCheckFactory.js", "editcheck/modules/EditCheckAction.js", From 8fb7cdff906607346beb0dcfa1bda4a1637ff106 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 25 Jun 2025 15:32:38 +0100 Subject: [PATCH 410/730] Move dialogs and checks into sub-folders Change-Id: I8a15eaee9b182e4d7e61b379319c1371ba5e6467 --- editcheck/modules/{ => dialogs}/EditCheckDialog.js | 0 .../modules/{ => dialogs}/EditCheckDialogTool.js | 0 .../modules/{ => dialogs}/FixedEditCheckDialog.js | 0 .../{ => dialogs}/GutterSidebarEditCheckDialog.js | 0 .../modules/{ => dialogs}/SidebarEditCheckDialog.js | 0 .../modules/{ => editchecks}/AsyncTextCheck.js | 0 editcheck/modules/{ => editchecks}/BaseEditCheck.js | 0 editcheck/modules/init.js | 13 ++++++------- extension.json | 12 ++++++------ 9 files changed, 12 insertions(+), 13 deletions(-) rename editcheck/modules/{ => dialogs}/EditCheckDialog.js (100%) rename editcheck/modules/{ => dialogs}/EditCheckDialogTool.js (100%) rename editcheck/modules/{ => dialogs}/FixedEditCheckDialog.js (100%) rename editcheck/modules/{ => dialogs}/GutterSidebarEditCheckDialog.js (100%) rename editcheck/modules/{ => dialogs}/SidebarEditCheckDialog.js (100%) rename editcheck/modules/{ => editchecks}/AsyncTextCheck.js (100%) rename editcheck/modules/{ => editchecks}/BaseEditCheck.js (100%) diff --git a/editcheck/modules/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js similarity index 100% rename from editcheck/modules/EditCheckDialog.js rename to editcheck/modules/dialogs/EditCheckDialog.js diff --git a/editcheck/modules/EditCheckDialogTool.js b/editcheck/modules/dialogs/EditCheckDialogTool.js similarity index 100% rename from editcheck/modules/EditCheckDialogTool.js rename to editcheck/modules/dialogs/EditCheckDialogTool.js diff --git a/editcheck/modules/FixedEditCheckDialog.js b/editcheck/modules/dialogs/FixedEditCheckDialog.js similarity index 100% rename from editcheck/modules/FixedEditCheckDialog.js rename to editcheck/modules/dialogs/FixedEditCheckDialog.js diff --git a/editcheck/modules/GutterSidebarEditCheckDialog.js b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js similarity index 100% rename from editcheck/modules/GutterSidebarEditCheckDialog.js rename to editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js diff --git a/editcheck/modules/SidebarEditCheckDialog.js b/editcheck/modules/dialogs/SidebarEditCheckDialog.js similarity index 100% rename from editcheck/modules/SidebarEditCheckDialog.js rename to editcheck/modules/dialogs/SidebarEditCheckDialog.js diff --git a/editcheck/modules/AsyncTextCheck.js b/editcheck/modules/editchecks/AsyncTextCheck.js similarity index 100% rename from editcheck/modules/AsyncTextCheck.js rename to editcheck/modules/editchecks/AsyncTextCheck.js diff --git a/editcheck/modules/BaseEditCheck.js b/editcheck/modules/editchecks/BaseEditCheck.js similarity index 100% rename from editcheck/modules/BaseEditCheck.js rename to editcheck/modules/editchecks/BaseEditCheck.js diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index c267054b5b..07d39b16b6 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -12,17 +12,16 @@ mw.editcheck = { }; require( './utils.js' ); -require( './EditCheckDialog.js' ); -require( './FixedEditCheckDialog.js' ); -require( './SidebarEditCheckDialog.js' ); -require( './GutterSidebarEditCheckDialog.js' ); require( './EditCheckPreSaveToolbarTools.js' ); require( './EditCheckFactory.js' ); require( './EditCheckAction.js' ); require( './EditCheckActionWidget.js' ); -require( './BaseEditCheck.js' ); -require( './AsyncTextCheck.js' ); - +require( './dialogs/EditCheckDialog.js' ); +require( './dialogs/FixedEditCheckDialog.js' ); +require( './dialogs/SidebarEditCheckDialog.js' ); +require( './dialogs/GutterSidebarEditCheckDialog.js' ); +require( './editchecks/BaseEditCheck.js' ); +require( './editchecks/AsyncTextCheck.js' ); require( './editchecks/AddReferenceEditCheck.js' ); if ( mw.editcheck.experimental ) { diff --git a/extension.json b/extension.json index d8e1aa4b27..dcdd1b1042 100644 --- a/extension.json +++ b/extension.json @@ -637,16 +637,16 @@ "editcheck/modules/init.js", "editcheck/modules/utils.js", "editcheck/modules/controller.js", - "editcheck/modules/EditCheckDialog.js", - "editcheck/modules/FixedEditCheckDialog.js", - "editcheck/modules/SidebarEditCheckDialog.js", - "editcheck/modules/GutterSidebarEditCheckDialog.js", "editcheck/modules/EditCheckPreSaveToolbarTools.js", "editcheck/modules/EditCheckFactory.js", "editcheck/modules/EditCheckAction.js", "editcheck/modules/EditCheckActionWidget.js", - "editcheck/modules/BaseEditCheck.js", - "editcheck/modules/AsyncTextCheck.js", + "editcheck/modules/dialogs/EditCheckDialog.js", + "editcheck/modules/dialogs/FixedEditCheckDialog.js", + "editcheck/modules/dialogs/SidebarEditCheckDialog.js", + "editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js", + "editcheck/modules/editchecks/BaseEditCheck.js", + "editcheck/modules/editchecks/AsyncTextCheck.js", "editcheck/modules/editchecks/AddReferenceEditCheck.js", { "name": "editcheck/modules/config.json", From a984d940d71a52646466ebbb7b5ae458281f0043 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 25 Jun 2025 15:46:37 +0100 Subject: [PATCH 411/730] EditCheck mobile: Compute bounding rect for multi-selection checks Bug: T397170 Change-Id: Idbe9ebc6659557b1ddb94c20918b8688a6fbf1a2 --- .../dialogs/GutterSidebarEditCheckDialog.js | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js index 5eb91c4766..82e8bb600b 100644 --- a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js +++ b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js @@ -108,25 +108,38 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions // First join overlapping actions into "sections" actions.forEach( ( action ) => { - const selection = action.getHighlightSelections()[ 0 ]; - const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); - const rect = selectionView.getSelectionBoundingRect(); - if ( !rect ) { + let boundingRect = null; + action.getHighlightSelections().forEach( ( selection ) => { + const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); + const rect = selectionView.getSelectionBoundingRect(); + if ( !boundingRect ) { + boundingRect = rect; + } else { + boundingRect.top = Math.min( boundingRect.top, rect.top ); + boundingRect.left = Math.min( boundingRect.left, rect.left ); + boundingRect.bottom = Math.max( boundingRect.bottom, rect.bottom ); + boundingRect.right = Math.max( boundingRect.right, rect.right ); + } + } ); + if ( !boundingRect ) { return; } + boundingRect.width = boundingRect.right - boundingRect.left; + boundingRect.height = boundingRect.bottom - boundingRect.top; + // Look for any other section that the new one overlaps with // TODO: join when two other sections are joined by the new one? - const prev = sections.find( ( p ) => !( p.rect.bottom < rect.top || rect.bottom < p.rect.top ) ); + const prev = sections.find( ( p ) => !( p.rect.bottom < boundingRect.top || boundingRect.bottom < p.rect.top ) ); if ( prev ) { // overlap, so merge prev.actions.push( action ); // top, bottom, left, right, width, height - prev.rect.top = Math.min( prev.rect.top, rect.top ); - prev.rect.bottom = Math.max( prev.rect.bottom, rect.bottom ); + prev.rect.top = Math.min( prev.rect.top, boundingRect.top ); + prev.rect.bottom = Math.max( prev.rect.bottom, boundingRect.bottom ); prev.rect.height = prev.rect.bottom - prev.rect.top; return; } - sections.push( { actions: [ action ], rect: rect } ); + sections.push( { actions: [ action ], rect: boundingRect } ); } ); // Now try to reuse old widgets if possible, to avoid icons flickering From 873c8f4c4c65f56896cfc71cdf03afcbf1686b9d Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 17 Jun 2025 22:20:43 -0500 Subject: [PATCH 412/730] Edit check: remove single check mode Bug: T397236 Depends-On: I0cdac1fb1fa8c264dddc38758e9938f606aa1f32 Change-Id: Ia795187bf222e3b72af205776d074b8b7b2faabc --- editcheck/modules/EditCheckFactory.js | 7 ------- editcheck/modules/dialogs/EditCheckDialog.js | 6 +----- extension.json | 4 ---- includes/Hooks.php | 1 - modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js | 2 -- 5 files changed, 1 insertion(+), 19 deletions(-) diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index 1b93b22374..cb0b495194 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -111,13 +111,6 @@ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( control if ( !check.canBeShown() ) { return; } - if ( - mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle && - listenerName === 'onBeforeSave' && - check.getName() !== 'addReference' - ) { - return; - } const checkListener = check[ listenerName ]; let actionOrPromise; try { diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index a4e75f61c5..8a8a737fbc 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -257,11 +257,7 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data, process ) { if ( data.footer !== undefined ) { this.footer.toggle( data.footer ); } else { - this.footer.toggle( - this.singleAction && - // If we're in single-check mode don't show even the disabled pagers: - !mw.config.get( 'wgVisualEditorConfig' ).editCheckSingle - ); + this.footer.toggle( this.singleAction ); } this.$element.toggleClass( 've-ui-editCheckDialog-singleAction', this.singleAction ); diff --git a/extension.json b/extension.json index dcdd1b1042..effdbd2899 100644 --- a/extension.json +++ b/extension.json @@ -141,10 +141,6 @@ "value": false, "description": "Enable experimental Edit Check feature. Can also be enabled using ?ecenable=1." }, - "VisualEditorEditCheckSingleCheckMode": { - "value": true, - "description": "Only allow a single edit check to be surfaced" - }, "VisualEditorEditCheckLoadExperimental": { "value": false, "description": "Load experimental edit checks from the `editchecks/experimental` directory. Can be `false` to not load anything, `true` to load everything, or an array of filenames to load only those checks" diff --git a/includes/Hooks.php b/includes/Hooks.php index 1e4d52ac2a..c2d1105a09 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -1181,7 +1181,6 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf 'useChangeTagging' => $veConfig->get( 'VisualEditorUseChangeTagging' ), 'editCheckTagging' => $veConfig->get( 'VisualEditorEditCheckTagging' ), 'editCheck' => $veConfig->get( 'VisualEditorEditCheck' ), - 'editCheckSingle' => $veConfig->get( 'VisualEditorEditCheckSingleCheckMode' ), 'editCheckExperimental' => (bool)$veConfig->get( 'VisualEditorEditCheckLoadExperimental' ), 'editCheckABTest' => $veConfig->get( 'VisualEditorEditCheckABTest' ), 'editCheckReliabilityAvailable' => ApiEditCheckReferenceUrl::isAvailable(), diff --git a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js index 27629ec09a..f959965abf 100644 --- a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js +++ b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js @@ -48,8 +48,6 @@ } else { inABTest = mw.user.getId() % 2 === 1; } - // Test group gets edit check in multiple-checks mode - conf.editCheckSingle = !inABTest; // Communicate the bucket to instrumentation: mw.config.set( 'wgVisualEditorEditCheckABTestBucket', '2025-03-editcheck-multicheck-reference-' + ( inABTest ? 'test' : 'control' ) ); } From 948982d0fffea35629a0fc48e67c4a792af8b9f5 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 26 Jun 2025 09:27:27 +0200 Subject: [PATCH 413/730] Localisation updates from https://translatewiki.net. Change-Id: Ib062049347775acdb9d7e5cb6906ee00eb15b596 --- editcheck/i18n/ar.json | 3 ++- editcheck/i18n/az.json | 3 ++- editcheck/i18n/de.json | 3 ++- editcheck/i18n/fi.json | 2 +- editcheck/i18n/fr.json | 4 +++- editcheck/i18n/ia.json | 3 ++- editcheck/i18n/ms.json | 11 +++++++++-- editcheck/i18n/zh-hans.json | 12 ++++++++++++ i18n/ve-mw/vi.json | 1 + i18n/ve-wmf/vi.json | 1 + 10 files changed, 35 insertions(+), 8 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index 6aa0fffd43..cb837d2d98 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -23,7 +23,8 @@ "editcheck-copyvio-title": "محتوى ملصوق", "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. هذا عادة ما يشكل انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", "editcheck-tone-title": "إعادة النظر في الأسلوب؟", - "editcheck-tone-description": "غالبًا ما يقوم المحررون الآخرون بمراجعة هذا النوع من الكلمات للحصول على أسلوب أكثر توازنًا. [$1 التعرف على المزيد]", + "editcheck-tone-description": "غالبًا ما يقوم المستخدمون الآخرون بمراجعة هذا النوع من العبارات، استنادًا على أنّ الأسلوب غير متّزن. [$1 التعرف على المزيد]", + "editcheck-tone-footer": "تم التحديد باستخدام [$1 نموذج BERT]", "editcheck-tone-title-acted": "مراجعة الأسلوب", "editcheck-tone-description-acted": "الحذر من التعبيرات المجاملة، أو المهينة، أو الغامضة، أو المبتذلة، أو المؤيدة لوجهة نظر معينة.", "editcheck-review-title": "مراجعة التغييرات", diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index 136255cf81..354660d882 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -22,7 +22,8 @@ "editcheck-copyvio-title": "Yapışdırılmış məzmun", "editcheck-copyvio-description": "Bir qayda olaraq, mətni digər mənbələrdən olduğu kimi kopyalamayın. Bunu etmək adətən həm müəllif hüquqlarının pozulması, həm də plagiat sayılır.", "editcheck-tone-title": "Tona yenidən baxılsın?", - "editcheck-tone-description": "Digər redaktorlar tez-tez daha balanslı bir tona sahib olmaq üçün bu cür ifadələrə yenidən baxırlar. [$1 Ətraflı məlumat]", + "editcheck-tone-description": "Digər istifadəçilər tez-tez tonun balanssız olduğunu söyləyərək bu cür ifadələri başdan yazırlar. [$1 Ətraflı məlumat]", + "editcheck-tone-footer": "[$1 BERT modeli] istifadə edilməklə müəyyən edilmişdir", "editcheck-tone-title-acted": "Tonu yenidən nəzərdən keçirmək", "editcheck-tone-description-acted": "Mübaliğəli, aşağılayıcı, qeyri-müəyyən, klişe və ya müəyyən bir nöqteyi-nəzərə dəstək verən ifadələrə diqqət yetirin.", "editcheck-review-title": "Dəyişiklikləri yoxla", diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index cfe0d13e13..39931c5c78 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -19,7 +19,8 @@ "editcheck-copyvio-title": "Eingefügter Inhalt", "editcheck-copyvio-description": "Kopiere in der Regel keinen Text aus anderen Quellen. Dies stellt in der Regel sowohl eine Verletzung des Urheberrechts als auch ein Plagiat dar.", "editcheck-tone-title": "Tonfall überarbeiten?", - "editcheck-tone-description": "Andere Benutzer überarbeiten diese Formulierungen häufig, um einen ausgewogeneren Tonfall zu erzielen. [$1 Mehr erfahren]", + "editcheck-tone-description": "Andere Benutzer überarbeiteten diese Art der Formulierung häufig, weil sie den Tonfall als unausgewogen ansehen. [$1 Mehr erfahren]", + "editcheck-tone-footer": "Identifiziert mit dem [$1 Sprachmodell BERT]", "editcheck-tone-title-acted": "Tonfall überarbeiten", "editcheck-tone-description-acted": "Achte auf Ausdrücke, die schmeichelhaft, abfällig, vage, klischeehaft oder die Unterstützung eines bestimmten Standpunkts sind.", "editcheck-review-title": "Änderungen überprüfen", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 6f9467ad41..a36c303bd9 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -23,7 +23,7 @@ "editcheck-copyvio-title": "Liitetty sisältö", "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Se on usein sekä tekijänoikeusrikkomus että plagiarismia.", "editcheck-tone-title": "Korjaa sävyä?", - "editcheck-tone-description": "Muut käyttäjät korjaavat usein tämänkaltaisia ilmauksia, koska ne ovat sävyltään epätasapainoisia. [$1 Lisätietoja]", + "editcheck-tone-description": "Muut käyttäjät korjaavat usein tämänkaltaisia ilmauksia, koska ne ovat sävyltään epäneutraaleja. [$1 Lisätietoja]", "editcheck-tone-footer": "Tunnistettu [$1 BERT-mallin] avulla", "editcheck-tone-title-acted": "Sävyn korjaus", "editcheck-tone-description-acted": "Varo ilmauksia, jotka ovat ylistäviä, väheksyviä, ympäripyöreitä tai jotka tukevat tiettyä näkökulmaa.", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index 94d85f205e..d198eda31b 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -3,6 +3,7 @@ "authors": [ "Derugon", "Gomoko", + "JLTRY", "Mahabarata" ] }, @@ -23,7 +24,8 @@ "editcheck-copyvio-title": "Contenu copié-collé", "editcheck-copyvio-description": "En règle générale, ne copiez pas de texte provenant d'autres sources. Cela constitue généralement une violation des droits d'auteur et un plagiat.", "editcheck-tone-title": "Réviser le ton ?", - "editcheck-tone-description": "D’autres éditeurs révisent souvent ce type de formulation pour avoir un ton plus équilibré. [$1 En savoir plus]", + "editcheck-tone-description": "D'autres utilisateurs révisent souvent ce genre de formulation, disant que le ton est déséquilibré. [$1 En savoir plus]", + "editcheck-tone-footer": "Identifié à l'aide d'un [ modèle BERT $1 ]", "editcheck-tone-title-acted": "Révision du ton", "editcheck-tone-description-acted": "Faites attention aux expressions flatteuses, désobligeantes, vagues, clichées ou qui soutiennent un point de vue particulier.", "editcheck-review-title": "Relire les modifications", diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index 7ea2576df2..0baabe250e 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -21,7 +21,8 @@ "editcheck-copyvio-title": "Contento collate", "editcheck-copyvio-description": "Como regula general, non copia contento de altere fontes. Isto es generalmente un violation del derecto de autor e un plagiato.", "editcheck-tone-title": "Revisar le tono?", - "editcheck-tone-description": "Altere redactores sovente revisa iste typo de formulation pro haber un tono plus equilibrate. [$1 Leger plus]", + "editcheck-tone-description": "Altere usatores sovente corrige iste genere de formulation perque le tono non se considera como equilibrate. [$1 Leger plus]", + "editcheck-tone-footer": "Identificate usante un [$1 modello BERT]", "editcheck-tone-title-acted": "Revision del tono", "editcheck-tone-description-acted": "Presta attention al expressiones flattante, denigrante, vage, stereotypate o que sustene un puncto de vista particular.", "editcheck-review-title": "Revider cambiamentos", diff --git a/editcheck/i18n/ms.json b/editcheck/i18n/ms.json index f16ee5309c..fec0943f23 100644 --- a/editcheck/i18n/ms.json +++ b/editcheck/i18n/ms.json @@ -6,6 +6,8 @@ }, "editcheck-dialog-action-no": "Tidak", "editcheck-dialog-action-yes": "Ya", + "editcheck-dialog-action-decline": "Tolak", + "editcheck-dialog-action-revise": "Semak semula", "editcheck-dialog-addref-description": "Bantu pembaca memahami dari mana maklumat ini datang dengan menambahkan petikan.", "editcheck-dialog-addref-reject-question": "Kenapa anda tidak menambah sumber rujukan?", "editcheck-dialog-addref-reject-description": "Penyunting akan menilai dan mengetahui tentang keputusan anda untuk menggugurkan rujukan dengan lebih lanjut.", @@ -18,13 +20,18 @@ "editcheck-dialog-title": "Sebelum diterbitkan", "editcheck-copyvio-title": "Kandungan yang ditampal", "editcheck-copyvio-description": "Satu peraturan umum yang perlu diikut ialah: jangan salin teks daripada sumber lain. Penyalinan teks bulat-bulat biasanya melanggar hak cipta dan merupakan suatu aktiviti plagiarisme.", + "editcheck-tone-title": "Semak Nada?", + "editcheck-tone-description": "Pengguna lain seringkali membetulkan olahan kata seperti ini, dengan menyatakan bahawa nada ayat yang digunakan tidak seimbang. [$1 Ketahui lebih lanjut]", + "editcheck-tone-footer": "Dikenal pasti menggunakan [$1 model BERT]", + "editcheck-tone-title-acted": "Menyemak Nada", + "editcheck-tone-description-acted": "Perhatikan ungkapan kata yang bersifat mengampu, memperkecil, kabur, klise atau terlalu menyokong sudut pandangan tertentu.", "editcheck-review-title": "Semak perubahan", "tag-editcheck-reference-decline-common-knowledge": "Semak Suntingan (rujukan) ditolak (pengetahuan umum)", - "tag-editcheck-reference-decline-common-knowledge-description": "Sumber rujukan SemakSuntingan ditolak kerana ia merupakan pengetahuan am", + "tag-editcheck-reference-decline-common-knowledge-description": "Rujukan SemakSuntingan ditolak kerana ia merupakan pengetahuan am", "tag-editcheck-reference-decline-irrelevant": "Semak Suntingan (rujukan) ditolak (tidak berkaitan)", "tag-editcheck-reference-decline-irrelevant-description": "Rujukan SemakSuntingan ditolak kerana tidak berkaitan", "tag-editcheck-reference-decline-other": "Semak Suntingan (rujukan) ditolak (sebab lain)", "tag-editcheck-reference-decline-other-description": "Rujukan SemakSuntingan ditolak disebabkan oleh sebab yang tidak dinyatakan", "tag-editcheck-reference-decline-uncertain": "Semak Suntingan (rujukan) ditolak (kurang kepastian)", - "tag-editcheck-reference-decline-uncertain-description": "SemakSuntingan rujukan ditolak kerana kurang pasti akan rujukan yang ingin ditambah" + "tag-editcheck-reference-decline-uncertain-description": "Rujukan SemakSuntingan ditolak kerana kurang pasti akan rujukan yang ingin ditambah" } diff --git a/editcheck/i18n/zh-hans.json b/editcheck/i18n/zh-hans.json index 89a3439dd5..d42b536cd8 100644 --- a/editcheck/i18n/zh-hans.json +++ b/editcheck/i18n/zh-hans.json @@ -2,13 +2,17 @@ "@metadata": { "authors": [ "Anterdc99", + "Hakimi97", "LittlePaw365", + "Peterxy12", "SCP-2000", "星海" ] }, "editcheck-dialog-action-no": "否", "editcheck-dialog-action-yes": "是", + "editcheck-dialog-action-decline": "拒绝", + "editcheck-dialog-action-revise": "修订", "editcheck-dialog-addref-description": "添加引证来帮助读者了解此信息的出处。", "editcheck-dialog-addref-reject-question": "您为何未添加引证?", "editcheck-dialog-addref-reject-description": "其他编者会想要进一步了解您作出拒绝引证的决定的原因。", @@ -19,6 +23,14 @@ "editcheck-dialog-addref-success-notify": "感谢您添加引证!", "editcheck-dialog-addref-title": "添加引证", "editcheck-dialog-title": "发布前", + "editcheck-copyvio-title": "粘贴的内容", + "editcheck-copyvio-description": "一般来说,不要从其他来源复制文本。这样做通常既构成侵犯版权,也构成抄袭。", + "editcheck-tone-title": "修改语气?", + "editcheck-tone-description": "其他用户经常会修改这种措辞,认为其语气不平衡。[ $1了解更多]", + "editcheck-tone-footer": "使用[$1 BERT模型]进行识别", + "editcheck-tone-title-acted": "修改语气", + "editcheck-tone-description-acted": "注意那些奉承、贬损、模糊、陈词滥调或支持特定观点的表达。", + "editcheck-review-title": "查看更改", "tag-editcheck-reference-decline-common-knowledge": "拒绝(参考资料)编辑检查(常识)", "tag-editcheck-reference-decline-common-knowledge-description": "参考资料编辑检查以常识作为原因而拒绝", "tag-editcheck-reference-decline-irrelevant": "拒绝(参考资料)编辑检查(无关)", diff --git a/i18n/ve-mw/vi.json b/i18n/ve-mw/vi.json index 40493497da..5dc1319b4d 100644 --- a/i18n/ve-mw/vi.json +++ b/i18n/ve-mw/vi.json @@ -18,6 +18,7 @@ "Nguyên Lê", "Nguyễn Mạnh An", "Nhatminh01", + "Nvdtn19", "P.T.Đ", "Pisceskaze", "Plantaest", diff --git a/i18n/ve-wmf/vi.json b/i18n/ve-wmf/vi.json index f0ab9d26ea..52acb66580 100644 --- a/i18n/ve-wmf/vi.json +++ b/i18n/ve-wmf/vi.json @@ -8,6 +8,7 @@ "Jdforrester", "Minh Nguyen", "Nghiemtrongdai VN", + "Nvdtn19", "아라" ] }, From aa9985f4c6ff543fafee26d20e3f20acccba995d Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 26 Jun 2025 12:36:18 +0100 Subject: [PATCH 414/730] Force-clear toolbar after teardown This is more properly fixed in I3128d534, but this patch will be easier to backport as it fixes the issue without need a lib/ve update. Bug: T397914 Change-Id: Ic3a5bc03c513df74c01ba5d187037dfffd835e8c --- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index af7a3b9033..118b665b50 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1812,6 +1812,9 @@ ve.init.mw.ArticleTarget.prototype.teardown = function () { // Parent method this.teardownPromise = ve.init.mw.ArticleTarget.super.prototype.teardown.call( this ).then( () => saveDialogPromise.then( () => { + // HACK: Re-clear toolbar (T397914). Remove in next release when fixed + // upstream in VE core. + this.toolbar = null; mw.hook( 've.deactivationComplete' ).fire( this.edited ); } ) ); } From 42053f0d11795c3e9d94eed211ced49d21326cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Thu, 26 Jun 2025 14:14:37 +0100 Subject: [PATCH 415/730] Remove "paused" functionality We used a "paused" state to change the highlight under a user's cursor for async checks, but the change didn't make it into the final version. This cleans up the vestigial code. Bug: T397708 Change-Id: I3df1271031920fed46454040d558437abd8717af --- editcheck/modules/EditCheckAction.js | 8 +------- editcheck/modules/controller.js | 8 +++----- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 2daee1cc7b..990184b0aa 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -11,7 +11,6 @@ * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.title] Title * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.message] Body message * @param {string} [config.id] Optional unique identifier - * @param {boolean} [config.paused=false] The check is paused * @param {string} [config.icon] Optional icon name * @param {string} [config.type='warning'] Type of message (e.g., 'warning', 'error') * @param {Object[]} [config.choices] User choices @@ -26,7 +25,6 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.message = config.message; this.footer = config.footer; this.id = config.id; - this.paused = config.paused || false; this.title = config.title; this.icon = config.icon; this.type = config.type || 'warning'; @@ -182,19 +180,15 @@ mw.editcheck.EditCheckAction.prototype.onActionClick = function ( surface, actio * Compare to another action * * @param {mw.editcheck.EditCheckAction} other Other action - * @param {boolean} [ignorePaused] Ignore `paused` flag * @return {boolean} */ -mw.editcheck.EditCheckAction.prototype.equals = function ( other, ignorePaused ) { +mw.editcheck.EditCheckAction.prototype.equals = function ( other ) { if ( this.check.constructor !== other.check.constructor ) { return false; } if ( this.id || other.id ) { return this.id === other.id; } - if ( !ignorePaused && this.paused !== other.paused ) { - return false; - } if ( this.fragments.length !== other.fragments.length ) { return false; } diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ad0c31c9e5..87204f9525 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -215,10 +215,8 @@ Controller.prototype.refresh = function () { /** * Fires all edit checks associated with a given listener. * - * Actions are created anew for every run, but we want continuity for certain - * state changes such as 'paused' state. We therefore match them up to existing - * actions by checking for equality, ie, the same constructor and same ID or - * fragments. + * Actions are created anew for every run, but we want continuity for certain state changes. We therefore match them up + * to existing actions by checking for equality, ie, the same constructor and same ID or fragments. * * We return a promise so that UI actions such as opening the pre-save dialog * do not occur until checks have completed. @@ -641,7 +639,7 @@ Controller.prototype.drawSelections = function () { this.focusedAction.getHighlightSelections().map( ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) ), - this.focusedAction.paused ? { color: '#888' } : {} + {} ); } else { surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); From 832b07cd7f926ef21d67e1420a20a16fdcd740c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Thu, 26 Jun 2025 14:21:41 +0100 Subject: [PATCH 416/730] Remove existing checks as an argument to edit checks Checks received a copy of the existing checks so that they could look up identical checks and consistently return the original version. This was also used to allow state to be kept on a check. We no longer keep any state on checks and we map to the existing checks in controller.js. Bug: T397730 Change-Id: Ibcb9b49be18d5656b7b075c596557ae68b2b28b5 --- editcheck/modules/EditCheckFactory.js | 9 ++++----- editcheck/modules/controller.js | 2 +- editcheck/modules/editchecks/AsyncTextCheck.js | 3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index cb0b495194..de0cfb5e6f 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -93,18 +93,17 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener * Invoked by Controller.prototype.updateForListener, which itself is called in response to user actions such as * navigating away from a paragraph, making changes to the document, or clicking 'Save changes...' * - * Checks are created statelessly and then mapped to their 'originals' by the controller. The existing actions are - * provided so that checks may, if necessary, do this mapping themselves in order to add state. + * Checks are created statelessly and then mapped to their 'originals' by the controller. This way if we track state + * on the original, or use object identity with the actions to track UI updates, the object remains stable. * * TODO: Rename to createAllActionsByListener * * @param {mw.editcheck.Controller} controller * @param {string} listenerName Listener name * @param {ve.dm.Surface} surfaceModel Surface model - * @param {mw.editcheck.EditCheckAction[]} existing Existing actions * @return {Promise} Promise that resolves with an updated list of Actions */ -mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( controller, listenerName, surfaceModel, existing ) { +mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( controller, listenerName, surfaceModel ) { const actionOrPromiseList = []; this.getNamesByListener( listenerName ).forEach( ( checkName ) => { const check = this.create( checkName, controller, mw.editcheck.config[ checkName ] ); @@ -114,7 +113,7 @@ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( control const checkListener = check[ listenerName ]; let actionOrPromise; try { - actionOrPromise = checkListener.call( check, surfaceModel, existing ); + actionOrPromise = checkListener.call( check, surfaceModel ); } catch ( ex ) { // HACK: ensure that synchronous exceptions are returned as rejected promises. // TODO: Consider making all checks return promises. This would unify exception diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ad0c31c9e5..f9f8a76eaf 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -231,7 +231,7 @@ Controller.prototype.refresh = function () { Controller.prototype.updateForListener = function ( listener, always ) { const existing = this.getActions( listener ) || []; const otherListenersExisting = this.getActions().filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); - return mw.editcheck.editCheckFactory.createAllByListener( this, listener, this.surface.getModel(), existing ) + return mw.editcheck.editCheckFactory.createAllByListener( this, listener, this.surface.getModel() ) .then( ( actions ) => actions.map( ( action ) => existing.find( ( oldAction ) => oldAction.equals( action ) ) || action ) ) .then( ( actions ) => { this.actionsByListener[ listener ] = actions; diff --git a/editcheck/modules/editchecks/AsyncTextCheck.js b/editcheck/modules/editchecks/AsyncTextCheck.js index 45a9337df2..8496b2ef88 100644 --- a/editcheck/modules/editchecks/AsyncTextCheck.js +++ b/editcheck/modules/editchecks/AsyncTextCheck.js @@ -52,10 +52,9 @@ mw.editcheck.AsyncTextCheck.static.memoizedCheckAsync = null; /** * @param {string} listener Type of listener, such as 'onBeforeSave' or 'onBranchNodeChange' * @param {ve.dm.Surface} surfaceModel The surface - * @param {mw.editcheck.EditCheckAction[]} oldActions The actions last returned by this method * @return {Promise[]} An array of promises containing either an action or null */ -mw.editcheck.AsyncTextCheck.prototype.handleListener = function ( listener, surfaceModel /* , oldActions */ ) { +mw.editcheck.AsyncTextCheck.prototype.handleListener = function ( listener, surfaceModel ) { const documentModel = surfaceModel.getDocument(); const selection = surfaceModel.getSelection(); // TODO let currentBranchNode = null; From f715777d55c4096974d96677954e020cabb4dc49 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 27 Jun 2025 11:12:05 +0100 Subject: [PATCH 417/730] EditModeTools: Call parent methods correctly Separated from Ia309b5817a5fc47c64625e2973a2375e7857ebfe Change-Id: I78a867aeeb85cc7bda6564622c798e16ec452455 --- modules/ve-mw/preinit/ve.init.MWEditModeTool.js | 2 +- modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js index 37ba0bd418..93193b9bab 100644 --- a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js +++ b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js @@ -129,7 +129,7 @@ mw.libs.ve.MWEditModeVisualTool.prototype.isModeAvailable = function ( mode ) { return false; } } - return mw.libs.ve.MWEditModeVisualTool.super.prototype.isModeAvailable( mode ); + return mw.libs.ve.MWEditModeVisualTool.super.prototype.isModeAvailable.call( this, mode ); }; /** diff --git a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js index 83f0d72bef..41728ccd3b 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js @@ -78,7 +78,7 @@ ve.ui.MWEditModeVisualTool.prototype.isModeAvailable = function ( mode ) { if ( mode === 'visual' && this.toolbar.getTarget().section === 'new' ) { return false; } - return ve.ui.MWEditModeVisualTool.super.prototype.isModeAvailable( mode ); + return ve.ui.MWEditModeVisualTool.super.prototype.isModeAvailable.call( this, mode ); }; ve.ui.toolFactory.register( ve.ui.MWEditModeVisualTool ); From 72507ca1eb084682a3fbf87b6477f9f797e59b81 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 27 Jun 2025 11:13:20 +0100 Subject: [PATCH 418/730] EditModeTools: only check mode availability by namespace for article targets Follow-up to 7a723897147d9df0c7d9eb23c48dfa414600fe28 Bug: T397964 Change-Id: Ia309b5817a5fc47c64625e2973a2375e7857ebfe --- modules/ve-mw/preinit/ve.init.MWEditModeTool.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js index 93193b9bab..3d13f399f0 100644 --- a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js +++ b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js @@ -120,7 +120,7 @@ mw.libs.ve.MWEditModeVisualTool.static.unavailableTooltip = */ mw.libs.ve.MWEditModeVisualTool.prototype.isModeAvailable = function ( mode ) { // Adding a new section is not supported in visual mode - if ( mode === 'visual' ) { + if ( mode === 'visual' && OO.getProp( this, 'toolbar', 'target', 'constructor', 'static', 'name' ) === 'article' ) { // eslint-disable-next-line no-jquery/no-global-selector if ( $( 'input[name=wpSection]' ).val() === 'new' ) { return false; From 3cfdfa0fcc7789665f005b93cbd7a1223a87b03d Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 27 Jun 2025 11:46:49 +0100 Subject: [PATCH 419/730] DesktopArticleTarget.init: Rename parseSection to getSectionFromUrl This is consistent with getEditModeFromUrl. Make the arugment a URL object as well. Change-Id: I1bf717764b1119b53eb3508ee74f8327043cab20 --- .../ve.init.mw.DesktopArticleTarget.init.js | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index eb1adde79a..c3b791195e 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -260,15 +260,13 @@ } /** - * Parse a section value from a query string object + * Get a section value from a URL * - * @example - * parseSection( new URL( location.href ).searchParams.get( 'section' ) ) - * - * @param {string|undefined} section Section value from query object + * @param {URL} sectionUrl URL * @return {string|null} Section if valid, null otherwise */ - function parseSection( section ) { + function getSectionFromUrl( sectionUrl ) { + const section = sectionUrl.searchParams.get( 'section' ); // Section must be a number, 'new' or 'T-' prefixed if ( section && /^(new|\d+|T-\d+)$/.test( section ) ) { return section; @@ -329,7 +327,7 @@ url = new URL( location.href ); activateTarget( getEditModeFromUrl( url ), - parseSection( url.searchParams.get( 'section' ) ) + getSectionFromUrl( url ) ); } ); target.setContainer( $targetContainer ); @@ -521,7 +519,7 @@ let $heading; $( '#mw-content-text .mw-editsection a:not( .mw-editsection-visualeditor )' ).each( ( i, el ) => { const linkUrl = new URL( el.href ); - if ( section === parseSection( linkUrl.searchParams.get( 'section' ) ) ) { + if ( section === getSectionFromUrl( linkUrl ) ) { $heading = $( el ).closest( '.mw-heading, h1, h2, h3, h4, h5, h6' ); return false; } @@ -643,7 +641,7 @@ if ( firstVisibleEditSection && firstVisibleEditSection.id !== 'firstHeading' ) { const firstVisibleSectionLink = firstVisibleEditSection.querySelector( 'a' ); const linkUrl = new URL( firstVisibleSectionLink.href ); - visibleSection = parseSection( linkUrl.searchParams.get( 'section' ) ); + visibleSection = getSectionFromUrl( linkUrl ); const firstVisibleHeading = $( firstVisibleEditSection ).closest( '.mw-heading, h1, h2, h3, h4, h5, h6' )[ 0 ]; visibleSectionOffset = firstVisibleHeading.getBoundingClientRect().top; @@ -1211,7 +1209,7 @@ // Use section from URL if ( section === undefined ) { - section = parseSection( linkUrl.searchParams.get( 'section' ) ); + section = getSectionFromUrl( linkUrl ); } const tPromise = getTarget( mode, section ); activateTarget( mode, section, tPromise ); @@ -1467,7 +1465,7 @@ let showWikitextWelcome = true; const numEditButtons = $( '#ca-edit, #ca-ve-edit' ).length, - section = parseSection( url.searchParams.get( 'section' ) ); + section = getSectionFromUrl( url ); const requiredSkinElements = $targetContainer.length && From 768e73aa7f154b5c4739c733427ba4038e2327fe Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 27 Jun 2025 12:28:17 +0100 Subject: [PATCH 420/730] DesktopArticleTarget.init: Rename url to currentUrl Functions which take a url argument from a generic soure can now use 'url' as the argument name. Change-Id: I06801eda0930e4aa508fcb09d30684413ecc11ae --- .../ve.init.mw.DesktopArticleTarget.init.js | 87 +++++++++---------- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index c3b791195e..e60d87b2de 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -31,7 +31,7 @@ viewUrl = null, veEditUrl = null, tabPreference = null; - let veEditSourceUrl, targetPromise, url, + let veEditSourceUrl, targetPromise, currentUrl, initialWikitext, oldId, isLoading, tempWikitextEditor, tempWikitextEditorData, $toolbarPlaceholder, $toolbarPlaceholderBar, @@ -262,11 +262,11 @@ /** * Get a section value from a URL * - * @param {URL} sectionUrl URL + * @param {URL} url URL * @return {string|null} Section if valid, null otherwise */ - function getSectionFromUrl( sectionUrl ) { - const section = sectionUrl.searchParams.get( 'section' ); + function getSectionFromUrl( url ) { + const section = url.searchParams.get( 'section' ); // Section must be a number, 'new' or 'T-' prefixed if ( section && /^(new|\d+|T-\d+)$/.test( section ) ) { return section; @@ -324,10 +324,10 @@ updateTabs( false ); } ); target.on( 'reactivate', () => { - url = new URL( location.href ); + currentUrl = new URL( location.href ); activateTarget( - getEditModeFromUrl( url ), - getSectionFromUrl( url ) + getEditModeFromUrl( currentUrl ), + getSectionFromUrl( currentUrl ) ); } ); target.setContainer( $targetContainer ); @@ -349,13 +349,10 @@ /** * @private * @param {Object} initData - * @param {URL} [linkUrl] + * @param {URL} [url] */ - function trackActivateStart( initData, linkUrl ) { - if ( !linkUrl ) { - linkUrl = url; - } - if ( linkUrl.searchParams.get( 'wvprov' ) === 'sticky-header' ) { + function trackActivateStart( initData, url = currentUrl ) { + if ( url.searchParams.get( 'wvprov' ) === 'sticky-header' ) { initData.mechanism += '-sticky-header'; } ve.track( 'trace.activate.enter', { mode: initData.mode } ); @@ -598,9 +595,9 @@ // This is used for stats tracking, so do not change! targetName: 'mwTarget', modified: modified, - editintro: url.searchParams.get( 'editintro' ), - preload: url.searchParams.get( 'preload' ), - preloadparams: mw.util.getArrayParam( 'preloadparams', url.searchParams ), + editintro: currentUrl.searchParams.get( 'editintro' ), + preload: currentUrl.searchParams.get( 'preload' ), + preloadparams: mw.util.getArrayParam( 'preloadparams', currentUrl.searchParams ), // If switching to visual with modifications, check if we have wikitext to convert wikitext: mode === 'visual' && modified ? $( '#wpTextbox1' ).textSelection( 'getContents' ) : undefined } ) ); @@ -712,12 +709,12 @@ // Replace the current state with one that is tagged as ours, to prevent the // back button from breaking when used to exit VE. FIXME: there should be a better // way to do this. See also similar code in the DesktopArticleTarget constructor. - history.replaceState( { tag: 'visualeditor' }, '', url ); + history.replaceState( { tag: 'visualeditor' }, '', currentUrl ); // Set action=edit or veaction=edit/editsource // Use linkUrl to preserve parameters like 'editintro' (T56029) history.pushState( { tag: 'visualeditor' }, '', linkUrl || ( mode === 'source' ? veEditSourceUrl : veEditUrl ) ); // Update URL instance - url = linkUrl || veEditUrl; + currentUrl = linkUrl || veEditUrl; activateTarget( mode, section, undefined, modified ); } @@ -755,18 +752,18 @@ function getEditPageEditor() { // This logic matches VisualEditorHooks::getEditPageEditor // !!+ casts '0' to false - const isRedLink = !!+url.searchParams.get( 'redlink' ); + const isRedLink = !!+currentUrl.searchParams.get( 'redlink' ); // On dual-edit-tab wikis, the edit page must mean the user wants wikitext, // unless following a redlink if ( !mw.config.get( 'wgVisualEditorConfig' ).singleEditTab && !isRedLink ) { return 'wikitext'; } // Adding a new section is not supported in visual mode - if ( url.searchParams.get( 'section' ) === 'new' ) { + if ( currentUrl.searchParams.get( 'section' ) === 'new' ) { return 'wikitext'; } // Force switched from VE - if ( url.searchParams.has( 'veswitched' ) ) { + if ( currentUrl.searchParams.has( 'veswitched' ) ) { return 'wikitext'; } @@ -854,7 +851,7 @@ conf = mw.config.get( 'wgVisualEditorConfig' ); tabMessages = conf.tabMessages; viewUrl = new URL( mw.util.getUrl( mw.config.get( 'wgRelevantPageName' ) ), location.href ); - url = new URL( location.href ); + currentUrl = new URL( location.href ); // T156998: Don't trust 'oldid' query parameter, it'll be wrong if 'diff' or 'direction' // is set to 'next' or 'prev'. oldId = mw.config.get( 'wgRevisionId' ) || $( 'input[name=parentRevId]' ).val(); @@ -864,7 +861,7 @@ oldId = undefined; } pageExists = !!mw.config.get( 'wgRelevantArticleId' ); - const isViewPage = mw.config.get( 'wgIsArticle' ) && !url.searchParams.has( 'diff' ); + const isViewPage = mw.config.get( 'wgIsArticle' ) && !currentUrl.searchParams.has( 'diff' ); const wgAction = mw.config.get( 'wgAction' ); const isEditPage = wgAction === 'edit' || wgAction === 'submit'; const pageCanLoadEditor = isViewPage || isEditPage; @@ -1201,11 +1198,11 @@ // Replace the current state with one that is tagged as ours, to prevent the // back button from breaking when used to exit VE. FIXME: there should be a better // way to do this. See also similar code in the DesktopArticleTarget constructor. - history.replaceState( { tag: 'visualeditor' }, '', url ); + history.replaceState( { tag: 'visualeditor' }, '', currentUrl ); // Use linkUrl to preserve the 'section' parameter and others like 'editintro' (T56029) history.pushState( { tag: 'visualeditor' }, '', linkUrl ); // Update URL instance - url = linkUrl; + currentUrl = linkUrl; // Use section from URL if ( section === undefined ) { @@ -1232,7 +1229,7 @@ // Disabled for the current request? this.isWelcomeDialogSuppressed() || // Joining a collab session - url.searchParams.has( 'collabSession' ) || + currentUrl.searchParams.has( 'collabSession' ) || // Hidden using preferences, local storage or cookie? checkPreferenceOrStorage( 'visualeditor-hidebetawelcome', 've-beta-welcome-dialog' ) ); @@ -1315,18 +1312,18 @@ /** * Check if a URL doesn't contain any params which would prevent VE from loading, e.g. 'undo' * - * @param {URL} editUrl + * @param {URL} url * @return {boolean} URL contains no unsupported params */ - function isSupportedEditPage( editUrl ) { - return configData.unsupportedEditParams.every( ( param ) => !editUrl.searchParams.has( param ) ); + function isSupportedEditPage( url ) { + return configData.unsupportedEditParams.every( ( param ) => !url.searchParams.has( param ) ); } init.isSingleEditTab = conf.singleEditTab && tabPreference !== 'multi-tab'; // On a view page, extend the current URL so extra parameters are carried over // On a non-view page, use viewUrl - veEditUrl = new URL( pageCanLoadEditor ? url : viewUrl ); + veEditUrl = new URL( pageCanLoadEditor ? currentUrl : viewUrl ); if ( oldId ) { veEditUrl.searchParams.set( 'oldid', oldId ); } @@ -1358,7 +1355,7 @@ init.isAvailable && // If forced by the URL parameter, skip the namespace check (T221892) and preference check - ( url.searchParams.get( 'veaction' ) === 'edit' || ( + ( currentUrl.searchParams.get( 'veaction' ) === 'edit' || ( // Only in enabled namespaces conf.namespaces.includes( new mw.Title( mw.config.get( 'wgRelevantPageName' ) ).getNamespaceId() ) && @@ -1367,7 +1364,7 @@ ) ) && // Only if the current page isn't using unsupported URL parameters - isSupportedEditPage( url ) && + isSupportedEditPage( currentUrl ) && // Only for pages with a supported content model Object.prototype.hasOwnProperty.call( conf.contentModels, mw.config.get( 'wgPageContentModel' ) ) @@ -1378,7 +1375,7 @@ init.isAvailable && // If forced by the URL parameter, skip the checks (T239796) - ( url.searchParams.get( 'veaction' ) === 'editsource' || ( + ( currentUrl.searchParams.get( 'veaction' ) === 'editsource' || ( // Enabled on site conf.enableWikitext && @@ -1426,25 +1423,25 @@ /** * Get the edit mode for the given URL * - * @param {URL} editUrl Edit URL + * @param {URL} url Edit URL * @return {string|null} 'visual' or 'source', null if the editor is not being loaded */ - function getEditModeFromUrl( editUrl ) { + function getEditModeFromUrl( url ) { if ( mw.config.get( 'wgDiscussionToolsStartNewTopicTool' ) ) { // Avoid conflicts with DiscussionTools return null; } if ( isViewPage && init.isAvailable ) { // On view pages if veaction is correctly set - const mode = veactionToMode[ editUrl.searchParams.get( 'veaction' ) ] || + const mode = veactionToMode[ url.searchParams.get( 'veaction' ) ] || // Always load VE visual mode if collabSession is set - ( editUrl.searchParams.has( 'collabSession' ) ? 'visual' : null ); + ( url.searchParams.has( 'collabSession' ) ? 'visual' : null ); if ( mode && availableModes.includes( mode ) ) { return mode; } } // Edit pages - if ( isEditPage && isSupportedEditPage( editUrl ) ) { + if ( isEditPage && isSupportedEditPage( url ) ) { // User has disabled VE, or we are in view source only mode, or we have landed here with posted data if ( !enabledForUser || $( '#ca-viewsource' ).length || mw.config.get( 'wgAction' ) === 'submit' ) { return null; @@ -1465,7 +1462,7 @@ let showWikitextWelcome = true; const numEditButtons = $( '#ca-edit, #ca-ve-edit' ).length, - section = getSectionFromUrl( url ); + section = getSectionFromUrl( currentUrl ); const requiredSkinElements = $targetContainer.length && @@ -1473,7 +1470,7 @@ // A link to open the editor is technically not necessary if it's going to open itself ( isEditPage || numEditButtons ); - if ( url.searchParams.get( 'action' ) === 'edit' && $( '#wpTextbox1' ).length ) { + if ( currentUrl.searchParams.get( 'action' ) === 'edit' && $( '#wpTextbox1' ).length ) { initialWikitext = $( '#wpTextbox1' ).textSelection( 'getContents' ); } @@ -1495,7 +1492,7 @@ mw.errorLogger.logError( err, 'error.visualeditor' ); } } else if ( init.isAvailable ) { - const mode = getEditModeFromUrl( url ); + const mode = getEditModeFromUrl( currentUrl ); if ( mode ) { showWikitextWelcome = false; trackActivateStart( { @@ -1529,7 +1526,7 @@ mw.loader.load( 'ext.visualEditor.switching' ); mw.hook( 'wikiEditor.toolbarReady' ).add( ( $textarea ) => { mw.loader.using( 'ext.visualEditor.switching' ).then( () => { - const showPopup = url.searchParams.has( 'veswitched' ) && !mw.user.options.get( 'visualeditor-hidesourceswitchpopup' ), + const showPopup = currentUrl.searchParams.has( 'veswitched' ) && !mw.user.options.get( 'visualeditor-hidesourceswitchpopup' ), toolFactory = new OO.ui.ToolFactory(), toolGroupFactory = new OO.ui.ToolGroupFactory(); @@ -1650,10 +1647,10 @@ } ); } - if ( url.searchParams.has( 'venotify' ) ) { - url.searchParams.delete( 'venotify' ); + if ( currentUrl.searchParams.has( 'venotify' ) ) { + currentUrl.searchParams.delete( 'venotify' ); // Get rid of the ?venotify= from the URL - history.replaceState( null, '', url ); + history.replaceState( null, '', currentUrl ); } } ); }() ); From dfd3846cb3332ebc6913e2995e94bd4da68b2295 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 27 Jun 2025 12:39:46 +0100 Subject: [PATCH 421/730] DesktopArticleTarget.init: Make is(Visual/Wikitext)Avaialble a function Change-Id: I97646b76fd598e87fe0c2c35a42b405e8694321e --- .../ve.init.mw.DesktopArticleTarget.init.js | 54 +++++++++---------- .../ui/actions/ve.ui.MWSaveDialogAction.js | 3 +- .../ve-mw/ui/tools/ve.ui.MWSignatureTool.js | 3 +- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index e60d87b2de..b38930c9fa 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -416,7 +416,7 @@ // user has expressed no choice by opening this editor. (T246259) // Strictly speaking the same thing should happen if visual mode is // available but source mode isn't, but that is never the case. - if ( !init.isVisualAvailable ) { + if ( !init.isVisualAvailable() ) { return $.Deferred().resolve().promise(); } @@ -792,17 +792,17 @@ function getAvailableEditPageEditor() { switch ( getEditPageEditor() ) { case 'visualeditor': - if ( init.isVisualAvailable ) { + if ( init.isVisualAvailable() ) { return 'visual'; } - if ( init.isWikitextAvailable ) { + if ( init.isWikitextAvailable() ) { return 'source'; } return null; case 'wikitext': default: - return init.isWikitextAvailable ? 'source' : null; + return init.isWikitextAvailable() ? 'source' : null; } } @@ -938,7 +938,7 @@ */ setupEditLinks: function () { // NWE - if ( init.isWikitextAvailable && !isOnlyTabVE() ) { + if ( init.isWikitextAvailable() && !isOnlyTabVE() ) { $( // Edit section links, except VE ones when both editors visible '.mw-editsection a:not( .mw-editsection-visualeditor ),' + @@ -965,7 +965,7 @@ if ( init.isAvailable ) { // … on two-edit-tab wikis, or single-edit-tab wikis, where the user wants both … if ( - !init.isSingleEditTab && init.isVisualAvailable && + !init.isSingleEditTab && init.isVisualAvailable() && // T253941: This option does not actually disable the editor, only leaves the tabs/links unchanged !( conf.disableForAnons && mw.user.isAnon() ) ) { @@ -973,8 +973,8 @@ init.setupMultiTabSkin(); } else if ( pageCanLoadEditor && ( - ( init.isVisualAvailable && isOnlyTabVE() ) || - ( init.isWikitextAvailable && isOnlyTabWikitext() ) + ( init.isVisualAvailable() && isOnlyTabVE() ) || + ( init.isWikitextAvailable() && isOnlyTabWikitext() ) ) ) { // … on single-edit-tab wikis, where VE or NWE is the user's preferred editor @@ -1015,13 +1015,13 @@ // Always bind "Edit source" tab, because we want to handle switching with changes $caEdit.off( '.ve-target' ).on( 'click.ve-target', init.onEditTabClick.bind( init, 'source' ) ); } - if ( pageCanLoadEditor && init.isWikitextAvailable ) { + if ( pageCanLoadEditor && init.isWikitextAvailable() ) { // Only bind "Add topic" tab if NWE is available, because VE doesn't support section // so we never have to switch from it when editing a section $( '#ca-addsection' ).off( '.ve-target' ).on( 'click.ve-target', init.onEditTabClick.bind( init, 'source' ) ); } - if ( init.isVisualAvailable ) { + if ( init.isVisualAvailable() ) { if ( conf.tabPosition === 'before' ) { $caEdit.addClass( 'collapsible' ); } else { @@ -1044,7 +1044,7 @@ // and would preserve the wrong DOM with a diff on top. $editsections.find( '.mw-editsection-visualeditor' ) .off( '.ve-target' ).on( 'click.ve-target', init.onEditSectionLinkClick.bind( init, 'visual' ) ); - if ( init.isWikitextAvailable ) { + if ( init.isWikitextAvailable() ) { // TOOD: Make this less fragile $editsections.find( 'a:not( .mw-editsection-visualeditor )' ) .off( '.ve-target' ).on( 'click.ve-target', init.onEditSectionLinkClick.bind( init, 'source' ) ); @@ -1078,7 +1078,7 @@ if ( !init.isUnmodifiedLeftClick( e ) ) { return; } - if ( !active && mode === 'source' && !init.isWikitextAvailable ) { + if ( !active && mode === 'source' && !init.isWikitextAvailable() ) { // We're not active so we don't need to manage a switch, and // we don't have source mode available so we don't need to // activate VE. Just follow the link. @@ -1350,12 +1350,12 @@ ( conf.isBeta ? enable : !tempdisable ) && !autodisable ); - // Duplicated in VisualEditor.hooks.php#isVisualAvailable() - init.isVisualAvailable = ( + // Partially duplicated in includes/Hooks.php#isVisualAvailable + init.isVisualAvailable = ( url = currentUrl ) => ( init.isAvailable && // If forced by the URL parameter, skip the namespace check (T221892) and preference check - ( currentUrl.searchParams.get( 'veaction' ) === 'edit' || ( + ( url.searchParams.get( 'veaction' ) === 'edit' || ( // Only in enabled namespaces conf.namespaces.includes( new mw.Title( mw.config.get( 'wgRelevantPageName' ) ).getNamespaceId() ) && @@ -1364,18 +1364,18 @@ ) ) && // Only if the current page isn't using unsupported URL parameters - isSupportedEditPage( currentUrl ) && + isSupportedEditPage( url ) && // Only for pages with a supported content model Object.prototype.hasOwnProperty.call( conf.contentModels, mw.config.get( 'wgPageContentModel' ) ) ); - // Duplicated in VisualEditor.hooks.php#isWikitextAvailable() - init.isWikitextAvailable = ( + // Partially duplicated in includes/Hooks.php#isWikitextAvailable + init.isWikitextAvailable = ( url = currentUrl ) => ( init.isAvailable && // If forced by the URL parameter, skip the checks (T239796) - ( currentUrl.searchParams.get( 'veaction' ) === 'editsource' || ( + ( url.searchParams.get( 'veaction' ) === 'editsource' || ( // Enabled on site conf.enableWikitext && @@ -1387,11 +1387,11 @@ mw.config.get( 'wgPageContentModel' ) === 'wikitext' ); - if ( init.isVisualAvailable ) { + if ( init.isVisualAvailable() ) { availableModes.push( 'visual' ); } - if ( init.isWikitextAvailable ) { + if ( init.isWikitextAvailable() ) { availableModes.push( 'source' ); } @@ -1412,7 +1412,7 @@ // on this page. See above for why it may be false. mw.libs.ve = $.extend( mw.libs.ve || {}, init ); - if ( init.isVisualAvailable ) { + if ( init.isVisualAvailable() ) { $( 'html' ).addClass( 've-available' ); } else { $( 'html' ).addClass( 've-not-available' ); @@ -1474,7 +1474,7 @@ initialWikitext = $( '#wpTextbox1' ).textSelection( 'getContents' ); } - if ( ( init.isVisualAvailable || init.isWikitextAvailable ) && + if ( ( init.isVisualAvailable() || init.isWikitextAvailable() ) && pageCanLoadEditor && pageIsProbablyEditable && !requiredSkinElements @@ -1502,7 +1502,7 @@ } ); activateTarget( mode, section ); } else if ( - init.isVisualAvailable && + init.isVisualAvailable() && pageCanLoadEditor && init.isSingleEditTab ) { @@ -1519,7 +1519,7 @@ // Add the switch button to WikiEditor on edit pages if ( - init.isVisualAvailable && + init.isVisualAvailable() && isEditPage && $( '#wpTextbox1' ).length ) { @@ -1612,7 +1612,7 @@ pageCanLoadEditor && showWikitextWelcome && // At least one editor is available (T201928) - ( init.isVisualAvailable || init.isWikitextAvailable || $( '#wpTextbox1' ).length ) && + ( init.isVisualAvailable() || init.isWikitextAvailable() || $( '#wpTextbox1' ).length ) && isEditPage && init.shouldShowWelcomeDialog() && // Not on protected pages @@ -1632,7 +1632,7 @@ windowManager.openWindow( welcomeDialog, { - switchable: init.isVisualAvailable, + switchable: init.isVisualAvailable(), editor: 'source' } ) diff --git a/modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js b/modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js index 8827e969b0..e9aab32bb9 100644 --- a/modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js +++ b/modules/ve-mw/ui/actions/ve.ui.MWSaveDialogAction.js @@ -104,7 +104,8 @@ ve.ui.commandRegistry.register( 'showChanges', 'mwSaveDialog', 'review' ) ); -if ( mw.libs.ve.isWikitextAvailable ) { +// TODO: mw.libs.ve.isWikitextAvailable is only available on desktop +if ( mw.libs.ve.isWikitextAvailable && mw.libs.ve.isWikitextAvailable() ) { // Ensure wikitextCommandRegistry has finished loading mw.loader.using( 'ext.visualEditor.mwwikitext' ).then( () => { ve.ui.wikitextCommandRegistry.register( diff --git a/modules/ve-mw/ui/tools/ve.ui.MWSignatureTool.js b/modules/ve-mw/ui/tools/ve.ui.MWSignatureTool.js index 83da3f7ab5..790e8150f5 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWSignatureTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWSignatureTool.js @@ -57,7 +57,8 @@ if ( mw.Title.wantSignaturesNamespace( mw.config.get( 'wgNamespaceNumber' ) ) ) sequences: [ 'wikitextSignature' ], label: OO.ui.deferMsg( 'visualeditor-mwsignature-tool' ) } ); - if ( mw.libs.ve.isWikitextAvailable ) { + // TODO: mw.libs.ve.isWikitextAvailable is only available on desktop + if ( mw.libs.ve.isWikitextAvailable && mw.libs.ve.isWikitextAvailable() ) { // Ensure wikitextCommandRegistry has finished loading mw.loader.using( 'ext.visualEditor.mwwikitext' ).then( () => { ve.ui.wikitextCommandRegistry.register( From b2e68be7e50de16b65e2d32482b803645a4f7077 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 27 Jun 2025 12:55:29 +0100 Subject: [PATCH 422/730] DesktopArticleTarget.init: Make availableModes a function Change-Id: I6b2e1b7733ab4df5f35af3909c214555a4a030a3 --- .../ve.init.mw.DesktopArticleTarget.init.js | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index b38930c9fa..d3bf036c5d 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -22,8 +22,7 @@ veactionToMode = { edit: 'visual', editsource: 'source' - }, - availableModes = []; + }; let init = null, conf = null, tabMessages = null, @@ -315,7 +314,7 @@ const target = ve.init.mw.targetFactory.create( conf.contentModels[ mw.config.get( 'wgPageContentModel' ) ], { - modes: availableModes, + modes: getAvailableModes(), defaultMode: mode } ); @@ -1387,12 +1386,15 @@ mw.config.get( 'wgPageContentModel' ) === 'wikitext' ); - if ( init.isVisualAvailable() ) { - availableModes.push( 'visual' ); - } - - if ( init.isWikitextAvailable() ) { - availableModes.push( 'source' ); + function getAvailableModes() { + const availableModes = []; + if ( init.isVisualAvailable() ) { + availableModes.push( 'visual' ); + } + if ( init.isWikitextAvailable() ) { + availableModes.push( 'source' ); + } + return availableModes; } // FIXME: We should do this more elegantly @@ -1436,7 +1438,7 @@ const mode = veactionToMode[ url.searchParams.get( 'veaction' ) ] || // Always load VE visual mode if collabSession is set ( url.searchParams.has( 'collabSession' ) ? 'visual' : null ); - if ( mode && availableModes.includes( mode ) ) { + if ( mode && getAvailableModes().includes( mode ) ) { return mode; } } From 1ce155e4a0361375709faebc8786e4233d7daf81 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 27 Jun 2025 11:27:48 +0100 Subject: [PATCH 423/730] DesktopArticleTarget.init: Check for section !== 'new' in isVisualAvailable As this is used to generate available modes for the target, this means that MWEditModeVisualTool can rely solely on target.isModeAvailable() which MWEditModeTool chekcs. It also stops the editor from loading much earlier when navigating to veaction=edit§ion=new. Bug: T397964 Change-Id: I335486efbfe1309c9246301641b5d869b6df0797 --- .../preinit/ve.init.mw.DesktopArticleTarget.init.js | 5 ++++- modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js | 11 ----------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index d3bf036c5d..a63cdb5979 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -1366,7 +1366,10 @@ isSupportedEditPage( url ) && // Only for pages with a supported content model - Object.prototype.hasOwnProperty.call( conf.contentModels, mw.config.get( 'wgPageContentModel' ) ) + Object.prototype.hasOwnProperty.call( conf.contentModels, mw.config.get( 'wgPageContentModel' ) ) && + + // Adding a section is not supported in visual mode + getSectionFromUrl( url ) !== 'new' ); // Partially duplicated in includes/Hooks.php#isWikitextAvailable diff --git a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js index 41728ccd3b..a02ce79730 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js @@ -69,17 +69,6 @@ OO.mixinClass( ve.ui.MWEditModeVisualTool, ve.ui.MWEditModeTool ); ve.ui.MWEditModeVisualTool.prototype.switch = function () { this.toolbar.getTarget().switchToVisualEditor(); }; - -/** - * @inheritdoc - */ -ve.ui.MWEditModeVisualTool.prototype.isModeAvailable = function ( mode ) { - // Adding a new section is not supported in visual mode - if ( mode === 'visual' && this.toolbar.getTarget().section === 'new' ) { - return false; - } - return ve.ui.MWEditModeVisualTool.super.prototype.isModeAvailable.call( this, mode ); -}; ve.ui.toolFactory.register( ve.ui.MWEditModeVisualTool ); /** From cfa050eea68bc57369e368299ef3d833e6fdd8f0 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 27 Jun 2025 13:30:09 +0100 Subject: [PATCH 424/730] EditCheck: Use up/down arrows for navigating checks Bug: T397158 Change-Id: I4cd8ca588fb9919555d50537a32494f47a6e9a5f --- editcheck/modules/dialogs/EditCheckDialog.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index 8a8a737fbc..e197ba8430 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -59,7 +59,7 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { this.footerLabel = new OO.ui.LabelWidget(); this.previousButton = new OO.ui.ButtonWidget( { - icon: 'previous', + icon: 'collapse', title: ve.msg( 'last' ), invisibleLabel: true, framed: false @@ -67,7 +67,7 @@ ve.ui.EditCheckDialog.prototype.initialize = function () { click: 'onPreviousButtonClick' } ); this.nextButton = new OO.ui.ButtonWidget( { - icon: 'next', + icon: 'expand', title: ve.msg( 'next' ), invisibleLabel: true, framed: false From c2d1b2fc02699ee8c81df490531d8217ffbb9fac Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 27 Jun 2025 14:01:00 +0100 Subject: [PATCH 425/730] EditCheck: Cleanup logic for togglecollapse Store the collapsed state in the model, and have the click only emit an event. The dialog controller should decide if to do any actual toggling. Change-Id: I456b7f7f7c8e837546052ee95c0a669e7663dfb4 --- editcheck/modules/EditCheckActionWidget.js | 17 ++++++++++++----- editcheck/modules/dialogs/EditCheckDialog.js | 13 +++++++------ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index 6d4d25f912..e7451611ab 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -23,6 +23,7 @@ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) mw.editcheck.EditCheckActionWidget.super.call( this, config ); + this.collapsed = false; this.message = new OO.ui.LabelWidget( { label: config.message } ); this.footer = config.footer && new OO.ui.LabelWidget( { label: config.footer, @@ -55,7 +56,6 @@ OO.inheritClass( mw.editcheck.EditCheckActionWidget, OO.ui.MessageWidget ); * Fired when the user toggles the collapsed state of the widget. * * @event mw.editcheck.EditCheckActionWidget#togglecollapse - * @param {boolean} collapsed Whether the widget is now collapsed */ /* Methods */ @@ -93,10 +93,17 @@ mw.editcheck.EditCheckActionWidget.prototype.onClick = function ( e ) { if ( this.$body[ 0 ].contains( e.target ) ) { return; } + this.emit( 'togglecollapse' ); e.preventDefault(); - // eslint-disable-next-line no-jquery/no-class-state - this.$element.toggleClass( 've-ui-editCheckActionWidget-collapsed' ); - // eslint-disable-next-line no-jquery/no-class-state - this.emit( 'togglecollapse', this.$element.hasClass( 've-ui-editCheckActionWidget-collapsed' ) ); +}; + +/** + * Toggle the collapsed state of the widget + * + * @param {boolean} [collapsed] The new collapsed state, toggles if unset + */ +mw.editcheck.EditCheckActionWidget.prototype.toggleCollapse = function ( collapsed ) { + this.collapsed = collapsed !== undefined ? collapsed : !this.collapsed; + this.$element.toggleClass( 've-ui-editCheckActionWidget-collapsed', this.collapsed ); }; diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index e197ba8430..8ebc9bc7ef 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -192,8 +192,8 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc this.currentOffset = offset; - this.$body.find( '.ve-ui-editCheckActionWidget' ).each( ( i, el ) => { - $( el ).toggleClass( 've-ui-editCheckActionWidget-collapsed', i !== this.currentOffset ); + this.currentActions.forEach( ( action, i ) => { + action.widget.toggleCollapse( i !== this.currentOffset ); } ); if ( this.currentOffset !== null ) { @@ -334,11 +334,10 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { * * @param {mw.editcheck.EditCheckAction} action Action being expanded/collapsed * @param {number} index Index of action in list - * @param {boolean} collapsed Whether the action is collapsed */ -ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, collapsed ) { - if ( !collapsed ) { - // expanded one +ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action ) { + if ( action.widget.collapsed ) { + // Expand this.setCurrentOffset( this.currentActions.indexOf( action ), true ); if ( !OO.ui.isMobile() ) { const surfaceModel = this.surface.getModel(); @@ -356,6 +355,8 @@ ve.ui.EditCheckDialog.prototype.onToggleCollapse = function ( action, index, col this.surface.getView().focus(); } } + } else { + this.setCurrentOffset( null ); } }; From 66f7e7dae2ed9cf6c67f1a98fde16c9e1db9e6ac Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 27 Jun 2025 21:45:01 -0500 Subject: [PATCH 426/730] Edit check: change the widget footer color from disabled to subtle Bug: T390248 Change-Id: I0e57c47d6f0aa0c02c6601d66cfc5e57f801e389 --- editcheck/modules/EditCheck.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 1eefc8f0ce..3f7cf1cb58 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -158,7 +158,7 @@ } &-footer { - color: @color-disabled; + color: @color-subtle; } &:not( .ve-ui-editCheckActionWidget-collapsed ) { From 87ad42285f5d56dda9958938c88e7fa20bb93b79 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 30 Jun 2025 09:37:27 +0200 Subject: [PATCH 427/730] Localisation updates from https://translatewiki.net. Change-Id: Ic513a281e72a38e59d60cf5ff8a6a5fbcc073be2 --- editcheck/i18n/fa.json | 1 + editcheck/i18n/hy.json | 9 +++++++++ editcheck/i18n/lb.json | 1 + i18n/ve-mw/mwlanguagevariant/hy.json | 5 +++-- i18n/ve-mw/ps.json | 24 ++++++++++++++++++++++++ i18n/ve-wmf/hr.json | 8 ++++++-- i18n/ve-wmf/qqq.json | 3 ++- 7 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 editcheck/i18n/hy.json diff --git a/editcheck/i18n/fa.json b/editcheck/i18n/fa.json index 50af3cee3a..bfdd737209 100644 --- a/editcheck/i18n/fa.json +++ b/editcheck/i18n/fa.json @@ -18,6 +18,7 @@ "editcheck-dialog-title": "پیش از انتشار", "editcheck-copyvio-title": "متن چسبانده‌شده", "editcheck-copyvio-description": "به‌عنوان یک قاعدهٔ کلی، متن را از سایر منابع کپی نکنید. چنین کاری معمولاً ترکیبی است از نقض حق تکثیر و سرقت ادبی.", + "editcheck-tone-description": "کاربران دیگر معمولاً چنین جمله‌بندی‌هایی را اصلاح می‌کنند، زیرا معتقدند که لحن آن نامتعادل است. [$1 بیشتر بدانید]", "editcheck-review-title": "بازبینی تغییرات", "tag-editcheck-reference-decline-common-knowledge": "بررسی ویرایش (ارجاعات) رد شد (دانش عمومی)", "tag-editcheck-reference-decline-common-knowledge-description": "ارجاع بررسی ویرایش تحت عنوان دانش عمومی رد شد", diff --git a/editcheck/i18n/hy.json b/editcheck/i18n/hy.json new file mode 100644 index 0000000000..48c0713c30 --- /dev/null +++ b/editcheck/i18n/hy.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Սահակ" + ] + }, + "editcheck-dialog-action-no": "Ոչ", + "editcheck-dialog-action-yes": "Այո" +} diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index 2c43879e90..44f74d1a73 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -8,6 +8,7 @@ "editcheck-dialog-action-yes": "Jo", "editcheck-dialog-action-revise": "Iwwerschaffen", "editcheck-tone-title": "Tounfall iwwerschaffen?", + "editcheck-tone-description": "Aner Benotzer iwwerschaffen dës Zort vu Ausdrocksweis dacks, well se fannen, datt den Tounfall net equilibréiert ass. [$1 Méi gewuer ginn]", "editcheck-tone-title-acted": "Tounfall iwwerschaffen", "editcheck-review-title": "Ännerungen nokucken" } diff --git a/i18n/ve-mw/mwlanguagevariant/hy.json b/i18n/ve-mw/mwlanguagevariant/hy.json index a5b7732e06..ee5eba99fd 100644 --- a/i18n/ve-mw/mwlanguagevariant/hy.json +++ b/i18n/ve-mw/mwlanguagevariant/hy.json @@ -2,7 +2,8 @@ "@metadata": { "authors": [ "Kareyac", - "Դավիթ Սարոյան" + "Դավիթ Սարոյան", + "Սահակ" ] }, "visualeditor-mwlanguagevariant-disabled": "Գրերի փոխարկումն անջատված է", @@ -15,7 +16,7 @@ "visualeditor-mwlanguagevariantcontextitem-flag-hidden": "Սա թաքնված կանոն է։", "visualeditor-mwlanguagevariantcontextitem-flag-title": "Այս կանոնը ազդում է էջի վերնագրի վրա։", "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Լեզվի կոդը", - "visualeditor-mwlanguagevariantcontextitem-rule-invalid-language-label": "Սխալ", + "visualeditor-mwlanguagevariantcontextitem-rule-invalid-language-label": "Անվավեր", "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "Լեզու", "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "Աղբյուր", "visualeditor-mwlanguagevariantcontextitem-rule-text-to-label": "Նպատակակետ", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index cc79b132a9..df79c3ded2 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -180,6 +180,7 @@ "visualeditor-formatdropdown-format-mw-heading4": "څېرمه سرليک 2", "visualeditor-formatdropdown-format-mw-heading5": "څېرمه سرليک 3", "visualeditor-formatdropdown-format-mw-heading6": "څېرمه-سرليک 4", + "visualeditor-generating-wikitext-progress": "ويکي‌ليک پنځول", "visualeditor-languages-tool": "ژبې", "visualeditor-linkinspector-button-link-external": "باندنی وېبځی", "visualeditor-linkinspector-button-link-internal": "دننني مخونه پلټل", @@ -190,12 +191,15 @@ "visualeditor-linkinspector-illegal-title": "ناسم سرليک", "visualeditor-linknodeinspector-add-label": "لېبل ورگډول", "visualeditor-linknodeinspector-title": "ساده تړنه", + "visualeditor-magiclinknodeinspector-convert-link": "ساده وېبتړ ته اړول", "visualeditor-magiclinknodeinspector-title-isbn": "ISBN تړنه", "visualeditor-magiclinknodeinspector-title-pmid": "PMID تړنه", "visualeditor-magiclinknodeinspector-title-rfc": "RFC تړنه", + "visualeditor-media-title-audio": "غږيز", "visualeditor-media-title-image": "انځور", "visualeditor-media-title-video": "ويډيو", "visualeditor-meta-tool": "خوښنې", + "visualeditor-mweditmode-tooltip": "سمونگر بلول", "visualeditor-mweditmodesource-tool-current": "سرچینه سمول", "visualeditor-mweditmodeve-popup-body": "د دې نښې په کېښکاږلو سره تاسې هر وخت کولای شئ چې بيا ليدنيزسمونگر ته ور واوړئ.", "visualeditor-mweditmodeve-popup-title": "تاسې سرچينې سمونې ته اليش کړ", @@ -221,24 +225,44 @@ "visualeditor-mwgallerydialog-styles-input-placeholder": "CSS قانونونه، سيمي کولون-بېل شوی", "visualeditor-mwgallerydialog-title": "انځورتون", "visualeditor-mwgallerydialog-widths-field-label": "د انځور سور", + "visualeditor-mwpredialog-convert": "ليک ښودبڼې پرېښولی", + "visualeditor-mwpredialog-title": "واردمخ‌ترتيب‌شوی ساده ليک", "visualeditor-mwsignature-tool": "ستاسې لاسليک", + "visualeditor-preference-visualeditor": "ليدنيز سمونگر چارنول", + "visualeditor-preference-tabs": "سمون ونگ‌ډول:", + "visualeditor-preference-tabs-multi-tab": "دواړه سمونگرې ريښکې راته وښاياست", + "visualeditor-preference-tabs-prefer-ve": "که شونې وي تل راته ليدنيز سمونگر راکړه", + "visualeditor-preference-tabs-prefer-wt": "تل راته سرچينې سمونگر راکړه", "visualeditor-preference-tabs-remember-last": "وروستنی سمونگر مې په ياد لره", + "visualeditor-preference-collab-label": "په گډه سمون", + "visualeditor-rebase-client-export": "بهرلېږل", + "visualeditor-rebase-client-export-start": "بهرلېږل...", + "visualeditor-rebase-client-import": "رالېږدول", "visualeditor-rebase-client-import-name": "مخ سرليک", + "visualeditor-rebase-client-title-help": "تاسو به وکړای شئ چې له خوندي‌کولو مخکې د بدلونونو بياکتنې وکړئ", + "visualeditor-redirect-description": "$1 ته مخگرځ شوی", + "visualeditor-savedialog-keyboard-shortcut-submit": "د $1 په کېکاږلو سره خپل سمون خوندي کولای شئ.", "visualeditor-savedialog-label-publish-short": "خپرول", + "visualeditor-savedialog-label-publish-short-start": "خپرول...", "visualeditor-savedialog-label-resolve-conflict": "کړکېچ حلول", + "visualeditor-savedialog-label-resume-editing": "سمون بياپيلول", "visualeditor-savedialog-label-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-label-review-good": "د خوندي کولو چوکاټ ته ورگرځېدل", "visualeditor-savedialog-label-save-short": "خوندي کول", "visualeditor-savedialog-label-save-short-start": "خوندي‌کېږي…", "visualeditor-savedialog-review-nosummary": "د سمون لنډیز نشته", + "visualeditor-savedialog-review-visual": "ليدنيز", "visualeditor-savedialog-review-wikitext": "ویکي‌ليک", "visualeditor-savedialog-title-conflict": "کړکېچ", + "visualeditor-savedialog-title-preview": "د خپلو بدلونونه مخکتنه", "visualeditor-savedialog-title-review": "خپل بدلونونه بياکتل", "visualeditor-savedialog-title-save": "بدلونونه مو خوندي کړئ", "visualeditor-section-body-placeholder": "نوې برخه", "visualeditor-section-title-placeholder": "سکالو", "visualeditor-settings-tool": "مخ اوڼنې", "visualeditor-special-characters-group-other": "اکثر کارېدونکی", + "visualeditor-templatesused-tool": "کارول شوې کينډۍ", + "visualeditor-title-error": "ناسم سرليک.", "visualeditor-tooltip-non-breaking-space": "نه ماتېدونکی واټن", "visualeditor-version-label": "بل‌بڼه", "visualeditor-wikitext-progress": "ويکي متن ته اړونه", diff --git a/i18n/ve-wmf/hr.json b/i18n/ve-wmf/hr.json index b6ff4e836c..ee94110bfd 100644 --- a/i18n/ve-wmf/hr.json +++ b/i18n/ve-wmf/hr.json @@ -12,8 +12,12 @@ "tag-editcheck-newcontent-description": "EditCheck pretpostavlja da je na stranicu dodan nov sadržaj", "tag-editcheck-newreference-description": "Na stranicu je dodana referencija", "tag-editcheck-references-description": "EditCheck pretpostavlja da je bila potrebna referencija", - "tag-editcheck-references-activated": "EditCheck pokrenut za referencije", - "tag-editcheck-references-activated-description": "EditCheck je pretpostavio da je bila potrebna referencija pa je prikazano korisničko sučelje", + "tag-editcheck-references-activated": "EditCheck: referencije", + "tag-editcheck-references-activated-description": "EditCheck je pretpostavio da je bila potrebna referencija pa je prikazana poruka u sučelju.", + "tag-editcheck-references-shown": "EditCheck: referencije", + "tag-editcheck-references-shown-description": "EditCheck je pretpostavio da je bila potrebna referencija pa je prikazano korisničko sučelje", + "tag-editcheck-tone-shown": "EditCheck: neenciklopedijski stil", + "tag-editcheck-tone-shown-description": "EditCheck je pretpostavio da je bila potrebna prilagodba stila i tona pa je prikazana poruka u sučelju.", "tag-visualeditor": "VisualEditor", "tag-visualeditor-description": "Uređivanje napravljeno [[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditorom]]", "tag-visualeditor-needcheck": "vizualno uređivanje: provjera", diff --git a/i18n/ve-wmf/qqq.json b/i18n/ve-wmf/qqq.json index 5ea54456a4..1cab0b8851 100644 --- a/i18n/ve-wmf/qqq.json +++ b/i18n/ve-wmf/qqq.json @@ -12,6 +12,7 @@ "Mormegil", "Nike", "PoLuX124", + "Ponor", "Purodha", "Pxos", "Raymond", @@ -34,7 +35,7 @@ "tag-editcheck-references-activated": "Short description of the editcheck-references-activated tag.\n\nHidden tag added when EditCheck thinks that added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-activated-description}}\n{{Related|tag-editcheck-references-activated-description}}", "tag-editcheck-references-activated-description": "Long description of the editcheck-references-activated tag.\n\nHidden tag added when EditCheck thinks added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-activated}}\n{{Related|tag-editcheck-references-activated}}", "tag-editcheck-references-activated-helppage": "{{notranslate}}\nLink to the false positives reporting page of EditCheck.\n\nUsed in:\n* {{msg-mw|tag-editcheck-references-activated}}", - "tag-editcheck-references-shown": "Short description of the editcheck-references-shown tag.\n\nHidden tag added when EditCheck thinks that added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown-description}}\n{{Related|tag-editcheck-references-shown-description}}", + "tag-editcheck-references-shown": "Short description of the editcheck-references-shown tag.\n\nTag added when EditCheck thinks that added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown-description}}\n{{Related|tag-editcheck-references-shown-description}}", "tag-editcheck-references-shown-description": "Long description of the editcheck-references-shown tag.\n\nHidden tag added when EditCheck thinks added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown}}\n{{Related|tag-editcheck-references-shown}}", "tag-editcheck-references-shown-helppage": "{{notranslate}}\nLink to the false positives reporting page of EditCheck.\n\nUsed in:\n* {{msg-mw|tag-editcheck-references-shown}}", "tag-editcheck-tone-shown": "Short description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks that added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown-description}}\n{{Related|tag-editcheck-tone-shown-description}}", From d5b0a2a98b52b45a6049d9b8aae335d2fbd9afc9 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 27 Jun 2025 21:32:51 -0500 Subject: [PATCH 428/730] Edit check: correctly set the action buttons after navigation Also move the reset into an `always` so it won't get stuck if an action promise is rejected. Change-Id: I4598c378675c2f4a953b7110ce32d7f6e8434910 --- editcheck/modules/dialogs/EditCheckDialog.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index e197ba8430..f7abe5861f 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -206,9 +206,8 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc } else { this.footerLabel.setLabel( '' ); } - this.nextButton.setDisabled( this.currentOffset !== null && this.currentOffset >= this.currentActions.length - 1 ); - this.previousButton.setDisabled( this.currentOffset === null || this.currentOffset <= 0 ); + this.updateNavigationState(); this.updateSize(); if ( !internal ) { @@ -222,6 +221,11 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc } }; +ve.ui.EditCheckDialog.prototype.updateNavigationState = function () { + this.nextButton.setDisabled( this.currentOffset !== null && this.currentOffset >= this.currentActions.length - 1 ); + this.previousButton.setDisabled( this.currentOffset === null || this.currentOffset <= 0 ); +}; + /** * Handle focusAction events from the controller * @@ -308,11 +312,8 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { widget.setDisabled( true ); this.nextButton.setDisabled( true ); this.previousButton.setDisabled( true ); + this.updateSize(); promise.then( ( data ) => { - widget.setDisabled( false ); - this.nextButton.setDisabled( false ); - this.previousButton.setDisabled( false ); - if ( data && this.inBeforeSave ) { // If an action has been taken, we want to linger for a brief moment // to show the result of the action before moving away @@ -326,6 +327,9 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { } else { this.controller.refresh(); } + } ).always( () => { + widget.setDisabled( false ); + this.updateNavigationState(); } ); }; From d85a28cb50e3cdd1c9148200e8676341375e2ccd Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 27 Jun 2025 21:40:31 -0500 Subject: [PATCH 429/730] Edit check: refactor the feedback form into the ActionWidget It now happens inside a promise returned from the widget, which lets it fit smoothly into the `act` system. Bug: T389443 Change-Id: Ia1da61217ffe5d21a5d9b0b7712681d9a75b8ed9 --- editcheck/i18n/en.json | 2 + editcheck/i18n/qqq.json | 2 + editcheck/modules/EditCheck.less | 11 +- editcheck/modules/EditCheckAction.js | 1 + editcheck/modules/EditCheckActionWidget.js | 68 +++++++++++ editcheck/modules/dialogs/EditCheckDialog.js | 2 +- .../editchecks/AddReferenceEditCheck.js | 113 ++++-------------- extension.json | 2 + 8 files changed, 110 insertions(+), 91 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index 5e656ab1f3..af624f7066 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -10,6 +10,8 @@ "editcheck-dialog-action-yes": "Yes", "editcheck-dialog-action-decline": "Decline", "editcheck-dialog-action-revise": "Revise", + "editcheck-dialog-action-back": "Back", + "editcheck-dialog-action-submit": "Submit", "editcheck-dialog-addref-description": "Help readers understand where this information is coming from by adding a citation.", "editcheck-dialog-addref-reject-question": "Why are you not adding a citation?", "editcheck-dialog-addref-reject-description": "Other editors would value learning more about your decision to dismiss the citation.", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index a4716541ea..061aed6b96 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -11,6 +11,8 @@ "editcheck-dialog-action-yes": "Label for the yes option when asking users if they want to act on a check.\n\n{{Identical|Yes}}", "editcheck-dialog-action-decline": "Label for the decline option when asking users if they want to act on a check.\n\n{{Identical|Decline}}", "editcheck-dialog-action-revise": "Label for the revise option when asking users if they want to act on a check.\n\n{{Identical|Revise}}", + "editcheck-dialog-action-back": "Label for the back option when asking users if they want to act on a check.\n\n{{Identical|Back}}", + "editcheck-dialog-action-submit": "Label for the submit option when asking users if they want to act on a check.\n\n{{Identical|Submit}}", "editcheck-dialog-addref-description": "Help text explaining why it is helpful to add a citation.", "editcheck-dialog-addref-reject-question": "Heading for form question asking why the user didn't add a citation.", "editcheck-dialog-addref-reject-description": "Help text for form question asking why the user didn't add a citation.", diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 1eefc8f0ce..a03baf1b9a 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -145,7 +145,8 @@ font-weight: @font-weight-semi-bold; } - &-body { + &-body, + &-feedback { cursor: auto; background-color: @background-color-base; margin: @spacing-50 -@spacing-75 -@spacing-50 -@spacing-75; @@ -213,6 +214,14 @@ .oo-ui-labelElement-label { font-size: inherit; } + + .oo-ui-radioSelectWidget { + padding-bottom: @spacing-50; + } + } + + .ve-ui-editCheckActionWidget-feedback ~ .ve-ui-editCheckActionWidget-body { + display: none; } } diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 990184b0aa..a9a8950fa1 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -144,6 +144,7 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi const widget = new mw.editcheck.EditCheckActionWidget( { type: this.type, icon: this.icon, + name: this.getName(), label: this.getTitle(), message: this.getDescription(), footer: this.getFooter(), diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index 6d4d25f912..3cd9530eaf 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -16,6 +16,8 @@ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) this.singleAction = config.singleAction; this.mode = config.mode || ''; + this.name = config.name; + this.actions = new OO.ui.ActionSet(); this.actions.connect( this, { change: 'onActionsChange' @@ -100,3 +102,69 @@ mw.editcheck.EditCheckActionWidget.prototype.onClick = function ( e ) { // eslint-disable-next-line no-jquery/no-class-state this.emit( 'togglecollapse', this.$element.hasClass( 've-ui-editCheckActionWidget-collapsed' ) ); }; + +/** + * Show a feedback panel + * + * @param {Object} data + * @param {string} data.title + * @param {string} data.description + * @param {Object[]} data.choices + * @return {jQuery.Promise} Promise which resolves when feedback is submitted or is rejected when back is chosen + */ +mw.editcheck.EditCheckActionWidget.prototype.showFeedback = function ( data ) { + const deferred = ve.createDeferred(); + + const form = new OO.ui.FieldsetLayout( { + classes: [ 've-ui-editCheckActionWidget-feedback' ] + } ); + const answerRadioSelect = new OO.ui.RadioSelectWidget( { + items: data.choices.map( ( choice ) => new OO.ui.RadioOptionWidget( choice ) ) + } ); + const submit = new OO.ui.ButtonInputWidget( { + label: ve.msg( 'editcheck-dialog-action-submit' ), + flags: [ 'progressive', 'primary' ], + disabled: true + } ); + const back = new OO.ui.ButtonInputWidget( { + label: ve.msg( 'editcheck-dialog-action-back' ), + flags: [ 'safe', 'back' ], + icon: 'previous' + } ); + answerRadioSelect.on( 'select', () => { + submit.setDisabled( !answerRadioSelect.findSelectedItem() ); + } ); + form.addItems( [ + new OO.ui.FieldLayout( answerRadioSelect, { + label: data.description, + align: 'top' + } ), + new OO.ui.HorizontalLayout( { + items: [ + new OO.ui.FieldLayout( back ), + new OO.ui.FieldLayout( submit ) + ] + } ) + ] ); + const cleanup = () => { + form.$element.remove(); + }; + submit.on( 'click', () => { + const selectedItem = answerRadioSelect.findSelectedItem(); + const reason = selectedItem && selectedItem.getData(); + if ( reason ) { + cleanup(); + deferred.resolve( reason ); + ve.track( 'activity.editCheck-' + this.name, { action: 'edit-check-feedback-reason-' + reason } ); + } + } ); + back.on( 'click', () => { + cleanup(); + deferred.reject(); + } ); + + this.$body.before( form.$element ); + + ve.track( 'activity.editCheck-' + this.name, { action: 'edit-check-feedback-shown' } ); + return deferred.promise(); +}; diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index f7abe5861f..a3efe675b5 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -321,7 +321,7 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { // more generic const pause = data.action !== 'reject' ? 500 : 0; setTimeout( () => { - const rejected = [ 'feedback', 'reject', 'dismiss' ].includes( data.action ); + const rejected = [ 'reject', 'dismiss' ].includes( data.action ); this.controller.removeAction( 'onBeforeSave', action, rejected ); }, pause ); } else { diff --git a/editcheck/modules/editchecks/AddReferenceEditCheck.js b/editcheck/modules/editchecks/AddReferenceEditCheck.js index 097f2ae81e..6bca520340 100644 --- a/editcheck/modules/editchecks/AddReferenceEditCheck.js +++ b/editcheck/modules/editchecks/AddReferenceEditCheck.js @@ -16,28 +16,12 @@ mw.editcheck.AddReferenceEditCheck.static.defaultConfig = ve.extendObject( {}, m beforePunctuation: false } ); -mw.editcheck.AddReferenceEditCheck.static.choices = [ ...mw.editcheck.BaseEditCheck.static.choices, - // Note: no `icon` fields on these, to better distinguish them from the non-feedback actions - { - action: 'feedback', - label: ve.msg( 'ooui-dialog-process-continue' ), - modes: [ 'feedback' ], - flags: [ 'progressive' ] - }, - { - action: 'reset', - label: ve.msg( 'visualeditor-dialog-action-cancel' ), - modes: [ 'feedback' ], - flags: [ 'safe', 'back' ] - } -]; - mw.editcheck.AddReferenceEditCheck.static.onlyCoveredNodes = true; mw.editcheck.AddReferenceEditCheck.prototype.onBeforeSave = function ( surfaceModel ) { return this.findAddedContent( surfaceModel.getDocument() ).filter( ( range ) => !this.isDismissedRange( range ) ) .map( - ( range ) => new this.constructor.static.Action( { + ( range ) => new mw.editcheck.EditCheckAction( { fragments: [ surfaceModel.getLinearFragment( range ) ], check: this } ) @@ -109,22 +93,32 @@ mw.editcheck.AddReferenceEditCheck.prototype.act = function ( choice, action, su } ); case 'reject': ve.track( 'activity.editCheckReferences', { action: 'edit-check-reject' } ); - this.mode = 'feedback'; - return; // this will trigger a debounced update, which will redraw the widget - case 'reset': - this.mode = ''; - return; // again triggers a redraw - case 'feedback': - this.mode = ''; - // eslint-disable-next-line no-case-declarations - const selectedItem = action.widget.answerRadioSelect.findSelectedItem(); - if ( selectedItem && selectedItem.getData() ) { - const reason = selectedItem.getData(); + return action.widget.showFeedback( { + title: ve.msg( 'editcheck-dialog-addref-reject-question' ), + description: ve.msg( 'editcheck-dialog-addref-reject-description' ), + choices: [ + { + data: 'uncertain', + label: ve.msg( 'editcheck-dialog-addref-reject-uncertain' ) + }, + { + data: 'common-knowledge', + label: ve.msg( 'editcheck-dialog-addref-reject-common-knowledge' ) + }, + { + data: 'irrelevant', + label: ve.msg( 'editcheck-dialog-addref-reject-irrelevant' ) + }, + { + data: 'other', + label: ve.msg( 'editcheck-dialog-addref-reject-other' ) + } + ] + } ).then( ( reason ) => { ve.track( 'activity.editCheckReferences', { action: 'dialog-choose-' + reason } ); this.dismiss( action ); return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); - } - break; + } ); } }; @@ -168,65 +162,6 @@ mw.editcheck.AddReferenceEditCheck.prototype.adjustForPunctuation = function ( i return insertionPointFragment; }; -// Support for the feedback panel - -const AddReferenceAction = function () { - AddReferenceAction.super.apply( this, arguments ); -}; -OO.inheritClass( AddReferenceAction, mw.editcheck.EditCheckAction ); - -AddReferenceAction.prototype.render = function () { - const widget = this.constructor.super.prototype.render.apply( this, arguments ); - - if ( this.check.mode === 'feedback' ) { - // Survey panel - widget.form = new OO.ui.FormLayout( { - classes: [ 've-ui-editCheckActionWidget-feedback' ] - } ); - widget.answerRadioSelect = new OO.ui.RadioSelectWidget( { - items: [ - new OO.ui.RadioOptionWidget( { - data: 'uncertain', - label: ve.msg( 'editcheck-dialog-addref-reject-uncertain' ) - } ), - new OO.ui.RadioOptionWidget( { - data: 'common-knowledge', - label: ve.msg( 'editcheck-dialog-addref-reject-common-knowledge' ) - } ), - new OO.ui.RadioOptionWidget( { - data: 'irrelevant', - label: ve.msg( 'editcheck-dialog-addref-reject-irrelevant' ) - } ), - new OO.ui.RadioOptionWidget( { - data: 'other', - label: ve.msg( 'editcheck-dialog-addref-reject-other' ) - } ) - ] - } ); - widget.answerRadioSelect.on( 'select', () => { - const isSelected = !!widget.answerRadioSelect.findSelectedItem(); - widget.actions.setAbilities( { feedback: isSelected } ); - } ); - widget.form.addItems( - new OO.ui.FieldsetLayout( { - label: ve.msg( 'editcheck-dialog-addref-reject-question' ), - items: [ - new OO.ui.FieldLayout( widget.answerRadioSelect, { - label: ve.msg( 'editcheck-dialog-addref-reject-description' ), - align: 'top' - } ) - ] - } ) - ); - widget.message.$element.empty().append( widget.form.$element ); - widget.actions.setAbilities( { feedback: false } ); - } - - return widget; -}; - -mw.editcheck.AddReferenceEditCheck.static.Action = AddReferenceAction; - // Register mw.editcheck.editCheckFactory.register( mw.editcheck.AddReferenceEditCheck ); diff --git a/extension.json b/extension.json index effdbd2899..7b4e4bfa58 100644 --- a/extension.json +++ b/extension.json @@ -662,6 +662,8 @@ "editcheck-dialog-action-yes", "editcheck-dialog-action-decline", "editcheck-dialog-action-revise", + "editcheck-dialog-action-back", + "editcheck-dialog-action-submit", "editcheck-dialog-addref-description", "editcheck-dialog-addref-reject-question", "editcheck-dialog-addref-reject-description", From fb4f0e7917c194c7cb7599a761f4bcb89fa94d46 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 27 Jun 2025 22:03:09 -0500 Subject: [PATCH 430/730] Edit check: add a feedback survey to the decline step of tone check Bug: T389443 Change-Id: I73e5ed3bc0a5003a142c43279f6d115640a2f899 --- editcheck/i18n/en.json | 4 ++++ editcheck/i18n/qqq.json | 4 ++++ editcheck/modules/EditCheckActionWidget.js | 4 ++-- .../editchecks/experimental/ToneCheck.js | 21 +++++++++++++++++-- extension.json | 4 ++++ 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index af624f7066..18d1c77624 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -31,6 +31,10 @@ "editcheck-tone-footerlink": "//meta.wikimedia.org/wiki/Special:MyLanguage/Machine_learning_models/Proposed/Tone_Check", "editcheck-tone-title-acted": "Revising Tone", "editcheck-tone-description-acted": "Look out for expressions that are flattering, disparaging, vague, cliché, or endorsing of a particular viewpoint.", + "editcheck-tone-reject-appropriate": "The tone is appropriate", + "editcheck-tone-reject-uncertain": "I'm not sure how to revise the tone", + "editcheck-tone-reject-other": "Other", + "editcheck-reject-description": "Other editors would value learning why you made this choice.", "editcheck-review-title": "Review changes", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (references) declined (common knowledge)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck reference was declined as common knowledge", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index 061aed6b96..aee511f648 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -32,6 +32,10 @@ "editcheck-tone-footerlink": "{{notranslate}}\nLink to the tone check model card, shown as part of {{msg-mw|editcheck-tone-footer}}", "editcheck-tone-title-acted": "Title of tone check after it has been acted on", "editcheck-tone-description-acted": "Help text explaining the tone check after it has been acted on", + "editcheck-tone-reject-appropriate": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", + "editcheck-tone-reject-uncertain": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", + "editcheck-tone-reject-other": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", + "editcheck-reject-description": "Other editors would value learning more about your decision to skip this check.", "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", "tag-editcheck-reference-decline-common-knowledge": "Short description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", "tag-editcheck-reference-decline-common-knowledge-description": "Long description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index 3cd9530eaf..127319a049 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -108,7 +108,7 @@ mw.editcheck.EditCheckActionWidget.prototype.onClick = function ( e ) { * * @param {Object} data * @param {string} data.title - * @param {string} data.description + * @param {string} [data.description] * @param {Object[]} data.choices * @return {jQuery.Promise} Promise which resolves when feedback is submitted or is rejected when back is chosen */ @@ -136,7 +136,7 @@ mw.editcheck.EditCheckActionWidget.prototype.showFeedback = function ( data ) { } ); form.addItems( [ new OO.ui.FieldLayout( answerRadioSelect, { - label: data.description, + label: data.description || ve.msg( 'editcheck-reject-description' ), align: 'top' } ), new OO.ui.HorizontalLayout( { diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 998780f605..58e4754b64 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -84,8 +84,25 @@ mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { this.tag( 'interacted', action ); if ( choice === 'dismiss' ) { - this.dismiss( action ); - return ve.createDeferred().resolve( { action: choice } ).promise(); + return action.widget.showFeedback( { + choices: [ + { + data: 'appropriate', + label: ve.msg( 'editcheck-tone-reject-appropriate' ) + }, + { + data: 'uncertain', + label: ve.msg( 'editcheck-tone-reject-uncertain' ) + }, + { + data: 'other', + label: ve.msg( 'editcheck-tone-reject-other' ) + } + ] + } ).then( ( reason ) => { + this.dismiss( action ); + return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); + } ); } else if ( choice === 'edit' && surface ) { return this.controller.closeDialog().then( () => { surface.getView().activate(); diff --git a/extension.json b/extension.json index 7b4e4bfa58..b29b201a2f 100644 --- a/extension.json +++ b/extension.json @@ -683,6 +683,10 @@ "editcheck-tone-footer", "editcheck-tone-footerlink", "editcheck-tone-description-acted", + "editcheck-tone-reject-appropriate", + "editcheck-tone-reject-uncertain", + "editcheck-tone-reject-other", + "editcheck-reject-description", "editcheck-review-title", "visualeditor-backbutton-tooltip", "next", From f1676f9a55e173f70dfa4c4482560edff3da205f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 30 Jun 2025 11:21:15 +0100 Subject: [PATCH 431/730] EditCheckWidget: Don't call parent method when disabling Setting a MessageWidget to disabled doesn't do anything useful (other than break the icon colour due to an upstream bug). Change-Id: I8981042977232c0ed9c445bbe46d36a268c2a88a --- editcheck/modules/EditCheckActionWidget.js | 6 +++++- editcheck/modules/dialogs/EditCheckDialog.js | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index 127319a049..2eb3815f90 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -76,7 +76,11 @@ mw.editcheck.EditCheckActionWidget.prototype.onActionsChange = function () { * @inheritdoc */ mw.editcheck.EditCheckActionWidget.prototype.setDisabled = function ( disabled ) { - OO.ui.Widget.prototype.setDisabled.call( this, disabled ); + // Calling setDisabled on the parent doesn't do anything useful, + // and causes the icon to become the wrong color due to an + // upstream bug + // Parent method + // OO.ui.Widget.prototype.setDisabled.call( this, disabled ); this.actions.forEach( null, ( action ) => { action.setDisabled( disabled ); } ); diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index a3efe675b5..31e491f0e6 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -221,6 +221,9 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc } }; +/** + * Update the disabled state of the navigation buttons + */ ve.ui.EditCheckDialog.prototype.updateNavigationState = function () { this.nextButton.setDisabled( this.currentOffset !== null && this.currentOffset >= this.currentActions.length - 1 ); this.previousButton.setDisabled( this.currentOffset === null || this.currentOffset <= 0 ); From 11d7658097c993ae98699aea14677a71bb9bdc75 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 27 Jun 2025 13:05:22 +0100 Subject: [PATCH 432/730] ve.ui.MWEditModeTool: Make isModeAvailable more legible Change-Id: Ib62423a851ed33d6fd1cc88b6dabac3ef813c9df --- .../ve-mw/ui/tools/ve.ui.MWEditModeTool.js | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js index 41728ccd3b..17efafcb80 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js @@ -35,13 +35,19 @@ ve.ui.MWEditModeTool.prototype.getMode = function () { */ ve.ui.MWEditModeTool.prototype.isModeAvailable = function ( mode ) { const target = this.toolbar.getTarget(); - const surface = target.getSurface(); - const canSwitch = surface && !surface.getModel().isMultiUser(); - - // Source mode is always available - return canSwitch && ( - mode === 'source' || target.isModeAvailable( mode ) - ); + if ( !target.getSurface() ) { + // Disable switching before surface is loaded + return false; + } + if ( target.getSurface().getModel().isMultiUser() ) { + // Disable switching in multi-user mode + return false; + } + if ( mode === 'source' ) { + // A fallback source mode should always available (e.g. EditPage.php) + return true; + } + return target.isModeAvailable( mode ); }; /** From 946f1aa1522870d18f8ae4452060b65b701d2d49 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 30 Jun 2025 10:14:49 -0500 Subject: [PATCH 433/730] Edit check: adjust display of navigation buttons Minor change to color and padding Bug: T397158 Change-Id: I1a39efa7dc926ca0ed1d05a618c2fc7eb1d7e375 --- editcheck/modules/EditCheck.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index a03baf1b9a..baf82ea5ff 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -121,9 +121,12 @@ &-footer { display: flex; justify-content: flex-end; + gap: 0; > .oo-ui-labelWidget { align-content: center; + margin-right: @spacing-50; + color: @color-subtle; } } From 1e78aba7863e3d5cc2abc5c27936375be3602377 Mon Sep 17 00:00:00 2001 From: 1F616EMO Date: Mon, 30 Jun 2025 21:00:16 +0800 Subject: [PATCH 434/730] ext.visualEditor.articleTarget: Corrects the POST key of wpWatchlistExpiry Previously, the key of wpWatchlistExpiry is not modified by getSaveOptions, causing it to be sent as-is. Changing the key to "watchlistexpiry", a key recognized by the edit API, to corectly save the watching duration. Bug: T397709 Change-Id: If208289cf5967b15bdc930d5f701ab362dc478c3 --- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 118b665b50..1ad79a74e9 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1466,6 +1466,7 @@ ve.init.mw.ArticleTarget.prototype.getSaveOptions = function () { wpSummary: 'summary', wpMinoredit: 'minor', wpWatchthis: 'watchlist', + wpWatchlistExpiry: 'watchlistexpiry', wpCaptchaId: 'captchaid', wpCaptchaWord: 'captchaword' }; From 042b11cc1fc909d518ff38002e384f30bf1605cd Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 1 Jul 2025 09:27:40 +0200 Subject: [PATCH 435/730] Localisation updates from https://translatewiki.net. Change-Id: I6376161d5e00991e77ff58851c67d0c170150cf6 --- editcheck/i18n/de.json | 6 ++++++ editcheck/i18n/et.json | 8 ++++++++ editcheck/i18n/fi.json | 8 +++++++- i18n/ve-wmf/et.json | 2 ++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index 39931c5c78..30fb41b841 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -6,6 +6,8 @@ "editcheck-dialog-action-yes": "Ja", "editcheck-dialog-action-decline": "Ablehnen", "editcheck-dialog-action-revise": "Überarbeiten", + "editcheck-dialog-action-back": "Zurück", + "editcheck-dialog-action-submit": "Speichern", "editcheck-dialog-addref-description": "Hilf den Lesern zu verstehen, woher diese Informationen stammen, indem du einen Beleg hinzufügst.", "editcheck-dialog-addref-reject-question": "Warum fügst du keinen Beleg hinzu?", "editcheck-dialog-addref-reject-description": "Andere Benutzer würden es begrüßen, mehr über deine Entscheidung, keinen Beleg einzutragen, zu erfahren.", @@ -23,6 +25,10 @@ "editcheck-tone-footer": "Identifiziert mit dem [$1 Sprachmodell BERT]", "editcheck-tone-title-acted": "Tonfall überarbeiten", "editcheck-tone-description-acted": "Achte auf Ausdrücke, die schmeichelhaft, abfällig, vage, klischeehaft oder die Unterstützung eines bestimmten Standpunkts sind.", + "editcheck-tone-reject-appropriate": "Der Tonfall ist angemessen", + "editcheck-tone-reject-uncertain": "Ich bin nicht sicher, wie ich den Tonfall ändern soll", + "editcheck-tone-reject-other": "Andere", + "editcheck-reject-description": "Andere Benutzer würden es schätzen, zu erfahren, warum du diese Wahl getroffen hast.", "editcheck-review-title": "Änderungen überprüfen", "tag-editcheck-reference-decline-common-knowledge": "Bearbeitungsprüfung (Belege) abgelehnt (Allgemeinwissen)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck: Beleg wurde als allgemein bekannt abgelehnt", diff --git a/editcheck/i18n/et.json b/editcheck/i18n/et.json index 2db861a877..9d54687701 100644 --- a/editcheck/i18n/et.json +++ b/editcheck/i18n/et.json @@ -6,6 +6,8 @@ }, "editcheck-dialog-action-no": "Ei", "editcheck-dialog-action-yes": "Jah", + "editcheck-dialog-action-decline": "Lükka tagasi", + "editcheck-dialog-action-revise": "Kohenda", "editcheck-dialog-addref-description": "Aita lugejatel aru saada, kust see teave pärineb, lisades viite.", "editcheck-dialog-addref-reject-question": "Miks sa viidet ei lisa?", "editcheck-dialog-addref-reject-description": "Teistel toimetajatel on kasulik teada, miks otsustasid viite ära jätta.", @@ -16,6 +18,12 @@ "editcheck-dialog-addref-success-notify": "Aitäh, et viite lisasid!", "editcheck-dialog-addref-title": "Viite lisamine", "editcheck-dialog-title": "Enne avaldamist", + "editcheck-tone-title": "Kas kohendada tooni?", + "editcheck-tone-description": "Teised kasutajad kohendavad sageli sellist sõnastust, öeldes et toon ei ole tasakaalukas. [$1 Loe veel]", + "editcheck-tone-footer": "Tuvastatud kasutades mudelit [$1 BERT]", + "editcheck-tone-title-acted": "Tooni kohendamine", + "editcheck-tone-description-acted": "Pööra tähelepanu väljendusviisile, mis avaldab poolehoidu või on halvustav, ebamäärane või sisutühi või mis toetab teatud seisukohta.", + "editcheck-review-title": "Vaata muudatused üle", "tag-editcheck-reference-decline-common-knowledge": "Muudatuse kontroll (viited) tagasi lükatud (üldteada)", "tag-editcheck-reference-decline-common-knowledge-description": "EditChecki viide tagasi lükatud, kuna väide on üldteada.", "tag-editcheck-reference-decline-irrelevant": "Muudatuse kontroll (viited) tagasi lükatud (ebavajalik)", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index a36c303bd9..49ee730608 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -10,6 +10,8 @@ "editcheck-dialog-action-yes": "Kyllä", "editcheck-dialog-action-decline": "Hylkää", "editcheck-dialog-action-revise": "Muokkaa", + "editcheck-dialog-action-back": "Takaisin", + "editcheck-dialog-action-submit": "Lähetä", "editcheck-dialog-addref-description": "Auta lukijoita ymmärtämään, mistä tämä tieto on peräisin lisäämällä lähdeviite.", "editcheck-dialog-addref-reject-question": "Mikset lisää lähdeviitettä?", "editcheck-dialog-addref-reject-description": "Muut muokkaajat arvostaisivat kuulla päätöksestäsi olla lisäämättä lähdeviitettä.", @@ -26,7 +28,11 @@ "editcheck-tone-description": "Muut käyttäjät korjaavat usein tämänkaltaisia ilmauksia, koska ne ovat sävyltään epäneutraaleja. [$1 Lisätietoja]", "editcheck-tone-footer": "Tunnistettu [$1 BERT-mallin] avulla", "editcheck-tone-title-acted": "Sävyn korjaus", - "editcheck-tone-description-acted": "Varo ilmauksia, jotka ovat ylistäviä, väheksyviä, ympäripyöreitä tai jotka tukevat tiettyä näkökulmaa.", + "editcheck-tone-description-acted": "Varo ylistäviä, väheksyviä, ympäripyöreitä tai tiettyä näkökulmaa tukevia ilmauksia.", + "editcheck-tone-reject-appropriate": "Sävy on sopiva", + "editcheck-tone-reject-uncertain": "En ole varma, miten korjata sävyä", + "editcheck-tone-reject-other": "Muu", + "editcheck-reject-description": "Muut muokkaajat arvostaisivat kuulla, miksi teit tämän valinnan.", "editcheck-review-title": "Tarkasta muutokset", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", "tag-editcheck-reference-decline-common-knowledge-description": "Muokkaustarkistimen ehdotus hylättiin, koska lisäystä pidettiin yleisenä tietona", diff --git a/i18n/ve-wmf/et.json b/i18n/ve-wmf/et.json index 0acdd1faef..e0583647e9 100644 --- a/i18n/ve-wmf/et.json +++ b/i18n/ve-wmf/et.json @@ -14,6 +14,8 @@ "tag-editcheck-references-activated-description": "EditCheck arvab, et vaja võis olla viidet ning näidati selle kasutajaliidest.", "tag-editcheck-references-shown": "Muudatuse kontroll (viited) näidatud", "tag-editcheck-references-shown-description": "EditCheck arvab, et vaja võis olla viidet ning näidati selle kasutajaliidest.", + "tag-editcheck-tone-shown": "Muudatuse kontroll (toon) näidatud", + "tag-editcheck-tone-shown-description": "EditCheck arvab, et osa sisu toon võis vajada kohandamist ning näidati selle kasutajaliidest", "tag-visualeditor": "Visuaalmuudatus", "tag-visualeditor-description": "Muudatus tehtud [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuaaltoimetiga]]", "tag-visualeditor-needcheck": "Visuaalmuudatus: kontrollida", From 2cd6c3c9ccae306f4ef672f4c480f03c9ecf752b Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 1 Jul 2025 12:43:50 -0500 Subject: [PATCH 436/730] Edit check: fix counter logging for SLO Can't skip the value for labels. Bug: T395444 Change-Id: Ic3e3c98dc68715a18091cac18da83a7483be3b58 --- editcheck/modules/controller.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 7b2c2c9c7d..905c5866d5 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -483,13 +483,13 @@ Controller.prototype.setupPreSaveProcess = function () { if ( surface.getMode() !== 'visual' ) { return; } - ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'Available' } ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', 1, { kind: 'Available' } ); const oldFocusedAction = this.focusedAction; this.inBeforeSave = true; return this.updateForListener( 'onBeforeSave' ).then( ( actions ) => { if ( actions.length ) { - ve.track( 'counter.editcheck.preSaveChecksShown' ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', 1, { kind: 'Shown' } ); mw.editcheck.refCheckShown = mw.editcheck.refCheckShown || actions.some( ( action ) => action.getName() === 'addReference' ); mw.editcheck.toneCheckShown = mw.editcheck.toneCheckShown || @@ -526,7 +526,7 @@ Controller.prototype.setupPreSaveProcess = function () { // Someone clicking "read" to leave the article // will trigger the closing of this; in that // case, just abandon what we're doing - ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'Abandoned' } ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', 1, { kind: 'Abandoned' } ); return ve.createDeferred().reject().promise(); } this.restoreToolbar( target ); @@ -544,13 +544,13 @@ Controller.prototype.setupPreSaveProcess = function () { // before showing save dialog to give user time // to see success notification. setTimeout( () => { - ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'Completed' } ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', 1, { kind: 'Completed' } ); delay.resolve(); }, !OO.ui.isMobile() && data.action !== 'reject' ? 2000 : 0 ); return delay.promise(); } else { // closed via "back" or otherwise - ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'Abandoned' } ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', 1, { kind: 'Abandoned' } ); return ve.createDeferred().reject().promise(); } } ); @@ -560,7 +560,7 @@ Controller.prototype.setupPreSaveProcess = function () { this.inBeforeSave = false; // Counterpart to earlier preSaveChecksShown, for use in tracking // errors in check-generation: - ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', { kind: 'NotShown' } ); + ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', 1, { kind: 'NotShown' } ); } } ); } ); From b9cb7f53b2ca58c13b81fa88e653bff7f796d3d9 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 2 Jul 2025 09:30:44 +0200 Subject: [PATCH 437/730] Localisation updates from https://translatewiki.net. Change-Id: I4f695890d7582710f518e169d3a7372839ac6aec --- editcheck/i18n/ar.json | 6 ++++++ editcheck/i18n/az.json | 6 ++++++ editcheck/i18n/fr.json | 6 ++++++ editcheck/i18n/he.json | 13 +++++++++++++ editcheck/i18n/ia.json | 6 ++++++ editcheck/i18n/it.json | 3 +++ editcheck/i18n/lb.json | 4 ++++ editcheck/i18n/mk.json | 9 ++++++++- editcheck/i18n/ps.json | 9 +++++++++ editcheck/i18n/qqq.json | 3 ++- editcheck/i18n/ru.json | 2 ++ i18n/ve-mw/lo.json | 4 +++- i18n/ve-mw/ps.json | 2 +- 13 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 editcheck/i18n/ps.json diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index cb837d2d98..6d028e8274 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -10,6 +10,8 @@ "editcheck-dialog-action-yes": "نعم", "editcheck-dialog-action-decline": "رفض", "editcheck-dialog-action-revise": "مراجعة", + "editcheck-dialog-action-back": "رجوع", + "editcheck-dialog-action-submit": "إرسال", "editcheck-dialog-addref-description": "ساعدوا القراء على فهم مصدر هذه المعلومات عن طريق إضافة استشهاد.", "editcheck-dialog-addref-reject-question": "لماذا لن تضيفوا استشهادًا؟", "editcheck-dialog-addref-reject-description": "سيقدر المحرّرون الآخرون معرفة المزيد عن قرارك بتجاوز الاستشهاد.", @@ -27,6 +29,10 @@ "editcheck-tone-footer": "تم التحديد باستخدام [$1 نموذج BERT]", "editcheck-tone-title-acted": "مراجعة الأسلوب", "editcheck-tone-description-acted": "الحذر من التعبيرات المجاملة، أو المهينة، أو الغامضة، أو المبتذلة، أو المؤيدة لوجهة نظر معينة.", + "editcheck-tone-reject-appropriate": "الأسلوب مناسب", + "editcheck-tone-reject-uncertain": "أنا لست متيقنًا من كيفية مراجعة الأسلوب", + "editcheck-tone-reject-other": "غيرها", + "editcheck-reject-description": "سيكون من المفيد للمحررين الآخرين معرفة سبب اختيارك لهذا.", "editcheck-review-title": "مراجعة التغييرات", "tag-editcheck-reference-decline-common-knowledge": "تم رفض (ثقافة عامة) التحقّق من التحرير (مراجع)", "tag-editcheck-reference-decline-common-knowledge-description": "تم رفض مرجع EditCheck (أداة التحقّق) باعتباره ثقافةً عامة", diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index 354660d882..eb7ed8b7c1 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -9,6 +9,8 @@ "editcheck-dialog-action-yes": "Bəli", "editcheck-dialog-action-decline": "Rədd et", "editcheck-dialog-action-revise": "Nəzərdən keçir", + "editcheck-dialog-action-back": "Geriyə", + "editcheck-dialog-action-submit": "Təsdiq et", "editcheck-dialog-addref-description": "İstinad əlavə etməklə oxuculara bu məlumatın haradan gəldiyini anlamağa kömək edin.", "editcheck-dialog-addref-reject-question": "Niyə mənbə əlavə etmirsiniz?", "editcheck-dialog-addref-reject-description": "Digər redaktorlar sizin mənbə əlavə etmək istəməmə qərarınız haqqında daha çox məlumat əldə etmək istəyəcəklər.", @@ -26,6 +28,10 @@ "editcheck-tone-footer": "[$1 BERT modeli] istifadə edilməklə müəyyən edilmişdir", "editcheck-tone-title-acted": "Tonu yenidən nəzərdən keçirmək", "editcheck-tone-description-acted": "Mübaliğəli, aşağılayıcı, qeyri-müəyyən, klişe və ya müəyyən bir nöqteyi-nəzərə dəstək verən ifadələrə diqqət yetirin.", + "editcheck-tone-reject-appropriate": "Ton uyğun gəlir", + "editcheck-tone-reject-uncertain": "Tonu necə dəyişdirəcəyimi bilmirəm", + "editcheck-tone-reject-other": "Digər", + "editcheck-reject-description": "Digər redaktorlar niyə bu seçimi etdiyinizi bilmək istəyəcəklər.", "editcheck-review-title": "Dəyişiklikləri yoxla", "tag-editcheck-reference-decline-common-knowledge": "Redaktə Yoxlanışı (istinadlar) rədd edildi (hamının bildiyi)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck istinadı hamının bildiyi məlumat kimi rədd edildi", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index d198eda31b..b696ede23f 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -11,6 +11,8 @@ "editcheck-dialog-action-yes": "Oui", "editcheck-dialog-action-decline": "Refuser", "editcheck-dialog-action-revise": "Réviser", + "editcheck-dialog-action-back": "Retour", + "editcheck-dialog-action-submit": "Soumettre", "editcheck-dialog-addref-description": "Aidez les lecteurs à comprendre d'où proviennent ces informations en ajoutant une source.", "editcheck-dialog-addref-reject-question": "Pourquoi n'ajoutez-vous pas une source ?", "editcheck-dialog-addref-reject-description": "Les autres éditeurs aimeraient en savoir plus sur votre décision de ne pas ajouter une source.", @@ -28,6 +30,10 @@ "editcheck-tone-footer": "Identifié à l'aide d'un [ modèle BERT $1 ]", "editcheck-tone-title-acted": "Révision du ton", "editcheck-tone-description-acted": "Faites attention aux expressions flatteuses, désobligeantes, vagues, clichées ou qui soutiennent un point de vue particulier.", + "editcheck-tone-reject-appropriate": "Le ton est approprié", + "editcheck-tone-reject-uncertain": "Je ne sais pas comment réviser le ton.", + "editcheck-tone-reject-other": "Autre", + "editcheck-reject-description": "D'autres rédacteurs apprécieront d'apprendre pourquoi vous avez fait ce choix.", "editcheck-review-title": "Relire les modifications", "tag-editcheck-reference-decline-common-knowledge": "Vérification de modification (références) refusée (savoir commun)", "tag-editcheck-reference-decline-common-knowledge-description": "La référence EditCheck a été refusée comme étant un savoir commun", diff --git a/editcheck/i18n/he.json b/editcheck/i18n/he.json index 7cf0709430..b699be4da9 100644 --- a/editcheck/i18n/he.json +++ b/editcheck/i18n/he.json @@ -7,6 +7,10 @@ }, "editcheck-dialog-action-no": "לא", "editcheck-dialog-action-yes": "כן", + "editcheck-dialog-action-decline": "דחייה", + "editcheck-dialog-action-revise": "תיקון", + "editcheck-dialog-action-back": "חזרה", + "editcheck-dialog-action-submit": "שליחה", "editcheck-dialog-addref-description": "{{GENDER:|עזור|עזרי}} לקוראים להבין מאיפה המידע הזה מגיע על־ידי הוספת הערת שוליים.", "editcheck-dialog-addref-reject-question": "למה אינך {{GENDER:|מוסיף|מוסיפה}} ציטוט?", "editcheck-dialog-addref-reject-description": "עורכים אחרים ישמחו לדעת למה החלטת לוותר על הערת שוליים.", @@ -19,6 +23,15 @@ "editcheck-dialog-title": "לפני הפרסום", "editcheck-copyvio-title": "תוכן מודבק", "editcheck-copyvio-description": "ככלל, אין להעתיק טקסט ממקורות אחרים. בדרך־כלל, זאת גם הפרת זכויות יוצרים וגם גניבת ספרותית (פלגיאט).", + "editcheck-tone-title": "לתקן את הנימה?", + "editcheck-tone-description": "משתמשים אחרים נוטים לתקן ניסוח מסוג כזה, ואומרים שהנימה אינה מאוזנת. [$1 למידע נוסף]", + "editcheck-tone-footer": "זוהה באמצעות [$1 מודל BERT]", + "editcheck-tone-title-acted": "תיקון נימה", + "editcheck-tone-description-acted": "יש להיזהר משימוש בביטויים מחמיאים, מזלזלים, מעורפלים, קלישאתיים או תומכים בנקודת מבט מסוימת.", + "editcheck-tone-reject-appropriate": "הנימה הזאת הולמת", + "editcheck-tone-reject-uncertain": "לא ברור לי איך לתקן את הנימה", + "editcheck-tone-reject-other": "אחר", + "editcheck-reject-description": "עורכים אחרים ישמחו לדעת למה בחרת בזה.", "editcheck-review-title": "סקירת שינויים", "tag-editcheck-reference-decline-common-knowledge": "מערכת בדיקת עריכה (הערות שוליים) – נדחה (ידוע לכול)", "tag-editcheck-reference-decline-common-knowledge-description": "הערת שוליים שהוצעה דרך מערכת בדיקת עריכה נדחתה בשל היותה ידועה לכול", diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index 0baabe250e..c4c4489a9e 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -8,6 +8,8 @@ "editcheck-dialog-action-yes": "Si", "editcheck-dialog-action-decline": "Declinar", "editcheck-dialog-action-revise": "Revisar", + "editcheck-dialog-action-back": "Retornar", + "editcheck-dialog-action-submit": "Submitter", "editcheck-dialog-addref-description": "Adde un citation pro adjutar le lectores a comprender de ubi proveni iste information.", "editcheck-dialog-addref-reject-question": "Proque non adde tu un citation?", "editcheck-dialog-addref-reject-description": "Altere redactores vole saper proque tu ha decidite de non adder un citation.", @@ -25,6 +27,10 @@ "editcheck-tone-footer": "Identificate usante un [$1 modello BERT]", "editcheck-tone-title-acted": "Revision del tono", "editcheck-tone-description-acted": "Presta attention al expressiones flattante, denigrante, vage, stereotypate o que sustene un puncto de vista particular.", + "editcheck-tone-reject-appropriate": "Le tono es appropriate", + "editcheck-tone-reject-uncertain": "Io non es secur como revisar le tono", + "editcheck-tone-reject-other": "Altere", + "editcheck-reject-description": "Altere redactores appreciarea saper proque tu ha optate pro isto.", "editcheck-review-title": "Revider cambiamentos", "tag-editcheck-reference-decline-common-knowledge": "Verification de modification (referentias) declinate (cognoscentia commun)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck: referentia declinate perque es cognoscentia commun", diff --git a/editcheck/i18n/it.json b/editcheck/i18n/it.json index 428fd193dc..b6b65ce94e 100644 --- a/editcheck/i18n/it.json +++ b/editcheck/i18n/it.json @@ -7,6 +7,8 @@ }, "editcheck-dialog-action-no": "No", "editcheck-dialog-action-yes": "Sì", + "editcheck-dialog-action-back": "Indietro", + "editcheck-dialog-action-submit": "Invia", "editcheck-dialog-addref-description": "Aiuta i lettori a capire da dove provengono queste informazioni aggiungendo una fonte.", "editcheck-dialog-addref-reject-question": "Perché non aggiungi una fonte?", "editcheck-dialog-addref-reject-description": "Altri editori apprezzerebbero saperne di più sulla tua decisione di non inserire la fonte.", @@ -17,6 +19,7 @@ "editcheck-dialog-addref-success-notify": "Grazie per aver aggiunto una fonte!", "editcheck-dialog-addref-title": "Aggiungi una fonte", "editcheck-dialog-title": "Prima della pubblicazione", + "editcheck-tone-reject-other": "Altro", "editcheck-review-title": "Rivedi modifiche", "tag-editcheck-reference-decline-other": "Edit Check (citazioni) rifiutato (altro)" } diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index 44f74d1a73..7893e2ea7e 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -7,8 +7,12 @@ "editcheck-dialog-action-no": "Neen", "editcheck-dialog-action-yes": "Jo", "editcheck-dialog-action-revise": "Iwwerschaffen", + "editcheck-dialog-action-back": "Zréck", "editcheck-tone-title": "Tounfall iwwerschaffen?", "editcheck-tone-description": "Aner Benotzer iwwerschaffen dës Zort vu Ausdrocksweis dacks, well se fannen, datt den Tounfall net equilibréiert ass. [$1 Méi gewuer ginn]", "editcheck-tone-title-acted": "Tounfall iwwerschaffen", + "editcheck-tone-reject-appropriate": "Den Tounfall ass passend", + "editcheck-tone-reject-uncertain": "Ech weess net genee, wéi ech den Tounfall iwwerschaffe soll", + "editcheck-reject-description": "Aner Editeure géifen et appreciéiere fir gewuer ze ginn, firwat Dir dëse Choix gemaach hutt.", "editcheck-review-title": "Ännerungen nokucken" } diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index e4fb75508f..0c7b329c49 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -8,6 +8,8 @@ "editcheck-dialog-action-yes": "Да", "editcheck-dialog-action-decline": "Одбиј", "editcheck-dialog-action-revise": "Преработи", + "editcheck-dialog-action-back": "Назад", + "editcheck-dialog-action-submit": "Поднеси", "editcheck-dialog-addref-description": "Помогнете им на читателите да разберат од каде доаѓаат информациите ставајќи навод.", "editcheck-dialog-addref-reject-question": "Зошто не додавате навод?", "editcheck-dialog-addref-reject-description": "Другите уредници би ценеле ако дознаат зошто сте решиле да не ставите навод.", @@ -21,9 +23,14 @@ "editcheck-copyvio-title": "Налепена содржина", "editcheck-copyvio-description": "По општо правило, не копирајте текст од други извори. Копирањето на текст претставува кршење на авторски права и плагијат.", "editcheck-tone-title": "Да се преработи тонот?", - "editcheck-tone-description": "Други уредници често преработуваат вакви срочувања за да се добие поврамнотежен тон. [$1 Дознајте повеќе]", + "editcheck-tone-description": "Други корисници често преработуваат вакви срочувања велејќи дека тонот не е урамнотежен. [$1 Дознајте повеќе]", + "editcheck-tone-footer": "Утврдено користејќи [$1 BERT-модел]", "editcheck-tone-title-acted": "Преработка на тонот", "editcheck-tone-description-acted": "Внимавајте на изрази кои се ласкави, омаловажувачки, нејасни, клиширани или што се застапуваат за одредено гледиште.", + "editcheck-tone-reject-appropriate": "Тонот е соодветен.", + "editcheck-tone-reject-uncertain": "Не знам како да го преработам тонот", + "editcheck-tone-reject-other": "Друго", + "editcheck-reject-description": "Другите корисници би ценеле да дознаат зошто го направивте овој избор.", "editcheck-review-title": "Прегледај промени", "tag-editcheck-reference-decline-common-knowledge": "Проверката на уредувањето (наводи) е одбиена (општопознато)", "tag-editcheck-reference-decline-common-knowledge-description": "Наводот со EditCheck е одбиен како општопознат", diff --git a/editcheck/i18n/ps.json b/editcheck/i18n/ps.json new file mode 100644 index 0000000000..08473e51e4 --- /dev/null +++ b/editcheck/i18n/ps.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "شاه زمان پټان" + ] + }, + "editcheck-dialog-action-submit": "سپارل", + "editcheck-tone-reject-uncertain": "زه ډاډه نه يم چې څنگه وينگ کره کړم" +} diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index aee511f648..b4247f3204 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Amire80", "David Lynch", "Ed Sanders", "Stjn" @@ -31,7 +32,7 @@ "editcheck-tone-footer": "Footer explaining the tone check model", "editcheck-tone-footerlink": "{{notranslate}}\nLink to the tone check model card, shown as part of {{msg-mw|editcheck-tone-footer}}", "editcheck-tone-title-acted": "Title of tone check after it has been acted on", - "editcheck-tone-description-acted": "Help text explaining the tone check after it has been acted on", + "editcheck-tone-description-acted": "Help text explaining the tone check after it has been acted on. \"Look out\" here means \"Be aware of\" or \"Be careful of\".", "editcheck-tone-reject-appropriate": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", "editcheck-tone-reject-uncertain": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", "editcheck-tone-reject-other": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", diff --git a/editcheck/i18n/ru.json b/editcheck/i18n/ru.json index c94a2216bd..0d6288cf51 100644 --- a/editcheck/i18n/ru.json +++ b/editcheck/i18n/ru.json @@ -1,11 +1,13 @@ { "@metadata": { "authors": [ + "Okras", "Stjn" ] }, "editcheck-dialog-action-no": "Нет", "editcheck-dialog-action-yes": "Да", + "editcheck-dialog-action-back": "Назад", "editcheck-dialog-addref-description": "Добавьте источник, чтобы помочь читателям понять, откуда взята эта информация.", "editcheck-dialog-addref-reject-question": "Почему вы не добавили источник?", "editcheck-dialog-addref-reject-description": "Другим редакторам будет полезно узнать, почему вы решили не добавлять источник.", diff --git a/i18n/ve-mw/lo.json b/i18n/ve-mw/lo.json index f34eac17cb..b7f45f7610 100644 --- a/i18n/ve-mw/lo.json +++ b/i18n/ve-mw/lo.json @@ -3,10 +3,12 @@ "authors": [ "Aefgh39622", "Bebiezaza", - "Lookruk" + "Lookruk", + "RenKtv" ] }, "tooltip-ca-ve-edit": "ແກ້ໄຂໜ້ານີ້", + "visualeditor-ca-createsource": "ສ້າງໜ້າ", "visualeditor-ca-editsource": "ດັດແກ້ຕົ້ນສະບັບ", "visualeditor-ca-editsource-section": "ດັດແກ້ຕົ້ນສະບັບ" } diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index df79c3ded2..eb9267068d 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -169,7 +169,7 @@ "visualeditor-editingtabdialog-title": "سمون ريښکۍ", "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|يادښت|يادښتونه}}", "visualeditor-editnotices-tooltip": "يادښتونه سمول", - "visualeditor-editsummary": "ووايۍ کوم بدلونونه مو راوستل", + "visualeditor-editsummary": "ووايئ کوم بدلونونه مو راوستل", "visualeditor-educationpopup-dismiss": "ښه، وپوهېدم", "visualeditor-expandable-less": "لږ", "visualeditor-expandable-more": "نور", From e848af39ef2f8d2129da4d95ec70c3a068762a56 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 30 Jun 2025 11:31:42 +0100 Subject: [PATCH 438/730] EditCheckDialog: Do all button management in updateNavigationState Also use color-disabled for the navigation label when navigation is fully disabled by state. Change-Id: Ibe56feb61173b6fe088ce471e62a797272e141d9 --- editcheck/modules/EditCheck.less | 4 ++++ editcheck/modules/dialogs/EditCheckDialog.js | 24 +++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 2f27017989..1d58e3536f 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -127,6 +127,10 @@ align-content: center; margin-right: @spacing-50; color: @color-subtle; + + &.oo-ui-widget-disabled { + color: @color-disabled; + } } } diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index 3dd129d4a7..0247357366 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -17,6 +17,8 @@ ve.ui.EditCheckDialog = function VeUiEditCheckDialog() { // Pre-initialization this.$element.addClass( 've-ui-editCheckDialog' ); + + this.acting = false; }; /* Inheritance */ @@ -225,8 +227,19 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc * Update the disabled state of the navigation buttons */ ve.ui.EditCheckDialog.prototype.updateNavigationState = function () { - this.nextButton.setDisabled( this.currentOffset !== null && this.currentOffset >= this.currentActions.length - 1 ); - this.previousButton.setDisabled( this.currentOffset === null || this.currentOffset <= 0 ); + const currentAction = this.currentActions[ this.currentOffset ]; + if ( currentAction ) { + currentAction.widget.setDisabled( this.acting ); + } + this.footerLabel.setDisabled( this.acting ); + this.nextButton.setDisabled( + this.acting || + ( this.currentOffset !== null && this.currentOffset >= this.currentActions.length - 1 ) + ); + this.previousButton.setDisabled( + this.acting || + this.currentOffset === null || this.currentOffset <= 0 + ); }; /** @@ -312,9 +325,8 @@ ve.ui.EditCheckDialog.prototype.ready = function ( data ) { * @param {jQuery.Promise} promise Promise which resolves when the action is complete */ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { - widget.setDisabled( true ); - this.nextButton.setDisabled( true ); - this.previousButton.setDisabled( true ); + this.acting = true; + this.updateNavigationState(); this.updateSize(); promise.then( ( data ) => { if ( data && this.inBeforeSave ) { @@ -331,7 +343,7 @@ ve.ui.EditCheckDialog.prototype.onAct = function ( action, widget, promise ) { this.controller.refresh(); } } ).always( () => { - widget.setDisabled( false ); + this.acting = false; this.updateNavigationState(); } ); }; From 218051123b691724da6175c5e46c5fa97f2f2f12 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 3 Jul 2025 09:55:37 +0200 Subject: [PATCH 439/730] Localisation updates from https://translatewiki.net. Change-Id: Ic31cb3f93810125eee2b1e43cee83e5446cc9a17 --- editcheck/i18n/gl.json | 13 +++++++++++++ editcheck/i18n/sr-ec.json | 3 +++ i18n/ve-mw/tt-cyrl.json | 3 ++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/gl.json b/editcheck/i18n/gl.json index 5f5c3dc6a7..be795bfa4f 100644 --- a/editcheck/i18n/gl.json +++ b/editcheck/i18n/gl.json @@ -6,6 +6,10 @@ }, "editcheck-dialog-action-no": "Non", "editcheck-dialog-action-yes": "Si", + "editcheck-dialog-action-decline": "Rexeitar", + "editcheck-dialog-action-revise": "Revisar", + "editcheck-dialog-action-back": "Volver", + "editcheck-dialog-action-submit": "Enviar", "editcheck-dialog-addref-description": "Axuda aos lectores a comprender de onde provén esta información engadindo unha cita.", "editcheck-dialog-addref-reject-question": "Por que non engades unha cita?", "editcheck-dialog-addref-reject-description": "As demais persoas editoras queren saber máis sobre a túa decisión non engadir unha cita.", @@ -18,6 +22,15 @@ "editcheck-dialog-title": "Antes de publicares", "editcheck-copyvio-title": "Contido pegado", "editcheck-copyvio-description": "Como regra xeral, non copies texto doutras fontes. Facelo adoita constituír un plaxio e unha violación dos dereitos de autoría.", + "editcheck-tone-title": "Revisar o ton?", + "editcheck-tone-description": "Outros usuarios adoitan revisar este tipo de redacción, porque consideran que o ton non é axeitado. [$1 Máis información]", + "editcheck-tone-footer": "Identificado usando un [$1 modelo BERT]", + "editcheck-tone-title-acted": "Revisión do ton", + "editcheck-tone-description-acted": "Busca expresións aduladoras, despectivas, vagas, clichés ou que apoien un punto de vista en particular.", + "editcheck-tone-reject-appropriate": "O ton é axeitado", + "editcheck-tone-reject-uncertain": "Non sei como revisar o ton", + "editcheck-tone-reject-other": "Outro", + "editcheck-reject-description": "Outros editores apreciarán saber por que tomaches esta decisión.", "editcheck-review-title": "Revisar os cambios", "tag-editcheck-reference-decline-common-knowledge": "Verificación de edición (referencias) rexeitada (coñecemento común)", "tag-editcheck-reference-decline-common-knowledge-description": "A referencia da verificación de edición rexeitouse por ser un coñecemento común", diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index 96006b2674..64e098f8c8 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -7,6 +7,8 @@ "editcheck-dialog-action-no": "Не", "editcheck-dialog-action-yes": "Да", "editcheck-dialog-action-decline": "Одбаци", + "editcheck-dialog-action-back": "Назад", + "editcheck-dialog-action-submit": "Проследи", "editcheck-dialog-addref-description": "Помозите читаоцима да знају одакле информација долази додавањем референце.", "editcheck-dialog-addref-reject-question": "Зашто не додајете референцу?", "editcheck-dialog-addref-reject-description": "Остали уредници радо би знали зашто сте одлучили не додати референцу.", @@ -19,6 +21,7 @@ "editcheck-dialog-title": "Пре објављивања", "editcheck-copyvio-title": "Налепљен садржај", "editcheck-copyvio-description": "Опште правило је да се не копира текст из других извора. Копирање текста је кршење ауторских права и плагијат.", + "editcheck-tone-reject-other": "Друго", "editcheck-review-title": "Преглед измена", "tag-editcheck-reference-decline-common-knowledge": "Edit Check референцирање одбачено (опште знање)", "tag-editcheck-reference-decline-common-knowledge-description": "Референцирање је одбачено зато што је у питању опште знање", diff --git a/i18n/ve-mw/tt-cyrl.json b/i18n/ve-mw/tt-cyrl.json index 413435d138..1a7623c171 100644 --- a/i18n/ve-mw/tt-cyrl.json +++ b/i18n/ve-mw/tt-cyrl.json @@ -6,6 +6,7 @@ "Don Alessandro", "Ерней", "З. ӘЙЛЕ", + "Ильгиз", "Ильнар" ] }, @@ -22,7 +23,7 @@ "visualeditor-ca-createlocaldescriptionsource": "Локаль тасвирлама өстәү", "visualeditor-ca-createsource": "Чыганак коды булдыру", "visualeditor-ca-editsource": "Вики-текстны үзгәртү", - "visualeditor-ca-editsource-section": "вики-текстны үзгәртү", + "visualeditor-ca-editsource-section": "вики-текстны үзгәрт", "visualeditor-categories-tool": "Төркемнәр", "visualeditor-desc": "MediaWiki өчен күрсәтмәле төзәткеч", "visualeditor-descriptionpagelink": "Project:Күрсәтмәле төзәтмә", From 225a81d813d0304d067adbbc83fae719cbcbd18d Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 2 Jul 2025 22:43:47 +0100 Subject: [PATCH 440/730] Update VE core submodule to master (4d51df7e7) New changes: 3d4ca5995 Use @mixes instead of @mixin (consistency) 108c969a7 Transction#getModifiedRange: Remove deprecated argument support 834029a7a ve.dm.Converter: Remove deprecated function arguments 51e55cf14 Add named, documented ve.dm.InternalListNodeGroup class aceca6b38 Remove internal, unused ve.dm.InternalList.getItemHtmlQueue 62c2ef907 ve.init.Target: Don't lazy-initialize the toolbar in #getToolbar 6cc9b3b3e Target: Implement excludeFromTargetWidget in toolbarGroups config 74b582928 Move getUniqueListKey method into ve.dm.InternalListNodeGroup a21de17e8 Implement ve.getBoundingRect utility 4d51df7e7 ve.init.Target: Fix double initialization of toolbars Localisation Updates: eb1fafb1e, c90a2c1bd Added files: - src/dm/ve.dm.InternalListNodeGroup.js Bug: T397145 Bug: T397395 Bug: T397914 Bug: T397948 Depends-On: Ibb54b34569dc105969161f22d5beeb19faf9cd16 Change-Id: If1c90bc7f25939ae212bc7838867f573e54e5cbe --- extension.json | 1 + lib/ve | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/extension.json b/extension.json index b29b201a2f..20d3788f87 100644 --- a/extension.json +++ b/extension.json @@ -913,6 +913,7 @@ "lib/ve/src/dm/ve.dm.LeafNode.js", "lib/ve/src/dm/ve.dm.Annotation.js", "lib/ve/src/dm/ve.dm.InternalList.js", + "lib/ve/src/dm/ve.dm.InternalListNodeGroup.js", "lib/ve/src/dm/ve.dm.MetaItem.js", "lib/ve/src/dm/ve.dm.MetaList.js", "lib/ve/src/dm/ve.dm.TableMatrix.js", diff --git a/lib/ve b/lib/ve index a6dd246fa8..4d51df7e70 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit a6dd246fa869303c834283f5ce6f32a18eed6eaf +Subproject commit 4d51df7e702d3d39b5eaa5f22e4dfeabd34b3be1 From ad8e3e969657dcb24140dc68400dc058052f4520 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 4 Jul 2025 09:51:17 +0200 Subject: [PATCH 441/730] Localisation updates from https://translatewiki.net. Change-Id: I106836add49ed713c0c1207d49db6a1ce49e2412 --- editcheck/i18n/bn.json | 3 +++ editcheck/i18n/diq.json | 9 +++++++++ i18n/ve-mw/io.json | 1 + i18n/ve-mw/tt-cyrl.json | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 editcheck/i18n/diq.json diff --git a/editcheck/i18n/bn.json b/editcheck/i18n/bn.json index 4101cedf2d..881a763967 100644 --- a/editcheck/i18n/bn.json +++ b/editcheck/i18n/bn.json @@ -8,6 +8,8 @@ "editcheck-dialog-action-no": "না", "editcheck-dialog-action-yes": "হ্যাঁ", "editcheck-dialog-action-decline": "প্রত্যাখ্যান করুন", + "editcheck-dialog-action-back": "পিছনে যান", + "editcheck-dialog-action-submit": "জমা দিন", "editcheck-dialog-addref-description": "একটি উদ্ধৃতি যুক্ত করে পাঠকদের এই তথ্যটি কোথা থেকে আসছে তা বুঝতে সহায়তা করুন।", "editcheck-dialog-addref-reject-question": "আপনি কেন একটি উদ্ধৃতি যোগ করতে চান না?", "editcheck-dialog-addref-reject-description": "উদ্ধৃতিটি খারিজ করার কারণ জানিয়ে অন্যান্য সম্পাদকদের এটি নিয়ে বুঝতে সহায়তা করুন।", @@ -18,6 +20,7 @@ "editcheck-dialog-addref-success-notify": "একটি উদ্ধৃতি যোগ করার জন্য আপনাকে ধন্যবাদ!", "editcheck-dialog-addref-title": "উদ্ধৃতি যোগ করুন", "editcheck-dialog-title": "প্রকাশের আগে", + "editcheck-tone-reject-other": "অন্যান্য", "editcheck-review-title": "পরিবর্তন পর্যালোচনা করুন", "tag-editcheck-reference-decline-common-knowledge": "সম্পাদনা পরীক্ষা (তথ্যসূত্র) প্রত্যাখ্যান (সাধারণ জ্ঞান)", "tag-editcheck-reference-decline-common-knowledge-description": "সম্পাদনা পরীক্ষা তথ্যসূত্র সাধারণ জ্ঞান হিসেবে প্রত্যাখ্যান করা হয়েছে", diff --git a/editcheck/i18n/diq.json b/editcheck/i18n/diq.json new file mode 100644 index 0000000000..1026807e8d --- /dev/null +++ b/editcheck/i18n/diq.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Mirzali" + ] + }, + "editcheck-dialog-action-back": "Peyser", + "editcheck-tone-reject-other": "Sewbi" +} diff --git a/i18n/ve-mw/io.json b/i18n/ve-mw/io.json index e47dad26bc..339e11b105 100644 --- a/i18n/ve-mw/io.json +++ b/i18n/ve-mw/io.json @@ -53,6 +53,7 @@ "visualeditor-dialog-meta-advancedsettings-section": "Specala figurizo", "visualeditor-dialog-meta-categories-category": "Kategorio", "visualeditor-dialog-meta-categories-data-label": "Kategorii", + "visualeditor-dialog-meta-categories-defaultsort-help": "Vu povas modifikar quale ca pagino ordinesas kande montrata en kategorio, establisanta diferanta indexo por ordinar ol. To ofte facesas por ke pagini pri personi klasifikesez segun surnomo, malgre ke la nomo montresas avane, en la titulo.", "visualeditor-dialog-meta-categories-hidden": "Ica kategorio ne montresos en pagini a qui ol adjuntesas.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Celita kategorii", "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Konkordanta kategorii", diff --git a/i18n/ve-mw/tt-cyrl.json b/i18n/ve-mw/tt-cyrl.json index 1a7623c171..46c5019b02 100644 --- a/i18n/ve-mw/tt-cyrl.json +++ b/i18n/ve-mw/tt-cyrl.json @@ -139,7 +139,7 @@ "visualeditor-mweditmodeve-popup-title": "Сез чыганак кодны мөхәррирләү режимына күчтегез", "visualeditor-mweditmodeve-progress": "Күрсәтмә үзгәртүгә күчү…", "visualeditor-mweditmodeve-showagain": "Бу хәбәрне бүтән күрсәтелмесен", - "visualeditor-mweditmodeve-tool-current": "Күрсәтмә үзгәртү", + "visualeditor-mweditmodeve-tool-current": "Күрсәтмәле үзгәртү", "visualeditor-mweditmodewt-popup-body": "Шушы тамгага басып, сез теләсә кайсы вакытта, кире чыганак текстны мөхәррирләүгә кайта аласыз.", "visualeditor-mweditmodewt-popup-title": "Сез күрсәтмә үзгәртүгә күчтегез", "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|сурәт}}", From 91f0aba8f49b5faf20949d1646d8906a412cd2e6 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 7 Jul 2025 09:31:38 +0200 Subject: [PATCH 442/730] Localisation updates from https://translatewiki.net. Change-Id: I5807360a47bf972fe0a434cc464e4e490db62339 --- editcheck/i18n/ps.json | 5 ++++- editcheck/i18n/sr-ec.json | 3 +++ i18n/ve-mw/abr.json | 4 +++- i18n/ve-mw/af.json | 4 +++- i18n/ve-mw/aig.json | 11 +++++++++++ i18n/ve-mw/ro.json | 1 + 6 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 i18n/ve-mw/aig.json diff --git a/editcheck/i18n/ps.json b/editcheck/i18n/ps.json index 08473e51e4..14b3f6ab76 100644 --- a/editcheck/i18n/ps.json +++ b/editcheck/i18n/ps.json @@ -4,6 +4,9 @@ "شاه زمان پټان" ] }, + "editcheck-dialog-action-back": "پر شا کېدل", "editcheck-dialog-action-submit": "سپارل", - "editcheck-tone-reject-uncertain": "زه ډاډه نه يم چې څنگه وينگ کره کړم" + "editcheck-tone-reject-uncertain": "زه ډاډه نه يم چې څنگه وينگ کره کړم", + "editcheck-tone-reject-other": "نور", + "editcheck-reject-description": "نور سمونگر به دې ته ارزښت ورکړي چې ولې تاسو دا خوښ کړی." } diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index 64e098f8c8..296191a6cb 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -21,7 +21,10 @@ "editcheck-dialog-title": "Пре објављивања", "editcheck-copyvio-title": "Налепљен садржај", "editcheck-copyvio-description": "Опште правило је да се не копира текст из других извора. Копирање текста је кршење ауторских права и плагијат.", + "editcheck-tone-reject-appropriate": "Тон је примеран", + "editcheck-tone-reject-uncertain": "Не знам како да ревидирам тон", "editcheck-tone-reject-other": "Друго", + "editcheck-reject-description": "Други уредници ће ценити да знају зашто сте направили овај избор.", "editcheck-review-title": "Преглед измена", "tag-editcheck-reference-decline-common-knowledge": "Edit Check референцирање одбачено (опште знање)", "tag-editcheck-reference-decline-common-knowledge-description": "Референцирање је одбачено зато што је у питању опште знање", diff --git a/i18n/ve-mw/abr.json b/i18n/ve-mw/abr.json index c7951116ff..668b7aafdc 100644 --- a/i18n/ve-mw/abr.json +++ b/i18n/ve-mw/abr.json @@ -2,9 +2,11 @@ "@metadata": { "authors": [ "Alicia Agyeiwaa", - "Obed554" + "Obed554", + "Yaw tuba" ] }, + "visualeditor-ca-createsource": "Yɛ fibea", "visualeditor-ca-editsource": "Sakra baabi ɔfiri mu", "visualeditor-ca-editsource-section": "Baabi a nsamu no firi" } diff --git a/i18n/ve-mw/af.json b/i18n/ve-mw/af.json index e97158c9af..8d49dd47b4 100644 --- a/i18n/ve-mw/af.json +++ b/i18n/ve-mw/af.json @@ -5,7 +5,8 @@ "Fwolff", "Naudefj", "Neil P. Quinn", - "Oesjaar" + "Oesjaar", + "Rooiratel" ] }, "tooltip-ca-ve-edit": "Redigeer hierdie bladsy", @@ -122,6 +123,7 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Gaan in elk geval voort", "visualeditor-dialog-transclusion-required-parameter-dialog-title": "Nodige {{PLURAL:$1|veld|velde}} ontbreek", "visualeditor-dialog-transclusion-required-parameter-is-blank": "Wil u definitief voortgaan sonder om die $1 {{PLURAL:$2|veld|velde}} in te vul?", + "visualeditor-dialog-transclusion-title-insert-template": "Voeg 'n sjabloon in", "visualeditor-dialogbutton-media-tooltip": "Media", "visualeditor-dialogbutton-template-tooltip": "Sjabloon", "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|kennisgewing|kennisgewings}}", diff --git a/i18n/ve-mw/aig.json b/i18n/ve-mw/aig.json new file mode 100644 index 0000000000..690741bbf7 --- /dev/null +++ b/i18n/ve-mw/aig.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "CROIX2" + ] + }, + "visualeditor-ca-createlocaldescriptionsource": "Mek lokal diskripshan sarce", + "visualeditor-ca-createsource": "Mek sarce", + "visualeditor-ca-editsource": "Chenj sarce", + "visualeditor-ca-editsource-section": "chenj sarse" +} diff --git a/i18n/ve-mw/ro.json b/i18n/ve-mw/ro.json index 01bd9fc595..ad3471d58b 100644 --- a/i18n/ve-mw/ro.json +++ b/i18n/ve-mw/ro.json @@ -171,6 +171,7 @@ "visualeditor-dialog-transclusion-no-template-description": "Formatul „$1” nu are încă o descriere, dar ar putea exista câteva informații pe [[$2|pagina formatului]].", "visualeditor-dialog-transclusion-no-template-parameters": "Acest format nu are niciun parametru documentat și se poate să fie făcut să funcționeze fără ele.", "visualeditor-dialog-transclusion-param-default": "Valoare implicită: $1", + "visualeditor-dialog-transclusion-param-example-long": "Exemplu: $1", "visualeditor-dialog-transclusion-param-undocumented": "(Parametru nedocumentat)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Găsire format", "visualeditor-dialog-transclusion-required-parameter": "Câmp necesar", From da9fb1cf2d174406e3d27a8a3273bc5fe8de67d3 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 2 Jul 2025 13:12:24 +0100 Subject: [PATCH 443/730] EditModeTool: Remove unused code The ve.init tool is only used when VE is not loaded (i.e. WikiEditor). When VE is loaded, the ve.ui. version of the tool should be used. Change-Id: Icb82fb9b204262e4a2ac8db2c020348b0ec2f62d --- .../ve-mw/preinit/ve.init.MWEditModeTool.js | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js index 3d13f399f0..213ac27e19 100644 --- a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js +++ b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js @@ -118,18 +118,17 @@ mw.libs.ve.MWEditModeVisualTool.static.unavailableTooltip = /** * @inheritdoc */ -mw.libs.ve.MWEditModeVisualTool.prototype.isModeAvailable = function ( mode ) { - // Adding a new section is not supported in visual mode - if ( mode === 'visual' && OO.getProp( this, 'toolbar', 'target', 'constructor', 'static', 'name' ) === 'article' ) { - // eslint-disable-next-line no-jquery/no-global-selector - if ( $( 'input[name=wpSection]' ).val() === 'new' ) { - return false; - } - if ( !mw.config.get( 'wgVisualEditorConfig' ).namespaces.includes( new mw.Title( mw.config.get( 'wgRelevantPageName' ) ).getNamespaceId() ) ) { - return false; - } +mw.libs.ve.MWEditModeVisualTool.prototype.isModeAvailable = function () { + // eslint-disable-next-line no-jquery/no-global-selector + if ( $( 'input[name=wpSection]' ).val() === 'new' ) { + // Adding a new section is not supported in visual mode + return false; } - return mw.libs.ve.MWEditModeVisualTool.super.prototype.isModeAvailable.call( this, mode ); + if ( !mw.config.get( 'wgVisualEditorConfig' ).namespaces.includes( new mw.Title( mw.config.get( 'wgRelevantPageName' ) ).getNamespaceId() ) ) { + return false; + } + // Parent method + return mw.libs.ve.MWEditModeVisualTool.super.prototype.isModeAvailable.apply( this, arguments ); }; /** From 76184ae03afe4a2ae43065740545c3d6fdefd8a8 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 2 Jul 2025 13:21:16 +0100 Subject: [PATCH 444/730] EditMode switchers: Add class documentation explaining usage Change-Id: I048ee1e043640556697f01eeb065623a241c5dc9 --- modules/ve-mw/preinit/ve.init.MWEditModeTool.js | 10 +++++++++- modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js index 213ac27e19..c002feacc9 100644 --- a/modules/ve-mw/preinit/ve.init.MWEditModeTool.js +++ b/modules/ve-mw/preinit/ve.init.MWEditModeTool.js @@ -1,5 +1,13 @@ /*! - * VisualEditor MediaWiki edit mode tool classes. + * MediaWiki edit mode tool classes. + * + * These versions of the tools should only be used when building + * a toolbar **outside** of VE, e.g. the toolbar built in + * ve.init.mw.DesktopArticleTarget.init.js that is appended to the + * WikiEditor toolbar. + * + * When using a toolbar in VE, always use the ve.ui.MWEditModeTool + * classes. * * @copyright See AUTHORS.txt * @license The MIT License (MIT); see LICENSE.txt diff --git a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js index 230c7f5cc3..4d16e9950e 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js @@ -1,6 +1,11 @@ /*! * VisualEditor MediaWiki UserInterface edit mode tool classes. * + * Used for making edit mode switcher tools within VE. + * + * When building a toolbar for use outside of VE you can use + * the mw.libs.ve.MWEditModeTool classes. + * * @copyright See AUTHORS.txt * @license The MIT License (MIT); see LICENSE.txt */ From abb094ac078dedbcb893c60351ed69d477eaf9eb Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 25 Jun 2025 17:06:38 +0100 Subject: [PATCH 445/730] GutterSidebar: Use ve.getBoundingRect Depends-On: I5bdab53892c179e4e3683408e7f0bdeb411fbcd8 Change-Id: I2c15c45efeff16a7f838f7b558efe4e96954a9e5 --- .../dialogs/GutterSidebarEditCheckDialog.js | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js index 82e8bb600b..3d61f2344a 100644 --- a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js +++ b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js @@ -108,24 +108,14 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions // First join overlapping actions into "sections" actions.forEach( ( action ) => { - let boundingRect = null; - action.getHighlightSelections().forEach( ( selection ) => { + const rects = action.getHighlightSelections().map( ( selection ) => { const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); - const rect = selectionView.getSelectionBoundingRect(); - if ( !boundingRect ) { - boundingRect = rect; - } else { - boundingRect.top = Math.min( boundingRect.top, rect.top ); - boundingRect.left = Math.min( boundingRect.left, rect.left ); - boundingRect.bottom = Math.max( boundingRect.bottom, rect.bottom ); - boundingRect.right = Math.max( boundingRect.right, rect.right ); - } + return selectionView.getSelectionBoundingRect(); } ); + const boundingRect = ve.getBoundingRect( rects ); if ( !boundingRect ) { return; } - boundingRect.width = boundingRect.right - boundingRect.left; - boundingRect.height = boundingRect.bottom - boundingRect.top; // Look for any other section that the new one overlaps with // TODO: join when two other sections are joined by the new one? From bd03d5b60b9fcd2370f6888b4cfbe155d38f33d7 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 25 Jun 2025 17:09:36 +0100 Subject: [PATCH 446/730] selenium tests: Use ve.getBoundingRect Change-Id: Ic069a70e923a37b95df9c77911ad79938ce574b3 --- build/screenshots-client/utils.js | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/build/screenshots-client/utils.js b/build/screenshots-client/utils.js index b26830d1e6..f29e69f820 100644 --- a/build/screenshots-client/utils.js +++ b/build/screenshots-client/utils.js @@ -3,28 +3,9 @@ module.exports = function () { window.seleniumUtils = { getBoundingRect: function ( elements ) { - let boundingRect; - for ( let i = 0, l = elements.length; i < l; i++ ) { - const rect = elements[ i ].getBoundingClientRect(); - if ( !boundingRect ) { - boundingRect = { - left: rect.left, - top: rect.top, - right: rect.right, - bottom: rect.bottom - }; - } else { - boundingRect.left = Math.min( boundingRect.left, rect.left ); - boundingRect.top = Math.min( boundingRect.top, rect.top ); - boundingRect.right = Math.max( boundingRect.right, rect.right ); - boundingRect.bottom = Math.max( boundingRect.bottom, rect.bottom ); - } - } - if ( boundingRect ) { - boundingRect.width = boundingRect.right - boundingRect.left; - boundingRect.height = boundingRect.bottom - boundingRect.top; - } - return boundingRect; + return ve.getBoundingRect( + elements.map( ( element ) => element.getBoundingClientRect() ) + ); }, collapseToolbar: function () { ve.init.target.toolbar.items.forEach( ( group ) => { From 03babd428ff8dc9cc8a82169b3d547a3707a79a8 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 2 Jul 2025 17:27:48 -0500 Subject: [PATCH 447/730] EditCheckActionWidget: move feedback form inside $body This was causing excess toggleCollapse calls. Change-Id: Ib13f4a52b58818d765d0678751dbecde7860187a --- editcheck/modules/EditCheck.less | 5 ++--- editcheck/modules/EditCheckActionWidget.js | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 1d58e3536f..cbda544989 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -152,8 +152,7 @@ font-weight: @font-weight-semi-bold; } - &-body, - &-feedback { + &-body { cursor: auto; background-color: @background-color-base; margin: @spacing-50 -@spacing-75 -@spacing-50 -@spacing-75; @@ -227,7 +226,7 @@ } } - .ve-ui-editCheckActionWidget-feedback ~ .ve-ui-editCheckActionWidget-body { + .ve-ui-editCheckActionWidget-feedback ~ * { display: none; } } diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index d330ac2439..6979e31ce5 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -174,7 +174,7 @@ mw.editcheck.EditCheckActionWidget.prototype.showFeedback = function ( data ) { deferred.reject(); } ); - this.$body.before( form.$element ); + this.$body.prepend( form.$element ); ve.track( 'activity.editCheck-' + this.name, { action: 'edit-check-feedback-shown' } ); return deferred.promise(); From ad5c0c4e95d72bc1f8a60faf4e66659644d843c4 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 2 Jul 2025 17:28:37 -0500 Subject: [PATCH 448/730] EditCheckActionWidget: clean up the feedback form on togglecollapse Bug: T389443 Change-Id: If492844e9a4f8bff66c17d64fc6ebd209939e28c --- editcheck/modules/EditCheckActionWidget.js | 19 ++++++++++++------- editcheck/modules/dialogs/EditCheckDialog.js | 5 +++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index 6979e31ce5..d75c301846 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -25,6 +25,8 @@ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) mw.editcheck.EditCheckActionWidget.super.call( this, config ); + this.feedbackDeferred = null; + this.collapsed = false; this.message = new OO.ui.LabelWidget( { label: config.message } ); this.footer = config.footer && new OO.ui.LabelWidget( { @@ -110,8 +112,13 @@ mw.editcheck.EditCheckActionWidget.prototype.onClick = function ( e ) { * @param {boolean} [collapsed] The new collapsed state, toggles if unset */ mw.editcheck.EditCheckActionWidget.prototype.toggleCollapse = function ( collapsed ) { + const previousState = this.collapsed; this.collapsed = collapsed !== undefined ? collapsed : !this.collapsed; this.$element.toggleClass( 've-ui-editCheckActionWidget-collapsed', this.collapsed ); + + if ( this.collapsed && previousState !== this.collapsed && this.feedbackDeferred ) { + this.feedbackDeferred.reject(); + } }; /** @@ -124,7 +131,7 @@ mw.editcheck.EditCheckActionWidget.prototype.toggleCollapse = function ( collaps * @return {jQuery.Promise} Promise which resolves when feedback is submitted or is rejected when back is chosen */ mw.editcheck.EditCheckActionWidget.prototype.showFeedback = function ( data ) { - const deferred = ve.createDeferred(); + const deferred = this.feedbackDeferred = ve.createDeferred(); const form = new OO.ui.FieldsetLayout( { classes: [ 've-ui-editCheckActionWidget-feedback' ] @@ -157,25 +164,23 @@ mw.editcheck.EditCheckActionWidget.prototype.showFeedback = function ( data ) { ] } ) ] ); - const cleanup = () => { - form.$element.remove(); - }; submit.on( 'click', () => { const selectedItem = answerRadioSelect.findSelectedItem(); const reason = selectedItem && selectedItem.getData(); if ( reason ) { - cleanup(); deferred.resolve( reason ); ve.track( 'activity.editCheck-' + this.name, { action: 'edit-check-feedback-reason-' + reason } ); } } ); back.on( 'click', () => { - cleanup(); deferred.reject(); } ); this.$body.prepend( form.$element ); ve.track( 'activity.editCheck-' + this.name, { action: 'edit-check-feedback-shown' } ); - return deferred.promise(); + return deferred.promise().always( () => { + form.$element.remove(); + this.feedbackDeferred = null; + } ); }; diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index 0247357366..1b28328685 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -209,6 +209,11 @@ ve.ui.EditCheckDialog.prototype.setCurrentOffset = function ( offset, fromUserAc this.footerLabel.setLabel( '' ); } + // Warning: the toggleCollapse calls above may result in a promise's + // `always` unsetting this.acting. This currently only happens for an + // action widget's feedback form. If we switch away from jquery promises + // or add anything which isn't completely synchronous, this call may need + // to be deferred until this.acting settles: this.updateNavigationState(); this.updateSize(); From 5a954dc9f06ad730b8673bf98359e0dc63bd0685 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 8 Jul 2025 09:26:05 +0200 Subject: [PATCH 449/730] Localisation updates from https://translatewiki.net. Change-Id: I08b82305530913206f89de4891820e9d7772999e --- editcheck/i18n/ko.json | 3 +++ i18n/ve-mw/it.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/ko.json b/editcheck/i18n/ko.json index e07eab82c9..69f652377f 100644 --- a/editcheck/i18n/ko.json +++ b/editcheck/i18n/ko.json @@ -9,6 +9,8 @@ }, "editcheck-dialog-action-no": "아니오", "editcheck-dialog-action-yes": "예", + "editcheck-dialog-action-back": "뒤로", + "editcheck-dialog-action-submit": "제출", "editcheck-dialog-addref-reject-question": "인용을 추가하지 않으신 이유는 무엇인가요?", "editcheck-dialog-addref-reject-description": "출처 인용이 누락된 이유를 다른 편집자들이 알 수 있도록 알려주세요.", "editcheck-dialog-addref-reject-irrelevant": "출처 인용과는 관련 없는 편집입니다", @@ -17,6 +19,7 @@ "editcheck-dialog-addref-reject-other": "그 외", "editcheck-dialog-addref-success-notify": "인용 추가해주셔서 감사합니다!", "editcheck-dialog-addref-title": "인용 추가", + "editcheck-tone-reject-other": "기타", "editcheck-review-title": "변경사항 검토", "tag-editcheck-reference-decline-common-knowledge": "편집 검사(출처)를 거부함 (상식)", "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck 출처가 상식을 이유로 거부되었습니다", diff --git a/i18n/ve-mw/it.json b/i18n/ve-mw/it.json index e9accf71f3..6d138d9576 100644 --- a/i18n/ve-mw/it.json +++ b/i18n/ve-mw/it.json @@ -105,7 +105,7 @@ "visualeditor-dialog-media-title": "Impostazioni file multimediali", "visualeditor-dialog-media-type-border": "Bordo", "visualeditor-dialog-media-type-frame": "Frame", - "visualeditor-dialog-media-type-frameless": "Senza frame", + "visualeditor-dialog-media-type-frameless": "Senza cornice", "visualeditor-dialog-media-type-none": "Base", "visualeditor-dialog-media-type-section": "Tipo immagine", "visualeditor-dialog-media-type-section-help": "Puoi selezionare in che modo viene visualizzato l'elemento multimediale. Dovrebbe essere in formato miniatura per essere coerente con la maggioranza delle altre pagine.", From 9b34362ec9419272c139c4510bc80f92f75b2b11 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 7 Jul 2025 13:25:40 -0500 Subject: [PATCH 450/730] Update VE core submodule to master (29cc55f72) New changes: 9e7ca8cee Surface view: Consistently clear focusedNode efa6c1756 sa.Target: Pass config to parent 4ad76a638 Converter: Remove getDomElementFromDataAnnotation 579e87b76 Converter: Remove getActiveAnnotations 29cc55f72 Converter: Make regexes static Localisation Updates: cf4799b34, 4fcad9819 Bug: T398614 Change-Id: I911dc71772d856252b281fbdcae7e4673c58cdbd --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 4d51df7e70..29cc55f727 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 4d51df7e702d3d39b5eaa5f22e4dfeabd34b3be1 +Subproject commit 29cc55f72708c302df18fe3fbd8d223b9876290d From 87c80af3c52a6e78cc90b8c1f5c31692c3484f1f Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Wed, 9 Jul 2025 04:42:18 +0000 Subject: [PATCH 451/730] build: Updating mediawiki/mediawiki-phan-config to 0.16.0 Change-Id: I5243351060cf22a978b881c306322fc13ab5bbc2 --- composer.json | 2 +- package-lock.json | 652 +++++++++++++++++++++++----------------------- 2 files changed, 326 insertions(+), 328 deletions(-) diff --git a/composer.json b/composer.json index b4ac963a62..9643207a43 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "require-dev": { "mediawiki/mediawiki-codesniffer": "47.0.0", - "mediawiki/mediawiki-phan-config": "0.15.1", + "mediawiki/mediawiki-phan-config": "0.16.0", "mediawiki/minus-x": "1.1.3", "php-parallel-lint/php-console-highlighter": "1.0.0", "php-parallel-lint/php-parallel-lint": "1.4.0" diff --git a/package-lock.json b/package-lock.json index 03bafa04ca..c89f226867 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3864,42 +3864,6 @@ "node": ">=4" } }, - "node_modules/bin-wrapper/node_modules/cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", - "dev": true, - "dependencies": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - } - }, - "node_modules/bin-wrapper/node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bin-wrapper/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/bin-wrapper/node_modules/download": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", @@ -3987,50 +3951,6 @@ "node": ">=4" } }, - "node_modules/bin-wrapper/node_modules/http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, - "node_modules/bin-wrapper/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/bin-wrapper/node_modules/keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/bin-wrapper/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bin-wrapper/node_modules/normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/bin-wrapper/node_modules/p-cancelable": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", @@ -4064,27 +3984,6 @@ "node": ">=4" } }, - "node_modules/bin-wrapper/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/bin-wrapper/node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -4273,6 +4172,54 @@ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", "dev": true }, + "node_modules/cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "dev": true, + "dependencies": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cacheable-request/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -5450,6 +5397,18 @@ "node": ">=4" } }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -5825,18 +5784,6 @@ "node": ">=4" } }, - "node_modules/download/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/download/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -5846,49 +5793,6 @@ "node": ">=4" } }, - "node_modules/download/node_modules/got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "dependencies": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/download/node_modules/p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/download/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -5898,27 +5802,6 @@ "node": ">=4" } }, - "node_modules/download/node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/download/node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "dependencies": { - "prepend-http": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -8466,6 +8349,61 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "dependencies": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/got/node_modules/url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", + "dev": true, + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -9182,6 +9120,12 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, "node_modules/http-parser-js": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", @@ -10804,8 +10748,17 @@ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, - "dependencies": { - "get-func-name": "^2.0.1" + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/lpad-align": { @@ -11509,6 +11462,32 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-url/node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", @@ -11800,6 +11779,15 @@ "os-tmpdir": "^1.0.0" } }, + "node_modules/p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/p-event": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", @@ -13251,6 +13239,15 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, "node_modules/resq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", @@ -14052,7 +14049,7 @@ "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -18843,38 +18840,6 @@ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", "dev": true }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "download": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", @@ -18948,44 +18913,6 @@ } } }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, "p-cancelable": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", @@ -19009,24 +18936,6 @@ "requires": { "p-finally": "^1.0.0" } - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } } } }, @@ -19165,6 +19074,50 @@ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", "dev": true }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", + "dev": true + } + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -20042,6 +19995,15 @@ } } }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -20323,75 +20285,17 @@ "pify": "^3.0.0" }, "dependencies": { - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } } } }, @@ -22266,6 +22170,51 @@ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -22801,6 +22750,12 @@ } } }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, "http-parser-js": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", @@ -24075,6 +24030,12 @@ "get-func-name": "^2.0.1" } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, "lpad-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", @@ -24587,6 +24548,28 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "dependencies": { + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, "normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", @@ -24803,6 +24786,12 @@ "os-tmpdir": "^1.0.0" } }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, "p-event": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", @@ -25891,6 +25880,15 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "resq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", @@ -26482,7 +26480,7 @@ "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "dev": true }, "string_decoder": { From 0e690149729c366fbaecf08f7a20a19330077f9a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 9 Jul 2025 09:29:00 +0200 Subject: [PATCH 452/730] Localisation updates from https://translatewiki.net. Change-Id: Icb424d1fec7bbef56e47ac632c1fa6068288ec7b --- i18n/ve-mw/bom.json | 11 +++++++++++ i18n/ve-mw/ps.json | 2 ++ 2 files changed, 13 insertions(+) create mode 100644 i18n/ve-mw/bom.json diff --git a/i18n/ve-mw/bom.json b/i18n/ve-mw/bom.json new file mode 100644 index 0000000000..dc4b3d1bd3 --- /dev/null +++ b/i18n/ve-mw/bom.json @@ -0,0 +1,11 @@ +{ + "@metadata": { + "authors": [ + "Rwang PS" + ] + }, + "visualeditor-ca-createlocaldescriptionsource": "Gwe ha numa tinse", + "visualeditor-ca-createsource": "Wunta tinse", + "visualeditor-ca-editsource": "Yong tin ha", + "visualeditor-ca-editsource-section": "Wunta tin" +} diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index eb9267068d..752e3dd586 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -229,6 +229,8 @@ "visualeditor-mwpredialog-title": "واردمخ‌ترتيب‌شوی ساده ليک", "visualeditor-mwsignature-tool": "ستاسې لاسليک", "visualeditor-preference-visualeditor": "ليدنيز سمونگر چارنول", + "visualeditor-preference-newwikitexteditor-enable": "د بېلابېلو ويکي‌ليک سمونگر پرځای د ليدنيز سمونگر دننه ويکي‌ليک ونگډول وکاروئ", + "visualeditor-preference-newwikitexteditor-help": "دا ځينې وختونه د '۲۰۱۷ ويکي‌ليک سمونگر' هم بلل کېږي.", "visualeditor-preference-tabs": "سمون ونگ‌ډول:", "visualeditor-preference-tabs-multi-tab": "دواړه سمونگرې ريښکې راته وښاياست", "visualeditor-preference-tabs-prefer-ve": "که شونې وي تل راته ليدنيز سمونگر راکړه", From 7230ccc25aaaf2e6887ed1248ca49551e14f005f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 10 Jul 2025 09:58:16 +0200 Subject: [PATCH 453/730] Localisation updates from https://translatewiki.net. Change-Id: I87c8019747f79008c0919747ca41b3a176e934de --- editcheck/i18n/zh-hant.json | 4 ++++ i18n/ve-mw/api/ce.json | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/editcheck/i18n/zh-hant.json b/editcheck/i18n/zh-hant.json index 9fff0b96da..996c45a3af 100644 --- a/editcheck/i18n/zh-hant.json +++ b/editcheck/i18n/zh-hant.json @@ -8,6 +8,10 @@ }, "editcheck-dialog-action-no": "否", "editcheck-dialog-action-yes": "是", + "editcheck-dialog-action-decline": "拒絕", + "editcheck-dialog-action-revise": "修改", + "editcheck-dialog-action-back": "返回", + "editcheck-dialog-action-submit": "提交", "editcheck-dialog-addref-description": "新增引註來幫助讀者了解此資訊的出處。", "editcheck-dialog-addref-reject-question": "為何不新增引註?", "editcheck-dialog-addref-reject-description": "其他編者希望能更了解您拒絕新增引註的原因。", diff --git a/i18n/ve-mw/api/ce.json b/i18n/ve-mw/api/ce.json index 3f40e804d7..ce0516cf58 100644 --- a/i18n/ve-mw/api/ce.json +++ b/i18n/ve-mw/api/ce.json @@ -6,6 +6,11 @@ }, "apierror-visualeditor-difffailed": "Ӏалашйан цайелира", "apihelp-visualeditor-param-etag": "ETag дӀайахьийта.", + "apihelp-visualeditor-param-paction": "Кхочушбан безаш болу ардамаш.", + "apihelp-visualeditor-param-page": "Ардам кхочушбан беза агӀо.", "apihelp-visualeditoredit-param-etag": "ETag дӀайахьийта.", + "apihelp-visualeditoredit-param-minor": "Жимачу хийцамашна байракх.", + "apihelp-visualeditoredit-param-paction": "Кхочушбан безаш болу ардамаш.", + "apihelp-visualeditoredit-param-page": "Ардам кхочушбан беза агӀо.", "apihelp-visualeditoredit-param-summary": "Хийцамах лаьцнарг тадар" } From e20493849650fbf9683c04c86032e8042594ab95 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 9 Jul 2025 17:54:58 +0100 Subject: [PATCH 454/730] Update VE core submodule to master (a30515b4c) New changes: 77f6ef000 Add/update a few JSDoc comments f44f08201 ve.dm.LinearData: Remove commented code 8171e96ff Converter: Separate Dom->Model and Model->Dom conversion into separate classes 1e0c83ecb Separate DomFromModel/ModelFromDomConverters into own files b70adb9a1 Document structure of LinearData 8084da9dd Merge (Element/Flat/-)LinearData 6b7c8fc6e Merge (Element/Flat/-)LinearData files 48e324bac LinearData: Remove getUsedStoreValues 1861cd357 LinearData: Remove containsElementData 14515e73d ve.dm.Model: Move this.store to ve.dm.Annotation a30515b4c ve.dm.Model: Remove store argument from getOriginalDomElements Added files: - src/dm/converters/ve.dm.DomFromModelConverter.js - src/dm/converters/ve.dm.ModelFromDomConverter.js Deleted files: - src/dm/lineardata/ve.dm.ElementLinearData.js - src/dm/lineardata/ve.dm.FlatLinearData.js - tests/dm/lineardata/ve.dm.ElementLinearData.test.js - tests/dm/lineardata/ve.dm.FlatLinearData.test.js Bug: T398975 Change-Id: I794b73a3b1c132c7b6ba4cd441fa284d30b336ee --- extension.json | 6 ++---- lib/ve | 2 +- modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js | 2 +- .../dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js | 4 +--- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/extension.json b/extension.json index 20d3788f87..585cf95549 100644 --- a/extension.json +++ b/extension.json @@ -934,13 +934,13 @@ "lib/ve/src/dm/ve.dm.TableSlice.js", "lib/ve/src/dm/ve.dm.LinearData.js", "lib/ve/src/dm/ve.dm.HashValueStore.js", + "lib/ve/src/dm/converters/ve.dm.DomFromModelConverter.js", + "lib/ve/src/dm/converters/ve.dm.ModelFromDomConverter.js", "lib/ve/src/dm/ve.dm.Converter.js", "lib/ve/src/dm/ve.dm.SourceConverter.js", "lib/ve/src/dm/selections/ve.dm.LinearSelection.js", "lib/ve/src/dm/selections/ve.dm.NullSelection.js", "lib/ve/src/dm/selections/ve.dm.TableSelection.js", - "lib/ve/src/dm/lineardata/ve.dm.FlatLinearData.js", - "lib/ve/src/dm/lineardata/ve.dm.ElementLinearData.js", "lib/ve/src/dm/nodes/ve.dm.GeneratedContentNode.js", "lib/ve/src/dm/nodes/ve.dm.AlienNode.js", "lib/ve/src/dm/nodes/ve.dm.AlienBlockNode.js", @@ -2659,8 +2659,6 @@ "lib/ve/tests/dm/selections/ve.dm.LinearSelection.test.js", "lib/ve/tests/dm/selections/ve.dm.NullSelection.test.js", "lib/ve/tests/dm/selections/ve.dm.TableSelection.test.js", - "lib/ve/tests/dm/lineardata/ve.dm.FlatLinearData.test.js", - "lib/ve/tests/dm/lineardata/ve.dm.ElementLinearData.test.js", "modules/ve-mw/tests/dm/ve.dm.mwExample.js", "modules/ve-mw/tests/dm/ve.dm.Converter.test.js", "modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js", diff --git a/lib/ve b/lib/ve index 29cc55f727..a30515b4c2 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 29cc55f72708c302df18fe3fbd8d223b9876290d +Subproject commit a30515b4c25460bea6d25967d3c95a6907b60dfe diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js index 0e2836473d..990beebe94 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWExtensionNode.js @@ -64,7 +64,7 @@ ve.dm.MWExtensionNode.static.getMatchRdfaTypes = function () { /** * @inheritdoc * @param {Node[]} domElements - * @param {ve.dm.Converter} converter + * @param {ve.dm.ModelFromDomConverter} converter * @param {string} [type] Type to give dataElement, defaults to static.name */ ve.dm.MWExtensionNode.static.toDataElement = function ( domElements, converter, type ) { diff --git a/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js b/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js index 0525d15bd4..1541e1b461 100644 --- a/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js +++ b/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js @@ -137,8 +137,6 @@ QUnit.test( 'toDataElement', ( assert ) => { ]; }; - const converter = new ve.dm.Converter( ve.dm.modelRegistry, ve.dm.nodeFactory, ve.dm.annotationFactory, ve.dm.metaItemFactory ); - const articlePaths = [ { // MediaWiki config settings: @@ -187,7 +185,7 @@ QUnit.test( 'toDataElement', ( assert ) => { const doc = ve.dm.mwExample.createExampleDocumentFromData( [], undefined, pathData.base ); // toDataElement is called during a converter run, so we need to fake up a bit of state to test it. - // This would normally be done by ve.dm.converter.getModelFromDom. + const converter = new ve.dm.ModelFromDomConverter( ve.dm.modelRegistry, ve.dm.nodeFactory, ve.dm.annotationFactory ); converter.doc = doc.getHtmlDocument(); converter.targetDoc = doc.getHtmlDocument(); converter.store = doc.getStore(); From b68a31067a6c18cad36e0491cd8e388e78032089 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 10 Jul 2025 17:21:57 +0100 Subject: [PATCH 455/730] ArticleTarget: Always use switchToWikitextEditor Replaces the inconsistently named editSource, and introduces the functionality that checks if the document has been modified, rather than relying on the caller. Bug: T399223 Change-Id: Ic9a413aa0100c637652e3650cec041c651dc386a --- .../init/targets/ve.init.mw.ArticleTarget.js | 23 ++++++++----------- .../ve-mw/ui/tools/ve.ui.MWEditModeTool.js | 2 +- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 1ad79a74e9..e9bc5bfb33 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1158,18 +1158,6 @@ ve.init.mw.ArticleTarget.prototype.clearState = function () { this.teardownPromise = null; }; -/** - * Switch to edit source mode - * - * Opens a confirmation dialog if the document is modified or VE wikitext mode - * is not available. - */ -ve.init.mw.ArticleTarget.prototype.editSource = function () { - const modified = this.fromEditedState || this.getSurface().getModel().hasBeenModified(); - - this.switchToWikitextEditor( modified ); -}; - /** * Get a document to save, cached until the surface is modified * @@ -2249,9 +2237,12 @@ ve.init.mw.ArticleTarget.prototype.getSectionHashFromPage = function () { /** * Switches to the wikitext editor, either keeping (default) or discarding changes. * - * @param {boolean} [modified=false] Whether there were any changes at all. + * @param {boolean} [modified] Whether there were any changes at all, will be evaluated if not provided */ ve.init.mw.ArticleTarget.prototype.switchToWikitextEditor = function ( modified ) { + if ( modified === undefined ) { + modified = this.fromEditedState || this.getSurface().getModel().hasBeenModified(); + } // When switching with changes we always pass the full page as changes in visual section mode // can still affect the whole document (e.g. removing a reference) if ( modified ) { @@ -2270,6 +2261,12 @@ ve.init.mw.ArticleTarget.prototype.switchToWikitextEditor = function ( modified } }; +// Deprecated alias +ve.init.mw.ArticleTarget.prototype.editSource = function () { + OO.ui.warnDeprecation( 'ArticleTarget#editSource: Use #switchToWikitextEditor instead.' ); + this.switchToWikitextEditor( ...arguments ); +}; + /** * Get a data promise for wikitext editing based on the current doc state * diff --git a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js index 4d16e9950e..512ba558f6 100644 --- a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js +++ b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js @@ -104,6 +104,6 @@ OO.mixinClass( ve.ui.MWEditModeSourceTool, ve.ui.MWEditModeTool ); * @inheritdoc */ ve.ui.MWEditModeSourceTool.prototype.switch = function () { - this.toolbar.getTarget().editSource(); + this.toolbar.getTarget().switchToWikitextEditor(); }; ve.ui.toolFactory.register( ve.ui.MWEditModeSourceTool ); From 0696e58c635cd8b55b97a2f50493ca66ba70cc1c Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Wed, 25 Jun 2025 13:40:03 -0400 Subject: [PATCH 456/730] DesktopArticleTarget: Fire wikitextInteractive hook after relevant reload For some reason, some hooks (e.g. ve.activationComplete) are fired in the Target class's code while others (e.g. ve.wikitextInteractive) are fired in the first-activation script (ve.init.mw.DesktopArticleTarget.init.js). I would've placed this change in the former location if not for the latter. I suspect there to be a design reason behind the latter's existence, so I chose to implement this change without touching the latter. Bug: T397778 Change-Id: If1a0faf60a7e12d22600b1d7372b76654ce8b072 --- .../ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index 6d218f7bd2..fdcd5bafed 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -1464,7 +1464,7 @@ ve.init.mw.DesktopArticleTarget.prototype.switchToFallbackWikitextEditor = funct /** * @inheritdoc */ -ve.init.mw.DesktopArticleTarget.prototype.reloadSurface = function () { +ve.init.mw.DesktopArticleTarget.prototype.reloadSurface = function ( newMode ) { this.activating = true; this.activatingDeferred = ve.createDeferred(); @@ -1472,6 +1472,10 @@ ve.init.mw.DesktopArticleTarget.prototype.reloadSurface = function () { ve.init.mw.DesktopArticleTarget.super.prototype.reloadSurface.apply( this, arguments ); this.activatingDeferred.then( () => { + if ( newMode === 'source' ) { + mw.hook( 've.wikitextInteractive' ).fire(); + } + this.updateHistoryState(); this.afterActivate(); this.setupTriggerListeners(); From 1ff11c2b024b8ef303c8ad680d7956e77299cd05 Mon Sep 17 00:00:00 2001 From: Esanders Date: Wed, 2 Jul 2025 12:56:03 +0000 Subject: [PATCH 457/730] Revert "Force-clear toolbar after teardown" This reverts commit aa9985f4c6ff543fafee26d20e3f20acccba995d. Reason for revert: Temporary hack which is now fixed upstream. Change-Id: I7d65822a89487f86d237bccf3878bd77be721ae3 --- modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index e9bc5bfb33..937f6bf258 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1801,9 +1801,6 @@ ve.init.mw.ArticleTarget.prototype.teardown = function () { // Parent method this.teardownPromise = ve.init.mw.ArticleTarget.super.prototype.teardown.call( this ).then( () => saveDialogPromise.then( () => { - // HACK: Re-clear toolbar (T397914). Remove in next release when fixed - // upstream in VE core. - this.toolbar = null; mw.hook( 've.deactivationComplete' ).fire( this.edited ); } ) ); } From b8c081a95a8eb3a7481a27a8857873329c02fb18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=BDeljko=20Filipin?= Date: Wed, 9 Jul 2025 14:48:57 +0200 Subject: [PATCH 458/730] selenium: Create test suite for the Jenkins job that runs daily In WebdriverIO v9, skipped tests are reported as failed in JUnit reporter. The Jenkins jobs that runs tests daily fails because of it. Create a separate test suite for the daily job, so no tests are skipped there. Bug: T398310 Change-Id: I513f576376ad0eadf637d8f22e5a5c855cd61431 --- package.json | 2 +- tests/selenium/wdio.conf.js | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f3e66e4fff..6ddb93110f 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "eslint-fix": "eslint --cache --ext .js,.json --fix .", "eslint": "eslint --cache --ext .js,.json .", "screenshots-all": "grunt screenshots-all", - "selenium-daily": "npm run selenium-test -- --mochaOpts.grep @daily", + "selenium-daily": "npm run selenium-test -- --suite daily --mochaOpts.grep @daily", "selenium-test": "wdio tests/selenium/wdio.conf.js", "test": "grunt test && node build/checkModules.js" }, diff --git a/tests/selenium/wdio.conf.js b/tests/selenium/wdio.conf.js index 7eccde69ba..ff4ee04f26 100644 --- a/tests/selenium/wdio.conf.js +++ b/tests/selenium/wdio.conf.js @@ -9,5 +9,10 @@ exports.config = { ...config, // Example: // logLevel: 'info', - maxInstances: 4 + maxInstances: 4, + suites: { + daily: [ + 'specs/content_editable.js' + ] + } }; From 4975d96cfed36b48ef16df751277dbd1675c7936 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 11 Jul 2025 10:00:50 +0200 Subject: [PATCH 459/730] Localisation updates from https://translatewiki.net. Change-Id: I9a3a710d88d6e1a62f15c66207aa797505430e80 --- editcheck/i18n/fr.json | 5 +++-- editcheck/i18n/pt.json | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index b696ede23f..80c1b82954 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -4,7 +4,8 @@ "Derugon", "Gomoko", "JLTRY", - "Mahabarata" + "Mahabarata", + "Trizek (WMF)" ] }, "editcheck-dialog-action-no": "Non", @@ -27,7 +28,7 @@ "editcheck-copyvio-description": "En règle générale, ne copiez pas de texte provenant d'autres sources. Cela constitue généralement une violation des droits d'auteur et un plagiat.", "editcheck-tone-title": "Réviser le ton ?", "editcheck-tone-description": "D'autres utilisateurs révisent souvent ce genre de formulation, disant que le ton est déséquilibré. [$1 En savoir plus]", - "editcheck-tone-footer": "Identifié à l'aide d'un [ modèle BERT $1 ]", + "editcheck-tone-footer": "Identifié à l'aide d'un [$1 modèle BERT]", "editcheck-tone-title-acted": "Révision du ton", "editcheck-tone-description-acted": "Faites attention aux expressions flatteuses, désobligeantes, vagues, clichées ou qui soutiennent un point de vue particulier.", "editcheck-tone-reject-appropriate": "Le ton est approprié", diff --git a/editcheck/i18n/pt.json b/editcheck/i18n/pt.json index 5f8c08aee6..b37f85ecf0 100644 --- a/editcheck/i18n/pt.json +++ b/editcheck/i18n/pt.json @@ -1,11 +1,14 @@ { "@metadata": { "authors": [ - "Hamilton Abreu" + "Hamilton Abreu", + "Mansil alfalb" ] }, "editcheck-dialog-action-no": "Não", "editcheck-dialog-action-yes": "Sim", + "editcheck-dialog-action-back": "Anterior", + "editcheck-dialog-action-submit": "Submeter", "editcheck-dialog-addref-description": "Ajude os leitores a entender de onde vêm estas informações, adicionando uma citação.", "editcheck-dialog-addref-reject-question": "Porque não adicionou uma citação?", "editcheck-dialog-addref-reject-description": "Os outros editores gostariam de saber mais sobre a sua decisão de não adicionar uma citação.", @@ -16,6 +19,8 @@ "editcheck-dialog-addref-success-notify": "Obrigado por acrescentar uma citação!", "editcheck-dialog-addref-title": "Adicionar uma citação", "editcheck-dialog-title": "Antes de publicar", + "editcheck-tone-reject-uncertain": "Eu não tenho a certeza de como rever o tom", + "editcheck-tone-reject-other": "Outros", "tag-editcheck-reference-decline-common-knowledge": "Verificação de Edições (referências) recusada (conhecimento comum)", "tag-editcheck-reference-decline-common-knowledge-description": "A referência da Verificação de Edições foi recusada como conhecimento comum", "tag-editcheck-reference-decline-irrelevant": "Verificação de Edições (referências) recusada (irrelevante)", From e578533966a64ef4f09ad4957e3a72200b0f3ea5 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 9 Jul 2025 14:56:59 +0100 Subject: [PATCH 460/730] ve.dm.MWTransclusionNode: Log original HTML when wikitext can't be generated Bug: T380432 Change-Id: I4718e2a938f70621f39e0aef89d1318596d51e61 --- modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js index 3104aa4a67..e2875abbd7 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js @@ -494,8 +494,15 @@ ve.dm.MWTransclusionNode.prototype.getWikitext = function () { try { return this.constructor.static.getWikitext( this.getAttribute( 'mw' ) ); } catch ( e ) { + let message; + const originalDomElements = this.getOriginalDomElements( this.getStore() ); + if ( originalDomElements.length ) { + message = originalDomElements.map( ve.getNodeHtml ).join( '' ); + } else { + message = '[DOM elements not found]'; + } // Temporary logging for T380432 - throw new Error( 'Failed to generate wikitext for MWTransclusionNode: ' + JSON.stringify( this.element ) ); + throw new Error( `Failed to generate wikitext for MWTransclusionNode: ${ message }` ); } }; From bb6887a838af273b4b281b4291d35f07daf72a9e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 14 Jul 2025 09:37:21 +0200 Subject: [PATCH 461/730] Localisation updates from https://translatewiki.net. Change-Id: I45b05fbf4583a2e87a560ce4e96eb72b64d52b63 --- editcheck/i18n/ce.json | 8 +++++++- i18n/ve-mw/api/ce.json | 1 + i18n/ve-mw/bom.json | 3 ++- i18n/ve-mw/gl.json | 2 +- i18n/ve-mw/kaj.json | 3 ++- i18n/ve-mw/mwlanguagevariant/ps.json | 2 +- i18n/ve-mw/ps.json | 1 + i18n/ve-mw/tt-cyrl.json | 2 +- i18n/ve-wmf/is.json | 3 ++- 9 files changed, 18 insertions(+), 7 deletions(-) diff --git a/editcheck/i18n/ce.json b/editcheck/i18n/ce.json index 6cd26c2ac6..404f6711dd 100644 --- a/editcheck/i18n/ce.json +++ b/editcheck/i18n/ce.json @@ -6,5 +6,11 @@ }, "editcheck-dialog-action-no": "ХӀан-хӀа", "editcheck-dialog-action-yes": "ХӀаъ", - "editcheck-dialog-addref-reject-other": "Кхийерг" + "editcheck-dialog-action-decline": "Йухатоха", + "editcheck-dialog-action-back": "Йуха", + "editcheck-dialog-action-submit": "ДӀадахьийта", + "editcheck-dialog-addref-reject-other": "Кхийерг", + "editcheck-dialog-addref-title": "Хьост тӀетоха", + "editcheck-dialog-title": "Публикаци йале", + "editcheck-tone-reject-other": "Кхийерг" } diff --git a/i18n/ve-mw/api/ce.json b/i18n/ve-mw/api/ce.json index ce0516cf58..f7b7af125c 100644 --- a/i18n/ve-mw/api/ce.json +++ b/i18n/ve-mw/api/ce.json @@ -12,5 +12,6 @@ "apihelp-visualeditoredit-param-minor": "Жимачу хийцамашна байракх.", "apihelp-visualeditoredit-param-paction": "Кхочушбан безаш болу ардамаш.", "apihelp-visualeditoredit-param-page": "Ардам кхочушбан беза агӀо.", + "apihelp-visualeditoredit-param-sectiontitle": "Керлачу декъан цӀе.", "apihelp-visualeditoredit-param-summary": "Хийцамах лаьцнарг тадар" } diff --git a/i18n/ve-mw/bom.json b/i18n/ve-mw/bom.json index dc4b3d1bd3..597d87e2bd 100644 --- a/i18n/ve-mw/bom.json +++ b/i18n/ve-mw/bom.json @@ -1,11 +1,12 @@ { "@metadata": { "authors": [ + "Kambai Akau", "Rwang PS" ] }, "visualeditor-ca-createlocaldescriptionsource": "Gwe ha numa tinse", "visualeditor-ca-createsource": "Wunta tinse", "visualeditor-ca-editsource": "Yong tin ha", - "visualeditor-ca-editsource-section": "Wunta tin" + "visualeditor-ca-editsource-section": "wunta tin" } diff --git a/i18n/ve-mw/gl.json b/i18n/ve-mw/gl.json index b7e73ae66d..c52203a31b 100644 --- a/i18n/ve-mw/gl.json +++ b/i18n/ve-mw/gl.json @@ -60,7 +60,7 @@ "visualeditor-dialog-extension-abandonedit": "Queres pechar esta ventá sen aplicar os teus cambios?", "visualeditor-dialog-media-alttext-checkbox": "Usar o pé de foto como texto alternativo", "visualeditor-dialog-media-alttext-section": "Texto alternativo", - "visualeditor-dialog-media-alttext-section-help": "Podes usar isto para escribir unha descrición textual para as persoas que non poden ver o elemento. A descrición debe ser suficiente para que poidan entender a finalidade e a información que proporciona o elemento multimedia. Isto é vital para as persoas cegas ou para aquelas que empreguen programas de lectura de pantalla ou navegadores de só texto.", + "visualeditor-dialog-media-alttext-section-help": "Podes usar isto para escribir unha descrición textual para as persoas que non poden ver o elemento. A descrición debe ser suficiente para que poidan entender a finalidade e a información que proporciona o elemento multimedia. Isto é vital para as persoas cegas ou para aquelas que empreguen programas de lectura de pantalla ou navegadores de texto só.", "visualeditor-dialog-media-change-image": "Cambiar a imaxe", "visualeditor-dialog-media-choose-image": "Utilizar esta imaxe", "visualeditor-dialog-media-content-description-link": "(páxina de descrición)", diff --git a/i18n/ve-mw/kaj.json b/i18n/ve-mw/kaj.json index a9bf639aed..19b9ab16b6 100644 --- a/i18n/ve-mw/kaj.json +++ b/i18n/ve-mw/kaj.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ + "Kambai Akau", "Kuzayet" ] }, "visualeditor-ca-createlocaldescriptionsource": "Mbrang ka̱tyyei du̱tyin ka̱ryyi", "visualeditor-ca-createsource": "Yrang du̱tyin", "visualeditor-ca-editsource": "Shang du̱tyin ti", - "visualeditor-ca-editsource-section": "Shang du̱tyin ti", + "visualeditor-ca-editsource-section": "shang du̱tyin ti", "visualeditor-descriptionpagelink": "Project:a̱ssu̱ a̱shang" } diff --git a/i18n/ve-mw/mwlanguagevariant/ps.json b/i18n/ve-mw/mwlanguagevariant/ps.json index 0125652ab2..7d5ba48d24 100644 --- a/i18n/ve-mw/mwlanguagevariant/ps.json +++ b/i18n/ve-mw/mwlanguagevariant/ps.json @@ -7,7 +7,7 @@ ] }, "visualeditor-mwlanguagevariant-disabled": "بل‌بڼې اړونه ناچارن‌شوې", - "visualeditor-mwlanguagevariant-filter": "بل‌بڼه $1 ته چاڼ‌شوي", + "visualeditor-mwlanguagevariant-filter": "بل‌بڼې $1 ته چاڼ‌شوي", "visualeditor-mwlanguagevariant-name": "د ژبې نوم: $1", "visualeditor-mwlanguagevariant-oneway": "يو اړخيزه اړونه: $1", "visualeditor-mwlanguagevariant-twoway": "ژبې اړونه: $1", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 752e3dd586..0ff28e7f16 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -145,6 +145,7 @@ "visualeditor-dialog-transclusion-filter-no-match": "هېڅ ورته والی و نهٔ موندل شو", "visualeditor-dialog-transclusion-filter-placeholder": "ډگر موندل", "visualeditor-dialog-transclusion-filter-show-all": "ټول ښکاره کول", + "visualeditor-dialog-transclusion-help-title": "کينډۍ سمولو ملاتړ", "visualeditor-dialog-transclusion-loading": "رابرسېرېږي...", "visualeditor-dialog-transclusion-param-default": "تلواليز: $1", "visualeditor-dialog-transclusion-param-example-long": "بېلگه: $1", diff --git a/i18n/ve-mw/tt-cyrl.json b/i18n/ve-mw/tt-cyrl.json index 46c5019b02..6273c11b3e 100644 --- a/i18n/ve-mw/tt-cyrl.json +++ b/i18n/ve-mw/tt-cyrl.json @@ -168,7 +168,7 @@ "visualeditor-preference-tabs": "Үзгәртү режимы:", "visualeditor-preference-tabs-remember-last": "Соңгы мөхәрриремне хәтерләү", "visualeditor-rebase-client-export": "Чыгару", - "visualeditor-rebase-client-import": "Кертү", + "visualeditor-rebase-client-import": "Импортла", "visualeditor-rebase-client-import-name": "Битнең исеме", "visualeditor-redirect-description": "$1 битенә юнәлтү", "visualeditor-savedialog-identify-anon": "Сез бу битне аноним кулланучы буларак сакларга телисезме? Сезнең IP адресы бу битнең үзгәртүләр тарихында сакланып калачак.", diff --git a/i18n/ve-wmf/is.json b/i18n/ve-wmf/is.json index fd3b298826..df3331f86c 100644 --- a/i18n/ve-wmf/is.json +++ b/i18n/ve-wmf/is.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ + "Bjarki S", "Maxí", "Snævar", "Stefán Örvar Sigmundsson" ] }, - "tag-visualeditor": "Sýnileg breyting", + "tag-visualeditor": "Sýnilegi ritillinn", "tag-visualeditor-description": "Breyting gerð með [[{{MediaWiki:visualeditor-descriptionpagelink}}|Sýnilega ritlinum]]", "tag-visualeditor-needcheck": "Sýnileg breyting: Athuga", "tag-visualeditor-needcheck-description": "Breyting gerð með [[{{MediaWiki:visualeditor-descriptionpagelink}}|sýnilega ritlinum]] þar sem kerfið greindi að wiki-textinn hafi mögulega ófyrirsjáanlegar breytingar.", From 57d1386b726924d506b0233af3504dd544f7586e Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Fri, 11 Jul 2025 21:18:35 -0400 Subject: [PATCH 462/730] DesktopArticleTarget: Fallback to undefined instead of null for linkUrl 768e73aa7f154b5c4739c733427ba4038e2327fe replaced trackActivateStart()'s null-checking with a default parameter, but that doesn't account for the parameter being null. See relevant docs: defaulted parameters are only assigned if undefined. Bug: T399350 Change-Id: Id584d38433b4a8122c8c15d7ca6af1aadea38c08 --- modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index a63cdb5979..a403879062 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -1117,8 +1117,8 @@ } ); } else { const link = $( e.target ).closest( 'a' )[ 0 ]; - const linkUrl = link && link.href ? new URL( link.href ) : null; - if ( section !== null ) { + const linkUrl = link && link.href ? new URL( link.href ) : undefined; + if ( section !== undefined ) { init.activateVe( mode, linkUrl, section ); } else { // Do not pass `section` to handle switching from section editing in WikiEditor if needed From 408c6dac87c4e2e477069a69c3d792c8da91044c Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 14 Jul 2025 13:32:43 +0100 Subject: [PATCH 463/730] Pass correct converter to isHybridInline Change-Id: Ib685bc901911df950f092647110d44fbe0daec75 --- modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js index 30079299d3..ab6a93f8d8 100644 --- a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js +++ b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js @@ -132,7 +132,7 @@ let contentNodes = $.parseHTML( response.visualeditor.content, surfaceFragment.getDocument().getHtmlDocument() ) || []; contentNodes = ve.ce.MWTransclusionNode.static.filterRendering( contentNodes ); insertNode( - baseNodeClass.static.isHybridInline( contentNodes, ve.dm.converter ), + baseNodeClass.static.isHybridInline( contentNodes, ve.dm.converter.modelFromDomConverter ), contentNodes ); } else { From 24e554a81991b4637fc1b63ad14826b49a212dc8 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 23 Jun 2025 18:21:49 +0100 Subject: [PATCH 464/730] Pass page_title to tone check API Bug: T397245 Change-Id: I0a1f91795be7db337eedb2adf29301b9029d8681 --- .../modules/editchecks/experimental/ToneCheck.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 58e4754b64..c7bd528fe7 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -25,6 +25,9 @@ mw.editcheck.ToneCheck.static.checkAsync = function ( text ) { return false; } + const title = mw.Title.newFromText( mw.config.get( 'wgRelevantPageName' ) ); + const titleText = title ? title.getMainText() : ''; + return fetch( 'https://api.wikimedia.org/service/lw/inference/v1/models/edit-check:predict', { method: 'POST', headers: { @@ -32,8 +35,15 @@ mw.editcheck.ToneCheck.static.checkAsync = function ( text ) { }, body: JSON.stringify( { instances: [ - // eslint-disable-next-line camelcase - { original_text: '', modified_text: text, check_type: 'tone', lang: 'en' } + /* eslint-disable camelcase */ + { + modified_text: text, + page_title: titleText, + original_text: '', + check_type: 'tone', + lang: 'en' + } + /* eslint-enable camelcase */ ] } ) } ).then( From 992736b9c182e8b5e58f21491337d199bc19fed2 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 15 Jul 2025 09:28:56 +0200 Subject: [PATCH 465/730] Localisation updates from https://translatewiki.net. Change-Id: I59e636b86dd9d9866852bcfa194bd9844058ecd9 --- editcheck/i18n/lij.json | 43 ++ editcheck/i18n/vi.json | 19 +- i18n/ve-mw/api/lij.json | 48 +++ i18n/ve-mw/lij.json | 587 +++++++++++++++----------- i18n/ve-mw/mwlanguagevariant/lij.json | 79 ++-- i18n/ve-wmf/ce.json | 2 +- i18n/ve-wmf/lij.json | 46 +- i18n/ve-wmf/vi.json | 10 + 8 files changed, 525 insertions(+), 309 deletions(-) create mode 100644 editcheck/i18n/lij.json create mode 100644 i18n/ve-mw/api/lij.json diff --git a/editcheck/i18n/lij.json b/editcheck/i18n/lij.json new file mode 100644 index 0000000000..4b7e1da682 --- /dev/null +++ b/editcheck/i18n/lij.json @@ -0,0 +1,43 @@ +{ + "@metadata": { + "authors": [ + "N. Longo" + ] + }, + "editcheck-dialog-action-no": "No", + "editcheck-dialog-action-yes": "Scì", + "editcheck-dialog-action-decline": "Refûa", + "editcheck-dialog-action-revise": "Védde tórna", + "editcheck-dialog-action-back": "Inderê", + "editcheck-dialog-action-submit": "Mànda", + "editcheck-dialog-addref-description": "Agiùtta i letoî a capî da dónde vêgnan st'informaçioìn chi azonzéndoghe 'na nòtta.", + "editcheck-dialog-addref-reject-question": "Perché ti no gh'azónzi 'na nòtta?", + "editcheck-dialog-addref-reject-description": "Di âtri editoî dexidiéivan savéine de ciù in sciâ tò decixón de no métte de nòtte.", + "editcheck-dialog-addref-reject-irrelevant": "No créddo che de nòtte séggian inportànti pe-a modìfica che véuggio fâ.", + "editcheck-dialog-addref-reject-common-knowledge": "E informaçioìn che són aprêuvo a-azónze són bén bén sconpartîe", + "editcheck-dialog-addref-reject-uncertain": "No són segûo de che nòtta azónzighe", + "editcheck-dialog-addref-reject-other": "Âtro", + "editcheck-dialog-addref-success-notify": "Gràçie p'avéighe azónto 'na nòtta!", + "editcheck-dialog-addref-title": "Azónzi 'na çitaçión", + "editcheck-dialog-title": "Prìmma de pubricâ", + "editcheck-copyvio-title": "Contegnûo inpastetòu", + "editcheck-copyvio-description": "Cómme régola generâle, no copiâ do tèsto da de âtre vivàgne. De sòlito st'açión chi a l'é tànto 'na violaçión do dirìtto d'outô che 'n plâgio.", + "editcheck-tone-title": "Rivédde o tón?", + "editcheck-tone-description": "Di âtri uténti revixónn-an de spesso sta ménn-a de formolaçión, da-o tón ch'o no l'é neotrâle. [$1 Savéine de ciù]", + "editcheck-tone-footer": "Identificòu pe mêzo de 'n [$1 modéllo BERT].", + "editcheck-tone-title-acted": "Rivedéndo o tón", + "editcheck-tone-description-acted": "Fæ atençión a de esprescioìn che són afascinànti, desprexànti, vâghe, cliché ò che sostêgnan 'n çèrto pónto de vìsta.", + "editcheck-tone-reject-appropriate": "O tón o l'é apropiòu", + "editcheck-tone-reject-uncertain": "No són segûo de cómme rivédde o tón", + "editcheck-tone-reject-other": "Âtro", + "editcheck-reject-description": "Di âtri editoî dexidiéivan savéine de ciù in sciô perché t'æ fæto sta çèrnia chi.", + "editcheck-review-title": "Rivéddi modìfiche", + "tag-editcheck-reference-decline-common-knowledge": "Edit Check (nòtte) refuòu (conoscénsa sconpartîa)", + "tag-editcheck-reference-decline-common-knowledge-description": "O riferiménto a l'EditCheck o l'é stæto refuòu cómme conoscénsa sconpartîa", + "tag-editcheck-reference-decline-irrelevant": "Edit Check (nòtte) refuòu (sénsa d'inportànsa)", + "tag-editcheck-reference-decline-irrelevant-description": "O riferiménto a l'EditCheck o l'é stæto refuòu cómme sénsa d'inportànsa", + "tag-editcheck-reference-decline-other": "Edit Check (nòtte) refuòu (âtro)", + "tag-editcheck-reference-decline-other-description": "O riferiménto a l'EditCheck o l'é stæto refuòu pe 'na raxón no indicâ", + "tag-editcheck-reference-decline-uncertain": "Edit Check (nòtte) refuòu (no segûo)", + "tag-editcheck-reference-decline-uncertain-description": "O riferiménto a l'EditCheck o l'é stæto refuòu cómme no segûo" +} diff --git a/editcheck/i18n/vi.json b/editcheck/i18n/vi.json index e7381b1de7..c024dd8426 100644 --- a/editcheck/i18n/vi.json +++ b/editcheck/i18n/vi.json @@ -1,11 +1,16 @@ { "@metadata": { "authors": [ - "Bluetpp" + "Bluetpp", + "NgocAnMaster" ] }, "editcheck-dialog-action-no": "Không", "editcheck-dialog-action-yes": "Có", + "editcheck-dialog-action-decline": "Từ chối", + "editcheck-dialog-action-revise": "Xem lại", + "editcheck-dialog-action-back": "Quay lại", + "editcheck-dialog-action-submit": "Xác nhận", "editcheck-dialog-addref-description": "Giúp người đọc hiểu thông tin này đến từ đâu bằng cách thêm trích dẫn.", "editcheck-dialog-addref-reject-question": "Tại sao bạn không thêm trích dẫn?", "editcheck-dialog-addref-reject-description": "Các biên tập viên khác sẽ đánh giá cao việc được hiểu thêm về quyết định loại bỏ trích dẫn của bạn.", @@ -16,6 +21,18 @@ "editcheck-dialog-addref-success-notify": "Cảm ơn bạn đã thêm một trích dẫn!", "editcheck-dialog-addref-title": "Thêm một trích dẫn", "editcheck-dialog-title": "Trước khi xuất bản", + "editcheck-copyvio-title": "Nội dung được dán", + "editcheck-copyvio-description": "Nguyên tắc chung là đừng sao chép văn bản từ các nguồn khác. Làm như vậy thường sẽ đồng thời cấu thành hành vi vi phạm bản quyền và đạo văn.", + "editcheck-tone-title": "Sửa lại giọng điệu?", + "editcheck-tone-description": "Những thành viên khác thường sửa lại cách diễn đạt này vì cho rằng giọng điệu không được cân bằng lắm. [$1 Tìm hiểu thêm]", + "editcheck-tone-footer": "Được xác định sử dụng [$1 mô hình BERT]", + "editcheck-tone-title-acted": "Sửa lại giọng điệu", + "editcheck-tone-description-acted": "Hãy cẩn thận với các đoạn có biểu hiện tâng bốc, coi thường, mơ hồ, sáo rỗng hoặc tán thành một quan điểm cụ thể.", + "editcheck-tone-reject-appropriate": "Giọng điệu này phù hợp", + "editcheck-tone-reject-uncertain": "Tôi không biết cách sửa lại giọng điệu thế nào", + "editcheck-tone-reject-other": "Khác", + "editcheck-reject-description": "Các biên tập viên khác sẽ đánh giá cao việc tìm hiểu lý do tại sao bạn đưa ra lựa chọn này.", + "editcheck-review-title": "Xem lại thay đổi", "tag-editcheck-reference-decline-common-knowledge": "Kiểm tra chỉnh sửa (tài liệu tham khảo) bị từ chối (kiến thức chung)", "tag-editcheck-reference-decline-common-knowledge-description": "Tham khảo Kiểm tra Chỉnh sửa bị từ chối vì là kiến thức chung", "tag-editcheck-reference-decline-irrelevant": "Kiểm tra chỉnh sửa (tài liệu tham khảo) bị từ chối (không liên quan)", diff --git a/i18n/ve-mw/api/lij.json b/i18n/ve-mw/api/lij.json new file mode 100644 index 0000000000..8cdf490873 --- /dev/null +++ b/i18n/ve-mw/api/lij.json @@ -0,0 +1,48 @@ +{ + "@metadata": { + "authors": [ + "N. Longo" + ] + }, + "apierror-visualeditor-badcachekey": "No se trêuva de serializaçioìn inta cache con quélla ciâve", + "apierror-visualeditor-difffailed": "Diff o l'é falîo", + "apihelp-visualeditor-param-basetimestamp": "Quànde ti sàrvi, çèrni o timestamp da revixón ch'a l'é stæta modificâ. O l'é dêuviòu pe rilevâ i conflìtti de modìfica.", + "apihelp-visualeditor-param-badetag": "Se a query RESTBase a restitoìsce 'n ETag ch'o no pâ vàlido, pasâlo chi pe-i fìn da registraçión.", + "apihelp-visualeditor-param-cachekey": "Pe serializâ ò diferençiâ, dêuvia o rizultâto de 'na domànda serializeforcache de prìmma con sta ciâve chi. O soviascrîve $1html.", + "apihelp-visualeditor-param-editintro": "Modìfica l'intro pe azónze a-i avîxi.", + "apihelp-visualeditor-param-etag": "ETag da mandâ.", + "apihelp-visualeditor-param-format": "Formâto de l'output.", + "apihelp-visualeditor-param-html": "HTML da mandâ a Parsoid pe convertîlo inte 'n wikitèsto.", + "apihelp-visualeditor-param-oldid": "O nùmero da versción da dêuviâ (predefinîo pe l'ùrtima versción).", + "apihelp-visualeditor-param-paction": "Açión da conpî.", + "apihelp-visualeditor-param-page": "A pàgina dónde conpî l'açión.", + "apihelp-visualeditor-param-preload": "A pàgina da dónde dêuviâ o contegnûo se a pàgina repigiâ a no gh'à ancón de contegnûo.", + "apihelp-visualeditor-param-preloadparams": "I paràmetri da sostitoî inta pàgina de precàrego, se prezénti.", + "apihelp-visualeditor-param-pst": "Sàrva o tèsto da trasformâ in wikitèsto prìmma de mandâlo a Parsoid (paction=parsefragment).", + "apihelp-visualeditor-param-section": "A seçión dónde agî.", + "apihelp-visualeditor-param-starttimestamp": "Quànde ti sàrvi, çèrni pe sto paràmetro chi o timestamp de quànte a pàgina a l'é stæta creâ. O l'é dêuviòu pe rilevâ i conflìtti de modìfica.", + "apihelp-visualeditor-param-stash": "Quànde ti sàrvi, çèrni sto chi a vêo se ti veu dêuviâ o stash de l'API.", + "apihelp-visualeditor-param-wikitext": "Wikitèsto da mandâ a Parsoid pe convertîlo inte HTML (paction=parsefragment).", + "apihelp-visualeditor-summary": "O restitoìsce HTML5 pe 'na pàgina do servìçio Parsoid.", + "apihelp-visualeditoredit-param-basetimestamp": "Quànde ti sàrvi, çèrni o timestamp da revixón ch'a l'é stæta modificâ. O l'é dêuviòu pe rilevâ i conflìtti de modìfica.", + "apihelp-visualeditoredit-param-cachekey": "Dêuvia o rizultâto de 'na domànda serializeforcache de prìmma con sta ciâve chi. O soviascrîve $1html.", + "apihelp-visualeditoredit-param-captchaid": "ID Captcha (quànde ti sàrvi co-ina rispòsta captcha).", + "apihelp-visualeditoredit-param-captchaword": "Rispóndi a-o captcha (quànde ti sàrvi co-ina rispòsta captcha).", + "apihelp-visualeditoredit-param-nocontent": "Tralasciâ o contegnûo HTML da nêuva versción inta rispòsta.", + "apihelp-visualeditoredit-param-plugins": "I plugin ligæ a-a domànda API.", + "apihelp-visualeditoredit-param-data-{plugin}": "I dæti arbitrâi mandæ da 'n plugin co-a domànda API.", + "apihelp-visualeditoredit-param-etag": "ETag da mandâ.", + "apihelp-visualeditoredit-param-html": "HTML da mandâ a Parsoid in càngio de 'n wikitèsto.", + "apihelp-visualeditoredit-param-minor": "Etichétta de modìfica minô.", + "apihelp-visualeditoredit-param-needcheck": "Quànte ti sàrva, çèrne sto paràmetro chi into câxo che a versción a gh'àgge di problêmi d'invîo. Sto chi o saiâ mostròu inta versción seleçionâ.", + "apihelp-visualeditoredit-param-oldid": "O nùmero da versción da dêuviâ. O predefinîo o l'é quéllo de l'ùrtima versción.", + "apihelp-visualeditoredit-param-paction": "Açión da conpî.", + "apihelp-visualeditoredit-param-page": "A pàgina dónde conpî l'açión.", + "apihelp-visualeditoredit-param-section": "A seçión dónde agî.", + "apihelp-visualeditoredit-param-sectiontitle": "O tìtolo pe-a nêuva seçión.", + "apihelp-visualeditoredit-param-starttimestamp": "Quànde ti sàrvi, çèrni pe sto paràmetro chi o timestamp de quànte a pàgina a l'é stæta creâ. O l'é dêuviòu pe rilevâ i conflìtti de modìfica.", + "apihelp-visualeditoredit-param-summary": "Ògètto da modìfica.", + "apihelp-visualeditoredit-param-tags": "I tag de cangiaménto da aplicâ a-a modìfica.", + "apihelp-visualeditoredit-param-wikitext": "O wikitèsto dónde agî.", + "apihelp-visualeditoredit-summary": "Sàrva 'na pàgina HTML5 inte MediaWiki (convertîa inte wikitèsto pe mêzo do servìçio Parsoid)." +} diff --git a/i18n/ve-mw/lij.json b/i18n/ve-mw/lij.json index 98ec11e729..1cad546ca2 100644 --- a/i18n/ve-mw/lij.json +++ b/i18n/ve-mw/lij.json @@ -8,269 +8,356 @@ ] }, "collabpad-doctitle": "CollabPad: $1", - "collabpad-import-subtitle": "Importou da $1", + "collabpad-import-subtitle": "Inportòu da $1", "collabpad": "CollabPad", - "tooltip-ca-ve-edit": "Modìfica quésta pàgina", - "tooltip-ca-editsource": "Modiffica o wikitesto de questa paggina", - "tooltip-ca-createsource": "Crea o coddiçe vivagna de questa paggina", - "visualeditor-advancedsettings-tool": "Impostassioin avansæ", - "visualeditor-autosave-modified-prompt-accept": "Repiggia a modificâ", - "visualeditor-autosave-modified-prompt-message": "Sta paggina a l'è stæta modificâ doppo che ti l'hæ caregâ. {{GENDER:|Ti vœu}} repigiâ a modiffica da vegia verscion ò ti vœu inandiâ 'na nœuva modiffica de l'urtima verscion da paggina?", - "visualeditor-autosave-modified-prompt-reject": "Inandia 'na nœuva modiffica", - "visualeditor-autosave-modified-prompt-title": "Repigiâ a {{GENDER:|to}} modiffica?", - "visualeditor-autosave-not-recovered-text": "No s'è posciuo recuperâ i cangi che no ti t'aivi sarvou.", - "visualeditor-autosave-not-recovered-title": "Recuppero di cangi falio", - "visualeditor-autosave-recovered-text": "E to modiffiche non sarvæ son stæte aotomatticamente ripristinæ.", - "visualeditor-autosave-recovered-title": "Modiffiche ripristinæ", - "visualeditor-backbutton-tooltip": "Torna inderê", + "tooltip-ca-ve-edit": "Modìfica sta pàgina chi", + "tooltip-ca-ve-edit-local": "Modìfica a descriçión locâle de pàgina", + "tooltip-ca-ve-create": "Crêa sta pàgina chi", + "tooltip-ca-ve-create-local": "Crêa a descriçión locâle de pàgina", + "tooltip-ca-editsource": "Modìfica o wikitèsto de sta pàgina chi", + "tooltip-ca-editsource-local": "Modifìca o còdiçe vivàgna da pàgina de descriçión locâle", + "tooltip-ca-createsource": "Crêa o còdiçe vivàgna de sta pàgina chi", + "tooltip-ca-createsource-local": "Crêa o còdiçe vivàgna da pàgina de descriçión locâle", + "visualeditor-advancedsettings-tool": "Inpostaçioìn avansæ", + "visualeditor-annotations-default-description": "Sta pàrte da pàgina a l'é inte 'n intervàllo d'anotaçión", + "visualeditor-annotations-default-end": "Fìn de l'intervàllo d'anotaçión", + "visualeditor-annotations-default-start": "Coménso de l'intervàllo d'anotaçión", + "visualeditor-annotations-extended-documentation": "St'intervàllo d'anotaçión o l'é stæto estéizo perché o contegnûo ch'o l'à drénto o no l'êa bén aniòu. Se conscìdera de fâ de mòddo che o contegnûo anotòu o ségge bén aniòu avànti de modificâlo; in câxo contrâio, in intervàllo ciù grànde de quéllo prevìsto o poriéiva êse anotòu.", + "visualeditor-autosave-modified-prompt-accept": "Repìggia a modìfica", + "visualeditor-autosave-modified-prompt-message": "Sta pàgina chi a l'é stæta modificâ dòppo che ti l'æ caregâ. {{GENDER:|Ti veu}} repigiâ a modìfica da vêgia versción ò ti veu inandiâ 'na nêuva modìfica de l'ùrtima versción da pàgina?", + "visualeditor-autosave-modified-prompt-reject": "Inàndia 'na nêuva modìfica", + "visualeditor-autosave-modified-prompt-title": "Repigiâ a {{GENDER:|tò}} modìfica?", + "visualeditor-autosave-not-recovered-text": "No s'é posciûo repigiâ i càngi che no ti t'àivi sarvòu.", + "visualeditor-autosave-not-recovered-title": "Repìggio di càngi falîo", + "visualeditor-autosave-recovered-text": "E tò modìfiche no sarvæ són stæte ripristinæ in outomàtico.", + "visualeditor-autosave-recovered-title": "Modìfiche ripristinæ", + "visualeditor-backbutton-tooltip": "Tórna inderê", "visualeditor-ca-createlocaldescriptionsource": "Azónzi descriçión locâle con wikitèsto", "visualeditor-ca-createsource": "Crêa wikitèsto", - "visualeditor-ca-editlocaldescriptionsource": "Modiffica o wikitesto da descrission locale", + "visualeditor-ca-editlocaldescriptionsource": "Modìfica o wikitèsto da descriçión locâle", "visualeditor-ca-editsource": "Modìfica wikitèsto", "visualeditor-ca-editsource-section": "modìfica wikitèsto", - "visualeditor-categories-tool": "Categorie", - "visualeditor-changedesc-mwlanguagevariant": "Wikitesto da variante da lengoa modificou", - "visualeditor-changedesc-mwredirect": "Destinassion do rendrisso modificâ da $1 a $2", - "visualeditor-changedesc-mwtransclusion": "Parammetri do modello cangiæ", - "visualeditor-desc": "Editor vixivo pe MediaWiki", + "visualeditor-ca-editsource-section-hint": "Modìfica o còdiçe vivàgna da seçión: $1", + "visualeditor-categories-tool": "Categorîe", + "visualeditor-changedesc-mwcategory-sortkey-changed": "Ciâve d'órdine cangiâ da $1 a $2", + "visualeditor-changedesc-mwcategory-sortkey-set": "Ciâve d'órdine cangiâ a $1", + "visualeditor-changedesc-mwcategory-sortkey-unset": "Ciâve d'órdine no çernûa pe $1", + "visualeditor-changedesc-mwlanguagevariant": "Wikitèsto da variànte da léngoa modificòu", + "visualeditor-changedesc-mwredirect": "Destinaçión do rindirìsso modificâ da $1 a $2", + "visualeditor-changedesc-mwtransclusion": "Paràmetri do template cangiæ", + "visualeditor-desc": "Editor vixîvo pe MediaWiki", "visualeditor-descriptionpagelink": "Project:VisualEditor", - "visualeditor-dialog-media-alttext-section": "Scrito alternativo", - "visualeditor-dialog-media-alttext-section-help": "Questo ti o pœu dœuviâ pe scrive 'na descrission pe chi n'ariesce a vixoalizâ l'elemento. A descrission a doviæ ese assæ da permettighe a comprenscion do scopo e e informassioin fornie da l'elemento. Questo o l'è de vitâ importansa pe-i utenti che no ghe veddan e pe-e person-e ch'adœuvian un software de lettua schermo ò di navegatoî che mostran solo o scrito.", - "visualeditor-dialog-media-change-image": "Cangia inmaggine", - "visualeditor-dialog-media-choose-image": "Dœuvia questa inmaggine", - "visualeditor-dialog-media-content-description-link": "(pagina de descrission)", - "visualeditor-dialog-media-content-filename": "Nomme do file", - "visualeditor-dialog-media-content-section": "Didascalia", - "visualeditor-dialog-media-content-section-help": "Ti pœu dœuviâ sta fonsion pe mostrâ 'n'etichetta ch'a compâ rente a l'elemento pe tutti i lettoî. A l'è dœuviâ soventi pe spiegâ perché l'elemento o pertocca a-o contesto into quæ o l'è mostrou. A doviæ ese curta e informativa.", + "visualeditor-dialog-extension-abandonedit": "Ti t'ê segûo che ti veu serâ sto barcón de diàlogo sénsa aplicâ e modìfiche?", + "visualeditor-dialog-media-alttext-checkbox": "Dêuvia a didascalîa cómme tèsto alternatîvo", + "visualeditor-dialog-media-alttext-section": "Scrîto alternatîvo", + "visualeditor-dialog-media-alttext-section-help": "Ti peu dêuviâ sto fæto chi pe scrîve 'na descriçión pe chi n'ariêsce a vizoalizâ l'eleménto. A descriçión a doviæ êse asæ da permétighe a conprensción do fìn e de informaçioìn fornîe da l'eleménto. Quésto o l'é de gràn inportànsa pe-i uténti che no ghe véddan e pe-e persónn-e ch'adêuvian in software de letûa schèrmo ò di navegatoî che móstran sôlo o scrîto.", + "visualeditor-dialog-media-change-image": "Càngia inmàgine", + "visualeditor-dialog-media-choose-image": "Dêuvia sta'inmàgine chi", + "visualeditor-dialog-media-content-description-link": "(pàgina de descriçión)", + "visualeditor-dialog-media-content-filename": "Nómme do file", + "visualeditor-dialog-media-content-section": "Didascalîa", + "visualeditor-dialog-media-content-section-help": "Ti peu dêuviâ sta fonçión chi pe mostrâ 'n'etichétta ch'a conparìsce da-arénte a l'eleménto pe tùtti i letoî. A l'é dêuviâ sovénte pe mostrâ perché l'elemento o pertócca a-o contèsto dond'o l'é mostròu. A doviæ êse cùrta e informatîva.", "visualeditor-dialog-media-goback": "Inderê", - "visualeditor-dialog-media-info-artist": "Caregou da $1", - "visualeditor-dialog-media-info-audiofile": "File aodio", - "visualeditor-dialog-media-info-created": "Creou: $1", - "visualeditor-dialog-media-info-meta-artist": "Artista: $1", - "visualeditor-dialog-media-info-moreinfo": "Urteioî informaçioin", - "visualeditor-dialog-media-info-readmore": "Lezi de ciù", - "visualeditor-dialog-media-info-uploaded": "Caregou: $1", + "visualeditor-dialog-media-info-artist": "Caregòu da $1", + "visualeditor-dialog-media-info-audiofile": "File àodio", + "visualeditor-dialog-media-info-created": "Creòu: $1", + "visualeditor-dialog-media-info-meta-artist": "Outô: $1", + "visualeditor-dialog-media-info-moreinfo": "Ciù informaçioìn", + "visualeditor-dialog-media-info-readmore": "Lêzi de ciù", + "visualeditor-dialog-media-info-uploaded": "Caregòu: $1", "visualeditor-dialog-media-page-advanced": "Avansæ", "visualeditor-dialog-media-page-general": "Generâ", - "visualeditor-dialog-media-position-checkbox": "Agiusta o scrito in gio a questo elemento", - "visualeditor-dialog-media-position-checkbox-help": "Ti pœu fâ aparî st'elemento murtimediâ inte righe do scrito invece de fâlo stâ a galla a bordo paggina, ma ti o doviesci fâ de ræo, dæto che se ti desselession-i questa cazella, se stocca o scorimento do scrito.", - "visualeditor-dialog-media-position-section": "Poxission", - "visualeditor-dialog-media-position-section-help": "Ti pœu impostâ donde fâ aparî questo elemento murtimediâ inta paggina. O l'è dœuviou quarche votta pe evitâ che gh segge 'na riga d'inmaggine tutte da-o mæximo lato da paggina.", - "visualeditor-dialog-media-save": "Sarva", - "visualeditor-dialog-media-search-tab-search": "Çerca", - "visualeditor-dialog-media-search-tab-upload": "Carrega", - "visualeditor-dialog-media-size-section": "Dimenscion inmaggine", - "visualeditor-dialog-media-size-section-help": "Ti poeu impostâ a grandessa de l'elemento murtimediâ inta paggina. Questa a doviæ ese quæxi sempre a dimenscion normâ, da-o momento che 'na dimenscion personalizâ a l'interferisce con l'impaginassion pe-i letoî e a-a rende dizomogennia.", - "visualeditor-dialog-media-title": "Impostassioin file murtimediæ", - "visualeditor-dialog-media-type-border": "Bordo", - "visualeditor-dialog-media-type-frame": "Cornixe", - "visualeditor-dialog-media-type-frameless": "Sensa cornixe", - "visualeditor-dialog-media-type-none": "De baze", - "visualeditor-dialog-media-type-section": "Tipo d'inmaggine", - "visualeditor-dialog-media-type-section-help": "Ti poeu selessionâ comme fâ aparî l'elemento murtimediâ inta paggina. L'è megio fâlo in formato miniatua perch'o segge coerente co-a ciu gran parte di atre paggine.", - "visualeditor-dialog-media-type-thumb": "Miniatua", - "visualeditor-dialog-media-upload": "Carrega", - "visualeditor-dialog-meta-advancedsettings-label": "Impostassioin avansæ", - "visualeditor-dialog-meta-advancedsettings-section": "Impostassioin avansæ", - "visualeditor-dialog-meta-categories-addcategory-label": "Azonzi 'na categoria a sta paggina", - "visualeditor-dialog-meta-categories-category": "Categoria", - "visualeditor-dialog-meta-categories-data-label": "Categorie", - "visualeditor-dialog-meta-categories-defaultsort-help": "Ti peu cangiâ l'orde d'amersamento quande sta paggina a l'è elencâ inte 'na categoria impostando un endexo d'amersamento diferente. Questo s'adoeuvia soventi pe fâ de paggine con di nommi de person-e ordinæ pe cognomme, ma mostrando i tittoli co-o nomme de bateximo davanti.", - "visualeditor-dialog-meta-categories-defaultsort-label": "Ordina sta paggina pe difetto comme", - "visualeditor-dialog-meta-categories-hidden": "Sta categoria a l'è impostâ pe no ese vixibbile inte pagine a-e quæ a l'è azonta.", + "visualeditor-dialog-media-position-checkbox": "Agiùsta o scrîto in gîo a st'eleménto chi", + "visualeditor-dialog-media-position-checkbox-help": "Ti peu fâ aparî st'eleménto multimediâle inte rîghe do scrîto in càngio de fâlo stâ a gàlla a bórdo pàgina, ma ti o doviêsci fâ de ræo, dæto che se ti deseleçiónn-i sta cazélla chi o se stócca o scoriménto do scrîto.", + "visualeditor-dialog-media-position-section": "Poxiçión", + "visualeditor-dialog-media-position-section-help": "Ti peu çèrne dónde fâ aparî st'eleménto multimediâle chi inta pàgina. O l'é dêuviòu quàrche vòtta pe evitâ che ghe ségge 'na rîga d'inmàgine tùtte da-a mæxima pàrte da pàgina.", + "visualeditor-dialog-media-save": "Sàrva", + "visualeditor-dialog-media-search-tab-search": "Çèrca", + "visualeditor-dialog-media-search-tab-upload": "Càrega", + "visualeditor-dialog-media-size-section": "Dimensción inmàgine", + "visualeditor-dialog-media-size-section-help": "Ti peu çèrne a grandéssa de l'eleménto multimediâle inta pàgina. Quésta a doviæ êse quæxi sénpre a dimensción normâle, da-o moménto che 'na dimensción personalizâ a l'interferìsce con l'inpaginaçión pe-i letoî e a-a rénde dizomogénia.", + "visualeditor-dialog-media-title": "Inpostaçioìn file multimediâli", + "visualeditor-dialog-media-type-border": "Bórdo", + "visualeditor-dialog-media-type-frame": "Cornîxe", + "visualeditor-dialog-media-type-frameless": "Sénsa cornîxe", + "visualeditor-dialog-media-type-none": "Bâze", + "visualeditor-dialog-media-type-section": "Tîpo d'inmàgine", + "visualeditor-dialog-media-type-section-help": "Ti peu seleçionâ cómme fâ aparî l'eleménto multimediâle inta pàgina. L'é mêgio fâlo into formâto miniatûa de mòddo ch'o ségge coerénte co-a ciù gràn pàrte de âtre pàgine.", + "visualeditor-dialog-media-type-thumb": "Miniatûa", + "visualeditor-dialog-media-upload": "Càrega", + "visualeditor-dialog-meta-advancedsettings-label": "Inpostaçioìn avansæ", + "visualeditor-dialog-meta-advancedsettings-section": "Inpostaçioìn avansæ", + "visualeditor-dialog-meta-categories-addcategory-label": "Azónzi 'na categorîa a sta pàgina chi", + "visualeditor-dialog-meta-categories-category": "Categorîa", + "visualeditor-dialog-meta-categories-data-label": "Categorîe", + "visualeditor-dialog-meta-categories-defaultsort-help": "Ti peu cangiâ l'órdine de sta pàgina fra de quélle inte 'na categorîa çernéndo da ciâve d'órdine diferénte. Quésto s'adêuvia sovénte pe fâ de pàgine con di nómmi de persónn-e ordinæ pe cognómme, ma mostràndo i tìtoli co-o nómme de batézzo davànti.", + "visualeditor-dialog-meta-categories-defaultsort-label": "Órdina sta pàgina in mòddo predefinîo cómme", + "visualeditor-dialog-meta-categories-hidden": "Sta categorîa a l'é inpostâ pe no êse vixìbile inte pàgine dond'a l'é azónta.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Categorîe ascôze", - "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Categorie corispondente", - "visualeditor-dialog-meta-categories-input-movecategorylabel": "Mescia chie questa categoria", - "visualeditor-dialog-meta-categories-input-newcategorylabel": "Noeuva categoria", - "visualeditor-dialog-meta-categories-input-placeholder": "Azonzi 'na categoria", - "visualeditor-dialog-meta-categories-missing": "A sta categoria gh'amanca 'na paggina de descrission.", - "visualeditor-dialog-meta-categories-options": "Opçioin", - "visualeditor-dialog-meta-categories-section": "Categorie", - "visualeditor-dialog-meta-categories-sortkey-label": "Amersa sta paggina comme s'a se ciamesse", - "visualeditor-dialog-meta-languages-code-label": "Coddiçe lengua", - "visualeditor-dialog-meta-languages-label": "Lengoe", - "visualeditor-dialog-meta-languages-link-label": "Paggina inganciâ", - "visualeditor-dialog-meta-languages-name-label": "Lengua", - "visualeditor-dialog-meta-languages-readonlynote": "Sta chì a l'è 'na lista de paggine in atre lengue ch'en conligæ a questa; pe oua, o poeu vese modificao solo in wikitesto ò sciu Wikidata.", - "visualeditor-dialog-meta-languages-section": "Lengoe", - "visualeditor-dialog-meta-settings-displaytitle": "Tittolo vixoalizou", - "visualeditor-dialog-meta-settings-displaytitle-help": "Ti poeu cangiâ a vixualizassion do tittolo de sta paggina impostando un'etichetta da mostrâ diferente.", - "visualeditor-dialog-meta-settings-hiddencat-help": "Ti poeu impedî che sta categoria a segge mostrâ inta lista de categorie inte paggine che ne fan parte. Questo o l'è uttile pe-e categorie che servan a-i redatoî, ma a-a ciu gran parte di lettoî no gh'interessan, comme e paggine che g'han de bezoeugno de 'n'inlustrassion.", + "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Categorîe corispondénti", + "visualeditor-dialog-meta-categories-input-movecategorylabel": "Méscia chi sta categorîa", + "visualeditor-dialog-meta-categories-input-newcategorylabel": "Nêuva categorîa", + "visualeditor-dialog-meta-categories-input-placeholder": "Azónzi 'na categorîa", + "visualeditor-dialog-meta-categories-missing": "A sta categorîa gh'amànca 'na pàgina de descriçión.", + "visualeditor-dialog-meta-categories-options": "Opçioìn", + "visualeditor-dialog-meta-categories-section": "Categorîe", + "visualeditor-dialog-meta-categories-sortkey-label": "Órdina sta pàgina chi cómme s'a se ciamésse", + "visualeditor-dialog-meta-languages-code-label": "Còdiçe léngoa", + "visualeditor-dialog-meta-languages-label": "Léngoe", + "visualeditor-dialog-meta-languages-link-label": "Pàgina ligâ", + "visualeditor-dialog-meta-languages-name-label": "Léngoa", + "visualeditor-dialog-meta-languages-readonlynote": "Sta chi a l'é 'na lìsta de pàgine in âtre léngoe ch'én conligæ a quésta; pe òua, o peu êse modificòu sôlo in wikitèsto ò sciù Wikidata.", + "visualeditor-dialog-meta-languages-section": "Léngoe", + "visualeditor-dialog-meta-settings-displaytitle": "Tìtolo mostròu", + "visualeditor-dialog-meta-settings-displaytitle-help": "Ti peu cangiâ a vizoalizaçión do tìtolo de sta pàgina çernéndo 'n'etichétta da mostrâ diferénte.", + "visualeditor-dialog-meta-settings-hiddencat-help": "Ti peu inpedî che sta categorîa a ségge mostrâ inta lìsta de categorîe inte pàgine che ne fàn pàrte. Quésto o l'é ùtile pe-e categorîe che sèrvan a-i redatoî, ma a-a ciù gràn pàrte di letoî no gh'interèssan, cómme e pàgine che gh'àn de bezéugno de 'n'ilustraçión.", "visualeditor-dialog-meta-settings-hiddencat-label": "Categorîa ascôza", - "visualeditor-dialog-meta-settings-index-default": "Predefinio", + "visualeditor-dialog-meta-settings-index-default": "Predefinîo", "visualeditor-dialog-meta-settings-index-disable": "No", - "visualeditor-dialog-meta-settings-index-force": "Sci", - "visualeditor-dialog-meta-settings-index-help": "Ti poeu forsâ i motoî de serchia a elencâ sta paggina tra i so risultæ pertinenti, ò forsâli a no fâlo. Sta opsion a no l'influisce inta serchia interna do scito.", - "visualeditor-dialog-meta-settings-index-label": "Lascia che sta paggina chie a segge endexizâ da-i motoî de serchia", - "visualeditor-dialog-meta-settings-label": "Impostassioin paggina", - "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Predefinio", + "visualeditor-dialog-meta-settings-index-force": "Scì", + "visualeditor-dialog-meta-settings-index-help": "Ti peu forsâ i motoî de riçèrca a elencâ sta pàgina tra i sò rizultâti pertinénti, ò forsâli a no fâlo. St'opçión chi a no l'infloìsce inta riçèrca drent'a-o scîto.", + "visualeditor-dialog-meta-settings-index-label": "Làscia che sta pàgina chi a ségge indicizâ da-i motoî de riçèrca", + "visualeditor-dialog-meta-settings-label": "Inpostaçioìn da pàgina", + "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Predefinîo", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "No", - "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Sci", - "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Ti poeu forsâ a vixualizasion de 'n'atra scheda otr'a scheda \"$1\" sciu questa paggina, pe fassilitâ a zonta de 'na noeuva session, ò donque impedighe d'aparî s'a l'aviæ fæto.", - "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Mostra 'na scheda in questa paggina pe azonze 'na noeuva session", - "visualeditor-dialog-meta-settings-nocontentconvert-help": "Ti poeu impedî che-o contegnuo de sta paggina o segge aotomaticamente convertio inte di atre scritue.", - "visualeditor-dialog-meta-settings-nocontentconvert-label": "No convertî o contegnuo tra-e variante lenguisteghe", - "visualeditor-dialog-meta-settings-noeditsection-help": "Caxo mai ghe ne foise de bezoeugno, ti poeu impedî che rente a ciascun-a seçion ghe segge mostrou l'ingancio pe modificâla.", - "visualeditor-dialog-meta-settings-noeditsection-label": "Dizabillita l'ingancio de modiffica rente a ogni intestassion de sta paggina.", - "visualeditor-dialog-meta-settings-nogallery-help": "Ti poeu impedî che sta categoria a mette in mostra i so file in forma de galleria, into caxo ch'a no segge cosa oportun-a.", - "visualeditor-dialog-meta-settings-nogallery-label": "Dizattiva a galleria", - "visualeditor-dialog-meta-settings-notitleconvert-help": "Ti poeu impedî che-o tittolo de sta paggina o segge aotomaticamente convertio inte di atre scritue.", - "visualeditor-dialog-meta-settings-notitleconvert-label": "No convertî o tittolo tra variante lenguisteghe", - "visualeditor-dialog-meta-settings-redirect-help": "Ti poeu transformâ sta paggina inte 'n rendrisso, saiv'a dî 'na paggina ch'a porta aotomaticamente i lettoî a 'n'atra paggina de sta wiki. Quest'o ven ben pe-i ari d'ortografia, e i nommi ò i concetti equivalenti. Se ti o fæ, i letoî no vedian o contegnuo de questa paggina.", - "visualeditor-dialog-meta-settings-redirect-label": "Rendrissa sta paggina a", - "visualeditor-dialog-meta-settings-redirect-placeholder": "Paggina de destinassion pe-o rendrisso", - "visualeditor-dialog-meta-settings-redirect-statichelp": "Into rariscimo caxo che ghe ne segge de bezoeugno, ti poeu impedî che sto rendrisso o s'agiorne aotomaticamente quandi-a paggina dond'o l'aponta a vegne mesciâ.", - "visualeditor-dialog-meta-settings-redirect-staticlabel": "Impedisci che questo rendrisso o segge agiornou quande mescian a paggina de destinassion.", - "visualeditor-dialog-meta-settings-section": "Impostassioin paggina", - "visualeditor-dialog-meta-settings-toc-default": "Se necessaio", - "visualeditor-dialog-meta-settings-toc-disable": "Mai", - "visualeditor-dialog-meta-settings-toc-force": "Sempre", - "visualeditor-dialog-meta-settings-toc-help": "Ti fâ aparî 'na taoa di contegnui ch'a l'elenca i tittoli de ogni seçion inte de paggine con meno de quattro seçioin, ò donque no fâla aparî mai. Pe difetto a taoa di contegnui a compâ inte paggine che g'han aomanco quattro seçioin.", - "visualeditor-dialog-meta-settings-toc-label": "Mostra a Taoa di Contegnui", - "visualeditor-dialog-meta-templatesused-noresults": "Nisciun modello trovou.", - "visualeditor-dialog-meta-title": "Opçioin", - "visualeditor-dialog-table-collapsed": "Daprinsippio cegou", - "visualeditor-dialog-table-collapsible": "Cegæso", - "visualeditor-dialog-table-sortable": "Amerseive", - "visualeditor-dialog-table-wikitable": "Con stile (wikitable)", - "visualeditor-dialog-template-title": "Modello", - "visualeditor-dialog-transclusion-add-template": "Azonzi modello", - "visualeditor-dialog-transclusion-collapse-options": "Ascondi opsioin", - "visualeditor-dialog-transclusion-contextitem-description": "Generou da: $1", - "visualeditor-dialog-transclusion-expand-options": "Mostra i opsioin", - "visualeditor-dialog-transclusion-deprecated-parameter": "Campo obsoleto", - "visualeditor-dialog-transclusion-deprecated-parameter-description": "O campo o l'è obsoleto. $1", - "visualeditor-dialog-transclusion-loading": "Camallando…", - "visualeditor-dialog-transclusion-no-template-description": "O modello \"$1\" 'na descrission o no ghe l'ha ancon, ma poriæ vesighe de informassioin inta [[$2|paggina do modello]].", - "visualeditor-dialog-transclusion-param-default": "Predefinio: $1", - "visualeditor-dialog-transclusion-required-parameter": "Campo obrigatoio", - "visualeditor-dialog-transclusion-required-parameter-description": "O campo o l'è obrigatoio.", - "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Torna inderê", - "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Continnoa pægio", - "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Campo obrigatoio mancante|Campi obrigatori mancanti}}", - "visualeditor-dialog-transclusion-required-parameter-is-blank": "T'ê seguo de voei continoâ sensa impî {{PLURAL:$2|o campo|i campi}} $1?", - "visualeditor-dialogbutton-media-tooltip": "Inmaggine e file murtimediæ", - "visualeditor-dialogbutton-template-tooltip": "Modello", - "visualeditor-editconflict": "E modiffiche aportæ no poruan ese sarvæ pe via de 'n confrito d'edission. {{GENDER:|Ti voeu}} miga resciorve o confrito manualmente?", - "visualeditor-editingtabdialog-body": "{{SITENAME}} d'oua in avanti o s'aregorda quæ o l'è l'editor che ti prefeisci. Ti poeu scangiâ e modalitæ mentre t'ê aproeuvo a fâ modiffiche, e cangiâ e to preferense ciu tardi.", - "visualeditor-editingtabdialog-ok": "Doeuvia l'editor ch'ho doeuviou pe urtimo", - "visualeditor-editingtabdialog-title": "Schede de modiffica", - "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|avizo|avixi}}", - "visualeditor-editnotices-tooltip": "Avixi de modiffica", - "visualeditor-editsummary": "Descrivi cose t'hæ cangiou", - "visualeditor-editsummary-characters-remaining": "O nummero di caratteri che gh'arestan", - "visualeditor-educationpopup-dismiss": "Va ben, ho acapio.", + "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Scì", + "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Ti peu forsâ a vizoalizaçión de 'n'âtra schêda ciù che a schêda \"$1\" sciù sta pàgina chi, pe façilitâ l'azónta de 'na nêuva seçión, ò dónca inpedîghe d'aparî s'a l'aviæ fæto.", + "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Móstra 'na schêda inte sta pàgina chi pe'azónze 'na nêuva seçión", + "visualeditor-dialog-meta-settings-nocontentconvert-help": "Ti peu inpedî che-o contegnûo de sta pàgina chi o ségge convertîo in outomàtico inte de âtre scritûe.", + "visualeditor-dialog-meta-settings-nocontentconvert-label": "No convertî o contegnûo tra e variànte lengoìstiche", + "visualeditor-dialog-meta-settings-noeditsection-help": "Câxo mâi ghe ne foîse de bezéugno, ti peu inpedî che da-arénte a ciaschedùnn-a seçión ghe ségge mostròu o ligàmme pe modificâla.", + "visualeditor-dialog-meta-settings-noeditsection-label": "Dizabìlita o ligàmme de modìfica da-arénte a ògni intestaçión de sta pàgina chi.", + "visualeditor-dialog-meta-settings-nogallery-help": "Ti peu inpedî che sta categorîa a métte in móstra i sò file in fórma de galerîa, into câxo ch'a no ségge cösa òportùnn-a.", + "visualeditor-dialog-meta-settings-nogallery-label": "Dizatîva a galerîa", + "visualeditor-dialog-meta-settings-notitleconvert-help": "Ti peu inpedî che-o tìtolo de sta pàgina chi o ségge convertîo in outomàtico inte de âtre scritûe.", + "visualeditor-dialog-meta-settings-notitleconvert-label": "No convertî o tìtolo tra e variànte lengoìstiche", + "visualeditor-dialog-meta-settings-redirect-help": "Ti peu transformâ sta pàgina inte 'n rindirìsso, saiv'a dî 'na pàgina ch'a pòrta in outomàtico i letoî a 'n'âtra pàgina de sta wiki. Quest'o ven a tàggio pe-i eroî d'ortografîa e i nómmi ò i concètti equivalénti. Se ti o fæ, i letoî no vediàn o contegnûo de sta pàgina chi.", + "visualeditor-dialog-meta-settings-redirect-label": "Rindirìssa sta pàgina a", + "visualeditor-dialog-meta-settings-redirect-placeholder": "Pàgina de destinaçión pò-u rindirìsso", + "visualeditor-dialog-meta-settings-redirect-statichelp": "Into câxo rarìscimo che ghe ne ségge de bezéugno, ti peu inpedî che sto rindirìsso o s'agiórne in outomàtico quànde a pàgina dond'o pónta a vêgne mesciâ.", + "visualeditor-dialog-meta-settings-redirect-staticlabel": "Inpedìsci che sto rindirìsso chi o ségge agiornòu quànde l'é mesciòu a pàgina de destinaçión.", + "visualeditor-dialog-meta-settings-section": "Inpostaçioìn da pàgina", + "visualeditor-dialog-meta-settings-toc-default": "Se necesâio", + "visualeditor-dialog-meta-settings-toc-disable": "Mâi", + "visualeditor-dialog-meta-settings-toc-force": "De lóngo", + "visualeditor-dialog-meta-settings-toc-help": "Ti peu forsâ 'n ìndice co-a lìsta de tùtte e intestaçioìn inta pàgine in sce pàgine con mêno de quàttro seçioìn, ò dónca no fâla mâi aparî. Pe çèrnia predefinîa, o vêgne mostròu in outomàtico se a pàgina a gh'à quàttro o ciù seçioìn.", + "visualeditor-dialog-meta-settings-toc-label": "Móstra l'ìndice", + "visualeditor-dialog-meta-templatesused-noresults": "Nisciùn template trovòu.", + "visualeditor-dialog-meta-title": "Opçioìn", + "visualeditor-dialog-table-collapsed": "De bâze sequadrâ", + "visualeditor-dialog-table-collapsible": "Se peu sequadrâ", + "visualeditor-dialog-table-sortable": "Se peu ordinâ", + "visualeditor-dialog-table-wikitable": "Con stîle (wikitable)", + "visualeditor-dialog-template-title": "Template", + "visualeditor-dialog-transclusion-action-save": "Sàrva", + "visualeditor-dialog-transclusion-template-title-nonexistent": "Sto template chi o no l'exìste.", + "visualeditor-dialog-transclusion-template-title-modifier": "A documentaçión di template e i nómmi di [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter paràmetri] (se existàn) no són a dispoxiçión quànde se modìfica di template che dêuvian 'na scintàsci ò di modificatoî aniæ, cómme [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst].", + "visualeditor-dialog-transclusion-template-widget-aria": "Sciàcca Spàçio pe seleçionâ o template.", + "visualeditor-dialog-transclusion-template-widget-aria-selected": "Sciàcca Ctrl+Canc pe scancelâ o template, i sò paràmetri e i sò valoî. Sciàcca Ctrl+Maiusc+Frécce pe mesciâ o template in çìmma ò in bàsso.", + "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "Sciàcca Ctrl+Canc pe scancelâ o template, i sò paràmetri e i sò valoî.", + "visualeditor-dialog-transclusion-add-wikitext": "Azónzi wikitèsto", + "visualeditor-dialog-transclusion-add-param-error-alias": "\"$1\" o l'é za stæto azónto cómme \"$2\". Pe piâxéi, contròlla e opçioìn inta bâra laterâle. Sto fæto chi o l'é dovûo ò a l'ûzo de [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases alias] ò de [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label label].", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "\"$1\" o no peu êse azónto perché o paràmetro o l'é stæto marcòu cómme [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated sconpasòu].", + "visualeditor-dialog-transclusion-add-param-error-exists-selected": "No se peu azónze o paràmetro \"$2\" dôe vòtte.", + "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "O paràmetro \"$2\" o l'é za prónto a l'ûzo. Pe piâxéi, contròlla e opçioìn inta bâra laterâle.", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 o l'é 'n caràtere vietòu. Pe piâxéi, lévilo pe azónze o paràmetro.", + "visualeditor-dialog-transclusion-add-param-help": "Se conosciûi, ti peu inserî di nómmi de [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters paràmetri no documentæ]. Nòtta che sôlo i paràmetri prevìsti da-o template l'aviàn de efètto. Ti peu trovâ de informaçioìn in scî paràmetri prevìsti inta [[$1|pàgina do template]].", + "visualeditor-dialog-transclusion-add-param-placeholder": "Nómme do paràmetro", + "visualeditor-dialog-transclusion-add-param-save": "Azónzi", + "visualeditor-dialog-transclusion-add-template": "Azónzi template", + "visualeditor-dialog-transclusion-add-template-button": "Azónzi template", + "visualeditor-dialog-transclusion-add-template-save": "Azónzi", + "visualeditor-dialog-transclusion-add-undocumented-param": "Azónzi 'n paràmetro no documentòu", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "Tornâ a-a riçèrca? I tò cangiaménti saiàn pèrsci, e sto fæto o no peu êse desfæto.", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "Serâ l'editor do template? I tò cangiaménti saiàn pèrsci, e sto fæto o no peu êse desfæto.", + "visualeditor-dialog-transclusion-collapse-options": "Ascóndi opçioìn", + "visualeditor-dialog-transclusion-confirmation-discard": "Làscia pèrde e modìfiche", + "visualeditor-dialog-transclusion-confirmation-reject": "Contìnoa a modificâ", + "visualeditor-dialog-transclusion-contextitem-description": "Generòu da: $1", + "visualeditor-dialog-transclusion-contextitem-loading": "Caregaménto in córso…", + "visualeditor-dialog-transclusion-expand-options": "Móstra e opçioìn", + "visualeditor-dialog-transclusion-filter-hide-unused": "Ascóndi no deuviæ", + "visualeditor-dialog-transclusion-filter-no-match": "Nisciùn rizultâto trovòu", + "visualeditor-dialog-transclusion-filter-placeholder": "Trêuva cànpo", + "visualeditor-dialog-transclusion-filter-show-all": "Móstra tùtti", + "visualeditor-dialog-transclusion-filter-title": "Riçèrca paràmetri pe $1", + "visualeditor-dialog-transclusion-help-title": "Agiùtto in sce l'ûzo di template", + "visualeditor-dialog-transclusion-help-message": "I template façìlitan a formataçión di contegnûi. St'editor chi o móstra in sciâ mancìnn-a e opçioìn a dispoxiçión pe 'n template e in sciâ drîta i valoî poscìbili pe ciaschedùnn-a opçión.", + "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates Agiùtto in sce l'ûzo di template]", + "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions Scorsaieu da tastêa]", + "visualeditor-dialog-transclusion-deprecated-parameter": "Cànpo sconpasòu", + "visualeditor-dialog-transclusion-deprecated-parameter-description": "O cànpo o l'é sconpasòu. $1", + "visualeditor-dialog-transclusion-loading": "Caregaménto in córso...", + "visualeditor-dialog-transclusion-multipart-message": "Ti t'ê aprêuvo a modificâ 'n template e unn-a ò ciù parte de [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content contegnûo ligòu] (wikitèsto e/ò template de ciù)", + "visualeditor-dialog-transclusion-no-template-data-description": "A sto template chi o gh'amànca de [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData] e i sò paràmetri són stæti generæ in mòddo outomàtico. Cómme rizultâto a-o template e a-i sò paràmetri gh'amàncan e descriçión. Poriæ êsighe de informaçioìn de ciù inta [[$1|pàgina do template]].", + "visualeditor-dialog-transclusion-no-template-description": "O template \"$1\" o no gh'à ancón de descriçión, ma poriæ êsighe de informaçioìn inta [[$2|pàgina do template]].", + "visualeditor-dialog-transclusion-no-template-parameters": "Sto template chi o no gh'à de paràmetri documentæ e o poriæ êse destinòu a fonçionâ sénsa de sti chi.", + "visualeditor-dialog-transclusion-param-default": "Predefinîo: $1", + "visualeditor-dialog-transclusion-param-example-long": "Ezénpio: $1", + "visualeditor-dialog-transclusion-param-selection-aria-description": "Sciacâ Spàçio pe azónze ò levâ di paràmetri. Sciacâ Invîo pe azónze 'n paràmetro e modificâne in sciô moménto o valô. Quànde 'n paràmetro o l'é za çernûo, sciacâ in sce Invîo pe modificâne o valô.", + "visualeditor-dialog-transclusion-param-selection-aria-label": "Paràmetri inte $1", + "visualeditor-dialog-transclusion-param-undocumented": "(paràmetro no documentòu)", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Trêuva template", + "visualeditor-dialog-transclusion-required-parameter": "Cànpo òbrigatöio", + "visualeditor-dialog-transclusion-required-parameter-description": "O cànpo o l'é òbrigatöio.", + "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Tórna inderê", + "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Contìnoa pægio", + "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Cànpo òbrigatöio mancànte|Cànpi òbrigatöi mancànti}}", + "visualeditor-dialog-transclusion-required-parameter-is-blank": "T'ê segûo de voéi continoâ sénsa inpî {{PLURAL:$2|o cànpo|i cànpi}} $1?", + "visualeditor-dialog-transclusion-see-template": "I tempalte són generæ da l'uténte e pêuan mancâ de descriçioìn conplête. L'é poscìbile che ghe ségge de informaçioìn de ciù in sce sta [[$2|pàgina do template]].", + "visualeditor-dialog-transclusion-title-insert-template": "Inserìsci 'n template", + "visualeditor-dialog-transclusion-title-insert-known-template": "Inserìsci: $1", + "visualeditor-dialog-transclusion-title-edit-known-template": "Modìfica: $1", + "visualeditor-dialog-transclusion-title-edit-transclusion": "Contegnûo do template", + "visualeditor-dialog-transclusion-template-search": "Riçèrca template", + "visualeditor-dialog-transclusion-template-search-help": "Trêuva o template che ti veu inserî çercàndolo co-ina pòula ciâve ch'o-o identìfiche. I template con de descriçioìn gh'àn ciù tànte poscibilitæ de fonçionâ bén con l'editô vixîvo.", + "visualeditor-dialog-transclusion-wikitext": "Wikitèsto", + "visualeditor-dialog-transclusion-wikitext-widget-aria": "Sciàcca Spàçio pe seleçionâ l'eleménto wikitèsto. Sciàcca Invîo pe seleçionâ e modificâ o wikitèsto.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "Sciàcca Ctrl+Canc pe scancelâ l'eleménto wikitèsto. Sciàcca Ctrl+Maiusc+Frécce pe mesciâ l'eleménto in âto ò in bàsso.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "Sciàcca Ctrl+Canc pe scancelâ l'eleménto wikitèsto.", + "visualeditor-dialogbutton-media-tooltip": "Inmàgine e file multimediâli", + "visualeditor-dialogbutton-template-tooltip": "Template", + "visualeditor-editconflict": "E modìfiche fæte no poriàn êse sarvæ pe vîa de 'n conflìtto d'ediçión. {{GENDER:|Ti veu}} mîga arangiâ o conflìtto a màn?", + "visualeditor-editingtabdialog-body": "{{SITENAME}} d'òua in avànti o s'aregòrda quæ o l'é l'editor che ti preferìsci. Ti peu scangiâ e modalitæ méntre t'ê aprêuvo a fâ de modìfiche, e cangiâ e tò preferénse ciù tàrdi.", + "visualeditor-editingtabdialog-ok": "Dêuvia l'editor ch'ò dêuviòu inta mæ ùrtima modìfica", + "visualeditor-editingtabdialog-title": "Schêde de modìfica", + "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|avîzo|avîxi}}", + "visualeditor-editnotices-tooltip": "Avîxi de modìfica", + "visualeditor-editsummary": "Descrîvi cöse t'æ cangiòu", + "visualeditor-editsummary-characters-remaining": "O nùmero di caràteri che gh'arèstan", + "visualeditor-educationpopup-dismiss": "Va bén, ò acapîo.", + "visualeditor-expandable-less": "Mêno", + "visualeditor-expandable-more": "Âtro", "visualeditor-feedback-defaultmessage": "URL: $1", - "visualeditor-formatdropdown-format-mw-heading1": "Tittolo da paggina", - "visualeditor-formatdropdown-format-mw-heading2": "Intestassion", - "visualeditor-formatdropdown-format-mw-heading3": "Sottintestassion 1", - "visualeditor-formatdropdown-format-mw-heading4": "Sottintestassion 2", - "visualeditor-formatdropdown-format-mw-heading5": "Sottintestassion 3", - "visualeditor-formatdropdown-format-mw-heading6": "Sottintestassion 4", - "visualeditor-generating-wikitext-progress": "Generassion do wikitesto", - "visualeditor-languages-tool": "Lengoe", - "visualeditor-linkinspector-button-link-external": "Scito esterno", - "visualeditor-linkinspector-button-link-internal": "Serca inte paggine interne", - "visualeditor-linkinspector-convert-link-isbn": "Converti in ingancio ISBN", - "visualeditor-linkinspector-convert-link-pmid": "Converti in ingancio PMID", - "visualeditor-linkinspector-convert-link-rfc": "Converti in ingancio RFC", - "visualeditor-linkinspector-educationpopup-text": "Ingancia de parolle importante a di atre voxe da wiki o scin-a di atri sciti web. Questo o l'agiutiâ i lettoî a capî o contesto.", - "visualeditor-linkinspector-educationpopup-title": "Inganci", - "visualeditor-linkinspector-illegal-title": "Tittolo de paggina non vallido", - "visualeditor-linkinspector-invalid-external": "Scrivi un URL completo, prezempio: https://example.org", - "visualeditor-linknodeinspector-add-label": "Azonzi etichetta", - "visualeditor-linknodeinspector-title": "Ingancio sencio", - "visualeditor-magiclinknodeinspector-convert-link": "Converti in ingancio sencio", - "visualeditor-magiclinknodeinspector-title-isbn": "Ingancio ISBN", - "visualeditor-magiclinknodeinspector-title-pmid": "Ingancio PMID", - "visualeditor-magiclinknodeinspector-title-rfc": "Ingancio RFC", - "visualeditor-media-title-audio": "Aodio", - "visualeditor-media-title-image": "Inmaggine", - "visualeditor-media-title-video": "Viddeo", - "visualeditor-meta-tool": "Opçioin", - "visualeditor-mweditmode-tooltip": "Cangia editor", - "visualeditor-mweditmodesource-progress": "Passaggio a-a modiffica wikitesto…", - "visualeditor-mweditmodesource-tool-current": "Modiffica wikitesto", - "visualeditor-mweditmodesource-tool-unavailable": "A modiffica do wikitesto chì a no l'è disponibbile", - "visualeditor-mweditmodeve-popup-body": "Ti poeu tornâ a-a modiffica vixoâ quande ti voeu clicando questa icon-a.", - "visualeditor-mweditmodeve-popup-title": "T'ê passou a-a modiffica wikitesto", - "visualeditor-mweditmodeve-progress": "Passaggio a-a modiffica vixoâ…", - "visualeditor-mweditmodeve-showagain": "No mostrâme ciù sto messaggio", - "visualeditor-mweditmodeve-tool-current": "Modiffica vixoâ", - "visualeditor-mweditmodeve-tool-unavailable": "A modiffica vixoâ chì a no l'è disponibbile", - "visualeditor-mweditmodewt-popup-body": "Ti poeu tornâ a-a modiffica wikitesto quande ti voeu clicando questa icon-a.", - "visualeditor-mweditmodewt-popup-title": "T'ê passou a-a modiffica vixoâ", - "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|inmaggine}}", - "visualeditor-mwgallerydialog-caption-field-label": "Didascalia galleria", - "visualeditor-mwgallerydialog-card-images": "Inmaggine", - "visualeditor-mwgallerydialog-card-options": "Opçioin", - "visualeditor-mwgallerydialog-classes-field-label": "Classe CSS", - "visualeditor-mwgallerydialog-classes-input-placeholder": "Nommi de classe, separæ da-i spaççi", - "visualeditor-mwgallerydialog-empty-gallery-message": "A galleria a l'è voeua.", - "visualeditor-mwgallerydialog-heights-field-label": "Ateçça inmaggine", - "visualeditor-mwgallerydialog-heights-input-placeholder": "Atessa predefinia: $1 px", - "visualeditor-mwgallerydialog-mode-dropdown-label-nolines": "Tradissionâ sensa contorni", - "visualeditor-mwgallerydialog-mode-dropdown-label-packed": "Impachetou", - "visualeditor-mwgallerydialog-mode-dropdown-label-packed-hover": "Impachetou con didascalie se ti ghe passi o pontatô", - "visualeditor-mwgallerydialog-mode-dropdown-label-packed-overlay": "Impachetou con didascalie sorvimposte", - "visualeditor-mwgallerydialog-mode-dropdown-label-slideshow": "Presentassion de diapoxitive", - "visualeditor-mwgallerydialog-mode-dropdown-label-traditional": "Tradissionâ", - "visualeditor-mwgallerydialog-mode-field-label": "Modalitæ de vixoalizassion", - "visualeditor-mwgallerydialog-perrow-field-label": "Inmaggine pe riga", - "visualeditor-mwgallerydialog-remove-button-label": "Leva inmaggine", - "visualeditor-mwgallerydialog-search-button-label": "Metti noeuva inmaggine", - "visualeditor-mwgallerydialog-show-filename-field-label": "Mostra i nommi di file", - "visualeditor-mwgallerydialog-styles-field-label": "Stili CSS", - "visualeditor-mwgallerydialog-styles-input-placeholder": "Reggole CSS, separæ da ponto e virgola", - "visualeditor-mwgallerydialog-title": "Galleria", - "visualeditor-mwgallerydialog-widths-field-label": "Largheçça inmaggine", - "visualeditor-mwgallerydialog-widths-input-placeholder": "Larghessa predefinia: $1 px", - "visualeditor-mwpredialog-convert": "Consenti i stili de scrito", - "visualeditor-mwpredialog-title": "Scrito semplise preformattou", - "visualeditor-mwsignature-tool": "A to firma", - "visualeditor-preference-newwikitexteditor-enable": "Adoeuvia a modalitæ wikitesto drent'a l'editô vixoâ, invece che doeuviâ 'n atro editor de wikitesto.", - "visualeditor-preference-tabs": "Modalitæ de modiffica:", - "visualeditor-preference-tabs-multi-tab": "Mostrime tutte doe e schede de modiffica", - "visualeditor-preference-tabs-prefer-ve": "Damme sempre l'editor vixoâ, se poscibbile", - "visualeditor-preference-tabs-prefer-wt": "Damme sempre l'editor wikitesto", - "visualeditor-preference-tabs-remember-last": "Aregordite o mæ urtimo editor", - "visualeditor-rebase-client-export": "Esporta", - "visualeditor-rebase-client-import": "Importa", - "visualeditor-rebase-client-import-name": "Tittolo da paggina", - "visualeditor-recreate": "Sta pagina a l'è stæta eliminâ doppo che t'hæ inçou a modiffica. Sciacca \"$1\" pe ricreâla.", - "visualeditor-redirect-description": "Rendriçço a $1", - "visualeditor-savedialog-identify-anon": "T'oeu sarvâ sta paggina comme utente anonnimo? O to adresso IP o saiâ registrou inta cronologia da paggina.", - "visualeditor-savedialog-identify-user": "T'ê introu comme [[User:$1|$1]]. Se ti sarvi 'na modiffica, questa a saiâ associâ a questa utensa.", - "visualeditor-savedialog-keyboard-shortcut-submit": "Ti poeu sciacâ $1 pe sarvâ a to modiffica.", - "visualeditor-savedialog-label-publish-short": "Pubbrica", - "visualeditor-savedialog-label-publish-short-start": "Pubbrica…", - "visualeditor-savedialog-label-resolve-conflict": "Resciorvi o confrito", - "visualeditor-savedialog-label-resume-editing": "Repiggia a modificâ", - "visualeditor-savedialog-label-review": "Rilezi e modiffiche", - "visualeditor-savedialog-label-review-good": "Torna a-o moddulo de sarvataggio", - "visualeditor-savedialog-label-save-short": "Sarva", - "visualeditor-savedialog-label-save-short-start": "Sarva...", - "visualeditor-savedialog-review-nosummary": "Nisciun oggetto da modiffica", - "visualeditor-savedialog-review-visual": "Vixoâ", + "visualeditor-formatdropdown-format-mw-heading1": "Tìtolo da pàgina", + "visualeditor-formatdropdown-format-mw-heading2": "Intestaçión", + "visualeditor-formatdropdown-format-mw-heading3": "Sotintestaçión 1", + "visualeditor-formatdropdown-format-mw-heading4": "Sotintestaçión 2", + "visualeditor-formatdropdown-format-mw-heading5": "Sotintestaçión 3", + "visualeditor-formatdropdown-format-mw-heading6": "Sotintestaçión 4", + "visualeditor-generating-wikitext-progress": "Generaçión do wikitèsto", + "visualeditor-includes-noinclude-start": "Coménso do contegnûo levòu da-i estræti", + "visualeditor-includes-noinclude-end": "Fìn do contegnûo levòu da-i estræti", + "visualeditor-includes-onlyinclude-start": "Coménso do contegnûo permìsso inti estræti", + "visualeditor-includes-onlyinclude-end": "Fìn do contegnûo permìsso inti estræti", + "visualeditor-includes-includeonly": "Sôlo o contegnûo inti estræti", + "visualeditor-includes-noinclude-description": "Quànde o contegnûo de sta pàgina o l'é dêuviòu da 'n'âtra pàgina, o contegnûo da chi scìnn-a-o marcatô de fìn corispondénte o no saiâ conpréizo. Fànni atençión quànde ti modìfichi o contegnûo a-o de fêua de sti marcatoî chi, dæto che de âtre pàgine poriéivan dêuviâlo.", + "visualeditor-includes-onlyinclude-description": "Quànde o contegnûo de sta pàgina o l'é dêuviòu da 'n'âtra pàgina, sôlo che o contegnûo da chi scìnn-a-o marcatô de fìn corispondénte o saiâ conpréizo. Fànni atençión quànde ti modìfichi o contegnûo tra sti marcatoî, dæto che de âtre pàgine poriéivan deuviâlo.", + "visualeditor-includes-includeonly-description": "Quànde o contegnûo de sta pàgina o l'é dêuviòu inte 'n'âtra pàgina, o contegnûo aprêuvo de ciù o saiâ conpréizo chi:", + "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Informaçioìn de ciù in sciâ transcluxón parçiâle]", + "visualeditor-languages-tool": "Léngoe", + "visualeditor-linkcontext-uneditable": "Spiaxénti, pò-u moménto sto ligàmme chi o peu êse modificòu sôlo che in modalitæ wikitèsto.", + "visualeditor-linkinspector-button-link-external": "Scîto estèrno", + "visualeditor-linkinspector-button-link-internal": "Çèrca inte pàgine intèrne", + "visualeditor-linkinspector-convert-link-isbn": "Convèrti in ligàmme ISBN", + "visualeditor-linkinspector-convert-link-pmid": "Convèrti in ligàmme PMID", + "visualeditor-linkinspector-convert-link-rfc": "Convèrti in ligàmme RFC", + "visualeditor-linkinspector-educationpopup-text": "Lîga de pòule inportànte a de âtre vôxe inta wiki ò scìnn-a a di âtri scîti web. Quésto o l'agiutiâ i letoî a capî o contèsto.", + "visualeditor-linkinspector-educationpopup-title": "Ligàmmi", + "visualeditor-linkinspector-illegal-title": "Tìtolo de pàgina no vàlido", + "visualeditor-linkinspector-invalid-blocked": "I contribotoî da wiki àn decîzo de blocâ i ligàmmi a sto scîto chi. Pe piâxéi, dêuvia 'n âtro ligàmme.", + "visualeditor-linkinspector-invalid-external": "Scrîvi 'n URL conplêto, prezénpio: https://example.org", + "visualeditor-linknodeinspector-add-label": "Azónzi etichétta", + "visualeditor-linknodeinspector-title": "Ligàmme séncio", + "visualeditor-magiclinknodeinspector-convert-link": "Convèrti in ligàmme séncio", + "visualeditor-magiclinknodeinspector-title-isbn": "Ligàmme ISBN", + "visualeditor-magiclinknodeinspector-title-pmid": "Ligàmme PMID", + "visualeditor-magiclinknodeinspector-title-rfc": "Ligàmme RFC", + "visualeditor-media-title-audio": "Àodio", + "visualeditor-media-title-image": "Inmàgine", + "visualeditor-media-title-video": "Vìdeo", + "visualeditor-meta-tool": "Opçioìn", + "visualeditor-mweditmode-tooltip": "Càngia editor", + "visualeditor-mweditmodesource-progress": "Pasàggio a-a modìfica wikitèsto...", + "visualeditor-mweditmodesource-tool-current": "Modìfica wikitèsto", + "visualeditor-mweditmodesource-tool-unavailable": "A modìfica do wikitèsto chi a no l'é disponìbile", + "visualeditor-mweditmodeve-popup-body": "Ti peu tornâ a-a modìfica vizoâle quànde ti veu sciacàndo in sce st'icónn-a chi.", + "visualeditor-mweditmodeve-popup-title": "T'ê pasòu a-a modìfica wikitèsto", + "visualeditor-mweditmodeve-progress": "Pasàggio a-a modìfica vizoâle...", + "visualeditor-mweditmodeve-showagain": "No mostrâme ciù sto mesàggio", + "visualeditor-mweditmodeve-tool-current": "Modìfica vizoâle", + "visualeditor-mweditmodeve-tool-unavailable": "A modìfica vizoâle chi a no l'é disponìbile", + "visualeditor-mweditmodewt-popup-body": "Ti peu tornâ a-a modìfica wikitèsto quànde ti veu sciacàndo in sce st'icónn-a chi.", + "visualeditor-mweditmodewt-popup-title": "Ti t'ê pasòu a-a modìfica vizoâle", + "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|inmàgine}}", + "visualeditor-mwgallerydialog-caption-field-label": "Didascalîa da galerîa", + "visualeditor-mwgallerydialog-card-images": "Inmàgine", + "visualeditor-mwgallerydialog-card-options": "Opçioìn", + "visualeditor-mwgallerydialog-classes-field-label": "Clàsse CSS", + "visualeditor-mwgallerydialog-classes-input-placeholder": "Nómmi de clàsse, separæ da di spàççi", + "visualeditor-mwgallerydialog-empty-gallery-message": "A galerîa a l'é vêua.", + "visualeditor-mwgallerydialog-heights-field-label": "Ertéssa inmàgine", + "visualeditor-mwgallerydialog-heights-input-placeholder": "Ertéssa predefinîa: $1 px", + "visualeditor-mwgallerydialog-mode-dropdown-label-nolines": "Tradiçionâle sénsa de contórni", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed": "Inpachetòu", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed-hover": "Inpachetòu con didascalîe se ti ghe pàssi o pontatô", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed-overlay": "Inpachetòu con didascalîe sorvinpòste", + "visualeditor-mwgallerydialog-mode-dropdown-label-slideshow": "Prezentaçión de diapoxitîve", + "visualeditor-mwgallerydialog-mode-dropdown-label-traditional": "Tradiçionâle", + "visualeditor-mwgallerydialog-mode-field-label": "Modalitæ de vizoalizaçión", + "visualeditor-mwgallerydialog-perrow-field-label": "Inmàgine pe rîga", + "visualeditor-mwgallerydialog-remove-button-label": "Lêva inmàgine", + "visualeditor-mwgallerydialog-search-button-label": "Métti nêuva inmàgine", + "visualeditor-mwgallerydialog-show-filename-field-label": "Móstra i nómmi di file", + "visualeditor-mwgallerydialog-styles-field-label": "Stîli CSS", + "visualeditor-mwgallerydialog-styles-input-placeholder": "Régole CSS, separæ da pónto e vìrgola", + "visualeditor-mwgallerydialog-title": "Galerîa", + "visualeditor-mwgallerydialog-widths-field-label": "Larghéssa inmàgine", + "visualeditor-mwgallerydialog-widths-input-placeholder": "Larghéssa predefinîa: $1 px", + "visualeditor-mwpredialog-convert": "Consentî i stîli de scrîto", + "visualeditor-mwpredialog-title": "Scrîto sénplice preformatòu", + "visualeditor-mwsignature-tool": "A tò fìrma", + "visualeditor-preference-visualeditor": "Atîva l'editor vizoâle", + "visualeditor-preference-newwikitexteditor-enable": "Dêuvia a modalitæ wikitèsto drent'a l'editô vizoâle, in càngio che dêuviâ 'n âtro editor de wikitèsto", + "visualeditor-preference-newwikitexteditor-help": "Conosciûo ascì cómme 'l'editô de wikitèsto 2017'.", + "visualeditor-preference-tabs": "Modalitæ de modìfica:", + "visualeditor-preference-tabs-multi-tab": "Móstrime tùtte dôe e schêde de modìfica", + "visualeditor-preference-tabs-prefer-ve": "Dêuvia de lóngo l'editor vizoâle, se poscìbile", + "visualeditor-preference-tabs-prefer-wt": "Dêuvia de lóngo l'editor wikitèsto", + "visualeditor-preference-tabs-remember-last": "Aregòrdite o mæ ùrtimo editor", + "visualeditor-preference-collab-label": "Modìfica colaboratîva", + "visualeditor-preference-collab-description": "Invîta di âtri uténti a pigiâ pàrte a-a tò sesción de modìfica inte l'editor vizoâle.", + "visualeditor-rebase-client-export": "Espòrta", + "visualeditor-rebase-client-export-start": "Espòrta...", + "visualeditor-rebase-client-import": "Inpòrta", + "visualeditor-rebase-client-import-name": "Tìtolo da pàgina", + "visualeditor-rebase-client-title-help": "Ti poriæ riçéive e modìfiche prìmma de sarvâ.", + "visualeditor-recreate": "Sta pàgina a l'é stæta eliminâ dòppo che t'æ comensòu a modìfica. Sciàcca \"$1\" pe creâla tórna.", + "visualeditor-redirect-description": "Rindirìsso a $1", + "visualeditor-savedialog-identify-anon": "Ti no t'ê ciù conésso. Se ti væ avànti, o tò indirìsso IP o saiâ registròu inta cronologîa da pàgina.", + "visualeditor-savedialog-identify-temp": "Òua ti dêuvi o nómme uténte tenporànio $1. Se ti væ avànti, a tò modìfica a saiâ asociâ a sto nómme uténte chi.", + "visualeditor-savedialog-identify-user": "Ti t'ê introu cómme [[User:$1|$1]]. Se ti væ avànti, a tò modìfica a saiâ asociâ a st'uténsa chi.", + "visualeditor-savedialog-keyboard-shortcut-submit": "Ti peu sciacâ $1 pe sarvâ a tò modìfica.", + "visualeditor-savedialog-label-publish-short": "Pùbbrica", + "visualeditor-savedialog-label-publish-short-start": "Pùbbrica...", + "visualeditor-savedialog-label-resolve-conflict": "Arangiâ o conflìtto", + "visualeditor-savedialog-label-resume-editing": "Repìggia a modificâ", + "visualeditor-savedialog-label-review": "Véddi tórna e modìfiche", + "visualeditor-savedialog-label-review-good": "Tórna a-o mòdolo de sarvatàggio", + "visualeditor-savedialog-label-save-short": "Sàrva", + "visualeditor-savedialog-label-save-short-start": "Sàrva...", + "visualeditor-savedialog-review-nosummary": "Nisciùn ògètto da modìfica", + "visualeditor-savedialog-review-visual": "Vizoâle", "visualeditor-savedialog-review-wikitext": "Wikitèsto", - "visualeditor-savedialog-title-conflict": "Confrito", - "visualeditor-savedialog-title-preview": "Anteprimma de modiffiche", - "visualeditor-savedialog-title-review": "Rilezi e to modiffiche", - "visualeditor-savedialog-title-save": "Sarva e to modiffiche", - "visualeditor-section-body-placeholder": "Noeuva seçion", - "visualeditor-section-title-placeholder": "Ogetto", - "visualeditor-loaderror-revidconflict": "I ID de revixon restitoii da-o serviou no corispondan (documento: $1, metadæti: $2).", - "visualeditor-loaderror-wrongmode": "Tentativo de caregâ l'editô in modalitæ sbaliâ (tipo de dæti: \"$1\", modalitæ de l'editor: \"$2\").", - "visualeditor-settings-tool": "Impostassioin paggina", - "visualeditor-special-characters-group-other": "Doeuviou soventi", - "visualeditor-templatesused-tool": "Modelli utilizæ", - "visualeditor-title-error": "Tittolo non vallido.", - "visualeditor-toload": "Oua saiâ caregou l'editor. Se doppo quarche segondi ti veddi ancon sto messaggio [$1 ricarrega a paggina].", - "visualeditor-version-label": "Verscion", - "visualeditor-wikitext-progress": "Converscion wikitesto", - "visualeditor-wikitext-warning": "T'ê aprœuv'a dœuviâ l'editor vixoâ - o [[{{MediaWiki:visualeditor-wikitext-warning-link}}|wikitesto]] chie o no fonsion-a. Pe passâ a-a modiffica wikitesto quandessessæ sensa perde e to modiffiche, clicca o pomello de cangio.", - "visualeditor-wikitext-warning-title": "Rilevou wikitesto", - "visualeditor-wikitextconvert-title": "Convertî a formatassion in wikitesto?", - "visualeditor-wikitextconvert-message": "O cotegnuo che t'hæ incolou o conten da formatassion. T'œu convertîlo in wikitesto ò inseilo comme scrito normale?", - "visualeditor-wikitextconvert-convert": "Converti in wikitesto" + "visualeditor-savedialog-title-conflict": "Conflìtto", + "visualeditor-savedialog-title-preview": "Anteprìmma de modìfiche", + "visualeditor-savedialog-title-review": "Rilêzi e tò modìfiche", + "visualeditor-savedialog-title-save": "Sàrva e tò modìfiche", + "visualeditor-section-body-placeholder": "Nêuva seçión", + "visualeditor-section-title-placeholder": "Ògètto", + "visualeditor-loaderror-revidconflict": "I ID de revixón restitoîi da-o server no corispóndan (documénto: $1, metadæti: $2).", + "visualeditor-loaderror-wrongmode": "Tentatîvo de caregâ l'editô in modalitæ sbaliâ (tîpo de dæti: \"$1\", modalitæ de l'editor: \"$2\").", + "visualeditor-settings-tool": "Inpostaçioìn da pàgina", + "visualeditor-special-characters-group-other": "Dêuviòu de spésso", + "visualeditor-templatesused-tool": "Template deuviæ", + "visualeditor-title-error": "Tìtolo no vàlido.", + "visualeditor-toload": "Òua saiâ caregòu l'editor. Se pasòu quàrche segóndo ti véddi ancón sto mesàggio chi, pe piâxéi [$1 càrega tórna a pàgina].", + "visualeditor-tooltip-non-breaking-space": "Spàçio unificatô", + "visualeditor-version-label": "Versción", + "visualeditor-wikitext-progress": "Conversción wikitèsto", + "visualeditor-wikitext-warning": "T'ê aprêuvo a dêuviâ l'editor vizoâle - o [[{{MediaWiki:visualeditor-wikitext-warning-link}}|wikitèsto]] chi o no fonçiónn-a. Pe pasâ a-a modìfica wikitèsto quànde se sæ sénsa pèrde e tò modìfiche, sciàcca in sciô poméllo de càngio.", + "visualeditor-wikitext-warning-title": "Rilevòu wikitèsto", + "visualeditor-wikitextconvert-title": "Convertî a formataçión in wikitèsto?", + "visualeditor-wikitextconvert-message": "O contegnûo che ti t'æ inpastetòu o contêgne da formataçión. Ti veu convertîlo in wikitèsto ò inserîlo cómme scrîto normâle?", + "visualeditor-wikitextconvert-convert": "Convèrti in wikitèsto" } diff --git a/i18n/ve-mw/mwlanguagevariant/lij.json b/i18n/ve-mw/mwlanguagevariant/lij.json index 8a0c6a384d..032ec5902f 100644 --- a/i18n/ve-mw/mwlanguagevariant/lij.json +++ b/i18n/ve-mw/mwlanguagevariant/lij.json @@ -1,45 +1,46 @@ { "@metadata": { "authors": [ - "Giromin Cangiaxo" + "Giromin Cangiaxo", + "N. Longo" ] }, - "visualeditor-mwlanguagevariant-disabled": "Converscion de variante dizabilitâ", - "visualeditor-mwlanguagevariant-filter": "Variante filtræ a $1", - "visualeditor-mwlanguagevariant-name": "Nomme da lengua: $1", - "visualeditor-mwlanguagevariant-oneway": "Converscion a senso unnico: $1", - "visualeditor-mwlanguagevariant-twoway": "Converscion de lengua: $1", - "visualeditor-mwlanguagevariant-unknown": "Variante de lengoa", - "visualeditor-mwlanguagevariantcontextitem-flag-describe": "Sta chì a l'è 'na reggola descrita.", - "visualeditor-mwlanguagevariantcontextitem-flag-hidden": "Sta chì a l'è 'na reggola ascoza.", - "visualeditor-mwlanguagevariantcontextitem-flag-title": "Sta reggola chì a pertocca o tittolo da paggina.", - "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Coddiçe lengua", - "visualeditor-mwlanguagevariantcontextitem-rule-invalid-language-label": "Invallido", - "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "Lengua", - "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "Vivagna", - "visualeditor-mwlanguagevariantcontextitem-rule-text-to-label": "Destinassion", - "visualeditor-mwlanguagevariantcontextitem-rule-text-twoway-label": "Scrito", - "visualeditor-mwlanguagevariantcontextitem-title-disabled": "Converscion de variante dizabilitâ", - "visualeditor-mwlanguagevariantcontextitem-title-filter": "Filtro de variante", - "visualeditor-mwlanguagevariantcontextitem-title-name": "Nomme da lengua", - "visualeditor-mwlanguagevariantcontextitem-title-oneway": "Reggola de converscion a senso unnico", - "visualeditor-mwlanguagevariantcontextitem-title-twoway": "Reggola de converscion de lengua", - "visualeditor-mwlanguagevariantcontextitem-title-unknown": "Variante de lengoa", - "visualeditor-mwlanguagevariantinspector-disabled-placeholder": "Scrito protezuo da-a converscion de variante", - "visualeditor-mwlanguagevariantinspector-filter-langs-label": "Lengoe", - "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "Coddiçe lengua", - "visualeditor-mwlanguagevariantinspector-filter-text-label": "Contegnui", - "visualeditor-mwlanguagevariantinspector-filter-text-placeholder": "Scrito filtrou", - "visualeditor-mwlanguagevariantinspector-oneway-add-button": "Azonxi noeuvo caxo", - "visualeditor-mwlanguagevariantinspector-oneway-clear-button": "Leva caxo", - "visualeditor-mwlanguagevariantinspector-oneway-from-text-placeholder": "Vivagna do scrito", - "visualeditor-mwlanguagevariantinspector-oneway-to-text-placeholder": "Variante do scrito", - "visualeditor-mwlanguagevariantinspector-title-disabled": "Converscion de variante dizabilitâ", - "visualeditor-mwlanguagevariantinspector-title-filter": "Filtro de variante", - "visualeditor-mwlanguagevariantinspector-title-name": "Nomme da lengua", - "visualeditor-mwlanguagevariantinspector-title-oneway": "Reggola de converscion a senso unnico", - "visualeditor-mwlanguagevariantinspector-title-twoway": "Reggola de converscion de lengua", - "visualeditor-mwlanguagevariantinspector-twoway-add-button": "Azonxi noeuvo caxo", - "visualeditor-mwlanguagevariantinspector-twoway-clear-button": "Leva caxo", - "visualeditor-mwlanguagevariantinspector-twoway-text-placeholder": "Variante do scrito" + "visualeditor-mwlanguagevariant-disabled": "Conversción de variànte dizabilitâ", + "visualeditor-mwlanguagevariant-filter": "Variànte filtræ a $1", + "visualeditor-mwlanguagevariant-name": "Nómme da léngoa: $1", + "visualeditor-mwlanguagevariant-oneway": "Conversción a sénso ùnico: $1", + "visualeditor-mwlanguagevariant-twoway": "Conversción de léngoa: $1", + "visualeditor-mwlanguagevariant-unknown": "Variànte de léngoa", + "visualeditor-mwlanguagevariantcontextitem-flag-describe": "Sta chi a l'é 'na régola descrîta.", + "visualeditor-mwlanguagevariantcontextitem-flag-hidden": "Sta chi a l'é 'na régola ascôza.", + "visualeditor-mwlanguagevariantcontextitem-flag-title": "Sta régola chi a pertócca o tìtolo da pàgina.", + "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Còdiçe léngoa", + "visualeditor-mwlanguagevariantcontextitem-rule-invalid-language-label": "No vàlido", + "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "Léngoa", + "visualeditor-mwlanguagevariantcontextitem-rule-text-from-label": "Vivàgna", + "visualeditor-mwlanguagevariantcontextitem-rule-text-to-label": "Destinaçión", + "visualeditor-mwlanguagevariantcontextitem-rule-text-twoway-label": "Scrîto", + "visualeditor-mwlanguagevariantcontextitem-title-disabled": "Conversción de variànte dizabilitâ", + "visualeditor-mwlanguagevariantcontextitem-title-filter": "Fìltro de variànte", + "visualeditor-mwlanguagevariantcontextitem-title-name": "Nómme da léngoa", + "visualeditor-mwlanguagevariantcontextitem-title-oneway": "Régola de conversción a sénso ùnico", + "visualeditor-mwlanguagevariantcontextitem-title-twoway": "Régola de conversción de léngoa", + "visualeditor-mwlanguagevariantcontextitem-title-unknown": "Variànte de léngoa", + "visualeditor-mwlanguagevariantinspector-disabled-placeholder": "Scrîto protezûo da-a conversción de variànte", + "visualeditor-mwlanguagevariantinspector-filter-langs-label": "Léngoe", + "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "Còdiçe léngoa", + "visualeditor-mwlanguagevariantinspector-filter-text-label": "Contegnûi", + "visualeditor-mwlanguagevariantinspector-filter-text-placeholder": "Tèsto filtròu", + "visualeditor-mwlanguagevariantinspector-oneway-add-button": "Azónzi nêuvo câxo", + "visualeditor-mwlanguagevariantinspector-oneway-clear-button": "Lêva câxo", + "visualeditor-mwlanguagevariantinspector-oneway-from-text-placeholder": "Vivàgna do scrîto", + "visualeditor-mwlanguagevariantinspector-oneway-to-text-placeholder": "Variànte do scrîto", + "visualeditor-mwlanguagevariantinspector-title-disabled": "Conversción de variànte dizabilitâ", + "visualeditor-mwlanguagevariantinspector-title-filter": "Fìltro de variànte", + "visualeditor-mwlanguagevariantinspector-title-name": "Nómme da léngoa", + "visualeditor-mwlanguagevariantinspector-title-oneway": "Régola de conversción a sénso ùnico", + "visualeditor-mwlanguagevariantinspector-title-twoway": "Régola de conversción da léngoa", + "visualeditor-mwlanguagevariantinspector-twoway-add-button": "Azónzi nêuvo câxo", + "visualeditor-mwlanguagevariantinspector-twoway-clear-button": "Lêva câxo", + "visualeditor-mwlanguagevariantinspector-twoway-text-placeholder": "Variànte do scrîto" } diff --git a/i18n/ve-wmf/ce.json b/i18n/ve-wmf/ce.json index 6319012af3..392d5568e2 100644 --- a/i18n/ve-wmf/ce.json +++ b/i18n/ve-wmf/ce.json @@ -15,7 +15,7 @@ "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редакторца]] дина нисдарш", "tag-visualeditor-needcheck": "БӀаьран редактор: талла", "tag-visualeditor-needcheck-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редакторан]] гӀоьнца дина нисдар, цунна чохь системин карийна нийса боцу вики-текстан хийцамаш.", - "tag-visualeditor-wikitext": "вики-йозан 2017 редактор", + "tag-visualeditor-wikitext": "вики-текстан редактор 2017", "tag-visualeditor-wikitext-description": "Нисдар дина вики-текст 2017 редакторан гӀоьнца", "tag-visualeditor-switched": "бӀаьран редактор дӀадайина", "tag-visualeditor-switched-description": "Декъашхо бӀаьран редакторца хийцамаш бан болийна, цул тӀаьхьа вики-текстан редактор чохь хийцамаш бира цо.", diff --git a/i18n/ve-wmf/lij.json b/i18n/ve-wmf/lij.json index 35f7064f0b..fe36fa124e 100644 --- a/i18n/ve-wmf/lij.json +++ b/i18n/ve-wmf/lij.json @@ -1,24 +1,34 @@ { "@metadata": { "authors": [ - "Giromin Cangiaxo" + "Giromin Cangiaxo", + "N. Longo" ] }, - "tag-visualeditor": "Modiffica visuale", - "tag-visualeditor-description": "Modiffica fæta dœuviando l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor vixoâ]]", - "tag-visualeditor-needcheck": "Modiffica vixoâ: controlâ", - "tag-visualeditor-needcheck-description": "Modiffica fæta dœuviando l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor vixoâ]] donde-o scistema o l'ha rilevou de poscibbile modiffiche non vosciue into wikitesto.", - "tag-visualeditor-wikitext": "Editor wikitesto 2017", - "tag-visualeditor-wikitext-description": "Modiffica fæta dœuviando l'editor wikitesto 2017", - "tag-visualeditor-switched": "Modiffica vixoâ: Cangiou", - "tag-visualeditor-switched-description": "L'utente o l'ha inçou e modiffiche dœuviando l'editor vixoâ, doppo o l'è passou a l'editor de wikitesto.", - "visualeditor-feedback-link": "Project:VisualEditor/Commenti", - "visualeditor-feedback-tool": "Scrivi un commento sciu questo software", - "visualeditor-help-label": "Lezi a guidda utente", - "visualeditor-welcomedialog-action": "Comensa a modificâ", - "visualeditor-welcomedialog-content": "Pœu contribuî chissessæ, e ogni megioiia a l'agiutta.", - "visualeditor-welcomedialog-content-thanks": "Grassie pe agiutâ o mondo a scrovî sempre cose nœuve!", - "visualeditor-welcomedialog-switch": "Passa a l'editor wikitesto", - "visualeditor-welcomedialog-switch-ve": "Passa a l'editor vixoâ", - "visualeditor-welcomedialog-title": "{{GENDER:$1|Benvegnuo|Benvegnua|Benvegnuo/a}} sciu $2" + "tag-editcheck-newcontent-description": "EditCheck o crédde che do nêuvo contegnûo o ségge stæto azónto a-a pàgina", + "tag-editcheck-newreference-description": "Ina nòtta a l'é stæta azónta a-a pàgina", + "tag-editcheck-references-description": "EditCheck o crédde che 'na nòtta a poriéiva êse necesâia", + "tag-editcheck-references-activated": "Edit Check (nòtte) ativòu", + "tag-editcheck-references-activated-description": "EditCheck o crédde che 'na nòtta a poriéiva êse necesâia e che l'UI a l'é stæta mostrâ", + "tag-editcheck-references-shown": "Edit Check (nòtte) mostròu", + "tag-editcheck-references-shown-description": "EditCheck o crédde che 'na nòtta a poriéiva êse necesâia e che l'UI a l'é stæta mostrâ", + "tag-editcheck-tone-shown": "Edit Check (tón) mostròu", + "tag-editcheck-tone-shown-description": "EditCheck o crédde che 'n agiustaménto do tón inte çèrto contegnûo o poriéiva êse necesâio, e l'UI a l'é stæta mostrâ", + "tag-visualeditor": "Modìfica vizoâle", + "tag-visualeditor-description": "Modìfica fæta dêuviàndo l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor vizoâle]]", + "tag-visualeditor-needcheck": "Modìfica vizoâle: controlâ", + "tag-visualeditor-needcheck-description": "Modìfica fæta dêuviàndo l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|editor vizoâle]] dónde o scistêma o l'à rilevòu de poscìbili modìfiche no vosciûe into wikitèsto.", + "tag-visualeditor-wikitext": "Editor wikitèsto 2017", + "tag-visualeditor-wikitext-description": "Modìfica fæta dêuviàndo l'editor wikitèsto 2017", + "tag-visualeditor-switched": "Modìfica vizoâle: Cangiòu", + "tag-visualeditor-switched-description": "L'uténte o l'à comensòu e modìfiche dêuviàndo l'editor vizoâle, dòppo o l'é pasòu a l'editor do wikitèsto.", + "visualeditor-feedback-link": "Project:VisualEditor/Coménti", + "visualeditor-feedback-tool": "Scrîvi 'n coménto in sce sto software chi", + "visualeditor-help-label": "Lêzi a goìdda uténte", + "visualeditor-welcomedialog-action": "Coménsa a modificâ", + "visualeditor-welcomedialog-content": "Peu contriboî chi se sæ, e ògni megioaménto o l'agiùtta.", + "visualeditor-welcomedialog-content-thanks": "Gràçie pe agiutâ o móndo a scrovî sénpre cöse nêuve!", + "visualeditor-welcomedialog-switch": "Pàssa a l'editor wikitèsto", + "visualeditor-welcomedialog-switch-ve": "Pàssa a l'editor vizoâle", + "visualeditor-welcomedialog-title": "{{GENDER:$1|Benvegnûo|Benvegnûa|Benvegnûo/a}} sciù $2" } diff --git a/i18n/ve-wmf/vi.json b/i18n/ve-wmf/vi.json index 52acb66580..813f17aba3 100644 --- a/i18n/ve-wmf/vi.json +++ b/i18n/ve-wmf/vi.json @@ -8,10 +8,20 @@ "Jdforrester", "Minh Nguyen", "Nghiemtrongdai VN", + "NgocAnMaster", "Nvdtn19", "아라" ] }, + "tag-editcheck-newcontent-description": "Kiểm tra Sửa đổi cho rằng nội dung mới đã được thêm vào trang", + "tag-editcheck-newreference-description": "Một nguồn tham khảo mới đã được thêm vào trang", + "tag-editcheck-references-description": "Kiểm tra Sửa đổi cho rằng có thể cần phải có một nguồn tham khảo", + "tag-editcheck-references-activated": "Đã kích hoạt Kiểm tra Sửa đổi (nguồn tham khảo)", + "tag-editcheck-references-activated-description": "Kiểm tra Sửa đổi cho rằng có thể cần phải có một nguồn tham khảo, và giao diện người dùng được hiển thị", + "tag-editcheck-references-shown": "Đã hiển thị Kiểm tra Sửa đổi (nguồn tham khảo)", + "tag-editcheck-references-shown-description": "Kiểm tra Sửa đổi cho rằng có thể cần phải có một nguồn tham khảo, và giao diện người dùng được hiển thị", + "tag-editcheck-tone-shown": "Đã hiển thị Kiểm tra Sửa đổi (giọng điệu)", + "tag-editcheck-tone-shown-description": "Kiểm tra Sửa đổi cho rằng có thể cần phải điều chỉnh giọng điệu ở một số đoạn nội dung, và giao diện người dùng được hiển thị", "tag-visualeditor": "Soạn thảo trực quan", "tag-visualeditor-description": "Đã sửa đổi dùng [[{{MediaWiki:visualeditor-descriptionpagelink}}|Trình soạn thảo trực quan]]", "tag-visualeditor-needcheck": "Qua trình soạn thảo trực quan: Cần kiểm tra", From 89cf0ed026cf3448e006114697780e3b7ca8d08a Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 15 Jul 2025 17:31:28 +0100 Subject: [PATCH 466/730] EditCheck: Call updateForListener in series in #refresh updateForListener is async, and calling it twice in parallel causes rendering problems, as the action list can change while it is running. After updateForListener has run (twice) call updatePositions. Also make updatePositions debounced as it is can be called multiple times from a single action. Change-Id: I559cfd09c200f3dd07e2881770202cf7da1c045d --- editcheck/modules/controller.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 905c5866d5..0b81389808 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -34,6 +34,7 @@ function Controller( target ) { this.onPositionDebounced = ve.debounce( this.onPosition.bind( this ), 100 ); this.onSelectDebounced = ve.debounce( this.onSelect.bind( this ), 100 ); this.onContextChangeDebounced = ve.debounce( this.onContextChange.bind( this ), 100 ); + this.updatePositionsDebounced = ve.debounce( this.updatePositions.bind( this ) ); // Don't run a scroll if the previous animation is still running (which is jQuery 'fast' === 200ms) this.scrollActionIntoViewDebounced = ve.debounce( this.scrollActionIntoView.bind( this ), 200, true ); @@ -206,9 +207,14 @@ Controller.prototype.refresh = function () { // These shouldn't be recalculated this.emit( 'actionsUpdated', 'onBeforeSave', this.getActions(), [], [], false ); } else { + // Use a process so that updateForListener doesn't run twice in parallel, + // which causes problems as the active actions list can change. + const process = new OO.ui.Process(); midEditListeners.forEach( - ( listener ) => this.updateForListener( listener, true ) + ( listener ) => process.next( () => this.updateForListener( listener, true ) ) ); + process.next( () => this.updatePositionsDebounced() ); + process.execute(); } }; @@ -296,7 +302,7 @@ Controller.prototype.focusAction = function ( action, scrollTo, alignToTop ) { this.emit( 'focusAction', action, this.getActions().indexOf( action ), scrollTo ); - this.updatePositions(); + this.updatePositionsDebounced(); }; /** @@ -390,7 +396,7 @@ Controller.prototype.onPosition = function ( passive ) { return; } - this.updatePositions(); + this.updatePositionsDebounced(); if ( !passive && this.getActions().length && this.focusedAction && this.surface.getView().reviewMode ) { this.scrollActionIntoViewDebounced( this.focusedAction, true, !OO.ui.isMobile() ); @@ -409,7 +415,7 @@ Controller.prototype.onDocumentChange = function () { this.updateForListener( 'onDocumentChange' ); } - this.updatePositions(); + this.updatePositionsDebounced(); }; /** @@ -429,7 +435,7 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions if ( this.focusedAction && discardedActions.includes( this.focusedAction ) ) { this.focusedAction = null; } - this.updatePositions(); + this.updatePositionsDebounced(); } // do we need to show mid-edit actions? From d9a0faabe43362a1b2f89fab4876312518e890c9 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 15 Jul 2025 18:37:26 +0100 Subject: [PATCH 467/730] Update VE core submodule to master (190c98920) New changes: 3484effdf Remove unnecessary store argument from getOriginalDomElements e0ee2b691 Check for /g flag in ve.dm.Document#findText, to avoid an infinite loop 190c98920 Move DebugBar.less to same module as DebugBar.js Bug: T399232 Change-Id: I12e399d4b50fe815af003d9a07998ac50dbaf2df --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index a30515b4c2..190c989200 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit a30515b4c25460bea6d25967d3c95a6907b60dfe +Subproject commit 190c989200b71385f72d9bd2cee926b0776c155c From 3c26502dc1942214ffacde055921d41431e5dc14 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 10 Jul 2025 12:35:04 +0100 Subject: [PATCH 468/730] checkModules.js: Add documentation Change-Id: I388f521fde40e1797191d576ea11d8469de6b1be --- build/checkModules.js | 88 ++++++++++++++++++++++++++++++------------- 1 file changed, 62 insertions(+), 26 deletions(-) diff --git a/build/checkModules.js b/build/checkModules.js index 4d29b626f4..ba11803779 100644 --- a/build/checkModules.js +++ b/build/checkModules.js @@ -1,3 +1,11 @@ +/** + * Checks that all files referenced in lib/ve/build/modules.json are either: + * - explicitly listed in scripts/styles in extension.json, or + * - ignored via the ignore list in this script. + * + * Warns about unused "ignored" entries and errors on missing files. + */ + 'use strict'; const path = require( 'path' ); @@ -5,6 +13,11 @@ const path = require( 'path' ); const extensionJson = require( '../extension.json' ); const modulesJson = require( '../lib/ve/build/modules.json' ); +/** + * List of file/directory patterns to ignore. + * + * @type {string[]} + */ const ignored = [ 'node_modules/', 'lib/', @@ -28,8 +41,20 @@ const ignored = [ 'tests/dm/ve.dm.TransportServer.test.js' ]; +/** + * Ignored entries which haven't been used yet. + * + * @type {Set} + */ const unusedIgnores = new Set( ignored ); +/** + * Add file or files to a Set, prefixing with basePath. + * + * @param {string|string[]|Object[]} files + * @param {Set} set + * @param {string} [basePath=''] + */ function addFilesToSet( files, set, basePath = '' ) { if ( Array.isArray( files ) ) { files.forEach( ( file ) => set.add( path.join( basePath, file.file || file ) ) ); @@ -38,6 +63,14 @@ function addFilesToSet( files, set, basePath = '' ) { } } +/** + * Check if the filePath matches any 'ignored' entry. + * + * If matched, the entry is removed from unusedIgnores. + * + * @param {string} filePath + * @return {boolean} + */ function isIgnored( filePath ) { return ignored.some( ( ignorePath ) => { const fullIgnorePath = path.join( 'lib/ve', ignorePath ); @@ -49,6 +82,13 @@ function isIgnored( filePath ) { } ); } +/** + * Add all scripts and styles files from a modules object to a Set. + * + * @param {Object} modules + * @param {Set} set + * @param {string} [basePath] + */ function addModulesToSet( modules, set, basePath = '' ) { Object.values( modules ).forEach( ( module ) => { [ @@ -68,34 +108,30 @@ function addModulesToSet( modules, set, basePath = '' ) { } ); } -function checkFiles() { - const extensionFiles = new Set(); - addModulesToSet( extensionJson.ResourceModules, extensionFiles ); - addModulesToSet( { QUnitTestModule: extensionJson.QUnitTestModule }, extensionFiles ); - - const modulesFiles = new Set(); - addModulesToSet( modulesJson, modulesFiles, 'lib/ve' ); +const extensionFiles = new Set(); +addModulesToSet( extensionJson.ResourceModules, extensionFiles ); +addModulesToSet( { QUnitTestModule: extensionJson.QUnitTestModule }, extensionFiles ); - const missingFiles = Array.from( modulesFiles ).filter( ( file ) => !extensionFiles.has( file ) && !isIgnored( file ) ); +const modulesFiles = new Set(); +addModulesToSet( modulesJson, modulesFiles, 'lib/ve' ); - if ( unusedIgnores.size ) { - console.warn( - 'Unused ignore path(s) in checkModules.js:\n\n' + - Array.from( unusedIgnores ).map( ( ignore ) => `* ${ ignore }\n` ).join( '' ) - ); - } +const missingFiles = Array.from( modulesFiles ).filter( ( file ) => !extensionFiles.has( file ) && !isIgnored( file ) ); - if ( missingFiles.length ) { - console.error( - `${ missingFiles.length } file(s) from lib/ve/modules.json are missing from extension.json:\n\n` + - missingFiles.map( ( file ) => `* ${ file }\n` ).join( '' ) + - '\nIf any of these files are not required, add them to the ignore list in build/checkModules.js.' - ); - // eslint-disable-next-line n/no-process-exit - process.exit( 1 ); - } else { - console.log( 'No missing files.' ); - } +if ( unusedIgnores.size ) { + console.warn( + 'Unused ignore path(s) in checkModules.js:\n\n' + + Array.from( unusedIgnores ).map( ( ignore ) => `* ${ ignore }\n` ).join( '' ) + ); } -checkFiles(); +if ( missingFiles.length ) { + console.error( + `${ missingFiles.length } file(s) from lib/ve/modules.json are missing from extension.json:\n\n` + + missingFiles.map( ( file ) => `* ${ file }\n` ).join( '' ) + + '\nIf any of these files are not required, add them to the ignore list in build/checkModules.js.' + ); + // eslint-disable-next-line n/no-process-exit + process.exit( 1 ); +} else { + console.log( 'No missing files.' ); +} From 28a6ad93641dada1257e537d48fe3e24b9efad74 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 16 Jul 2025 15:11:35 +0100 Subject: [PATCH 469/730] EditCheckActionWidget: Add missing documentation Change-Id: I3fd675e62ff2c223f9cbee06941eeb8dc8f26c01 --- editcheck/modules/EditCheckActionWidget.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index d75c301846..c5137bef83 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -6,9 +6,10 @@ * * @param {Object} config Configuration options * @param {string} config.type Type of message (e.g., 'warning', 'error') - * @param {string} [config.icon] Icon name * @param {string|jQuery|Function|OO.ui.HtmlSnippet} config.label Title * @param {string|jQuery|Function|OO.ui.HtmlSnippet} config.message Body message + * @param {string|jQuery|Function|OO.ui.HtmlSnippet} [config.footer] Footer message + * @param {string} [config.icon] Icon name * @param {boolean} [config.singleAction] This is the only action shown * @param {string} [config.mode] Mode for the action set widget */ From ab58e906bb999933b9a7daa87fe028876e6b0577 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 16 Jul 2025 15:12:48 +0100 Subject: [PATCH 470/730] EditCheck Controller: Ensure #getActions always returns an array This matches the documented behaviour. Change-Id: I4427610ec07dd5b54998528d48ef1f24e027430e --- editcheck/modules/controller.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 0b81389808..afb3d04487 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -233,7 +233,7 @@ Controller.prototype.refresh = function () { * @fires Controller#actionsUpdated */ Controller.prototype.updateForListener = function ( listener, always ) { - const existing = this.getActions( listener ) || []; + const existing = this.getActions( listener ); const otherListenersExisting = this.getActions().filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); return mw.editcheck.editCheckFactory.createAllByListener( this, listener, this.surface.getModel() ) .then( ( actions ) => actions.map( ( action ) => existing.find( ( oldAction ) => oldAction.equals( action ) ) || action ) ) @@ -317,7 +317,7 @@ Controller.prototype.focusAction = function ( action, scrollTo, alignToTop ) { */ Controller.prototype.getActions = function ( listener ) { if ( listener ) { - return this.actionsByListener[ listener ]; + return this.actionsByListener[ listener ] || []; } const listeners = this.inBeforeSave ? [ 'onBeforeSave' ] : midEditListeners; return [].concat( ...listeners.map( ( lr ) => this.actionsByListener[ lr ] || [] ) ); From e61333ca8adff8c90af6479b2fa5677824000fce Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Wed, 16 Jul 2025 08:59:27 -0400 Subject: [PATCH 471/730] build: Use SVGO v4, move out of Grunt to be similar to other repos Bug: T399676 Change-Id: Id2d7c47a037da2d81476b6b0847124617892d13f --- .svgo.config.js | 39 + Gruntfile.js | 18 +- images/betafeatures-icon-collab-ltr.svg | 70 +- images/betafeatures-icon-collab-rtl.svg | 68 +- package-lock.json | 3495 +++++++++++++++-------- package.json | 4 +- 6 files changed, 2453 insertions(+), 1241 deletions(-) create mode 100644 .svgo.config.js diff --git a/.svgo.config.js b/.svgo.config.js new file mode 100644 index 0000000000..d9f22edc6e --- /dev/null +++ b/.svgo.config.js @@ -0,0 +1,39 @@ +/** + * SVGO Configuration + * Compatible with v4.0.0+ + * Recommended options from: + * https://www.mediawiki.org/wiki/Manual:Coding_conventions/SVG#Exemplified_safe_configuration + */ +'use strict'; +module.exports = { + plugins: [ + { + // Set of built-in plugins enabled by default. + name: 'preset-default', + params: { + overrides: { + cleanupIds: false, + removeDesc: false, + // If the SVG doesn't start with an XML declaration, then its MIME type will + // be detected as "text/plain" rather than "image/svg+xml" by libmagic and, + // consequently, MediaWiki's CSSMin CSS minifier. libmagic's default database + // currently requires that SVGs contain an XML declaration: + // https://github.com/threatstack/libmagic/blob/master/magic/Magdir/sgml#L5 + removeXMLProcInst: false + } + } + }, + 'removeRasterImages', + 'sortAttrs' + ], + // Set whitespace according to Wikimedia Coding Conventions. + // @see https://github.com/svg/svgo/blob/main/lib/stringifier.js#L39 for available options. + js2svg: { + eol: 'lf', + finalNewline: true, + // Configure the indent to tabs (default 4 spaces) used by `--pretty` here. + indent: '\t', + pretty: true + }, + multipass: true +}; diff --git a/Gruntfile.js b/Gruntfile.js index c32ebb0e38..8092c36ae4 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -77,22 +77,6 @@ module.exports = function ( grunt ) { expand: true, src: 'screenshots/*.png' } - }, - svgs: { - options: { - svgo: [ - '--pretty', - '--enable=removeRasterImages', - '--enable=sortAttrs', - '--disable=cleanupIDs', - '--disable=removeDesc', - '--disable=removeTitle', - '--disable=removeViewBox', - '--disable=removeXMLProcInst' - ] - }, - expand: true, - src: 'images/*.svg' } }, tyops: { @@ -174,6 +158,6 @@ module.exports = function ( grunt ) { grunt.renameTask( 'test', 'test-internal' ); grunt.registerTask( 'test', [ 'test-internal', 'test-ci' ] ); } else { - grunt.registerTask( 'ci', [ 'test', 'image:svgs', 'test-ci' ] ); + grunt.registerTask( 'ci', [ 'test', 'test-ci' ] ); } }; diff --git a/images/betafeatures-icon-collab-ltr.svg b/images/betafeatures-icon-collab-ltr.svg index f36e947d60..867bf6cc73 100644 --- a/images/betafeatures-icon-collab-ltr.svg +++ b/images/betafeatures-icon-collab-ltr.svg @@ -1,43 +1,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/betafeatures-icon-collab-rtl.svg b/images/betafeatures-icon-collab-rtl.svg index 734a1c6723..e021233984 100644 --- a/images/betafeatures-icon-collab-rtl.svg +++ b/images/betafeatures-icon-collab-rtl.svg @@ -1,42 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package-lock.json b/package-lock.json index c89f226867..1fb54819b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", + "svgo": "4.0.0", "wdio-mediawiki": "4.1.3" } }, @@ -1902,10 +1903,11 @@ "dev": true }, "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.5", @@ -3395,6 +3397,23 @@ "node": ">= 0.4" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-differ": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", @@ -3441,6 +3460,51 @@ "node": ">=8" } }, + "node_modules/array.prototype.reduce": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", + "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "is-string": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -3533,12 +3597,38 @@ "node": ">=0.12.0" } }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "node_modules/available-typed-arrays": { + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -4221,13 +4311,19 @@ } }, "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.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4462,138 +4558,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cheerio-select/node_modules/css-select": { - "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": "^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/cheerio-select/node_modules/css-what": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cheerio-select/node_modules/dom-serializer": { - "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.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/cheerio-select/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/cheerio-select/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/cheerio-select/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/dom-serializer": { - "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.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/cheerio/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/cheerio/node_modules/htmlparser2": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", @@ -4741,6 +4705,7 @@ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", "dev": true, + "license": "MIT", "dependencies": { "@types/q": "^1.5.1", "chalk": "^2.4.1", @@ -4755,6 +4720,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -4767,6 +4733,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4781,6 +4748,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -4788,14 +4756,16 @@ "node_modules/coa/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" }, "node_modules/coa/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -4803,8 +4773,9 @@ "node_modules/coa/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4814,6 +4785,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -5139,31 +5111,28 @@ } }, "node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "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-select-base-adapter": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "node_modules/css-select/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } + "license": "MIT" }, "node_modules/css-shorthand-properties": { "version": "1.1.2", @@ -5210,25 +5179,17 @@ "license": "MIT" }, "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, + "license": "MIT", "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/css-value": { @@ -5238,10 +5199,11 @@ "dev": true }, "node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -5262,44 +5224,40 @@ } }, "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, + "license": "MIT", "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": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "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, + "license": "MIT", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "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/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==", - "dev": true - }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "CC0-1.0" }, "node_modules/currently-unhandled": { "version": "0.4.1", @@ -5334,6 +5292,60 @@ "node": ">= 12" } }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dateformat": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", @@ -5557,12 +5569,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-properties": { + "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "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": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -5672,16 +5704,27 @@ } }, "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "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, + "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "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/dom-serializer/node_modules/domelementtype": { + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", @@ -5691,19 +5734,8 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", @@ -5721,19 +5753,6 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/domhandler/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, "node_modules/domino": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", @@ -5741,13 +5760,18 @@ "dev": true }, "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, "node_modules/dotenv": { @@ -6029,10 +6053,14 @@ } }, "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, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -6065,31 +6093,66 @@ } }, "node_modules/es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -6098,6 +6161,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "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==", + "dev": true, + "license": "MIT" + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -6144,14 +6214,15 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -7615,6 +7686,22 @@ } } }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -7793,6 +7880,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gaze": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", @@ -7974,13 +8092,15 @@ } }, "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.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -8265,6 +8385,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -8572,6 +8709,16 @@ "node": ">=4" } }, + "node_modules/grunt-image/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, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/grunt-image/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -8601,28 +8748,162 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "node_modules/grunt-image/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/grunt-image/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", "dev": true, - "engines": { - "node": ">=0.8.0" + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "node_modules/grunt-image/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/grunt-image/node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, - "node_modules/grunt-image/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/grunt-image/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/grunt-image/node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/grunt-image/node_modules/csso/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/grunt-image/node_modules/csso/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==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/grunt-image/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/grunt-image/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/grunt-image/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/grunt-image/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/grunt-image/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/grunt-image/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/grunt-image/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/grunt-image/node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/grunt-image/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { "minimist": "^1.2.6" @@ -8631,6 +8912,33 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/grunt-image/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/grunt-image/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-image/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/grunt-image/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -8643,6 +8951,35 @@ "node": ">=4" } }, + "node_modules/grunt-image/node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/grunt-known-options": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", @@ -8866,18 +9203,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==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -8900,10 +9225,14 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8918,12 +9247,29 @@ } }, "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==", "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9064,62 +9410,6 @@ "entities": "^4.4.0" } }, - "node_modules/htmlparser2/node_modules/dom-serializer": { - "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, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/htmlparser2/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/htmlparser2/node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/http-cache-semantics": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", @@ -9339,14 +9629,15 @@ } }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9403,19 +9694,61 @@ "node": ">=0.10.0" } }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9434,13 +9767,14 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9465,10 +9799,11 @@ } }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9488,13 +9823,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "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.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9512,6 +9867,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-finite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", @@ -9539,6 +9910,25 @@ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", "dev": true }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-gif": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", @@ -9581,6 +9971,19 @@ "node": ">=6" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -9588,10 +9991,11 @@ "dev": true }, "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==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9609,12 +10013,14 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9681,13 +10087,16 @@ } }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9726,13 +10135,30 @@ "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9748,12 +10174,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9778,12 +10206,31 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -9828,13 +10275,47 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10891,18 +11372,6 @@ "markdown-it": "*" } }, - "node_modules/markdown-it/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", @@ -10935,10 +11404,11 @@ } }, "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/mdurl": { "version": "2.0.0", @@ -11584,19 +12054,23 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -11622,14 +12096,19 @@ } }, "node_modules/object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", + "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "gopd": "^1.0.1", + "safe-array-concat": "^1.1.2" }, "engines": { "node": ">= 0.8" @@ -11664,14 +12143,16 @@ } }, "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.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -11779,6 +12260,24 @@ "os-tmpdir": "^1.0.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-cancelable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", @@ -12404,6 +12903,16 @@ "which": "bin/which" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.49", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", @@ -12699,8 +13208,10 @@ "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -13023,6 +13534,29 @@ "node": ">=0.10.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -13038,6 +13572,27 @@ "regexp-tree": "bin/regexp-tree" } }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regjsparser": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", @@ -13350,6 +13905,33 @@ "node": ">=18.0.0" } }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -13376,6 +13958,30 @@ "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", "dev": true }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", @@ -13385,6 +13991,24 @@ "regexp-tree": "~0.1.1" } }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -13601,6 +14225,40 @@ "randombytes": "^2.1.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", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -13610,6 +14268,21 @@ "node": ">=0.10.0" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -13994,7 +14667,9 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true + "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, + "license": "MIT" }, "node_modules/stack-utils": { "version": "2.0.6", @@ -14017,6 +14692,20 @@ "node": ">=8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-buffers": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", @@ -14100,29 +14789,60 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "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" @@ -14450,20 +15170,6 @@ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, - "node_modules/stylelint/node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, "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", @@ -14510,13 +15216,6 @@ "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "dev": true, - "license": "CC0-1.0" - }, "node_modules/stylelint/node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -14703,143 +15402,47 @@ "dev": true }, "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", + "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.4.1" }, "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/svgo/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" + "svgo": "bin/svgo.js" }, "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/svgo/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "node": ">=16" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/svgo/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/svgo/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, - "node_modules/svgo/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/svgo/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/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==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/svgo/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "node": ">=16" } }, - "node_modules/svgo/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/svgo/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/svgo/node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "ISC" }, "node_modules/table": { "version": "6.9.0", @@ -15234,6 +15837,84 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -15255,15 +15936,19 @@ "dev": true }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15337,8 +16022,9 @@ "node_modules/unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "dev": true, + "license": "MIT" }, "node_modules/upath": { "version": "2.0.1", @@ -15446,6 +16132,7 @@ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.2", @@ -15704,41 +16391,121 @@ "node": ">=0.10.0" } }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17427,9 +18194,9 @@ "dev": true }, "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", "dev": true }, "@types/sinonjs__fake-timers": { @@ -18494,6 +19261,16 @@ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true }, + "array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + } + }, "array-differ": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", @@ -18524,6 +19301,37 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "array.prototype.reduce": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", + "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "is-string": "^1.1.1" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + } + }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -18596,12 +19404,27 @@ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true }, + "async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "available-typed-arrays": { + "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==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -19119,13 +19942,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.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" } }, "call-bind-apply-helpers": { @@ -19282,40 +20107,6 @@ "whatwg-mimetype": "^4.0.0" }, "dependencies": { - "dom-serializer": { - "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.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - }, "htmlparser2": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", @@ -19356,61 +20147,6 @@ "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" - }, - "dependencies": { - "css-select": { - "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": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "dom-serializer": { - "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.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - } } }, "chokidar": { @@ -19528,19 +20264,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "supports-color": { @@ -19781,26 +20517,16 @@ "dev": true }, "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - }, - "dependencies": { - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - } + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" } }, "css-select-base-adapter": { @@ -19852,21 +20578,13 @@ } }, "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" } }, "css-value": { @@ -19876,9 +20594,9 @@ "dev": true }, "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "dev": true }, "cssesc": { @@ -19888,34 +20606,28 @@ "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": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "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.14", - "source-map": "^0.6.1" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" } }, "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==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true } } @@ -19944,6 +20656,39 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true }, + "data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + } + }, + "data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + } + }, + "data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "dateformat": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", @@ -20114,12 +20859,24 @@ "clone": "^1.0.2" } }, - "define-properties": { + "define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -20198,21 +20955,14 @@ } }, "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "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", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - } + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" } }, "dom-walk": { @@ -20222,9 +20972,9 @@ "dev": true }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domhandler": { @@ -20234,14 +20984,6 @@ "dev": true, "requires": { "domelementtype": "^2.3.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - } } }, "domino": { @@ -20251,13 +20993,14 @@ "dev": true }, "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" } }, "dotenv": { @@ -20476,9 +21219,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 }, "env-paths": { @@ -20506,32 +21249,72 @@ } }, "es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "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==", + "dev": true }, "es-define-property": { "version": "1.0.1", @@ -20567,14 +21350,14 @@ } }, "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" } }, "esbuild": { @@ -21624,6 +22407,15 @@ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true }, + "for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "requires": { + "is-callable": "^1.2.7" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -21761,6 +22553,26 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, + "function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, "gaze": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", @@ -21886,13 +22698,14 @@ } }, "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.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" } }, "get-tsconfig": { @@ -22108,6 +22921,16 @@ "type-fest": "^0.20.2" } }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + } + }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -22405,6 +23228,15 @@ "color-convert": "^1.9.0" } }, + "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" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -22431,6 +23263,95 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "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==", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -22443,6 +23364,22 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "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==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -22452,6 +23389,27 @@ "minimist": "^1.2.6" } }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -22460,6 +23418,27 @@ "requires": { "has-flag": "^3.0.0" } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } } } }, @@ -22577,15 +23556,6 @@ "har-schema": "^2.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -22604,9 +23574,9 @@ } }, "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true }, "has-flag": { @@ -22616,12 +23586,21 @@ "dev": true }, "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==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, "requires": { - "get-intrinsic": "^1.1.1" + "dunder-proto": "^1.0.0" } }, "has-symbol-support-x": { @@ -22712,42 +23691,6 @@ "domhandler": "^5.0.3", "domutils": "^3.0.1", "entities": "^4.4.0" - }, - "dependencies": { - "dom-serializer": { - "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.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - } } }, "http-cache-semantics": { @@ -22916,14 +23859,14 @@ } }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" } }, "interpret": { @@ -22970,19 +23913,43 @@ "is-windows": "^1.0.1" } }, + "is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "requires": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + } + }, "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "requires": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" } }, "is-binary-path": { @@ -22995,13 +23962,13 @@ } }, "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-builtin-module": { @@ -23014,9 +23981,9 @@ } }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-core-module": { @@ -23028,13 +23995,25 @@ "hasown": "^2.0.0" } }, + "is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + } + }, "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" } }, "is-extglob": { @@ -23043,6 +24022,15 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "requires": { + "call-bound": "^1.0.3" + } + }, "is-finite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", @@ -23061,6 +24049,18 @@ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", "dev": true }, + "is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + } + }, "is-gif": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", @@ -23093,6 +24093,12 @@ "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=", "dev": true }, + "is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true + }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -23100,9 +24106,9 @@ "dev": true }, "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==", "dev": true }, "is-number": { @@ -23112,12 +24118,13 @@ "dev": true }, "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-obj": { @@ -23160,13 +24167,15 @@ "dev": true }, "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" } }, "is-regexp": { @@ -23190,13 +24199,19 @@ "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", "dev": true }, + "is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true + }, "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.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" } }, "is-stream": { @@ -23206,12 +24221,13 @@ "dev": true }, "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-svg": { @@ -23224,12 +24240,23 @@ } }, "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + } + }, + "is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "which-typed-array": "^1.1.16" } }, "is-typedarray": { @@ -23259,13 +24286,29 @@ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true + }, "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "requires": { + "call-bound": "^1.0.3" + } + }, + "is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" } }, "is-windows": { @@ -24130,14 +25173,6 @@ "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" - }, - "dependencies": { - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - } } }, "markdown-it-anchor": { @@ -24166,9 +25201,9 @@ "dev": true }, "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "dev": true }, "mdurl": { @@ -24645,14 +25680,16 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, @@ -24669,14 +25706,18 @@ } }, "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", + "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "gopd": "^1.0.1", + "safe-array-concat": "^1.1.2" } }, "object.map": { @@ -24699,14 +25740,15 @@ } }, "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.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "omggif": { @@ -24786,6 +25828,17 @@ "os-tmpdir": "^1.0.0" } }, + "own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + } + }, "p-cancelable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", @@ -25248,6 +26301,12 @@ } } }, + "possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true + }, "postcss": { "version": "8.4.49", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", @@ -25464,7 +26523,7 @@ "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, "qs": { @@ -25711,6 +26770,22 @@ } } }, + "reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + } + }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -25723,6 +26798,20 @@ "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true }, + "regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + } + }, "regjsparser": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", @@ -25963,6 +27052,27 @@ "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", "dev": true }, + "safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -25975,6 +27085,24 @@ "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", "dev": true }, + "safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "safe-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", @@ -25984,6 +27112,17 @@ "regexp-tree": "~0.1.1" } }, + "safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -26150,12 +27289,49 @@ "randombytes": "^2.1.0" } }, + "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==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "requires": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -26454,6 +27630,16 @@ } } }, + "stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + } + }, "stream-buffers": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", @@ -26520,26 +27706,42 @@ "strip-ansi": "^6.0.1" } }, + "string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + } + }, "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "stringify-object": { @@ -26711,16 +27913,6 @@ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, - "css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "dev": true, - "requires": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - } - }, "file-entry-cache": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", @@ -26752,12 +27944,6 @@ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, - "mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "dev": true - }, "meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -26912,115 +28098,31 @@ "dev": true }, "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", + "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", "dev": true, "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.4.1" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true }, - "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==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -27348,6 +28450,59 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + } + }, + "typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + } + }, + "typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + } + }, + "typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + } + }, "typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -27362,15 +28517,15 @@ "dev": true }, "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "requires": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" } }, "unbzip2-stream": { @@ -27426,7 +28581,7 @@ "unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", "dev": true }, "upath": { @@ -27715,16 +28870,72 @@ } }, "which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "requires": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + } + }, + "which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "requires": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + } + }, + "which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" } }, "workerpool": { diff --git a/package.json b/package.json index 6ddb93110f..b720b13501 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,11 @@ "doc": "jsdoc -c jsdoc.json", "eslint-fix": "eslint --cache --ext .js,.json --fix .", "eslint": "eslint --cache --ext .js,.json .", + "minify-svg": "svgo --config=.svgo.config.js -q -r -f images/", "screenshots-all": "grunt screenshots-all", "selenium-daily": "npm run selenium-test -- --suite daily --mochaOpts.grep @daily", "selenium-test": "wdio tests/selenium/wdio.conf.js", - "test": "grunt test && node build/checkModules.js" + "test": "grunt test && node build/checkModules.js && npm run minify-svg" }, "devDependencies": { "@wdio/cli": "9.15.0", @@ -36,6 +37,7 @@ "selenium-webdriver": "3.6.0", "stringify-object": "3.2.2", "stylelint-config-wikimedia": "0.18.0", + "svgo": "4.0.0", "wdio-mediawiki": "4.1.3" } } From fa6e00b6d3cb07a37ee26825833183247cd59e4b Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 17 Jul 2025 09:54:13 +0200 Subject: [PATCH 472/730] Localisation updates from https://translatewiki.net. Change-Id: Ibcc103b13a9e8a54d85e9ca12e69175343d724dc --- i18n/ve-mw/ce.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/ce.json b/i18n/ve-mw/ce.json index e74070218e..9903864c0a 100644 --- a/i18n/ve-mw/ce.json +++ b/i18n/ve-mw/ce.json @@ -36,7 +36,7 @@ "visualeditor-ca-editlocaldescriptionsource": "Тайе локалан хьост", "visualeditor-ca-editsource": "Нисйан", "visualeditor-ca-editsource-section": "нисйан", - "visualeditor-ca-editsource-section-hint": "«$1» декъаран код нисйан", + "visualeditor-ca-editsource-section-hint": "«$1» декъан код нисйан", "visualeditor-categories-tool": "Категореш", "visualeditor-changedesc-mwcategory-sortkey-changed": "ДӀасакъастаран догӀа хийцина $1 → $2", "visualeditor-changedesc-mwcategory-sortkey-set": "ДӀасакъастаран догӀана хӀоттина $1 маьӀна", From b502865681ee1d658ec442c278b6d1ae11205940 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 26 Jun 2025 16:56:16 +0100 Subject: [PATCH 473/730] mw.Target: Use excludeFromTargetWidget Bug: T397948 Depends-On: Ia48194fd8c283b3a7d1157e93f977377f18610b9 Change-Id: Id9d587b3d73a339974415850621393848fab1977 --- .../ve-mw-collab/ve.init.mw.CollabTarget.js | 4 ++ .../ve.init.mw.DesktopArticleTarget.js | 5 ++ .../targets/ve.init.mw.MobileArticleTarget.js | 57 ++++++++----------- .../ve-mw/init/targets/ve.init.mw.Target.js | 5 +- 4 files changed, 37 insertions(+), 34 deletions(-) diff --git a/modules/ve-mw-collab/ve.init.mw.CollabTarget.js b/modules/ve-mw-collab/ve.init.mw.CollabTarget.js index b1bc3c1101..d4b49d7ed9 100644 --- a/modules/ve-mw-collab/ve.init.mw.CollabTarget.js +++ b/modules/ve-mw-collab/ve.init.mw.CollabTarget.js @@ -65,11 +65,13 @@ ve.init.mw.CollabTarget.static.toolbarGroups.push( { name: 'help', align: 'after', + excludeFromTargetWidget: true, include: [ 'help' ] }, { name: 'pageMenu', align: 'after', + excludeFromTargetWidget: true, type: 'list', icon: 'menu', indicator: null, @@ -81,11 +83,13 @@ ve.init.mw.CollabTarget.static.toolbarGroups.push( { name: 'authorList', align: 'after', + excludeFromTargetWidget: true, include: [ 'authorList' ] }, { name: 'export', align: 'after', + excludeFromTargetWidget: true, include: [ 'export' ] } ); diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index fdcd5bafed..420968ccd5 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -93,6 +93,7 @@ ve.init.mw.DesktopArticleTarget.static.toolbarGroups.push( { name: 'help', align: 'after', + excludeFromTargetWidget: true, type: 'mwHelpList', icon: 'help', indicator: null, @@ -103,11 +104,13 @@ ve.init.mw.DesktopArticleTarget.static.toolbarGroups.push( { name: 'notices', align: 'after', + excludeFromTargetWidget: true, include: [ { group: 'notices' } ] }, { name: 'pageMenu', align: 'after', + excludeFromTargetWidget: true, type: 'list', icon: 'menu', indicator: null, @@ -120,6 +123,7 @@ ve.init.mw.DesktopArticleTarget.static.toolbarGroups.push( { name: 'editMode', align: 'after', + excludeFromTargetWidget: true, type: 'list', icon: 'edit', title: ve.msg( 'visualeditor-mweditmode-tooltip' ), @@ -130,6 +134,7 @@ ve.init.mw.DesktopArticleTarget.static.toolbarGroups.push( { name: 'save', align: 'after', + excludeFromTargetWidget: true, type: 'bar', include: [ { group: 'save' } ] } diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index 598eb1cc97..4362e79caa 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -51,6 +51,12 @@ OO.inheritClass( ve.init.mw.MobileArticleTarget, ve.init.mw.ArticleTarget ); /* Static Properties */ ve.init.mw.MobileArticleTarget.static.toolbarGroups = [ + // Back + { + name: 'back', + include: [ 'back' ], + excludeFromTargetWidget: true + }, { name: 'history', include: [ 'undo' ] @@ -71,6 +77,22 @@ ve.init.mw.MobileArticleTarget.static.toolbarGroups = [ { name: 'link', include: [ 'link' ] + }, + { + name: 'editMode', + type: 'list', + icon: 'edit', + title: ve.msg( 'visualeditor-mweditmode-tooltip' ), + label: ve.msg( 'visualeditor-mweditmode-tooltip' ), + invisibleLabel: true, + include: [ { group: 'editMode' } ], + excludeFromTargetWidget: true + }, + { + name: 'save', + type: 'bar', + include: [ 'showSave' ], + excludeFromTargetWidget: true } ]; @@ -453,40 +475,9 @@ ve.init.mw.MobileArticleTarget.prototype.tryTeardown = function () { /** * @inheritdoc */ -ve.init.mw.MobileArticleTarget.prototype.setupToolbar = function ( surface ) { - const originalToolbarGroups = this.toolbarGroups; - - // We don't want any of these tools to show up in subordinate widgets, so we - // temporarily add them here. We need to do it _here_ rather than in their - // own static variable to make sure that other tools which meddle with - // toolbarGroups (Cite, mostly) have a chance to do so. - this.toolbarGroups = [ - // Back - { - name: 'back', - include: [ 'back' ] - }, - ...this.toolbarGroups, - { - name: 'editMode', - type: 'list', - icon: 'edit', - title: ve.msg( 'visualeditor-mweditmode-tooltip' ), - label: ve.msg( 'visualeditor-mweditmode-tooltip' ), - invisibleLabel: true, - include: [ { group: 'editMode' } ] - }, - { - name: 'save', - type: 'bar', - include: [ 'showSave' ] - } - ]; - +ve.init.mw.MobileArticleTarget.prototype.setupToolbar = function () { // Parent method - ve.init.mw.MobileArticleTarget.super.prototype.setupToolbar.call( this, surface ); - - this.toolbarGroups = originalToolbarGroups; + ve.init.mw.MobileArticleTarget.super.prototype.setupToolbar.apply( this, arguments ); this.toolbar.$element.addClass( 've-init-mw-mobileArticleTarget-toolbar' ); this.toolbar.$popups.addClass( 've-init-mw-mobileArticleTarget-toolbar-popups' ); diff --git a/modules/ve-mw/init/targets/ve.init.mw.Target.js b/modules/ve-mw/init/targets/ve.init.mw.Target.js index 9853b3aad6..ed703ed6e4 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.Target.js +++ b/modules/ve-mw/init/targets/ve.init.mw.Target.js @@ -311,7 +311,10 @@ ve.init.mw.Target.prototype.createTargetWidget = function ( config ) { // Reset to visual mode for target widgets modes: [ 'visual' ], defaultMode: 'visual', - toolbarGroups: this.toolbarGroups.filter( ( group ) => group.align !== 'after' ), + toolbarGroups: this.toolbarGroups.filter( ( group ) => !group.excludeFromTargetWidget && + // Deprecated: Don't rely on alignment to exclude from target widgets, use + // excludeFromTargetWidget instead. + group.align !== 'after' ), surfaceClasses: this.getSurfaceClasses() }, config ) ); }; From b25b452fe03c0e6671ab3a4d1781858b19140445 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 17 Jul 2025 14:33:59 -0500 Subject: [PATCH 474/730] Edit check: restrict tone check to only validated languages Bug: T388716 Change-Id: I7066c29456ddff218b5893983adbfd52aa785709 --- .../modules/editchecks/experimental/ToneCheck.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index c7bd528fe7..66aab8864a 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -11,6 +11,8 @@ mw.editcheck.ToneCheck.static.name = 'tone'; mw.editcheck.ToneCheck.static.predictionThreshold = 0.8; +mw.editcheck.ToneCheck.static.allowedContentLanguages = [ 'en', 'es', 'fr', 'ja', 'pt' ]; + /* Static methods */ /** @@ -57,6 +59,17 @@ mw.editcheck.ToneCheck.static.checkAsync = function ( text ) { /* Instance methods */ +/** + * @inheritdoc + */ +mw.editcheck.ToneCheck.prototype.canBeShown = function ( ...args ) { + if ( !this.constructor.static.allowedContentLanguages.includes( mw.config.get( 'wgContentLanguage' ) ) ) { + return false; + } + + return mw.editcheck.ToneCheck.super.prototype.canBeShown.call( this, ...args ); +}; + mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { if ( !outcome ) { return null; From 7c81441aea9cafe9118c3bcffbc37addea32204f Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 21 Jul 2025 09:34:53 +0200 Subject: [PATCH 475/730] Localisation updates from https://translatewiki.net. Change-Id: I5c1e1f0db531a83c124d97266b563e40743ec61e --- editcheck/i18n/lb.json | 2 +- i18n/ve-mw/lb.json | 40 ++++++++++++++++++++++++---------------- i18n/ve-mw/nl.json | 5 +++-- i18n/ve-wmf/nl.json | 2 ++ i18n/ve-wmf/tr.json | 4 ++-- i18n/ve-wmf/zh-hant.json | 2 ++ 6 files changed, 34 insertions(+), 21 deletions(-) diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index 7893e2ea7e..abbdd93e26 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -4,7 +4,7 @@ "Volvox" ] }, - "editcheck-dialog-action-no": "Neen", + "editcheck-dialog-action-no": "Nee", "editcheck-dialog-action-yes": "Jo", "editcheck-dialog-action-revise": "Iwwerschaffen", "editcheck-dialog-action-back": "Zréck", diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index 71ef6ada9a..a350883f20 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -45,15 +45,16 @@ "visualeditor-ca-editsource-section": "Quelltext änneren", "visualeditor-ca-editsource-section-hint": "Quelltext vum Abschnitt änneren: $1", "visualeditor-categories-tool": "Kategorien", - "visualeditor-changedesc-mwcategory-sortkey-changed": "Zortéierschlëssel vu(n) $1 op $2 geännert", - "visualeditor-changedesc-mwcategory-sortkey-set": "Zortéierschlëssel op $1 gesat", - "visualeditor-changedesc-mwcategory-sortkey-unset": "Zortéierschlëssel $1 ewechgeholl", + "visualeditor-changedesc-mwcategory-sortkey-changed": "Sortéierschlëssel vu(n) $1 op $2 geännert", + "visualeditor-changedesc-mwcategory-sortkey-set": "Sortéierschlëssel op $1 gesat", + "visualeditor-changedesc-mwcategory-sortkey-unset": "Sortéierschlëssel $1 ewechgeholl", "visualeditor-changedesc-mwredirect": "Zil vun der Viruleedung vu(n) $1 op $2 geännert", "visualeditor-changedesc-mwtransclusion": "Parametere vun der Schabloun geännert", "visualeditor-desc": "Visuellen Editeur fir MediaWiki", "visualeditor-descriptionpagelink": "Project:VisualEditor", "visualeditor-dialog-extension-abandonedit": "Sidd Dir sécher, datt Dir dësen Dialog zoumaache wëllt ouni Är Ännerungen ze späicheren?", - "visualeditor-dialog-media-alttext-section": "Alternativen Text", + "visualeditor-dialog-media-alttext-checkbox": "D'Beschrëftung als Alternativtext benotzen", + "visualeditor-dialog-media-alttext-section": "Alternativtext", "visualeditor-dialog-media-alttext-section-help": "Dir kënnt dëst benotze fir eng Text-Beschreiwung ze schreiwe fir Leit déi d'Element net kënne gesinn. D'Beschreiwung soll duergoe fir datt si den Zweck an d'Informatioun vum Medien-Element verstinn. Dëst ass vital fir blann Benotzer an aner Leit, déi Screen-Reader-Software oder Browseren déi just Text duerstellen, benotzen.", "visualeditor-dialog-media-change-image": "Bild änneren", "visualeditor-dialog-media-choose-image": "Dëst Bild benotzen", @@ -89,8 +90,8 @@ "visualeditor-dialog-meta-categories-addcategory-label": "Eng Kategorie op dës Säit derbäisetzen", "visualeditor-dialog-meta-categories-category": "Kategorie", "visualeditor-dialog-meta-categories-data-label": "Kategorien", - "visualeditor-dialog-meta-categories-defaultsort-help": "Dir kënnt iwwerschreiwe wéi dës Säit zortéiert gëtt, wa se an enger Kategorie ugewise gëtt, andeems Dir en aneren Index setzt fir mat ze sortéieren. Dëst gëtt dacks benotzt fir Säiten iwwer Leit ze weisen nom Familljennumm, awer hire Virnumm gëtt als éischt gewisen.", - "visualeditor-dialog-meta-categories-defaultsort-label": "Dës Säit standardméisseg zortéiere mat", + "visualeditor-dialog-meta-categories-defaultsort-help": "Dir kënnt iwwerschreiwen, wéi dës Säit sortéiert gëtt, wa se an enger Kategorie ugewise gëtt, andeems Dir en aneren Index fir ze sortéiere setzt. Dat gëtt dacks gemaach fir Säiten iwwer Persounen nom Familljennumm ze sortéieren, obwuel an hirem Numm de Virnumm als éischt ugewise gëtt.", + "visualeditor-dialog-meta-categories-defaultsort-label": "Dës Säit standardméisseg sortéieren als", "visualeditor-dialog-meta-categories-hidden": "Dës Kategorie ass esou agestallt datt se net op Säite gewise gëtt op déi se dobäigesat gëtt.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Verstoppt Kategorien", "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Kategorien, déi dorop passen", @@ -100,39 +101,44 @@ "visualeditor-dialog-meta-categories-missing": "Dës Kategorie huet keng Beschreiwungssäit.", "visualeditor-dialog-meta-categories-options": "Optiounen", "visualeditor-dialog-meta-categories-section": "Kategorien", - "visualeditor-dialog-meta-categories-sortkey-label": "Dës Säit zortéiere wéi wa se esou géif heeschen", + "visualeditor-dialog-meta-categories-sortkey-label": "Dës Säit sortéieren, wéi wa se esou géif heeschen", "visualeditor-dialog-meta-languages-code-label": "Sproochecode", "visualeditor-dialog-meta-languages-label": "Sproochen", "visualeditor-dialog-meta-languages-link-label": "Verlinkt Säit", "visualeditor-dialog-meta-languages-name-label": "Sprooch", "visualeditor-dialog-meta-languages-readonlynote": "Dëst ass eng Lëscht vu Säiten an anere Sproochen déi mat dëser verlinkt sinn; déi kënne fir den Ament nëmmen am Quellmodus oder op Wikidata geännert ginn.", "visualeditor-dialog-meta-languages-section": "Sproochen", - "visualeditor-dialog-meta-settings-displaytitle": "Titel, dee gewise gëtt", - "visualeditor-dialog-meta-settings-hiddencat-help": "Dir kënnt verhënneren datt dës Kategorie an der Lëscht vun de Kategorien op Membersäite gewise gëtt. Dat ass nëtzlech fir Kategorien déi fir Auteure vun Interessi sinn awer net fir déi meescht Lieser, zum Beispill Säiten op deenen eng Illustratioun feelt.", + "visualeditor-dialog-meta-settings-displaytitle": "Titel, deen ugewise gëtt", + "visualeditor-dialog-meta-settings-displaytitle-help": "Dir kënnt iwwerschreiwen, wéi den Titel vun dëser Säit ugewise gëtt, andeems Dir eng aner Bezeechnung fir unzeweise festleet.", + "visualeditor-dialog-meta-settings-hiddencat-help": "Dir kënnt verhënneren, datt dës Kategorie an der Lëscht vun de Kategorien op Membersäiten ugewise gëtt. Dat ass nëtzlech fir Kategorien, déi fir Auteure vun Interessi sinn, awer net fir déi meescht Lieser, zum Beispill Säiten, op deenen eng Illustratioun feelt.", "visualeditor-dialog-meta-settings-hiddencat-label": "Verstoppt Kategorie", "visualeditor-dialog-meta-settings-index-default": "Standard", - "visualeditor-dialog-meta-settings-index-disable": "Neen", + "visualeditor-dialog-meta-settings-index-disable": "Nee", "visualeditor-dialog-meta-settings-index-force": "Jo", - "visualeditor-dialog-meta-settings-index-label": "Dës Säit vu Suchmaschinnen indexéiere loossen", + "visualeditor-dialog-meta-settings-index-help": "Dir kënnt Sichmaschinne forcéieren dës Säit an hire relevante Resultater opzelëschten oder se forcéieren dat net ze maachen. Dës Optioun huet keen Afloss op d'säitenintern Sich.", + "visualeditor-dialog-meta-settings-index-label": "Dës Säit vu Sichmaschinnen indexéiere loossen", "visualeditor-dialog-meta-settings-label": "Astellunge vun der Säit", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Standard", - "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Neen", + "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Nee", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Jo", "visualeditor-dialog-meta-settings-newsectioneditlink-label": "En Tab op dëser Säit weisen fir en neien Abschnitt derbäizesetzen", "visualeditor-dialog-meta-settings-nocontentconvert-label": "Inhalt Tëscht de Sproochvarianten net ëmwandelen", - "visualeditor-dialog-meta-settings-noeditsection-help": "Dir kënnt verhënneren datt Ännerungslinken nieft all Abschnitt gewise ginn an deene spezielle Fäll wou dat ubruecht ass.", - "visualeditor-dialog-meta-settings-noeditsection-label": "D'Linken 'Änneren' niewent all Iwwerschrëft op dëser Säit ausschalten.", - "visualeditor-dialog-meta-settings-nogallery-help": "Dir kënnt verhënneren datt dës Kategorie Fichieren déi do dra sinn als Galerie weist, wann dat net ubruecht ass.", + "visualeditor-dialog-meta-settings-noeditsection-help": "Dir kënnt verhënneren, datt d'Ännerungslinken nieft all Abschnitt ugewise ginn, fir déi speziell Fäll, wou dat ubruecht ass.", + "visualeditor-dialog-meta-settings-noeditsection-label": "D'Linke fir z'änneren niewent all Iwwerschrëft op dëser Säit ausschalten.", + "visualeditor-dialog-meta-settings-nogallery-help": "Dir kënnt verhënneren, datt dës Kategorie d'Fichieren, déi an hir dra sinn, als Galerie uweist, falls dat net ubruecht ass.", "visualeditor-dialog-meta-settings-nogallery-label": "Galerie desaktivéieren", + "visualeditor-dialog-meta-settings-notitleconvert-help": "Dir kënnt verhënneren, datt den Titel vun dëser Säit automatesch an aner Schrëften ëmgewandelt gëtt.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Titel tëscht de Sproochvarianten net ëmwandelen", - "visualeditor-dialog-meta-settings-redirect-help": "Dir kënnt aus dëser Säit eng Viruleedung maachen, dat ass eng Säit déi Lieser automatesch op eng aner Säit vun dëser Wiki féiert. Dëst ass nëtzlech bei alternativen Nimm oder Konzepter. Wann Dir dat maacht da gesinn d'Lieser den Inhalt vun dëser Säit net.", + "visualeditor-dialog-meta-settings-redirect-help": "Dir kënnt aus dëser Säit eng Viruleedung maachen, d.&nbps;h. eng Säit, déi de Lieser automatesch op eng aner Säit vun dëser Wiki féiert. Dat ass nëtzlech bei falsche Schreifweisen an alternativen Nimm oder Konzepter. Wann Dir dat maacht, da gesinn d'Lieser den Inhalt vun dëser Säit net.", "visualeditor-dialog-meta-settings-redirect-label": "Dës Säit viruleeden op", "visualeditor-dialog-meta-settings-redirect-placeholder": "Zilsäit fir d'Viruleedung", + "visualeditor-dialog-meta-settings-redirect-statichelp": "Dir kënnt verhënneren, datt dës Viruleedung automatesch aktualiséiert gëtt, wann d'Säit, op déi virugeleet gëtt, geréckelt gëtt, fir de seelene Fall, wou dat néideg wier.", "visualeditor-dialog-meta-settings-redirect-staticlabel": "Dës Viruleedung net aktualiséiere wann d'Zilsäit geréckelt gëtt.", "visualeditor-dialog-meta-settings-section": "Astellunge vun der Säit", "visualeditor-dialog-meta-settings-toc-default": "Wann néideg", "visualeditor-dialog-meta-settings-toc-disable": "Ni", "visualeditor-dialog-meta-settings-toc-force": "Ëmmer", + "visualeditor-dialog-meta-settings-toc-help": "Dir kënnt d'Uweise vun engem Inhaltsverzeechnes, dat all Iwwerschrëft op der Säit oplëscht, op Säite mat manner véier Iwwerschrëften erzwéngen oder maachen, datt et guer net ugewise gëtt. Standardméisseg gëtt et ugewisen, wann d'Säit véier oder méi Iwwerschrëften huet.", "visualeditor-dialog-meta-settings-toc-label": "Inhaltsverzeechnes weisen", "visualeditor-dialog-meta-templatesused-noresults": "Keng Schabloune fonnt.", "visualeditor-dialog-meta-title": "Optiounen", @@ -143,6 +149,7 @@ "visualeditor-dialog-template-title": "Schabloun", "visualeditor-dialog-transclusion-action-save": "Späicheren", "visualeditor-dialog-transclusion-template-title-nonexistent": "Dës Schabloun gëtt et net.", + "visualeditor-dialog-transclusion-template-title-modifier": "Eng Dokumentatioun vun der Schabloun a [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter Parameter]-Nimm (falls et der gëtt) sinn net disponibel, wa Schabloune mat verschachtelter Syntax oder Modifikatore wéi [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst] geännert ginn.", "visualeditor-dialog-transclusion-template-widget-aria": "Dréckd d'Space-Tast fir d'Schabloun erauszesichen.", "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "Dréckt CTrl+Del fir d'Schabloun nat hire Parameteren a Wäerter ze läschen.", "visualeditor-dialog-transclusion-add-wikitext": "Wikitext derbäisetzen", @@ -271,6 +278,7 @@ "visualeditor-mwgallerydialog-title": "Gallerie", "visualeditor-mwgallerydialog-widths-field-label": "Breet vum Bild", "visualeditor-mwgallerydialog-widths-input-placeholder": "Standardbreet: $1 Pixel", + "visualeditor-mwpredialog-title": "Virformatéierte Kloertext", "visualeditor-mwsignature-tool": "Är Ënnerschrëft", "visualeditor-preference-visualeditor": "De visuellen Editeur aktivéieren", "visualeditor-preference-newwikitexteditor-help": "Dëst gëtt heiansdo „Wikitext-Editeur 2017“ genannt.", diff --git a/i18n/ve-mw/nl.json b/i18n/ve-mw/nl.json index 118f727ff4..e97894c8ec 100644 --- a/i18n/ve-mw/nl.json +++ b/i18n/ve-mw/nl.json @@ -271,7 +271,7 @@ "visualeditor-expandable-less": "Minder", "visualeditor-expandable-more": "Meer", "visualeditor-feedback-defaultmessage": "URL: $1", - "visualeditor-formatdropdown-format-mw-heading1": "Paginanaam", + "visualeditor-formatdropdown-format-mw-heading1": "Paginatitel", "visualeditor-formatdropdown-format-mw-heading2": "Kopje", "visualeditor-formatdropdown-format-mw-heading3": "Onderkop 1", "visualeditor-formatdropdown-format-mw-heading4": "Onderkop 2", @@ -288,6 +288,7 @@ "visualeditor-includes-includeonly-description": "Wanneer inhoud van deze pagina door een andere pagina wordt gebruikt, wordt hier de volgende aanvullende inhoud opgenomen:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Meer informatie over gedeeltelijke transclusie]", "visualeditor-languages-tool": "Talen", + "visualeditor-linkcontext-uneditable": "Deze koppeling kan momenteel helaas alleen in de broncodemodus bewerkt worden.", "visualeditor-linkinspector-button-link-external": "Externe koppeling", "visualeditor-linkinspector-button-link-internal": "Interne pagina's doorzoeken", "visualeditor-linkinspector-convert-link-isbn": "Omzetten naar ISBN-koppeling", @@ -361,7 +362,7 @@ "visualeditor-rebase-client-export": "Exporteren", "visualeditor-rebase-client-export-start": "Exporteren…", "visualeditor-rebase-client-import": "Importeren", - "visualeditor-rebase-client-import-name": "Paginanaam", + "visualeditor-rebase-client-import-name": "Paginatitel", "visualeditor-rebase-client-title-help": "U kunt wijzigingen bekijken voordat u ze opslaat.", "visualeditor-recreate": "De pagina is verwijderd sinds u bent begonnen met bewerken. Klik op \"$1\" om de pagina opnieuw aan te maken.", "visualeditor-redirect-description": "Doorverwijzing naar $1", diff --git a/i18n/ve-wmf/nl.json b/i18n/ve-wmf/nl.json index 06424c9849..58e64bd851 100644 --- a/i18n/ve-wmf/nl.json +++ b/i18n/ve-wmf/nl.json @@ -30,6 +30,8 @@ "tag-editcheck-references-activated-description": "EditCheck denkt dat er een referentie nodig kan zijn, en de gebruikersinterface is weergegeven", "tag-editcheck-references-shown": "EditCheck (referenties) weergegeven", "tag-editcheck-references-shown-description": "EditCheck denkt dat er een referentie nodig kan zijn, en de gebruikersinterface is weergegeven", + "tag-editcheck-tone-shown": "Bewerkingscontrole (toon) weergegeven", + "tag-editcheck-tone-shown-description": "EditCheck denkt dat een aanpassing van de toon in bepaalde inhoud nodig was geweest, en de gebruikersinterface is weergegeven", "tag-visualeditor": "Visuele tekstverwerker", "tag-visualeditor-description": "Bewerking gedaan met de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwerker]]", "tag-visualeditor-needcheck": "Visuele tekstverwerker: nakijken", diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index e484d47c55..13566d7c29 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -29,8 +29,8 @@ "tag-editcheck-references-activated-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", "tag-editcheck-references-shown": "Düzenleme Kontrolü (kaynakça) gösterildi", "tag-editcheck-references-shown-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", - "tag-editcheck-tone-shown": "Düzenleme Denetimi (üslup) gösteriliyor", - "tag-editcheck-tone-shown-description": "DüzenlemeDenetimi, bazı içerikte üslup ayarlamasının gerekli olabileceğini düşünüyor ve kullanıcı arayüzü gösteriliyor", + "tag-editcheck-tone-shown": "Düzenleme Kontrolü (üslup) gösterildi", + "tag-editcheck-tone-shown-description": "DüzenlemeKontrolü, bazı içeriklerdeki üslup ayarlamalarının gerekli olabileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", "tag-visualeditor": "Görsel düzenleme", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleyiciyi]] kullanarak düzenleyin", "tag-visualeditor-needcheck": "Görsel düzenleme: Doğrula", diff --git a/i18n/ve-wmf/zh-hant.json b/i18n/ve-wmf/zh-hant.json index 2bfddc20a0..ec08a1730b 100644 --- a/i18n/ve-wmf/zh-hant.json +++ b/i18n/ve-wmf/zh-hant.json @@ -34,6 +34,8 @@ "tag-editcheck-references-activated-description": "編輯檢查認為可能需要參考資料,並顯示了UI", "tag-editcheck-references-shown": "編輯檢查(參考資料)已顯示", "tag-editcheck-references-shown-description": "編輯檢查認為可能需要參考資料,並顯示了UI", + "tag-editcheck-tone-shown": "編輯檢查(語調)已顯示", + "tag-editcheck-tone-shown-description": "編輯檢查認為編輯內容的語調可能需要調整,並顯示了UI", "tag-visualeditor": "視覺化編輯", "tag-visualeditor-description": "使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|視覺化編輯器]]完成的編輯", "tag-visualeditor-needcheck": "視覺化編輯器:需要檢查", From d05984d4d2dd87eb9e252a1f15bb94fa223d59ed Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 6 Jun 2025 12:09:02 +0100 Subject: [PATCH 476/730] Edit check: create editcheck-tone tag for when tone is detected Bug: T388716 Change-Id: I52a688e7769372191095aa97177d6d0449f02de9 --- .../modules/editchecks/AsyncTextCheck.js | 8 +++- editcheck/modules/init.js | 45 ++++++++++++++++--- extension.json | 1 + i18n/ve-wmf/en.json | 2 + i18n/ve-wmf/qqq.json | 2 + includes/Hooks.php | 1 + 6 files changed, 52 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/editchecks/AsyncTextCheck.js b/editcheck/modules/editchecks/AsyncTextCheck.js index 8496b2ef88..4e2e1b1ec9 100644 --- a/editcheck/modules/editchecks/AsyncTextCheck.js +++ b/editcheck/modules/editchecks/AsyncTextCheck.js @@ -61,8 +61,12 @@ mw.editcheck.AsyncTextCheck.prototype.handleListener = function ( listener, surf if ( selection instanceof ve.dm.LinearSelection && listener !== 'onBeforeSave' ) { // TODO currentBranchNode = surfaceModel.getDocument().getBranchNodeFromOffset( selection.getRange().to ); } - let modifiedContentRanges = this.getModifiedContentRanges( documentModel ) - .filter( ( range ) => !this.isDismissedRange( range ) ); + let modifiedContentRanges = this.getModifiedContentRanges( documentModel ); + if ( listener !== 'onCheckAll' ) { + // mw.editcheck.hasAddedContentFailingToneCheck wants to check for any violations, even dismissed ones. + // Used for tagging. + modifiedContentRanges = modifiedContentRanges.filter( ( range ) => !this.isDismissedRange( range ) ); + } if ( listener === 'onBeforeSave' ) { modifiedContentRanges = modifiedContentRanges.filter( ( range ) => !this.isTaggedRange( 'interacted', range ) ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 07d39b16b6..caf5d4db53 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -26,8 +26,18 @@ require( './editchecks/AddReferenceEditCheck.js' ); if ( mw.editcheck.experimental ) { mw.loader.using( 'ext.visualEditor.editCheck.experimental' ); +} else { + // Load Tone check regardless for tagging + require( './editchecks/experimental/ToneCheck.js' ); + // Disable by unregistering + mw.editcheck.editCheckFactory.unregister( mw.editcheck.ToneCheck ); } +const isMainNamespace = mw.config.get( 'wgNamespaceNumber' ) === mw.config.get( 'wgNamespaceIds' )[ '' ]; + +// Helper functions for ve.init.mw.ArticleTarget save-tagging, keep logic +// in-sync with AddReferenceEditCheck and ToneCheck. + /** * Check if the document has content needing a reference, for AddReferenceEditCheck * @@ -36,17 +46,26 @@ if ( mw.editcheck.experimental ) { * @return {boolean} */ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, includeReferencedContent ) { - // helper for ve.init.mw.ArticleTarget save-tagging, keep logic below in-sync with AddReferenceEditCheck. - // This is bypassing the normal "should this check apply?" logic for creation, so we need to manually - // apply the "only the main namespace" rule. - if ( mw.config.get( 'wgNamespaceNumber' ) !== mw.config.get( 'wgNamespaceIds' )[ '' ] ) { + // Tag anything in the main namespace, regardless of other eligibility checks + if ( !isMainNamespace ) { return false; } - const check = mw.editcheck.editCheckFactory.create( 'addReference', null, mw.editcheck.config.addReference ); // TODO: This should be factored out into a static method so we don't have to construct a dummy check + const check = mw.editcheck.editCheckFactory.create( 'addReference', null, mw.editcheck.config.addReference ); return check.findAddedContent( documentModel, includeReferencedContent ).length > 0; }; +mw.editcheck.hasFailingToneCheck = function ( surfaceModel ) { + // Check might not be registered so we can't use the factory. + const check = new mw.editcheck.ToneCheck( null, mw.editcheck.config.tone ); + // Run actual check eligibility before calling API + if ( !check.canBeShown() ) { + return ve.createDeferred().resolve( false ).promise(); + } + return Promise.all( check.handleListener( 'onCheckAll', surfaceModel ) ) + .then( ( results ) => results.some( ( result ) => result !== null ) ); +}; + if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { mw.hook( 've.activationComplete' ).add( () => { const target = ve.init.target; @@ -61,6 +80,17 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { return group ? group.firstNodes || [] : []; } + let hasFailingToneCheck = null; + target.getPreSaveProcess().first( () => { + // Start checking for tone in the pre-save process, but don't block the save dialog + // from appearing. If the tone check isn't finished by save time we will just log + // an error. + hasFailingToneCheck = null; + mw.editcheck.hasFailingToneCheck( target.getSurface().getModel() ).then( ( result ) => { + hasFailingToneCheck = result; + } ); + } ); + const initLength = getRefNodes().length; target.saveFields.vetags = function () { const refNodes = getRefNodes(); @@ -82,6 +112,11 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { if ( mw.editcheck.toneCheckShown ) { tags.push( 'editcheck-tone-shown' ); } + if ( hasFailingToneCheck ) { + tags.push( 'editcheck-tone' ); + } else if ( hasFailingToneCheck === null ) { + ve.track( 'activity.editCheck-tone', { action: 'save-before-check-finalized' } ); + } return tags.join( ',' ); }; } ); diff --git a/extension.json b/extension.json index 585cf95549..98769ba202 100644 --- a/extension.json +++ b/extension.json @@ -644,6 +644,7 @@ "editcheck/modules/editchecks/BaseEditCheck.js", "editcheck/modules/editchecks/AsyncTextCheck.js", "editcheck/modules/editchecks/AddReferenceEditCheck.js", + "editcheck/modules/editchecks/experimental/ToneCheck.js", { "name": "editcheck/modules/config.json", "callback": "\\MediaWiki\\Extension\\VisualEditor\\EditCheck\\ResourceLoaderData::getConfig" diff --git a/i18n/ve-wmf/en.json b/i18n/ve-wmf/en.json index 8408ec3fa1..06fc92ca0b 100644 --- a/i18n/ve-wmf/en.json +++ b/i18n/ve-wmf/en.json @@ -28,6 +28,8 @@ "tag-editcheck-references-shown": "Edit Check (references) shown", "tag-editcheck-references-shown-description": "EditCheck thinks a reference might have been needed, and the UI was shown", "tag-editcheck-references-shown-helppage": "mediawikiwiki:Special:MyLanguage/Edit check/False positives", + "tag-editcheck-tone": "-", + "tag-editcheck-tone-description": "EditCheck detected a potential issue with the tone of some added content", "tag-editcheck-tone-shown": "Edit Check (tone) shown", "tag-editcheck-tone-shown-description": "EditCheck thinks an adjustment to the tone in some content might have been needed, and the UI was shown", "tag-visualeditor": "Visual edit", diff --git a/i18n/ve-wmf/qqq.json b/i18n/ve-wmf/qqq.json index 1cab0b8851..c4a6883bd5 100644 --- a/i18n/ve-wmf/qqq.json +++ b/i18n/ve-wmf/qqq.json @@ -38,6 +38,8 @@ "tag-editcheck-references-shown": "Short description of the editcheck-references-shown tag.\n\nTag added when EditCheck thinks that added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown-description}}\n{{Related|tag-editcheck-references-shown-description}}", "tag-editcheck-references-shown-description": "Long description of the editcheck-references-shown tag.\n\nHidden tag added when EditCheck thinks added content might need a reference, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-references-shown}}\n{{Related|tag-editcheck-references-shown}}", "tag-editcheck-references-shown-helppage": "{{notranslate}}\nLink to the false positives reporting page of EditCheck.\n\nUsed in:\n* {{msg-mw|tag-editcheck-references-shown}}", + "tag-editcheck-tone": "{{ignored}}Short description of the editcheck-tone tag.\n\nHidden tag added when EditCheck detected a potential issue with the tone of some added content.", + "tag-editcheck-tone-description": "Long description of the editcheck-tone tag.\n\nHidden tag added when EditCheck detected a potential issue with the tone of some added content.", "tag-editcheck-tone-shown": "Short description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks that added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown-description}}\n{{Related|tag-editcheck-tone-shown-description}}", "tag-editcheck-tone-shown-description": "Long description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown}}\n{{Related|tag-editcheck-tone-shown}}", "tag-visualeditor": "Short description of the visualeditor tag. Do not translate the link target, but do translate the words \"Visual edit\".\n\nShown on lists of changes (history, recentchanges, etc.) for each edit made using VisualEditor.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck}}\n{{Related|Tag-visualeditor}}\n{{Identical|VisualEditor}}", diff --git a/includes/Hooks.php b/includes/Hooks.php index c2d1105a09..6ac48d7ad9 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -103,6 +103,7 @@ class Hooks implements 'editcheck-references-shown', 'editcheck-newcontent', 'editcheck-newreference', + 'editcheck-tone', 'editcheck-tone-shown', // No longer in active use: 'editcheck-references-activated', From d9b06cc453ca04fffd00d0d63442781e828045a1 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 17 Jul 2025 14:34:28 -0500 Subject: [PATCH 477/730] Edit check: tell the tone check model the current content language Change-Id: Ifb7fb4f5e1d72606877116a18e84c089560e14b6 --- editcheck/modules/editchecks/experimental/ToneCheck.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 66aab8864a..91b9a4a60b 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -43,7 +43,7 @@ mw.editcheck.ToneCheck.static.checkAsync = function ( text ) { page_title: titleText, original_text: '', check_type: 'tone', - lang: 'en' + lang: mw.config.get( 'wgContentLanguage' ) } /* eslint-enable camelcase */ ] From db79aa295383a64beaaa08d6aa8323937d16af37 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 17 Jul 2025 14:50:45 -0500 Subject: [PATCH 478/730] Edit check: add a way for async text checks to apply filters after memoization Change-Id: I50d2b486146caaf06079ee032ce2e02160d226bc --- .../modules/editchecks/AsyncTextCheck.js | 39 +++++++++++++------ .../editchecks/experimental/ToneCheck.js | 12 +++--- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/editcheck/modules/editchecks/AsyncTextCheck.js b/editcheck/modules/editchecks/AsyncTextCheck.js index 4e2e1b1ec9..e34a39bc67 100644 --- a/editcheck/modules/editchecks/AsyncTextCheck.js +++ b/editcheck/modules/editchecks/AsyncTextCheck.js @@ -47,6 +47,19 @@ mw.editcheck.AsyncTextCheck.static.name = null; */ mw.editcheck.AsyncTextCheck.static.memoizedCheckAsync = null; +/** + * Perform a possibly-asynchronous check on the plaintext of a ContentBranchNode. + * + * The check must be deterministic; i.e. it must always return the same value for the same + * arguments. This allows the result to be memoized. + * + * @abstract + * @static + * @param {string} text The plaintext of the ContentBranchNode + * @return {Promise|any} The outcome of the check, to be passed into #newAction + */ +mw.editcheck.AsyncTextCheck.static.checkAsync = null; + /* Methods */ /** @@ -87,6 +100,8 @@ mw.editcheck.AsyncTextCheck.prototype.handleListener = function ( listener, surf this.constructor.static.memoizedCheckAsync( documentModel.data.getText( true, node.getRange() ) ) + ).then( + ( outcome ) => this.afterMemoized( outcome ) ).then( ( outcome ) => { if ( !outcome ) { return null; @@ -111,18 +126,6 @@ mw.editcheck.AsyncTextCheck.prototype.onBranchNodeChange = function ( ...args ) return this.handleListener( 'onBranchNodeChange', ...args ); }; -/** - * Perform a possibly-asynchronous check on the plaintext of a ContentBranchNode. - * - * The check must be deterministic; i.e. it must always return the same value for the same - * arguments. This allows the result to be memoized. - * - * @abstract - * @param {string} text The plaintext of the ContentBranchNode - * @return {Promise|any} The outcome of the check, to be passed into #newAction - */ -mw.editcheck.AsyncTextCheck.prototype.checkAsync = null; - /** * Build an action (or not), depending on the outcome of #checkAsync * @@ -135,6 +138,18 @@ mw.editcheck.AsyncTextCheck.prototype.checkAsync = null; */ mw.editcheck.AsyncTextCheck.prototype.newAction = null; +/** + * A filter to apply after the memoized call has occurred + * + * This is where instance-specific configuration would be applied + * + * @param {any} outcome The outcome returned by #checkAsync + * @return {any} + */ +mw.editcheck.AsyncTextCheck.prototype.afterMemoized = function ( outcome ) { + return outcome; +}; + /** * @inheritdoc */ diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 91b9a4a60b..ecfd9da302 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -50,11 +50,7 @@ mw.editcheck.ToneCheck.static.checkAsync = function ( text ) { } ) } ).then( ( response ) => response.json() - ).then( ( data ) => { - const outcome = data.predictions[ 0 ].prediction === true && - data.predictions[ 0 ].probability >= mw.editcheck.ToneCheck.static.predictionThreshold; - return !!outcome; - } ); + ); }; /* Instance methods */ @@ -70,6 +66,12 @@ mw.editcheck.ToneCheck.prototype.canBeShown = function ( ...args ) { return mw.editcheck.ToneCheck.super.prototype.canBeShown.call( this, ...args ); }; +mw.editcheck.ToneCheck.prototype.afterMemoized = function ( data ) { + const outcome = data.predictions[ 0 ].prediction === true && + data.predictions[ 0 ].probability >= mw.editcheck.ToneCheck.static.predictionThreshold; + return !!outcome; +}; + mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { if ( !outcome ) { return null; From 024e0198687c4e2110095373ec64f8fca9b5f25c Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 17 Jul 2025 14:52:32 -0500 Subject: [PATCH 479/730] Edit check: make tone check threshold configurable Change-Id: I171f9879e5ae39b868be3e100ea785feab588104 --- editcheck/modules/editchecks/experimental/ToneCheck.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index ecfd9da302..3a3d7c51ed 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -9,10 +9,12 @@ OO.inheritClass( mw.editcheck.ToneCheck, mw.editcheck.AsyncTextCheck ); mw.editcheck.ToneCheck.static.name = 'tone'; -mw.editcheck.ToneCheck.static.predictionThreshold = 0.8; - mw.editcheck.ToneCheck.static.allowedContentLanguages = [ 'en', 'es', 'fr', 'ja', 'pt' ]; +mw.editcheck.ToneCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.BaseEditCheck.static.defaultConfig, { + predictionThreshold: 0.8 +} ); + /* Static methods */ /** @@ -68,7 +70,7 @@ mw.editcheck.ToneCheck.prototype.canBeShown = function ( ...args ) { mw.editcheck.ToneCheck.prototype.afterMemoized = function ( data ) { const outcome = data.predictions[ 0 ].prediction === true && - data.predictions[ 0 ].probability >= mw.editcheck.ToneCheck.static.predictionThreshold; + data.predictions[ 0 ].probability >= this.config.predictionThreshold; return !!outcome; }; From 47d3e0104b869f22a0b07eb442c93468aa762309 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 22 Jul 2025 09:35:20 +0200 Subject: [PATCH 480/730] Localisation updates from https://translatewiki.net. Change-Id: I8ff801c7ee5db071e28d4f03b372618e7461c85a --- editcheck/i18n/io.json | 1 + i18n/ve-mw/lt.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/io.json b/editcheck/i18n/io.json index 4cb3df5333..0095597032 100644 --- a/editcheck/i18n/io.json +++ b/editcheck/i18n/io.json @@ -6,6 +6,7 @@ }, "editcheck-dialog-addref-reject-common-knowledge": "L'informo quan me adjuntes esas ample konocata", "tag-editcheck-reference-decline-common-knowledge": "Kontrolo di redakturi (referi) refuzita (ordinara konoco)", + "tag-editcheck-reference-decline-common-knowledge-description": "Referi de EditCheck refuzesis pro esar ordinara konoco", "tag-editcheck-reference-decline-irrelevant": "Kontrolo di redakturi (referi) refuzita (senimporta)", "tag-editcheck-reference-decline-other": "Kontrolo di redakturi (referi) refuzita (altra motivo)", "tag-editcheck-reference-decline-uncertain": "Kontrolo di redakturi (referi) refuzita (necerta)" diff --git a/i18n/ve-mw/lt.json b/i18n/ve-mw/lt.json index bc8d00fc54..39f500ea25 100644 --- a/i18n/ve-mw/lt.json +++ b/i18n/ve-mw/lt.json @@ -52,7 +52,7 @@ "visualeditor-dialog-media-info-artist": "Įkėlė $1", "visualeditor-dialog-media-info-audiofile": "Garso failas", "visualeditor-dialog-media-info-created": "Sukūrė: $1", - "visualeditor-dialog-media-info-meta-artist": "Kūrėjas: $1", + "visualeditor-dialog-media-info-meta-artist": "Autorius: $1", "visualeditor-dialog-media-info-moreinfo": "Daugiau informacijos", "visualeditor-dialog-media-info-readmore": "Skaityti daugiau", "visualeditor-dialog-media-info-uploaded": "Įkelta: $1", From f516dcf1714d57aa9325c0c9b0bb445a49e30a49 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 23 Jul 2025 09:28:40 +0200 Subject: [PATCH 481/730] Localisation updates from https://translatewiki.net. Change-Id: Ib3d40bff214f869e315aa2db6d84c010bb2570e6 --- i18n/ve-wmf/az.json | 1 + i18n/ve-wmf/de.json | 4 +++- i18n/ve-wmf/fi.json | 1 + i18n/ve-wmf/gl.json | 1 + i18n/ve-wmf/tr.json | 1 + 5 files changed, 7 insertions(+), 1 deletion(-) diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index 58a08101b9..09c0061b81 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -18,6 +18,7 @@ "tag-editcheck-references-activated-description": "EditCheck istinad lazım olduğunu düşünür və interfeys göstərilir", "tag-editcheck-references-shown": "Redaktə Yoxlanışı (istinadlar) göstərilib", "tag-editcheck-references-shown-description": "EditCheck istinad lazım olduğunu düşünüb və interfeys göstərib", + "tag-editcheck-tone-description": "EditCheck əlavə edilən bəzi məzmunun tonunda potensial problem aşkarladı", "tag-editcheck-tone-shown": "Redaktə Yoxlanışı (ton) göstərildi", "tag-editcheck-tone-shown-description": "EditCheck hesab edib ki, bəzi məzmunun tonuna düzəliş lazım ola bilər və buna görə də müvafiq interfeysi göstərib", "tag-visualeditor": "Vizual redaktə", diff --git a/i18n/ve-wmf/de.json b/i18n/ve-wmf/de.json index 00df8b6d49..e695235acb 100644 --- a/i18n/ve-wmf/de.json +++ b/i18n/ve-wmf/de.json @@ -23,7 +23,9 @@ "tag-editcheck-references-activated-description": "EditCheck geht davon aus, dass möglicherweise ein Einzelnachweis erforderlich war, und die Benutzeroberfläche wurde angezeigt", "tag-editcheck-references-shown": "Bearbeitungsprüfung (Belege) wurde angezeigt", "tag-editcheck-references-shown-description": "Die Bearbeitungsprüfung ist der Meinung, dass ein Beleg erforderlich gewesen sein könnte; die Benutzeroberfläche wurde angezeigt", - "tag-editcheck-tone-shown-description": "EditCheck meint, dass eine Anpassung des Tons in einigen Inhalten nötig gewesen wäre, und die Benutzeroberfläche wurde angezeigt", + "tag-editcheck-tone-description": "EditCheck hat ein potenzielles Problem mit dem Tonfall einiger hinzugefügter Inhalte festgestellt", + "tag-editcheck-tone-shown": "EditCheck (Tonfall) angezeigt", + "tag-editcheck-tone-shown-description": "EditCheck meint, dass eine Anpassung des Tonfalls in einigen Inhalten nötig gewesen wäre, und die Benutzeroberfläche wurde angezeigt", "tag-visualeditor": "Visuelle Bearbeitung", "tag-visualeditor-description": "Bearbeitungen, die mit dem [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editor]] ausgeführt wurden.", "tag-visualeditor-needcheck": "Visuelle Bearbeitung: Überprüfung", diff --git a/i18n/ve-wmf/fi.json b/i18n/ve-wmf/fi.json index cae8446a1c..9d08e3f617 100644 --- a/i18n/ve-wmf/fi.json +++ b/i18n/ve-wmf/fi.json @@ -25,6 +25,7 @@ "tag-editcheck-references-activated-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen, ja käyttöliittymä näytettiin", "tag-editcheck-references-shown": "Muokkaustarkistin (lähteet) näytetty", "tag-editcheck-references-shown-description": "Muokkaustarkistimen mukaan lähde olisi ehkä ollut tarpeen, ja käyttöliittymä näytettiin", + "tag-editcheck-tone-description": "EditCheck havaitsi mahdollisen ongelman lisätyn sisällön sävyssä.", "tag-editcheck-tone-shown": "Muokkaustarkistin (sävy) näytetty", "tag-editcheck-tone-shown-description": "Muokkaustarkistimen mukaan sisällön sävyä olisi ehkä ollut tarpeen kohentaa, ja käyttöliittymä näytettiin", "tag-visualeditor": "Visuaalinen muokkaus", diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index a5881fbc21..caadf4ce85 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -15,6 +15,7 @@ "tag-editcheck-references-activated-description": "EditCheck cre que podería ser necesaria unha referencia e mostrou a interface de usuario", "tag-editcheck-references-shown": "Verificación de modificacións (referencias) amosada", "tag-editcheck-references-shown-description": "EditCheck cre que podería ser necesaria unha referencia e mostrou a interface de usuario", + "tag-editcheck-tone-description": "EditCheck detectou un posible problema co ton dalgúns contidos engadidos", "tag-editcheck-tone-shown": "Verificación de modificacións (ton) amosada", "tag-editcheck-tone-shown-description": "EditCheck cre que podería ser necesario axustar o ton dalgúns contidos e mostrou a interface de usuario", "tag-visualeditor": "Edición visual", diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index 13566d7c29..ce1a1d40c5 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -29,6 +29,7 @@ "tag-editcheck-references-activated-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", "tag-editcheck-references-shown": "Düzenleme Kontrolü (kaynakça) gösterildi", "tag-editcheck-references-shown-description": "DüzenlemeKontrolü bir kaynağın gerekebileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", + "tag-editcheck-tone-description": "EditCheck, eklenen bazı içeriğin tonuyla ilgili olası bir sorun belirledi", "tag-editcheck-tone-shown": "Düzenleme Kontrolü (üslup) gösterildi", "tag-editcheck-tone-shown-description": "DüzenlemeKontrolü, bazı içeriklerdeki üslup ayarlamalarının gerekli olabileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", "tag-visualeditor": "Görsel düzenleme", From 138114cd01cd4c80bdf8af9b8e5d86657832375a Mon Sep 17 00:00:00 2001 From: thiemowmde Date: Tue, 15 Jul 2025 09:40:52 +0200 Subject: [PATCH 482/730] Minimize footprint of data-ve-ignore="true" The code that reads this attribute doesn't care what the string says. There is no comparison with "true". Any string works as long as it's not empty. Common practice in MediaWiki is to use "1". Change-Id: Ibd80ea5c4e385aea8a2673e23b4e6810ca0ffa40 --- modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js | 2 +- modules/ve-mw/tests/dm/ve.dm.mwExample.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js index e2875abbd7..8d9fca17ea 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js @@ -204,7 +204,7 @@ ve.dm.MWTransclusionNode.static.toDomElements = function ( dataElement, doc, con for ( let i = 1; i < els.length; i++ ) { // Wrap plain text nodes so we can give them an attribute els[ i ] = wrapTextNode( els[ i ] ); - els[ i ].setAttribute( 'data-ve-ignore', 'true' ); + els[ i ].setAttribute( 'data-ve-ignore', '1' ); } } else if ( converter.isForPreview() ) { const modelNode = ve.dm.nodeFactory.createFromElement( dataElement ); diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js b/modules/ve-mw/tests/dm/ve.dm.mwExample.js index 8d660b04bc..eb133289cc 100644 --- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js +++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js @@ -54,7 +54,7 @@ ve.dm.mwExample.MWTransclusion = { `, blockContent: '

Hello, world!

', - blockContentClipboard: '

Hello, world!

', + blockContentClipboard: '

Hello, world!

', inlineOpen: ve.dm.example.singleLine` @@ -101,7 +101,7 @@ ve.dm.mwExample.MWTransclusion = { data-ve-no-generated-contents="true">   - Foo + Foo `, pairOne: ve.dm.example.singleLine`

Date: Thu, 24 Jul 2025 09:56:02 +0200 Subject: [PATCH 483/730] Localisation updates from https://translatewiki.net. Change-Id: I09e6253de66a2308ff029f0567a877eeda21253b --- editcheck/i18n/pt.json | 4 ++++ editcheck/i18n/vi.json | 28 +++++++++++++-------------- i18n/ve-mw/api/pt.json | 5 +++-- i18n/ve-mw/pt.json | 44 +++++++++++++++++++++--------------------- i18n/ve-wmf/nl.json | 1 + i18n/ve-wmf/pt.json | 2 ++ i18n/ve-wmf/vi.json | 1 + 7 files changed, 47 insertions(+), 38 deletions(-) diff --git a/editcheck/i18n/pt.json b/editcheck/i18n/pt.json index b37f85ecf0..40494664a8 100644 --- a/editcheck/i18n/pt.json +++ b/editcheck/i18n/pt.json @@ -7,6 +7,8 @@ }, "editcheck-dialog-action-no": "Não", "editcheck-dialog-action-yes": "Sim", + "editcheck-dialog-action-decline": "Rejeitar", + "editcheck-dialog-action-revise": "Rever", "editcheck-dialog-action-back": "Anterior", "editcheck-dialog-action-submit": "Submeter", "editcheck-dialog-addref-description": "Ajude os leitores a entender de onde vêm estas informações, adicionando uma citação.", @@ -19,8 +21,10 @@ "editcheck-dialog-addref-success-notify": "Obrigado por acrescentar uma citação!", "editcheck-dialog-addref-title": "Adicionar uma citação", "editcheck-dialog-title": "Antes de publicar", + "editcheck-copyvio-title": "Conteúdo colado", "editcheck-tone-reject-uncertain": "Eu não tenho a certeza de como rever o tom", "editcheck-tone-reject-other": "Outros", + "editcheck-review-title": "Rever alterações", "tag-editcheck-reference-decline-common-knowledge": "Verificação de Edições (referências) recusada (conhecimento comum)", "tag-editcheck-reference-decline-common-knowledge-description": "A referência da Verificação de Edições foi recusada como conhecimento comum", "tag-editcheck-reference-decline-irrelevant": "Verificação de Edições (referências) recusada (irrelevante)", diff --git a/editcheck/i18n/vi.json b/editcheck/i18n/vi.json index c024dd8426..0528876eb1 100644 --- a/editcheck/i18n/vi.json +++ b/editcheck/i18n/vi.json @@ -12,14 +12,14 @@ "editcheck-dialog-action-back": "Quay lại", "editcheck-dialog-action-submit": "Xác nhận", "editcheck-dialog-addref-description": "Giúp người đọc hiểu thông tin này đến từ đâu bằng cách thêm trích dẫn.", - "editcheck-dialog-addref-reject-question": "Tại sao bạn không thêm trích dẫn?", - "editcheck-dialog-addref-reject-description": "Các biên tập viên khác sẽ đánh giá cao việc được hiểu thêm về quyết định loại bỏ trích dẫn của bạn.", - "editcheck-dialog-addref-reject-irrelevant": "Tôi không nghĩ các trích dẫn có liên quan đến sự thay đổi mà tôi đang thực hiện", + "editcheck-dialog-addref-reject-question": "Tại sao bạn không thêm chú thích?", + "editcheck-dialog-addref-reject-description": "Các biên tập viên khác sẽ đánh giá cao việc được hiểu thêm về quyết định loại bỏ chú thích của bạn.", + "editcheck-dialog-addref-reject-irrelevant": "Tôi không nghĩ chú thích có liên quan đến thay đổi tôi đang thực hiện", "editcheck-dialog-addref-reject-common-knowledge": "Thông tin tôi đang thêm được biết đến rộng rãi", - "editcheck-dialog-addref-reject-uncertain": "Tôi không chắc nên thêm trích dẫn nào", + "editcheck-dialog-addref-reject-uncertain": "Tôi không chắc nên thêm chú thích nào", "editcheck-dialog-addref-reject-other": "Khác", - "editcheck-dialog-addref-success-notify": "Cảm ơn bạn đã thêm một trích dẫn!", - "editcheck-dialog-addref-title": "Thêm một trích dẫn", + "editcheck-dialog-addref-success-notify": "Cảm ơn bạn đã thêm chú thích!", + "editcheck-dialog-addref-title": "Thêm chú thích", "editcheck-dialog-title": "Trước khi xuất bản", "editcheck-copyvio-title": "Nội dung được dán", "editcheck-copyvio-description": "Nguyên tắc chung là đừng sao chép văn bản từ các nguồn khác. Làm như vậy thường sẽ đồng thời cấu thành hành vi vi phạm bản quyền và đạo văn.", @@ -33,12 +33,12 @@ "editcheck-tone-reject-other": "Khác", "editcheck-reject-description": "Các biên tập viên khác sẽ đánh giá cao việc tìm hiểu lý do tại sao bạn đưa ra lựa chọn này.", "editcheck-review-title": "Xem lại thay đổi", - "tag-editcheck-reference-decline-common-knowledge": "Kiểm tra chỉnh sửa (tài liệu tham khảo) bị từ chối (kiến thức chung)", - "tag-editcheck-reference-decline-common-knowledge-description": "Tham khảo Kiểm tra Chỉnh sửa bị từ chối vì là kiến thức chung", - "tag-editcheck-reference-decline-irrelevant": "Kiểm tra chỉnh sửa (tài liệu tham khảo) bị từ chối (không liên quan)", - "tag-editcheck-reference-decline-irrelevant-description": "Tham khảo Kiểm tra Chỉnh sửa bị từ chối vì không liên quan", - "tag-editcheck-reference-decline-other": "Kiểm tra chỉnh sửa (tài liệu tham khảo) bị từ chối (khác)", - "tag-editcheck-reference-decline-other-description": "Tham khảo Kiểm tra Chỉnh sửa bị từ chối vì lý do không được nêu", - "tag-editcheck-reference-decline-uncertain": "Kiểm tra chỉnh sửa (tài liệu tham khảo) bị từ chối (không chắc chắn)", - "tag-editcheck-reference-decline-uncertain-description": "Tham khảo Kiểm tra Chỉnh sửa bị từ chối vì không chắc chắn" + "tag-editcheck-reference-decline-common-knowledge": "Kiểm tra Sửa đổi (nguồn tham khảo) bị từ chối (kiến thức chung)", + "tag-editcheck-reference-decline-common-knowledge-description": "Kiểm tra Sửa đổi nguồn tham khảo bị từ chối vì là kiến thức chung", + "tag-editcheck-reference-decline-irrelevant": "Kiểm tra Sửa đổi (nguồn tham khảo) bị từ chối (không liên quan)", + "tag-editcheck-reference-decline-irrelevant-description": "Kiểm tra Sửa đổi nguồn tham khảo bị từ chối vì không liên quan", + "tag-editcheck-reference-decline-other": "Kiểm tra Sửa đổi (nguồn tham khảo) bị từ chối (khác)", + "tag-editcheck-reference-decline-other-description": "Kiểm tra Sửa đổi nguồn tham khảo bị từ chối vì lý do không được nêu", + "tag-editcheck-reference-decline-uncertain": "Kiểm tra Sửa đổi (nguồn tham khảo) bị từ chối (không chắc chắn)", + "tag-editcheck-reference-decline-uncertain-description": "Kiểm tra Sửa đổi nguồn tham khảo bị từ chối vì không chắc chắn" } diff --git a/i18n/ve-mw/api/pt.json b/i18n/ve-mw/api/pt.json index 196f9bc1fb..e17777642d 100644 --- a/i18n/ve-mw/api/pt.json +++ b/i18n/ve-mw/api/pt.json @@ -5,6 +5,7 @@ "Emma Franzen", "Fúlvio", "Hamilton Abreu", + "Mansil alfalb", "Vitorvicentevalente" ] }, @@ -17,7 +18,7 @@ "apihelp-visualeditor-param-etag": "ETag para enviar.", "apihelp-visualeditor-param-format": "O formato do resultado.", "apihelp-visualeditor-param-html": "HTML a enviar ao Parsoid, para convertê-lo em texto wiki.", - "apihelp-visualeditor-param-oldid": "O número da revisão (por omissão, a revisão mais recente).", + "apihelp-visualeditor-param-oldid": "O número da revisão a utilizar (predefine para a última revisão).", "apihelp-visualeditor-param-paction": "Operação a executar.", "apihelp-visualeditor-param-page": "A página na qual serão realizadas as operações.", "apihelp-visualeditor-param-preload": "A página cujo conteúdo será utilizado se a página obtida ainda não tem conteúdo.", @@ -39,7 +40,7 @@ "apihelp-visualeditoredit-param-html": "HTML a enviar ao Parsoid, para obter o texto wiki equivalente.", "apihelp-visualeditoredit-param-minor": "Sinalização para edição menor.", "apihelp-visualeditoredit-param-needcheck": "Ao gravar, defina este parâmetro se a revisão puder vir a ter problemas de ida e volta (roundtrip). Isto resultará na etiquetagem da edição.", - "apihelp-visualeditoredit-param-oldid": "O número de revisão a utilizar. Por omissão, é a última revisão.", + "apihelp-visualeditoredit-param-oldid": "O número de revisão a utilizar. Predefine para a última revisão.", "apihelp-visualeditoredit-param-paction": "Operação a executar.", "apihelp-visualeditoredit-param-page": "A página na qual serão realizadas as operações.", "apihelp-visualeditoredit-param-section": "A secção na qual serão realizadas as operações.", diff --git a/i18n/ve-mw/pt.json b/i18n/ve-mw/pt.json index 760b94bf60..083aa621c6 100644 --- a/i18n/ve-mw/pt.json +++ b/i18n/ve-mw/pt.json @@ -52,13 +52,13 @@ "visualeditor-autosave-not-recovered-title": "A recuperação de mudanças falhou", "visualeditor-autosave-recovered-text": "As suas mudanças ainda não gravadas foram recuperadas automaticamente.", "visualeditor-autosave-recovered-title": "Mudanças recuperadas", - "visualeditor-backbutton-tooltip": "Regressar", - "visualeditor-ca-createlocaldescriptionsource": "Adicionar fonte da descrição do local", - "visualeditor-ca-createsource": "Criar código-fonte", - "visualeditor-ca-editlocaldescriptionsource": "Editar a descrição local da fonte", - "visualeditor-ca-editsource": "Editar código-fonte", - "visualeditor-ca-editsource-section": "editar código-fonte", - "visualeditor-ca-editsource-section-hint": "Editar código-fonte da secção: $1", + "visualeditor-backbutton-tooltip": "Anterior", + "visualeditor-ca-createlocaldescriptionsource": "Adicionar fonte da descrição local", + "visualeditor-ca-createsource": "Criar código fonte", + "visualeditor-ca-editlocaldescriptionsource": "Editar a fonte da descrição local", + "visualeditor-ca-editsource": "Editar código fonte", + "visualeditor-ca-editsource-section": "editar código fonte", + "visualeditor-ca-editsource-section-hint": "Editar código fonte da secção: $1", "visualeditor-categories-tool": "Categorias", "visualeditor-changedesc-mwcategory-sortkey-changed": "Chave de ordenação alterada de $1 para $2", "visualeditor-changedesc-mwcategory-sortkey-set": "Chave de ordenação definida como $1", @@ -78,14 +78,14 @@ "visualeditor-dialog-media-content-section": "Legenda", "visualeditor-dialog-media-content-section-help": "Pode utilizar esta função para mostrar uma etiqueta perto do elemento para todos os leitores. Isto é muitas vezes usado para explicar a relevância do elemento para o contexto em que ele é mostrado. A etiqueta deve ser sucinta e informativa.", "visualeditor-dialog-media-goback": "Voltar", - "visualeditor-dialog-media-info-artist": "Carregado por $1", + "visualeditor-dialog-media-info-artist": "Enviado por $1", "visualeditor-dialog-media-info-audiofile": "Ficheiro de áudio", "visualeditor-dialog-media-info-created": "Criada em: $1", "visualeditor-dialog-media-info-ellipsis": "...", "visualeditor-dialog-media-info-meta-artist": "Autor: $1", - "visualeditor-dialog-media-info-moreinfo": "Mais informações", + "visualeditor-dialog-media-info-moreinfo": "Mais informação", "visualeditor-dialog-media-info-readmore": "Ler mais", - "visualeditor-dialog-media-info-uploaded": "Carregamento: $1", + "visualeditor-dialog-media-info-uploaded": "Enviado: $1", "visualeditor-dialog-media-page-advanced": "Avançadas", "visualeditor-dialog-media-page-general": "Gerais", "visualeditor-dialog-media-position-checkbox": "Dispor o texto ao redor deste elemento", @@ -94,7 +94,7 @@ "visualeditor-dialog-media-position-section-help": "Pode definir o local em que o item multimédia aparece na página. Isto é utilizado para quebrar uma longa linha de imagens num lado da página.", "visualeditor-dialog-media-save": "Gravar", "visualeditor-dialog-media-search-tab-search": "Pesquisar", - "visualeditor-dialog-media-search-tab-upload": "Carregar", + "visualeditor-dialog-media-search-tab-upload": "Enviar", "visualeditor-dialog-media-size-section": "Tamanho da imagem", "visualeditor-dialog-media-size-section-help": "Pode definir o tamanho do item multimédia que aparece na página. Este deve ser quase sempre o tamanho normal, pois um tamanho personalizado pode interferir com o modelo da página e torná-la inconsistente para os leitores.", "visualeditor-dialog-media-title": "Configurações multimédia", @@ -105,14 +105,14 @@ "visualeditor-dialog-media-type-section": "Tipo de imagem", "visualeditor-dialog-media-type-section-help": "Pode definir a forma como o item multimédia aparece na página. Esta deve ser em formato miniatura para ser consistente com outras páginas em quase todos os casos.", "visualeditor-dialog-media-type-thumb": "Miniatura", - "visualeditor-dialog-media-upload": "Carregar", - "visualeditor-dialog-meta-advancedsettings-label": "Configurações avançadas", - "visualeditor-dialog-meta-advancedsettings-section": "Configurações avançadas", - "visualeditor-dialog-meta-categories-addcategory-label": "Acrescentar uma categoria a esta página", + "visualeditor-dialog-media-upload": "Enviar", + "visualeditor-dialog-meta-advancedsettings-label": "Definições avançadas", + "visualeditor-dialog-meta-advancedsettings-section": "Definições avançadas", + "visualeditor-dialog-meta-categories-addcategory-label": "Adicionar uma categoria a esta página", "visualeditor-dialog-meta-categories-category": "Categoria", "visualeditor-dialog-meta-categories-data-label": "Categorias", "visualeditor-dialog-meta-categories-defaultsort-help": "Pode redefinir o modo como esta página é ordenada na apresentação de uma categoria através da definição de um índice diferente. Isto é utilizado muitas vezes para ordenar as páginas sobre pessoas pelo seu apelido, uma vez que por definição é o primeiro a chave de ordenação.", - "visualeditor-dialog-meta-categories-defaultsort-label": "Ordenar esta página por padrão como", + "visualeditor-dialog-meta-categories-defaultsort-label": "Ordenar esta página por predefinição como", "visualeditor-dialog-meta-categories-hidden": "Esta categoria está definida para não ser mostrada nas páginas às quais é adicionada.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Categorias ocultas", "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Categorias correspondentes", @@ -126,20 +126,20 @@ "visualeditor-dialog-meta-languages-code-label": "Código de língua", "visualeditor-dialog-meta-languages-label": "Idiomas", "visualeditor-dialog-meta-languages-link-label": "Página ligada", - "visualeditor-dialog-meta-languages-name-label": "Língua", - "visualeditor-dialog-meta-languages-readonlynote": "Esta é uma lista de páginas noutras línguas que estão hiperligadas a esta. Por enquanto, só pode ser editada no modo de código-fonte ou na wiki Wikidata.", + "visualeditor-dialog-meta-languages-name-label": "Idioma", + "visualeditor-dialog-meta-languages-readonlynote": "Esta é uma lista de páginas noutros idiomas que estão interligadas a esta. Por enquanto, só pode ser editada no modo de código ou na Wikidados.", "visualeditor-dialog-meta-languages-section": "Idiomas", "visualeditor-dialog-meta-settings-displaytitle": "Mostrar o título", "visualeditor-dialog-meta-settings-displaytitle-help": "Pode substituir o modo como o título desta página é apresentado através da definição de uma etiqueta diferente a ser mostrada.", "visualeditor-dialog-meta-settings-hiddencat-help": "Pode impedir que esta categoria apareça na lista de categorias das páginas. Isto é útil para as categorias que têm interesse para os editores mas não para a maioria dos leitores como, por exemplo, páginas que precisam de uma ilustração.", "visualeditor-dialog-meta-settings-hiddencat-label": "Categoria oculta", - "visualeditor-dialog-meta-settings-index-default": "Padrão", + "visualeditor-dialog-meta-settings-index-default": "Predefinição", "visualeditor-dialog-meta-settings-index-disable": "Não", "visualeditor-dialog-meta-settings-index-force": "Sim", "visualeditor-dialog-meta-settings-index-help": "Pode forçar os motores de busca a listar esta página nos seus resultados relevantes, ou forçá-los a não o fazer. Esta opção não afeta a pesquisa interna na wiki.", "visualeditor-dialog-meta-settings-index-label": "Deixar esta página ser indexada pelos motores de busca", "visualeditor-dialog-meta-settings-label": "Configurações da página", - "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Padrão", + "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Predefinição", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Não", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Sim", "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Pode forçar a apresentação de um separador extra além do \"$1\" nesta página, o que irá tornar mais fácil adicionar uma nova secção, ou poderá mesmo definir que não apareça de todo, caso normalmente fosse apresentado.", @@ -161,7 +161,7 @@ "visualeditor-dialog-meta-settings-toc-default": "Se necessário", "visualeditor-dialog-meta-settings-toc-disable": "Nunca", "visualeditor-dialog-meta-settings-toc-force": "Sempre", - "visualeditor-dialog-meta-settings-toc-help": "Pode forçar o aparecimento de uma tabela de conteúdo em páginas com menos do que quatro cabeçalhos ou forçar que não apareça. Por padrão, o índice é apresentado se a página tiver quatro ou mais cabeçalhos.", + "visualeditor-dialog-meta-settings-toc-help": "Pode forçar o aparecimento de uma tabela de conteúdo nas páginas com menos do que quatro cabeçalhos ou forçar que não apareça. Por predefinição, esta irá aparecer se a página tiver quatro ou mais cabeçalhos.", "visualeditor-dialog-meta-settings-toc-label": "Mostrar a tabela de conteúdo", "visualeditor-dialog-meta-templatesused-noresults": "Não foi encontrada nenhuma predefinição.", "visualeditor-dialog-meta-title": "Opções", @@ -213,7 +213,7 @@ "visualeditor-dialog-transclusion-no-template-data-description": "Esta predefinição tem [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters dados] em falta, e os parâmetros da mesma foram [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters gerados automaticamente]. Em resultado, faltam descrições tanto à predefinição como aos parâmetros. Poderá existir informação adicional na [[$1|página da predefinição]].", "visualeditor-dialog-transclusion-no-template-description": "A predefinição \"$1\" não tem ainda nenhuma descrição, mas talvez encontre alguma informação na [[$2|documentação da predefinição]].", "visualeditor-dialog-transclusion-no-template-parameters": "Esta predefinição não tem parâmetros documentados e pode ter sido concebida para uso sem nenhum.", - "visualeditor-dialog-transclusion-param-default": "Padrão: $1", + "visualeditor-dialog-transclusion-param-default": "Predefinição: $1", "visualeditor-dialog-transclusion-param-example-long": "Exemplo: $1", "visualeditor-dialog-transclusion-param-selection-aria-description": "Pressione a barra de espaços para adicionar ou remover parâmetros. Pressione a tecla Enter para adicionar um parâmetro e editar imediatamente o seu valor. Quando um parâmetro já estiver selecionado, pressione Enter para editar o respetivo valor.", "visualeditor-dialog-transclusion-param-selection-aria-label": "Parâmetros de $1", diff --git a/i18n/ve-wmf/nl.json b/i18n/ve-wmf/nl.json index 58e64bd851..ab09e0f5d6 100644 --- a/i18n/ve-wmf/nl.json +++ b/i18n/ve-wmf/nl.json @@ -30,6 +30,7 @@ "tag-editcheck-references-activated-description": "EditCheck denkt dat er een referentie nodig kan zijn, en de gebruikersinterface is weergegeven", "tag-editcheck-references-shown": "EditCheck (referenties) weergegeven", "tag-editcheck-references-shown-description": "EditCheck denkt dat er een referentie nodig kan zijn, en de gebruikersinterface is weergegeven", + "tag-editcheck-tone-description": "EditCheck heeft een mogelijk probleem ontdekt met de toon van bepaalde toegevoegde inhoud", "tag-editcheck-tone-shown": "Bewerkingscontrole (toon) weergegeven", "tag-editcheck-tone-shown-description": "EditCheck denkt dat een aanpassing van de toon in bepaalde inhoud nodig was geweest, en de gebruikersinterface is weergegeven", "tag-visualeditor": "Visuele tekstverwerker", diff --git a/i18n/ve-wmf/pt.json b/i18n/ve-wmf/pt.json index ee3fd6043b..2656b4eec2 100644 --- a/i18n/ve-wmf/pt.json +++ b/i18n/ve-wmf/pt.json @@ -10,6 +10,7 @@ "Jaideraf", "Jdforrester", "Luckas", + "Mansil alfalb", "SandroHc", "Vitorvicentevalente", "아라" @@ -20,6 +21,7 @@ "tag-editcheck-references-description": "A Verificação de Edições acha que podia ter sido necessária uma referência", "tag-editcheck-references-activated": "Verificação de Edições (referências) ativada", "tag-editcheck-references-activated-description": "A Verificação de Edições acha que podia ter sido necessária uma referência e foi mostrada a interface do utilizador", + "tag-editcheck-references-shown": "Verificação de Edição (referências) mostradas", "tag-visualeditor": "Editor Visual", "tag-visualeditor-description": "Edição realizada utilizando o [[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor Visual]]", "tag-visualeditor-needcheck": "Editor Visual: Verificar", diff --git a/i18n/ve-wmf/vi.json b/i18n/ve-wmf/vi.json index 813f17aba3..46c9fe1fe2 100644 --- a/i18n/ve-wmf/vi.json +++ b/i18n/ve-wmf/vi.json @@ -20,6 +20,7 @@ "tag-editcheck-references-activated-description": "Kiểm tra Sửa đổi cho rằng có thể cần phải có một nguồn tham khảo, và giao diện người dùng được hiển thị", "tag-editcheck-references-shown": "Đã hiển thị Kiểm tra Sửa đổi (nguồn tham khảo)", "tag-editcheck-references-shown-description": "Kiểm tra Sửa đổi cho rằng có thể cần phải có một nguồn tham khảo, và giao diện người dùng được hiển thị", + "tag-editcheck-tone-description": "Kiểm tra Sửa đổi đã phát hiện vấn đề với giọng điệu của một số nội dung được thêm vào", "tag-editcheck-tone-shown": "Đã hiển thị Kiểm tra Sửa đổi (giọng điệu)", "tag-editcheck-tone-shown-description": "Kiểm tra Sửa đổi cho rằng có thể cần phải điều chỉnh giọng điệu ở một số đoạn nội dung, và giao diện người dùng được hiển thị", "tag-visualeditor": "Soạn thảo trực quan", From d88097e4c6a719fd008b72485118adee92ffe14b Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Thu, 24 Jul 2025 20:44:10 -0400 Subject: [PATCH 484/730] Update VE core submodule to master (810cd4b38) New changes: ffccb733e DesktopContext: don't update dimensions on passive position events 85359a39a Minimize footprint of data-ve-ignore="true" 810cd4b38 Rewrite ve.escapeHtml utility function with modern syntax Localisation Updates: 7ef684258, 24ccb7f67, e8f75063b Bug: T398777 Change-Id: Iecbb8948f6a385cbc94e53ce5c6089a3a61bab08 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 190c989200..810cd4b38d 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 190c989200b71385f72d9bd2cee926b0776c155c +Subproject commit 810cd4b38d70f69ad52d359167c86856491757e7 From 5c1d171237b05434d796293816931eab2e46bb03 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 25 Jul 2025 10:01:44 +0200 Subject: [PATCH 485/730] Localisation updates from https://translatewiki.net. Change-Id: Ic55b2b25b59e1f78660f2edad8bab2e1107f3651 --- i18n/ve-mw/mwlanguagevariant/yue-hant.json | 9 +++++++++ i18n/ve-mw/sas.json | 9 +++++++++ i18n/ve-wmf/mk.json | 1 + 3 files changed, 19 insertions(+) create mode 100644 i18n/ve-mw/mwlanguagevariant/yue-hant.json create mode 100644 i18n/ve-mw/sas.json diff --git a/i18n/ve-mw/mwlanguagevariant/yue-hant.json b/i18n/ve-mw/mwlanguagevariant/yue-hant.json new file mode 100644 index 0000000000..47f5b72a7f --- /dev/null +++ b/i18n/ve-mw/mwlanguagevariant/yue-hant.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "JeffreyKim" + ] + }, + "visualeditor-mwlanguagevariantinspector-oneway-add-button": "加新畸士", + "visualeditor-mwlanguagevariantinspector-twoway-add-button": "加新畸士" +} diff --git a/i18n/ve-mw/sas.json b/i18n/ve-mw/sas.json new file mode 100644 index 0000000000..f8bfcded94 --- /dev/null +++ b/i18n/ve-mw/sas.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "NikolasKHF" + ] + }, + "visualeditor-ca-editsource": "Kerisaq sumber", + "visualeditor-ca-editsource-section": "kerisaq sumber" +} diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index af2bdc2878..e406803e37 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -15,6 +15,7 @@ "tag-editcheck-references-activated-description": "Проверката на уредувања смета дека може да треба навод, и се покажа корисничкиот посредник", "tag-editcheck-references-shown": "Прикажана проверка на уредување (наводи)", "tag-editcheck-references-shown-description": "Проверката на уредувања смета дека може да треба навод, и се покажа корисничкиот посредник", + "tag-editcheck-tone-description": "EditCheck пронајде потенцијален проблем со тонот во додадената содржина", "tag-editcheck-tone-shown": "Прикажана проверката на уредувања (тон)", "tag-editcheck-tone-shown-description": "Проверката на уредувања смета дека може да е потребно прилагодување на тонот во некои содржини, и бил прикажан корисничкиот посредник", "tag-visualeditor": "Нагледно уредување", From 120860e09be1724d81d4c5b532db983bc732f0a2 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 25 Jul 2025 16:15:43 -0500 Subject: [PATCH 486/730] Tone check: don't cause an error when the model fails Change-Id: I2711306b410e96fcdf4776f5a5f6b159d4578e42 --- editcheck/modules/editchecks/experimental/ToneCheck.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 3a3d7c51ed..d718fe347c 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -69,7 +69,7 @@ mw.editcheck.ToneCheck.prototype.canBeShown = function ( ...args ) { }; mw.editcheck.ToneCheck.prototype.afterMemoized = function ( data ) { - const outcome = data.predictions[ 0 ].prediction === true && + const outcome = data && data.predictions[ 0 ].prediction === true && data.predictions[ 0 ].probability >= this.config.predictionThreshold; return !!outcome; }; From 4182c79edc1d0c1c87b4d2a24c42302465593f73 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Sat, 26 Jul 2025 04:37:26 +0000 Subject: [PATCH 487/730] build: Updating eslint-config-wikimedia to 0.31.0 Change-Id: I94c59f084bc0e34c2b46fc635e8473fda1e13118 --- package-lock.json | 1280 +++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 1178 insertions(+), 104 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1fb54819b6..5433872ffd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@wdio/mocha-framework": "9.15.0", "@wdio/spec-reporter": "9.15.0", "api-testing": "1.7.1", - "eslint-config-wikimedia": "0.30.0", + "eslint-config-wikimedia": "0.31.0", "grunt": "1.6.1", "grunt-banana-checker": "0.13.0", "grunt-contrib-watch": "1.1.0", @@ -594,16 +594,19 @@ } }, "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==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } @@ -1728,6 +1731,200 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@stylistic/eslint-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-3.1.0.tgz", + "integrity": "sha512-pA6VOrOqk0+S8toJYhQGv2MWpQQR0QpeUo9AhNkC49Y26nxBQ/nH1rta9bUU1rPw2fJ1zZEMV5oCX5AazT7J2g==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", + "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", + "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", + "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/project-service": "8.38.0", + "@typescript-eslint/tsconfig-utils": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.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": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", + "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", + "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "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.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/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/@stylistic/eslint-plugin/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/@stylistic/stylelint-config": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@stylistic/stylelint-config/-/stylelint-config-2.0.0.tgz", @@ -1967,14 +2164,178 @@ "@types/node": "*" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", + "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", + "dev": true, + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.38.0", + "@typescript-eslint/types": "^8.38.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": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", + "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "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/scope-manager": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", - "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", + "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/visitor-keys": "7.12.0" + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1982,6 +2343,14 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { @@ -1998,13 +2367,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", - "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/visitor-keys": "7.12.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2025,6 +2394,19 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -2035,9 +2417,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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" @@ -2050,15 +2432,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", - "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.12.0", - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/typescript-estree": "7.12.0" + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2071,13 +2453,26 @@ "eslint": "^8.56.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", - "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/types": "7.18.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -2088,6 +2483,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.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", @@ -2997,9 +3405,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -6373,53 +6781,324 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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-config-wikimedia": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.31.0.tgz", + "integrity": "sha512-Z/t/zGPdxs/ehxb0EM6THNWAzueT7GtuqzjUvmBpkxcTKzZPJEXWnnpswdj/hgv8Ce8PIeDp0zwQxR4e3c9CIw==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin": "^3.1.0", + "@typescript-eslint/eslint-plugin": "8.35.1", + "@typescript-eslint/parser": "8.35.1", + "browserslist-config-wikimedia": "^0.7.0", + "eslint": "^8.57.0", + "eslint-plugin-compat": "^4.2.0", + "eslint-plugin-es-x": "^7.6.0", + "eslint-plugin-jest": "^28.5.0", + "eslint-plugin-jsdoc": "48.2.5", + "eslint-plugin-json-es": "^1.6.0", + "eslint-plugin-mediawiki": "^0.7.0", + "eslint-plugin-mocha": "^10.4.3", + "eslint-plugin-n": "^17.7.0", + "eslint-plugin-no-jquery": "^3.1.1", + "eslint-plugin-qunit": "^8.1.1", + "eslint-plugin-security": "^1.7.1", + "eslint-plugin-unicorn": "^53.0.0", + "eslint-plugin-vue": "^9.26.0", + "eslint-plugin-wdio": "^8.24.12", + "eslint-plugin-yml": "^1.14.0" + }, + "engines": { + "node": ">=18 <25" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.1.tgz", + "integrity": "sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/type-utils": "8.35.1", + "@typescript-eslint/utils": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.35.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.1.tgz", + "integrity": "sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.35.1", + "@typescript-eslint/utils": "8.35.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.1.tgz", + "integrity": "sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/typescript-estree": "8.35.1" + }, + "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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/parser": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.1.tgz", + "integrity": "sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/typescript-estree": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "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", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/project-service": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.1.tgz", + "integrity": "sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.35.1", + "@typescript-eslint/types": "^8.35.1", + "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": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/scope-manager": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.1.tgz", + "integrity": "sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.1.tgz", + "integrity": "sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/types": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.1.tgz", + "integrity": "sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.1.tgz", + "integrity": "sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==", + "dev": true, + "dependencies": { + "@typescript-eslint/project-service": "8.35.1", + "@typescript-eslint/tsconfig-utils": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "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": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.1.tgz", + "integrity": "sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.35.1", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-config-wikimedia/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "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==", + "node_modules/eslint-config-wikimedia/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint-config-wikimedia/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": { - "semver": "^7.5.4" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "eslint": ">=6.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-config-wikimedia": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.30.0.tgz", - "integrity": "sha512-i8ESzSoo0x3Jur/0JhAgCVPxbV51zfdI3MN3MVQPnjiFdmo21CNKmiBBmw8JnJ3fx/d5zHDrBa+yDjxSLpnDlA==", + "node_modules/eslint-config-wikimedia/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, - "dependencies": { - "browserslist-config-wikimedia": "^0.7.0", - "eslint": "^8.57.0", - "eslint-plugin-compat": "^4.2.0", - "eslint-plugin-es-x": "^7.6.0", - "eslint-plugin-jest": "^28.5.0", - "eslint-plugin-jsdoc": "48.2.5", - "eslint-plugin-json-es": "^1.6.0", - "eslint-plugin-mediawiki": "^0.7.0", - "eslint-plugin-mocha": "^10.4.3", - "eslint-plugin-n": "^17.7.0", - "eslint-plugin-no-jquery": "^3.1.1", - "eslint-plugin-qunit": "^8.1.1", - "eslint-plugin-security": "^1.7.1", - "eslint-plugin-unicorn": "^53.0.0", - "eslint-plugin-vue": "^9.26.0", - "eslint-plugin-wdio": "^8.24.12", - "eslint-plugin-yml": "^1.14.0" - }, "engines": { - "node": ">=18 <23" + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" } }, "node_modules/eslint-plugin-compat": { @@ -15299,14 +15978,15 @@ } }, "node_modules/superagent/node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -17187,12 +17867,12 @@ "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==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "requires": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" } }, "@eslint-community/regexpp": { @@ -18040,6 +18720,125 @@ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true }, + "@stylistic/eslint-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-3.1.0.tgz", + "integrity": "sha512-pA6VOrOqk0+S8toJYhQGv2MWpQQR0QpeUo9AhNkC49Y26nxBQ/nH1rta9bUU1rPw2fJ1zZEMV5oCX5AazT7J2g==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", + "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0" + } + }, + "@typescript-eslint/types": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", + "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", + "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", + "dev": true, + "requires": { + "@typescript-eslint/project-service": "8.38.0", + "@typescript-eslint/tsconfig-utils": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.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": "^2.1.0" + } + }, + "@typescript-eslint/utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", + "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", + "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.38.0", + "eslint-visitor-keys": "^4.2.1" + } + }, + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true + }, + "espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "requires": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + } + }, + "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" + } + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + }, + "ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "requires": {} + } + } + }, "@stylistic/stylelint-config": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@stylistic/stylelint-config/-/stylelint-config-2.0.0.tgz", @@ -18257,14 +19056,106 @@ "@types/node": "*" } }, + "@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "optional": true, + "peer": true + } + } + }, + "@typescript-eslint/project-service": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", + "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", + "dev": true, + "requires": { + "@typescript-eslint/tsconfig-utils": "^8.38.0", + "@typescript-eslint/types": "^8.38.0", + "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", + "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "dev": true + } + } + }, "@typescript-eslint/scope-manager": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", - "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true + } + } + }, + "@typescript-eslint/tsconfig-utils": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", + "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", + "dev": true, + "requires": {} + }, + "@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, + "optional": true, + "peer": true, "requires": { - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/visitor-keys": "7.12.0" + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" } }, "@typescript-eslint/types": { @@ -18274,13 +19165,13 @@ "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", - "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, "requires": { - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/visitor-keys": "7.12.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -18289,6 +19180,12 @@ "ts-api-utils": "^1.3.0" }, "dependencies": { + "@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true + }, "brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -18299,9 +19196,9 @@ } }, "minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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" @@ -18310,25 +19207,41 @@ } }, "@typescript-eslint/utils": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", - "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.12.0", - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/typescript-estree": "7.12.0" + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true + } } }, "@typescript-eslint/visitor-keys": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", - "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dev": true, "requires": { - "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/types": "7.18.0", "eslint-visitor-keys": "^3.4.3" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true + } } }, "@ungap/structured-clone": { @@ -18985,9 +19898,9 @@ } }, "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true }, "acorn-jsx": { @@ -21493,11 +22406,14 @@ } }, "eslint-config-wikimedia": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.30.0.tgz", - "integrity": "sha512-i8ESzSoo0x3Jur/0JhAgCVPxbV51zfdI3MN3MVQPnjiFdmo21CNKmiBBmw8JnJ3fx/d5zHDrBa+yDjxSLpnDlA==", + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.31.0.tgz", + "integrity": "sha512-Z/t/zGPdxs/ehxb0EM6THNWAzueT7GtuqzjUvmBpkxcTKzZPJEXWnnpswdj/hgv8Ce8PIeDp0zwQxR4e3c9CIw==", "dev": true, "requires": { + "@stylistic/eslint-plugin": "^3.1.0", + "@typescript-eslint/eslint-plugin": "8.35.1", + "@typescript-eslint/parser": "8.35.1", "browserslist-config-wikimedia": "^0.7.0", "eslint": "^8.57.0", "eslint-plugin-compat": "^4.2.0", @@ -21515,6 +22431,163 @@ "eslint-plugin-vue": "^9.26.0", "eslint-plugin-wdio": "^8.24.12", "eslint-plugin-yml": "^1.14.0" + }, + "dependencies": { + "@typescript-eslint/eslint-plugin": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.1.tgz", + "integrity": "sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/type-utils": "8.35.1", + "@typescript-eslint/utils": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "dependencies": { + "@typescript-eslint/type-utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.1.tgz", + "integrity": "sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "8.35.1", + "@typescript-eslint/utils": "8.35.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + } + }, + "@typescript-eslint/utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.1.tgz", + "integrity": "sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/typescript-estree": "8.35.1" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.1.tgz", + "integrity": "sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/typescript-estree": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/project-service": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.1.tgz", + "integrity": "sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==", + "dev": true, + "requires": { + "@typescript-eslint/tsconfig-utils": "^8.35.1", + "@typescript-eslint/types": "^8.35.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.1.tgz", + "integrity": "sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1" + } + }, + "@typescript-eslint/tsconfig-utils": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.1.tgz", + "integrity": "sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==", + "dev": true, + "requires": {} + }, + "@typescript-eslint/types": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.1.tgz", + "integrity": "sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.1.tgz", + "integrity": "sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==", + "dev": true, + "requires": { + "@typescript-eslint/project-service": "8.35.1", + "@typescript-eslint/tsconfig-utils": "8.35.1", + "@typescript-eslint/types": "8.35.1", + "@typescript-eslint/visitor-keys": "8.35.1", + "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": "^2.1.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.1.tgz", + "integrity": "sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.35.1", + "eslint-visitor-keys": "^4.2.1" + } + }, + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true + }, + "ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true + }, + "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" + } + }, + "ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "requires": {} + } } }, "eslint-plugin-compat": { @@ -28026,14 +29099,15 @@ }, "dependencies": { "form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, diff --git a/package.json b/package.json index b720b13501..e956b032be 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@wdio/mocha-framework": "9.15.0", "@wdio/spec-reporter": "9.15.0", "api-testing": "1.7.1", - "eslint-config-wikimedia": "0.30.0", + "eslint-config-wikimedia": "0.31.0", "grunt": "1.6.1", "grunt-banana-checker": "0.13.0", "grunt-contrib-watch": "1.1.0", From cf32e1ee051539e74c7453e97c1f0537a7d84cc0 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Sun, 27 Jul 2025 12:36:05 -0500 Subject: [PATCH 488/730] Edit check: skip collapsed ranges when computing modified content branch nodes Bug: T400573 Change-Id: I4489322bb0af24f6ac2fd1dabfa17015aafbef7c --- editcheck/modules/editchecks/BaseEditCheck.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/BaseEditCheck.js b/editcheck/modules/editchecks/BaseEditCheck.js index 09bce21dfd..fdc8a717a4 100644 --- a/editcheck/modules/editchecks/BaseEditCheck.js +++ b/editcheck/modules/editchecks/BaseEditCheck.js @@ -169,7 +169,9 @@ mw.editcheck.BaseEditCheck.prototype.getModifiedContentRanges = function ( docum mw.editcheck.BaseEditCheck.prototype.getModifiedContentBranchNodes = function ( documentModel ) { const modified = new Set(); this.getModifiedRanges( documentModel, false, true ).forEach( ( range ) => { - modified.add( documentModel.getBranchNodeFromOffset( range.start ) ); + if ( !range.isCollapsed() ) { + modified.add( documentModel.getBranchNodeFromOffset( range.start ) ); + } } ); return Array.from( modified ); }; From 5253cf8837044e7e55af5cabe043295a66ce3388 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 28 Jul 2025 09:43:09 +0200 Subject: [PATCH 489/730] Localisation updates from https://translatewiki.net. Change-Id: I975fa1c564504665a473492feffb702ea0018368 --- editcheck/i18n/nb.json | 13 +++++++++++++ editcheck/i18n/nl.json | 13 +++++++++++++ i18n/ve-mw/abr.json | 1 + i18n/ve-mw/lb.json | 4 ++-- i18n/ve-mw/sas.json | 1 + 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/editcheck/i18n/nb.json b/editcheck/i18n/nb.json index 1ae30f1c7f..aee3190281 100644 --- a/editcheck/i18n/nb.json +++ b/editcheck/i18n/nb.json @@ -7,6 +7,10 @@ }, "editcheck-dialog-action-no": "Nei", "editcheck-dialog-action-yes": "Ja", + "editcheck-dialog-action-decline": "Avvis", + "editcheck-dialog-action-revise": "Endre", + "editcheck-dialog-action-back": "Tilbake", + "editcheck-dialog-action-submit": "Send inn", "editcheck-dialog-addref-description": "Hjelp leserne med å forstå hvor denne informasjonen kommer fra ved å legge til en referanse.", "editcheck-dialog-addref-reject-question": "Hvorfor legger du ikke til en referanse?", "editcheck-dialog-addref-reject-description": "Andre bidragsytere vil sette pris på å lære mer om hvorfor du ikke legger til en referanse.", @@ -19,6 +23,15 @@ "editcheck-dialog-title": "Før publisering", "editcheck-copyvio-title": "Innhold som er limt inn", "editcheck-copyvio-description": "Generelt må du ikke kopiere tekst fra andre kilder. Det utgjør ofte plagiarisme og et brudd på opphavsrett.", + "editcheck-tone-title": "Endre tonen?", + "editcheck-tone-description": "Andre brukere endrer ofte ordbruk som dette, ettersom de opplever tonen som ubalansert. [$1 Les mer]", + "editcheck-tone-footer": "Identifisert med en [$1 BERT-modell]", + "editcheck-tone-title-acted": "Endrer tone", + "editcheck-tone-description-acted": "Vær obs på uttrykk som framstår som smigrende, nedsettende, vage, klisjéaktige eller som støtter et bestemt synspunkt.", + "editcheck-tone-reject-appropriate": "Tonen er passende", + "editcheck-tone-reject-uncertain": "Jeg vet ikke hvordan jeg skal endre tonen", + "editcheck-tone-reject-other": "Annet", + "editcheck-reject-description": "Andre bidragsytere ville satt pris på å lære hvorfor du gjorde dette valget.", "editcheck-review-title": "Gjennomgå endringer", "tag-editcheck-reference-decline-common-knowledge": "Redigeringssjekk (referanser) avvist (allmennkunnskap)", "tag-editcheck-reference-decline-common-knowledge-description": "Redigeringssjekk for referanser ble avvist som allmennkunnskap", diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index f0922494ec..c660845def 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -8,6 +8,10 @@ }, "editcheck-dialog-action-no": "Nee", "editcheck-dialog-action-yes": "Ja", + "editcheck-dialog-action-decline": "Afwijzen", + "editcheck-dialog-action-revise": "Herzien", + "editcheck-dialog-action-back": "Terug", + "editcheck-dialog-action-submit": "Indienen", "editcheck-dialog-addref-description": "Help lezers te begrijpen waar deze informatie vandaan komt door een referentie toe te voegen.", "editcheck-dialog-addref-reject-question": "Waarom voegt u geen referentie toe?", "editcheck-dialog-addref-reject-description": "Andere redacteuren willen graag weten waarom u het verzoek een referentie op te geven afwijst.", @@ -20,6 +24,15 @@ "editcheck-dialog-title": "Voordat u dit publiceert", "editcheck-copyvio-title": "Geplakte inhoud", "editcheck-copyvio-description": "Over het algemeen geldt: kopieer geen tekst van andere bronnen. Dit is meestal een schending van het auteursrecht en ook plagiaat.", + "editcheck-tone-title": "Toon wijzigen?", + "editcheck-tone-description": "Andere gebruikers herzien dit soort formuleringen vaak omdat ze de toon onevenwichtig vinden. [$1 Meer informatie]", + "editcheck-tone-footer": "Geïdentificeerd met behulp van een [$1 BERT-model]", + "editcheck-tone-title-acted": "De toon herzien", + "editcheck-tone-description-acted": "Let op uitingen die vleiend, denigrerend, vaag of clichématig zijn, of een bepaald standpunt innemen.", + "editcheck-tone-reject-appropriate": "De toon is passend", + "editcheck-tone-reject-uncertain": "Ik weet niet goed hoe ik de toon moet aanpassen", + "editcheck-tone-reject-other": "Overige", + "editcheck-reject-description": "Andere redacteuren willen graag weten waarom u deze keuze hebt gemaakt.", "editcheck-review-title": "Wijzigingen controleren", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (referenties) afgewezen (algemene kennis)", "tag-editcheck-reference-decline-common-knowledge-description": "De EditCheck-referentie is afgewezen als algemeen bekend", diff --git a/i18n/ve-mw/abr.json b/i18n/ve-mw/abr.json index 668b7aafdc..89a6f8149a 100644 --- a/i18n/ve-mw/abr.json +++ b/i18n/ve-mw/abr.json @@ -6,6 +6,7 @@ "Yaw tuba" ] }, + "visualeditor-ca-createlocaldescriptionsource": "Fa ɛfitiasɛm ka ho", "visualeditor-ca-createsource": "Yɛ fibea", "visualeditor-ca-editsource": "Sakra baabi ɔfiri mu", "visualeditor-ca-editsource-section": "Baabi a nsamu no firi" diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index a350883f20..b1a7cc5b2e 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -38,9 +38,9 @@ "visualeditor-autosave-recovered-text": "Är net gespäichert Ännerunge goufen automatesch restauréiert.", "visualeditor-autosave-recovered-title": "Ännerunge restauréiert", "visualeditor-backbutton-tooltip": "Zréck goen", - "visualeditor-ca-createlocaldescriptionsource": "Quell vun der lokaler Beschreiwung derbäisetzen", + "visualeditor-ca-createlocaldescriptionsource": "Lokale Beschreiwungsquelltext derbäisetzen", "visualeditor-ca-createsource": "Quell uleeën", - "visualeditor-ca-editlocaldescriptionsource": "Quell vun der lokaler Beschreiwung änneren", + "visualeditor-ca-editlocaldescriptionsource": "Lokale Beschreiwungsquelltext änneren", "visualeditor-ca-editsource": "Quelltext änneren", "visualeditor-ca-editsource-section": "Quelltext änneren", "visualeditor-ca-editsource-section-hint": "Quelltext vum Abschnitt änneren: $1", diff --git a/i18n/ve-mw/sas.json b/i18n/ve-mw/sas.json index f8bfcded94..9f16c3bc59 100644 --- a/i18n/ve-mw/sas.json +++ b/i18n/ve-mw/sas.json @@ -4,6 +4,7 @@ "NikolasKHF" ] }, + "visualeditor-ca-createsource": "Piaq sumber", "visualeditor-ca-editsource": "Kerisaq sumber", "visualeditor-ca-editsource-section": "kerisaq sumber" } From 4ac3236cf226504b056dd2225470f844c59f3320 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 16 Jul 2025 15:57:55 +0100 Subject: [PATCH 490/730] EditCheck Controller: Reduce calls to updatePositions Call it immediately after redrawing actions, to avoid a flicker. Other updates are handled by the surface position event listener. Change-Id: Ib51aff8506820dbe89dc4333dda328afe88290dc --- editcheck/modules/controller.js | 4 ---- editcheck/modules/dialogs/EditCheckDialog.js | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index afb3d04487..6c6feb1bc1 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -213,7 +213,6 @@ Controller.prototype.refresh = function () { midEditListeners.forEach( ( listener ) => process.next( () => this.updateForListener( listener, true ) ) ); - process.next( () => this.updatePositionsDebounced() ); process.execute(); } }; @@ -414,8 +413,6 @@ Controller.prototype.onDocumentChange = function () { if ( !this.inBeforeSave ) { this.updateForListener( 'onDocumentChange' ); } - - this.updatePositionsDebounced(); }; /** @@ -435,7 +432,6 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions if ( this.focusedAction && discardedActions.includes( this.focusedAction ) ) { this.focusedAction = null; } - this.updatePositionsDebounced(); } // do we need to show mid-edit actions? diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index 1b28328685..4e34ccfc07 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -173,6 +173,9 @@ ve.ui.EditCheckDialog.prototype.refresh = function () { // for scrolling later action.widget = widget; } ); + + // Update positions immediately to prevent flicker + this.controller.updatePositions(); }; /** From ccffaaa6052ef5c4669c45dedb6f3e3f50308079 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 29 Jul 2025 09:36:24 +0200 Subject: [PATCH 491/730] Localisation updates from https://translatewiki.net. Change-Id: I91ed8e07bcf67764d4c0527a1f46ee43cea00566 --- editcheck/i18n/ar.json | 2 +- i18n/ve-wmf/fr.json | 2 ++ i18n/ve-wmf/ia.json | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index 6d028e8274..11fbc56f5e 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -23,7 +23,7 @@ "editcheck-dialog-addref-title": "إضافة استشهاد", "editcheck-dialog-title": "قبل النشر", "editcheck-copyvio-title": "محتوى ملصوق", - "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. هذا عادة ما يشكل انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", + "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. عادة، يُشكل هذا انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", "editcheck-tone-title": "إعادة النظر في الأسلوب؟", "editcheck-tone-description": "غالبًا ما يقوم المستخدمون الآخرون بمراجعة هذا النوع من العبارات، استنادًا على أنّ الأسلوب غير متّزن. [$1 التعرف على المزيد]", "editcheck-tone-footer": "تم التحديد باستخدام [$1 نموذج BERT]", diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index 6c88f325ef..7054519223 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -9,6 +9,7 @@ "Crochet.david", "DavidL", "Dereckson", + "Derugon", "Framafan", "Gomoko", "Guillom", @@ -47,6 +48,7 @@ "tag-editcheck-references-activated-description": "EditCheck pense qu’une référence peut être nécessaire, et l’IHM a été affichée", "tag-editcheck-references-shown": "Vérification de modification (références) affichées", "tag-editcheck-references-shown-description": "EditCheck pense qu’une référence peut être nécessaire, et l’IHM a été affichée", + "tag-editcheck-tone-description": "EditCheck a détecté un problème potentiel avec le ton de certains contenus ajoutés", "tag-editcheck-tone-shown": "Modifier la vérification (tonalité) affichée", "tag-editcheck-tone-shown-description": "EditCheck pense qu'un ajustement du ton de certains contenus aurait pu être nécessaire, et l'interface utilisateur a été affichée", "tag-visualeditor": "Éditeur visuel", diff --git a/i18n/ve-wmf/ia.json b/i18n/ve-wmf/ia.json index ac8140e7f7..5cbb89ad06 100644 --- a/i18n/ve-wmf/ia.json +++ b/i18n/ve-wmf/ia.json @@ -11,6 +11,7 @@ "tag-editcheck-references-activated-description": "EditCheck pensa que un referentia poterea haber essite necessari, e le interfacie de usator graphic ha essite monstrate", "tag-editcheck-references-shown": "Verification de modification (referentias) monstrate", "tag-editcheck-references-shown-description": "EditCheck pensa que un referentia poterea haber essite necessari, e le interfacie de usator graphic ha essite monstrate", + "tag-editcheck-tone-description": "EditCheck ha detegite un problema potential con le tono de certe contento addite", "tag-editcheck-tone-shown": "Verification de modification (tono) monstrate", "tag-editcheck-tone-shown-description": "EditCheck pensa que un adjustamento del tono in alcun contento poterea haber essite necessari, e le interfacie de usator ha essite monstrate", "tag-visualeditor": "Modification visual", From 23da63a922abe0114f5dbad149cc95be57023f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 24 Jul 2025 22:39:21 +0200 Subject: [PATCH 492/730] Set 'returntoquery' on login/signup links when building edit intro messages When I wrote this code in 2023 (a88084509d), we couldn't expect the veaction=editsource / veaction=edit parameters to always work, but since 2024 (c93d4a9695) we can. In addition to improving the user experience, this allows GrowthExperiments to detect this case to skip the welcome survey. Bug: T397193 Change-Id: I9d8a8466c0836c37d5bfdfcb0798114ba5edf459 --- includes/ApiVisualEditor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/ApiVisualEditor.php b/includes/ApiVisualEditor.php index 94b29245ee..aa417469bb 100644 --- a/includes/ApiVisualEditor.php +++ b/includes/ApiVisualEditor.php @@ -352,7 +352,7 @@ public function msg( $key, ...$params ) { $revision, $user, $params['editintro'], - null, + $params['paction'] === 'wikitext' ? 'veaction=editsource' : 'veaction=edit', false, $section ); From 7ae2bc1bfc906a5f4b87439c17df87b0471772bb Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 30 Jul 2025 09:24:46 +0200 Subject: [PATCH 493/730] Localisation updates from https://translatewiki.net. Change-Id: Icc0f794b95b0bed213214ad604f48ce97ab50c4d --- editcheck/i18n/ms.json | 6 ++++++ i18n/ve-mw/smn.json | 1 + 2 files changed, 7 insertions(+) diff --git a/editcheck/i18n/ms.json b/editcheck/i18n/ms.json index fec0943f23..4c68b56f10 100644 --- a/editcheck/i18n/ms.json +++ b/editcheck/i18n/ms.json @@ -8,6 +8,8 @@ "editcheck-dialog-action-yes": "Ya", "editcheck-dialog-action-decline": "Tolak", "editcheck-dialog-action-revise": "Semak semula", + "editcheck-dialog-action-back": "Kembali", + "editcheck-dialog-action-submit": "Hantar", "editcheck-dialog-addref-description": "Bantu pembaca memahami dari mana maklumat ini datang dengan menambahkan petikan.", "editcheck-dialog-addref-reject-question": "Kenapa anda tidak menambah sumber rujukan?", "editcheck-dialog-addref-reject-description": "Penyunting akan menilai dan mengetahui tentang keputusan anda untuk menggugurkan rujukan dengan lebih lanjut.", @@ -25,6 +27,10 @@ "editcheck-tone-footer": "Dikenal pasti menggunakan [$1 model BERT]", "editcheck-tone-title-acted": "Menyemak Nada", "editcheck-tone-description-acted": "Perhatikan ungkapan kata yang bersifat mengampu, memperkecil, kabur, klise atau terlalu menyokong sudut pandangan tertentu.", + "editcheck-tone-reject-appropriate": "Nada suntingan ini sesuai", + "editcheck-tone-reject-uncertain": "Saya tidak pasti bagaimana untuk semak nada pada sesuatu suntingan", + "editcheck-tone-reject-other": "Lain-lain", + "editcheck-reject-description": "Penyunting lain akan belajar dan menilai mengapa anda melakukan pilihan sedemikian", "editcheck-review-title": "Semak perubahan", "tag-editcheck-reference-decline-common-knowledge": "Semak Suntingan (rujukan) ditolak (pengetahuan umum)", "tag-editcheck-reference-decline-common-knowledge-description": "Rujukan SemakSuntingan ditolak kerana ia merupakan pengetahuan am", diff --git a/i18n/ve-mw/smn.json b/i18n/ve-mw/smn.json index 8194d31b6f..7e74707abe 100644 --- a/i18n/ve-mw/smn.json +++ b/i18n/ve-mw/smn.json @@ -57,6 +57,7 @@ "visualeditor-dialog-meta-categories-section": "Luokah", "visualeditor-dialog-meta-languages-code-label": "Kielâkoodi", "visualeditor-dialog-meta-languages-label": "Kielah", + "visualeditor-dialog-meta-languages-link-label": "Liŋkkejum sijđo", "visualeditor-dialog-meta-languages-name-label": "Kielâ", "visualeditor-dialog-meta-languages-section": "Kielah", "visualeditor-dialog-meta-settings-hiddencat-label": "Čiehhum luokka", From d82b9c1eae33557b184b00842c88cd0e0f41a6d0 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 30 Jul 2025 17:24:21 +0100 Subject: [PATCH 494/730] Update VE core submodule to master (307c0c15a) New changes: 9573cfaba Add all necessary public methods to ve.dm.InternalListNodeGroup dd31fabef Add comments and TODOs to new InternalListNodeGroup class f82135eb7 SelectionManager: Fix typo in comment 195787642 Move SelectionManager styles to own file 279c859d9 Check surface hasn't been destroyed in onContextResize c4942333b Use hasAttribute to read the most mininal data-ve-ignore="" 3ae39ab1c SelectionManager: Remove unnecessary styles ba0a102af Suppress scrolling when selecting all 0155bab4b SelectionManager: Allow bounding rects to be drawn aea1d5641 ve.getStartAndEndRects: Merge overlapping start/end rects 28eab6397 SelectionManager: Use startAndEnd rects for labels f71023bae SelectionManager: Move show cursor logic into drawSelections c9d390779 SelectionManager: Rename drawnSelections/drawnSelectionsCache 276febcab SelectionManager: Allow parts of the selection to appear above text 9201c217f Revert "Add comments and TODOs to new InternalListNodeGroup class" 307c0c15a Revert "Add all necessary public methods to ve.dm.InternalListNodeGroup" Localisation Updates: 8625f93ed Added files: - src/ce/styles/ve.ce.SelectionManager.less Bug: T334768 Bug: T397145 Bug: T399551 Bug: T399556 Bug: T399558 Bug: T400683 Change-Id: I9f2a08d1c98420197aea2c38fa0e4a0c6d099c66 --- extension.json | 1 + lib/ve | 2 +- modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js | 2 +- modules/ve-mw/tests/dm/ve.dm.mwExample.js | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/extension.json b/extension.json index 98769ba202..55adb1508f 100644 --- a/extension.json +++ b/extension.json @@ -1240,6 +1240,7 @@ "lib/ve/src/ce/styles/nodes/ve.ce.TableNode.less", "lib/ve/src/ce/styles/ve.ce.less", "lib/ve/src/ce/styles/ve.ce.Surface.less", + "lib/ve/src/ce/styles/ve.ce.SelectionManager.less", "lib/ve/src/ui/styles/ve.ui.icons.less", "lib/ve/src/ui/styles/dialogs/ve.ui.SidebarDialog.less", "lib/ve/src/ui/styles/dialogs/ve.ui.ToolbarDialog.less", diff --git a/lib/ve b/lib/ve index 810cd4b38d..307c0c15a5 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 810cd4b38d70f69ad52d359167c86856491757e7 +Subproject commit 307c0c15a54641067da22c78b9e1351712dd546b diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js index 8d9fca17ea..6caab8565f 100644 --- a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js +++ b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js @@ -204,7 +204,7 @@ ve.dm.MWTransclusionNode.static.toDomElements = function ( dataElement, doc, con for ( let i = 1; i < els.length; i++ ) { // Wrap plain text nodes so we can give them an attribute els[ i ] = wrapTextNode( els[ i ] ); - els[ i ].setAttribute( 'data-ve-ignore', '1' ); + els[ i ].setAttribute( 'data-ve-ignore', '' ); } } else if ( converter.isForPreview() ) { const modelNode = ve.dm.nodeFactory.createFromElement( dataElement ); diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js b/modules/ve-mw/tests/dm/ve.dm.mwExample.js index eb133289cc..da58e2dbc0 100644 --- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js +++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js @@ -54,7 +54,7 @@ ve.dm.mwExample.MWTransclusion = { `, blockContent: '

Hello, world!

', - blockContentClipboard: '

Hello, world!

', + blockContentClipboard: '

Hello, world!

', inlineOpen: ve.dm.example.singleLine` @@ -101,7 +101,7 @@ ve.dm.mwExample.MWTransclusion = { data-ve-no-generated-contents="true">   - Foo + Foo `, pairOne: ve.dm.example.singleLine`

Date: Thu, 17 Jul 2025 12:25:31 +0100 Subject: [PATCH 495/730] ToneCheck: Only close the dialog on 'revise' when in pre-save mode Change-Id: Iceffac76ff9f49823e7418d5e9290dafd4fb0da2 --- editcheck/modules/editchecks/experimental/ToneCheck.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index d718fe347c..bc9bbed50a 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -131,7 +131,9 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); } ); } else if ( choice === 'edit' && surface ) { - return this.controller.closeDialog().then( () => { + // If in pre-save mode, close the check dialog + const closePromise = this.controller.inBeforeSave ? this.controller.closeDialog() : ve.createDeferred().resolve().promise(); + return closePromise.then( () => { surface.getView().activate(); action.fragments[ action.fragments.length - 1 ].collapseToStart().select(); } ); From 48d77ca389e082b4f684c14ee5269a9d14c20832 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 15 Jul 2025 13:07:48 +0100 Subject: [PATCH 496/730] EditCheck: Use new ve-ce-surface-selection-rect class Depends-On: I4151ab51914ff83782cc5170a28703e0f9335965 Change-Id: I75b2c87681db73563c476d9d78e5d8580d4fe9c8 --- editcheck/modules/EditCheck.less | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index cbda544989..b6dca87e97 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -394,7 +394,7 @@ pointer-events: auto; } -.ve-ce-surface-selections-editCheck .ve-ce-surface-selection > div { +.ve-ce-surface-selections-editCheck .ve-ce-surface-selection-rect { mix-blend-mode: darken; // Adjust target colours to account for 50% opacity background: ( ( #fce7fe - 0.8 * ( #fff ) ) / 0.2 ); @@ -405,10 +405,11 @@ } .ve-ce-surface-selections-editCheckWarning .ve-ce-surface-selection { - opacity: 0.2; + &-rects { + opacity: 0.2; + } - > div { - mix-blend-mode: darken; + &-rect { // Adjust target colours to account for 50% opacity background: ( ( #fef6e7 - 0.8 * ( #fff ) ) / 0.2 ); // border: 1px solid ( ( #a66200 - 0.8 * ( #fff ) ) / 0.2 ); From 72e5d68a16bfd9d982b2bd9f53b9b1f78dc83461 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 15 Jul 2025 17:52:48 +0100 Subject: [PATCH 497/730] Force-close edit check dialog on teardown Bug: T399608 Change-Id: I61e39dc4938dc66e44cfe4bb653972235e318640 --- editcheck/modules/controller.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 6c6feb1bc1..c1dfb00ad7 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -118,6 +118,11 @@ Controller.prototype.setup = function () { this.off( 'actionsUpdated' ); this.$highlights.empty(); + const win = this.surface.getSidebarDialogs().getCurrentWindow(); + if ( win ) { + win.close(); + } + this.surface = null; this.actionsByListener = {}; this.focusedAction = null; @@ -162,7 +167,10 @@ Controller.prototype.onSidebarDialogsOpeningOrClosing = function ( win, openingO } // Adjust toolbar position after animation ends setTimeout( () => { - this.target.toolbar.onWindowResize(); + // Check the toolbar still exists (i.e. we haven't closed the editor) + if ( this.target.toolbar ) { + this.target.toolbar.onWindowResize(); + } }, OO.ui.theme.getDialogTransitionDuration() ); }; From 8b3c7c81b596f18d01ddae1c295612b0616c0084 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 31 Jul 2025 09:54:20 +0200 Subject: [PATCH 498/730] Localisation updates from https://translatewiki.net. Change-Id: I1e2da5432e7bee52cb005f46f7214e3dae7bf4f5 --- i18n/ve-mw/aig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/aig.json b/i18n/ve-mw/aig.json index 690741bbf7..bfc4538bb7 100644 --- a/i18n/ve-mw/aig.json +++ b/i18n/ve-mw/aig.json @@ -6,6 +6,6 @@ }, "visualeditor-ca-createlocaldescriptionsource": "Mek lokal diskripshan sarce", "visualeditor-ca-createsource": "Mek sarce", - "visualeditor-ca-editsource": "Chenj sarce", - "visualeditor-ca-editsource-section": "chenj sarse" + "visualeditor-ca-editsource": "Chienj sarce", + "visualeditor-ca-editsource-section": "chienj sarse" } From 9a60eead05aa5d38668085bc4ad8dee1c4d1d8e8 Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Wed, 30 Jul 2025 11:58:13 -0400 Subject: [PATCH 499/730] build: Stop using grunt-image to minify screenshot PNGs This is extremely rarely used and a source of pain for CI. Let's skip it entirely, at least for now. Bug: T400730 Change-Id: I188943d601331fdd9f61a4375ea3657e90f9e0df --- Gruntfile.js | 24 +- package-lock.json | 8327 +++------------------------------------------ package.json | 1 - 3 files changed, 429 insertions(+), 7923 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 8092c36ae4..66179578c8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -34,7 +34,6 @@ module.exports = function ( grunt ) { grunt.loadNpmTasks( 'grunt-banana-checker' ); grunt.loadNpmTasks( 'grunt-contrib-watch' ); grunt.loadNpmTasks( 'grunt-eslint' ); - grunt.loadNpmTasks( 'grunt-image' ); grunt.loadNpmTasks( 'grunt-mocha-test' ); grunt.loadNpmTasks( 'grunt-stylelint' ); grunt.loadNpmTasks( 'grunt-tyops' ); @@ -60,25 +59,6 @@ module.exports = function ( grunt ) { src: [ 'build/screenshots.diffs.js' ] } }, - image: { - pngs: { - options: { - zopflipng: true, - pngout: true, - optipng: true, - advpng: true, - pngcrush: true - }, - 'screenshots-en': { - expand: true, - src: 'screenshots/*-en.png' - }, - 'screenshots-all': { - expand: true, - src: 'screenshots/*.png' - } - } - }, tyops: { options: { typos: 'build/typos.json' @@ -150,8 +130,8 @@ module.exports = function ( grunt ) { grunt.registerTask( 'test', [ 'tyops', 'eslint', 'stylelint', 'banana' ] ); grunt.registerTask( 'test-ci', [ 'git-status' ] ); - grunt.registerTask( 'screenshots', [ 'mochaTest:screenshots-en', 'image:pngs' ] ); - grunt.registerTask( 'screenshots-all', [ 'mochaTest:screenshots-all', 'image:pngs' ] ); + grunt.registerTask( 'screenshots', [ 'mochaTest:screenshots-en' ] ); + grunt.registerTask( 'screenshots-all', [ 'mochaTest:screenshots-all' ] ); grunt.registerTask( 'default', 'test' ); if ( process.env.JENKINS_HOME ) { diff --git a/package-lock.json b/package-lock.json index 5433872ffd..b9745235d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,6 @@ "grunt-banana-checker": "0.13.0", "grunt-contrib-watch": "1.1.0", "grunt-eslint": "24.3.0", - "grunt-image": "5.0.1", "grunt-mocha-test": "0.13.3", "grunt-stylelint": "0.20.1", "grunt-tyops": "0.1.1", @@ -2099,13 +2098,6 @@ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, - "node_modules/@types/q": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", - "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.5", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", @@ -3542,47 +3534,6 @@ "node": ">= 14.18.0" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "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" - } - ] - }, - "node_modules/archive-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", - "dev": true, - "dependencies": { - "file-type": "^4.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/archive-type/node_modules/file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/archiver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", @@ -3805,23 +3756,6 @@ "node": ">= 0.4" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-differ": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", @@ -3841,15 +3775,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -3868,51 +3793,6 @@ "node": ">=8" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", - "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-array-method-boxes-properly": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "is-string": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -4005,38 +3885,12 @@ "node": ">=0.12.0" } }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/available-typed-arrays": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -4174,494 +4028,164 @@ "tweetnacl": "^0.14.3" } }, - "node_modules/bin-build": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", - "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "dependencies": { - "decompress": "^4.0.0", - "download": "^6.2.2", - "execa": "^0.7.0", - "p-map-series": "^1.0.0", - "tempfile": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", + "dev": true + }, + "node_modules/body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", "dev": true, "dependencies": { - "execa": "^0.7.0", - "executable": "^4.1.0" - }, - "engines": { - "node": ">=4" + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" } }, - "node_modules/bin-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", - "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { - "execa": "^1.0.0", - "find-versions": "^3.0.0" - }, - "engines": { - "node": ">=6" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/bin-version-check": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", - "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "bin-version": "^3.0.0", - "semver": "^5.6.0", - "semver-truncate": "^1.1.2" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/bin-version-check/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true }, - "node_modules/bin-version/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=4.8" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/bin-version/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "node_modules/browserslist-config-wikimedia": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/browserslist-config-wikimedia/-/browserslist-config-wikimedia-0.7.0.tgz", + "integrity": "sha512-CTa0lv78dXKEgrYsOLCkqO+9UUS3CV9MWEOYHcymgEvx4mYxB80sCoKRCR7wW2SOMNxjaP9hohrZripjnKuRTA==", + "dev": true + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "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": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/bin-version/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/bin-version/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.4.0" } }, - "node_modules/bin-version/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/bin-version/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bin-version/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bin-version/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/bin-wrapper": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", - "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", - "dev": true, - "dependencies": { - "bin-check": "^4.1.0", - "bin-version-check": "^4.0.0", - "download": "^7.1.0", - "import-lazy": "^3.1.0", - "os-filter-obj": "^2.0.0", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-wrapper/node_modules/@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-wrapper/node_modules/download": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", - "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", - "dev": true, - "dependencies": { - "archive-type": "^4.0.0", - "caw": "^2.0.1", - "content-disposition": "^0.5.2", - "decompress": "^4.2.0", - "ext-name": "^5.0.0", - "file-type": "^8.1.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^8.3.1", - "make-dir": "^1.2.0", - "p-event": "^2.1.0", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-wrapper/node_modules/download/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-wrapper/node_modules/file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-wrapper/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-wrapper/node_modules/got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-wrapper/node_modules/got/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-wrapper/node_modules/p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-wrapper/node_modules/p-event": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", - "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", - "dev": true, - "dependencies": { - "p-timeout": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-wrapper/node_modules/p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", - "dev": true - }, - "node_modules/body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", - "dev": true, - "dependencies": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/browserslist-config-wikimedia": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/browserslist-config-wikimedia/-/browserslist-config-wikimedia-0.7.0.tgz", - "integrity": "sha512-CTa0lv78dXKEgrYsOLCkqO+9UUS3CV9MWEOYHcymgEvx4mYxB80sCoKRCR7wW2SOMNxjaP9hohrZripjnKuRTA==", - "dev": true - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bytes": { @@ -4670,73 +4194,6 @@ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", "dev": true }, - "node_modules/cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", - "dev": true, - "dependencies": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cacheable-request/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "node_modules/cacheable-request/node_modules/keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -4772,29 +4229,7 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "dependencies": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/caniuse-lite": { @@ -4836,21 +4271,6 @@ "node": ">= 10" } }, - "node_modules/caw": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", - "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", - "dev": true, - "dependencies": { - "get-proxy": "^2.0.0", - "isurl": "^1.0.0-alpha5", - "tunnel-agent": "^0.6.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/centra": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", @@ -5099,108 +4519,6 @@ "node": ">=0.8" } }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/coa/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/coa/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/coa/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/coa/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -5246,12 +4564,6 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, "node_modules/comment-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", @@ -5344,34 +4656,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/continuable-cache": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", @@ -5535,13 +4819,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true, - "license": "MIT" - }, "node_modules/css-shorthand-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", @@ -5631,310 +4908,87 @@ "node": ">=4" } }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "~2.2.0" - }, - "engines": { - "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, - "license": "MIT", - "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, - "license": "CC0-1.0" - }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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/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": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", - "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", - "dev": true, - "dependencies": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, + "license": "MIT", "dependencies": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=4" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "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, + "license": "MIT", "dependencies": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=4" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/decompress-tarbz2/node_modules/file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "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, - "engines": { - "node": ">=4" - } + "license": "CC0-1.0" }, - "node_modules/decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "dependencies": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" + "assert-plus": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/decompress-unzip": { + "node_modules/data-uri-to-buffer": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, - "dependencies": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" - }, "engines": { - "node": ">=4" + "node": ">= 12" } }, - "node_modules/decompress-unzip/node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/decompress-unzip/node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-unzip/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/deep-eql": { @@ -5977,42 +5031,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "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": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -6194,46 +5212,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/download": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", - "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", - "dev": true, - "dependencies": { - "caw": "^2.0.0", - "content-disposition": "^0.5.2", - "decompress": "^4.0.0", - "ext-name": "^5.0.0", - "file-type": "5.2.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^7.0.0", - "make-dir": "^1.0.0", - "p-event": "^1.0.0", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -6248,12 +5226,6 @@ "node": ">= 0.4" } }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "node_modules/duplexify": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", @@ -6267,19 +5239,6 @@ "stream-shift": "^1.0.2" } }, - "node_modules/each-async": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", - "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", - "dev": true, - "dependencies": { - "onetime": "^1.0.0", - "set-immediate-shim": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -6500,82 +5459,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "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==", - "dev": true, - "license": "MIT" - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -6621,24 +5504,6 @@ "node": ">= 0.4" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/esbuild": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", @@ -7616,182 +6481,37 @@ "node": ">=4.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", - "dev": true, - "dependencies": { - "execa": "^0.7.0", - "p-finally": "^1.0.0", - "pify": "^3.0.0", - "rimraf": "^2.5.4", - "tempfile": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/exec-buffer/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/exec-buffer/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "dev": true, - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=6" } }, - "node_modules/execa/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", "dev": true }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/executable/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.x" } }, "node_modules/exif-parser": { @@ -7910,31 +6630,6 @@ "node": ">=14.0.0" } }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "dependencies": { - "mime-db": "^1.28.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dev": true, - "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -8166,15 +6861,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/filelist": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", @@ -8205,38 +6891,6 @@ "node": ">=10" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", - "dev": true, - "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/filesize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz", - "integrity": "sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -8265,18 +6919,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", - "dev": true, - "dependencies": { - "semver-regex": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/findup-sync": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", @@ -8365,22 +7007,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -8484,52 +7110,6 @@ "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/from2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -8559,37 +7139,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gaze": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", @@ -8734,27 +7283,6 @@ "node": ">= 0.4" } }, - "node_modules/get-proxy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", - "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", - "dev": true, - "dependencies": { - "npm-conf": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -8770,24 +7298,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-tsconfig": { "version": "4.7.5", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", @@ -8824,137 +7334,21 @@ } }, "node_modules/getobject": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", - "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/gifsicle": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-4.0.1.tgz", - "integrity": "sha512-A/kiCLfDdV+ERV/UB+2O41mifd+RxH8jlRG8DMxZO84Bma/Fw0htqZ+hY2iaalLRNyUu7tYZQslqUBJxBggxbg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "execa": "^1.0.0", - "logalot": "^2.0.0" - }, - "bin": { - "gifsicle": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gifsicle/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/gifsicle/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gifsicle/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gifsicle/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gifsicle/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/gifsicle/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gifsicle/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/gifsicle/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "assert-plus": "^1.0.0" } }, "node_modules/gifwrap": { @@ -9064,23 +7458,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -9165,61 +7542,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "dependencies": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/got/node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/got/node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", - "dev": true, - "dependencies": { - "prepend-http": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -9312,351 +7634,38 @@ "nopt": "bin/nopt.js" } }, - "node_modules/grunt-contrib-watch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", - "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", - "dev": true, - "dependencies": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-eslint": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.3.0.tgz", - "integrity": "sha512-dUPiRgX8fhmh4uwTAn9xrzg7HV5j5DhGmZZGJdHfjy/AN9G4jD+5IjfbcAJ209JcIG8m4B7xz3crIhuDSm3siQ==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "eslint": "^8.44.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - }, - "peerDependencies": { - "grunt": ">=1" - } - }, - "node_modules/grunt-image": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/grunt-image/-/grunt-image-5.0.1.tgz", - "integrity": "sha512-HtVvj+iBZ52ApQz5II/qupQxYxqp4wPdPt8n5BPON8/UxRrNwtpfA4zZND8eDprWQnA0LkzzsVL0GMhdAYF23Q==", - "dev": true, - "dependencies": { - "chalk": "^2.0.0", - "each-async": "^1.1.1", - "exec-buffer": "^3.2.0", - "filesize": "^4.0.0", - "gifsicle": "^4.0.1", - "guetzli": "^2.0.0", - "is-gif": "^3.0.0", - "is-jpg": "^2.0.0", - "is-png": "^2.0.0", - "is-svg": "^4.1.0", - "jpeg-recompress-bin": "^4.0.0", - "mkdirp": "^0.5.1", - "mozjpeg": "^6.0.0", - "optipng-bin": "^6.0.0", - "pify": "^4.0.0", - "pngquant-bin": "^5.0.0", - "round10": "^1.0.3", - "svgo": "^1.2.2", - "zopflipng-bin": "^5.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/grunt-image/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/grunt-image/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, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/grunt-image/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/grunt-image/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/grunt-image/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/grunt-image/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/grunt-image/node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/grunt-image/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/grunt-image/node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/grunt-image/node_modules/csso/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/grunt-image/node_modules/csso/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==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/grunt-image/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/grunt-image/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/grunt-image/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/grunt-image/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/grunt-image/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/grunt-image/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/grunt-image/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/grunt-image/node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/grunt-image/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/grunt-image/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/grunt-image/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grunt-image/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/grunt-image/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/grunt-contrib-watch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/grunt-image/node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "node_modules/grunt-eslint": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.3.0.tgz", + "integrity": "sha512-dUPiRgX8fhmh4uwTAn9xrzg7HV5j5DhGmZZGJdHfjy/AN9G4jD+5IjfbcAJ209JcIG8m4B7xz3crIhuDSm3siQ==", "dev": true, - "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" + "chalk": "^4.1.2", + "eslint": "^8.44.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "grunt": ">=1" } }, "node_modules/grunt-known-options": { @@ -9841,24 +7850,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "node_modules/guetzli": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/guetzli/-/guetzli-2.0.0.tgz", - "integrity": "sha512-o/g6IZeTN0kOXGxr2SlvwDKa6CJHIRYh6kR28keyhE2+uJl+3bODBAJR4kmX8gKjFEQVAq02GYwfIIbJAFFekw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.1.0" - }, - "bin": { - "guetzli": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -9903,19 +7894,6 @@ "node": ">=0.10.0" } }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -9925,44 +7903,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -9975,18 +7915,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "dependencies": { - "has-symbol-support-x": "^1.4.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/has-tostringtag": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", @@ -10089,12 +8017,6 @@ "entities": "^4.4.0" } }, - "node_modules/http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, "node_modules/http-parser-js": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", @@ -10229,15 +8151,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", @@ -10307,40 +8220,12 @@ "node": ">=18" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, - "node_modules/into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "dependencies": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/ip-address": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", @@ -10373,66 +8258,12 @@ "node": ">=0.10.0" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -10445,23 +8276,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", @@ -10477,19 +8291,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -10502,133 +8303,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-gif": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", - "integrity": "sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, - "dependencies": { - "file-type": "^10.4.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/is-gif/node_modules/file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -10641,47 +8339,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-jpg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", - "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", - "dev": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -10691,23 +8348,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -10717,15 +8357,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", - "dev": true, - "funding": { - "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", @@ -10735,15 +8366,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", @@ -10756,34 +8378,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-png": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz", - "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", @@ -10805,119 +8399,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-svg": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.4.0.tgz", - "integrity": "sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==", - "dev": true, - "dependencies": { - "fast-xml-parser": "^4.1.3" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -10948,58 +8429,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "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", @@ -11036,19 +8465,6 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, - "node_modules/isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "dependencies": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - }, - "engines": { - "node": ">= 4" - } - }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -11210,23 +8626,6 @@ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", "dev": true }, - "node_modules/jpeg-recompress-bin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jpeg-recompress-bin/-/jpeg-recompress-bin-4.0.0.tgz", - "integrity": "sha512-hm55De89eEzz4DeL8SXWN8kXxARlNhTs8NShUbBqvg5cxUHHKYLsLwEDAukJ/q2Gr571wHunaU2+2Ivnac7L+w==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bin-wrapper": "^4.1.0", - "logalot": "^2.0.0" - }, - "bin": { - "jpeg-recompress": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11646,59 +9045,22 @@ "mime": "^1.3.4", "parse-bmfont-ascii": "^1.0.3", "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^3.7.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "node_modules/load-bmfont/node_modules/phin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", - "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", - "dev": true, - "dependencies": { - "centra": "^2.7.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "parse-bmfont-xml": "^1.1.4", + "phin": "^3.7.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "node_modules/load-bmfont/node_modules/phin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", "dev": true, "dependencies": { - "error-ex": "^1.2.0" + "centra": "^2.7.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/locate-app": { @@ -11827,41 +9189,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", - "dev": true, - "dependencies": { - "figures": "^1.3.5", - "squeak": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/logalot/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/logalot/node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/loglevel": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", @@ -11881,28 +9208,6 @@ "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", "dev": true }, - "node_modules/longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -11912,45 +9217,6 @@ "get-func-name": "^2.0.1" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", - "dev": true, - "dependencies": { - "get-stdin": "^4.0.1", - "indent-string": "^2.1.0", - "longest": "^1.0.0", - "meow": "^3.3.0" - }, - "bin": { - "lpad-align": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lpad-align/node_modules/indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -11973,27 +9239,6 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/make-dir/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/make-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", @@ -12015,15 +9260,6 @@ "node": ">=0.10.0" } }, - "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/markdown-it": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", @@ -12095,102 +9331,6 @@ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, - "node_modules/meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "dependencies": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -12255,15 +9395,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -12417,24 +9548,6 @@ "node": ">=10" } }, - "node_modules/mozjpeg": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-6.0.1.tgz", - "integrity": "sha512-9Z59pJMi8ni+IUvSH5xQwK5tNLw7p3dwDNCZ3o1xE+of3G5Hc/yOz6Ue/YuLiBXU3ZB5oaHPURyPdqfBX/QYJA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.1.0" - }, - "bin": { - "mozjpeg": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -12518,12 +9631,6 @@ "node": ">= 0.4.0" } }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -12611,81 +9718,12 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/normalize-url/node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", "dev": true }, - "node_modules/npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-conf/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -12728,37 +9766,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", @@ -12774,28 +9781,6 @@ "node": ">=0.10.0" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", - "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "gopd": "^1.0.1", - "safe-array-concat": "^1.1.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -12815,29 +9800,10 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "isobject": "^3.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, "node_modules/omggif": { @@ -12855,15 +9821,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -12881,36 +9838,6 @@ "node": ">= 0.8.0" } }, - "node_modules/optipng-bin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-6.0.0.tgz", - "integrity": "sha512-95bB4y8IaTsa/8x6QH4bLUuyvyOoGBCLDA7wOgDL8UFqJpSUh1Hob8JRJhit+wC1ZLN3tQ7mFt7KuBj0x8F2Wg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.0.0" - }, - "bin": { - "optipng": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "dev": true, - "dependencies": { - "arch": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -12939,63 +9866,6 @@ "os-tmpdir": "^1.0.0" } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", - "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", - "dev": true, - "dependencies": { - "p-timeout": "^1.1.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -13026,39 +9896,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", - "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", - "dev": true, - "dependencies": { - "p-reduce": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -13409,36 +10246,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pixelmatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", @@ -13469,129 +10276,6 @@ "node": ">=4.0.0" } }, - "node_modules/pngquant-bin": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-5.0.2.tgz", - "integrity": "sha512-OLdT+4JZx5BqE1CFJkrvomYV0aSsv6x2Bba+aWaVc0PMfWlE+ZByNKYAdKeIqsM4uvW1HOSEHnf8KcOnykPNxA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1", - "execa": "^0.10.0", - "logalot": "^2.0.0" - }, - "bin": { - "pngquant": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pngquant-bin/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/pngquant-bin/node_modules/execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pngquant-bin/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pngquant-bin/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pngquant-bin/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/pngquant-bin/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pngquant-bin/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pngquant-bin/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.4.49", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", @@ -13708,15 +10392,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/pretty-format": { "version": "30.0.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz", @@ -13804,12 +10479,6 @@ "node": ">=0.4.0" } }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, "node_modules/proxy-agent": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", @@ -13844,12 +10513,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -13884,18 +10547,6 @@ "node": ">=6" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -13917,20 +10568,6 @@ "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", "dev": true }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -14161,79 +10798,16 @@ "node": ">= 0.10" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "dependencies": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/redent/node_modules/indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/redent/node_modules/strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "dependencies": { - "get-stdin": "^4.0.1" - }, - "bin": { - "strip-indent": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" + "minimatch": "^3.0.5" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.0.0" } }, "node_modules/regenerator-runtime": { @@ -14251,27 +10825,6 @@ "regexp-tree": "bin/regexp-tree" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/regjsparser": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", @@ -14293,18 +10846,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -14473,15 +11014,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, "node_modules/resq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", @@ -14528,12 +11060,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/round10": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/round10/-/round10-1.0.3.tgz", - "integrity": "sha1-hhEPRqEIdKGTHaf91eBtGFeo5NA=", - "dev": true - }, "node_modules/run-async": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", @@ -14584,33 +11110,6 @@ "node": ">=18.0.0" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -14637,30 +11136,6 @@ "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", "dev": true }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", @@ -14670,24 +11145,6 @@ "regexp-tree": "~0.1.1" } }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -14700,19 +11157,6 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "node_modules/seek-bzip": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", - "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", - "dev": true, - "dependencies": { - "commander": "^2.8.1" - }, - "bin": { - "seek-bunzip": "bin/seek-bunzip", - "seek-table": "bin/seek-bzip-table" - } - }, "node_modules/selenium-webdriver": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", @@ -14838,36 +11282,6 @@ "node": ">=10" } }, - "node_modules/semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "dependencies": { - "semver": "^5.3.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/semver-truncate/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/serialize-error": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", @@ -14904,64 +11318,6 @@ "randombytes": "^2.1.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", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -15061,12 +11417,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15132,30 +11482,6 @@ "node": ">= 14" } }, - "node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", - "dev": true, - "dependencies": { - "sort-keys": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -15205,118 +11531,40 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "dev": true - }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, - "node_modules/squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", - "dev": true, - "dependencies": { - "chalk": "^1.0.0", - "console-stream": "^0.1.1", - "lpad-align": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/squeak/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/squeak/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/squeak/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/squeak/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, - "node_modules/squeak/node_modules/strip-ansi": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/squeak/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">= 10.x" } }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, "node_modules/sshpk": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", @@ -15342,14 +11590,6 @@ "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, - "license": "MIT" - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -15371,20 +11611,6 @@ "node": ">=8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/stream-buffers": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", @@ -15414,15 +11640,6 @@ "bare-events": "^2.2.0" } }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -15468,65 +11685,6 @@ "node": ">=8" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "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" - } - }, "node_modules/stringify-object": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", @@ -15567,36 +11725,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "dev": true, - "dependencies": { - "is-natural-number": "^4.0.1" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-final-newline": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", @@ -15633,27 +11761,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-outer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/strnum": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", @@ -16199,86 +12306,6 @@ "streamx": "^2.15.0" } }, - "node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, - "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/tar-stream/node_modules/bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/tar-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/tar-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "dependencies": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/text-decoder": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", @@ -16294,21 +12321,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/timm": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", @@ -16368,12 +12380,6 @@ "node": ">=0.6.0" } }, - "node_modules/to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -16399,36 +12405,6 @@ "node": ">=0.8" } }, - "node_modules/trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -16500,99 +12476,21 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, + "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typescript": { @@ -16615,35 +12513,6 @@ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -16699,13 +12568,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true, - "license": "MIT" - }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -16756,27 +12618,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/urlpattern-polyfill": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", @@ -16807,22 +12648,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -17095,102 +12920,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/workerpool": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", @@ -17584,24 +13313,6 @@ "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } - }, - "node_modules/zopflipng-bin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/zopflipng-bin/-/zopflipng-bin-5.0.0.tgz", - "integrity": "sha512-8AWRT/CPkIBEup96LSiVdhLT4n7b4bpzY0BcQ26OjdRnjODa+JWNK55Ii63CiOEyqObPSwjLifuUI5ooFmjiGQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1", - "logalot": "^2.1.0" - }, - "bin": { - "zopflipng": "cli.js" - }, - "engines": { - "node": ">=6" - } } }, "dependencies": { @@ -18992,12 +14703,6 @@ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, - "@types/q": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", - "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", - "dev": true - }, "@types/sinonjs__fake-timers": { "version": "8.1.5", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", @@ -19992,29 +15697,6 @@ "supertest": "7.1.0" } }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, - "archive-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", - "dev": true, - "requires": { - "file-type": "^4.2.0" - }, - "dependencies": { - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true - } - } - }, "archiver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", @@ -20174,16 +15856,6 @@ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true }, - "array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - } - }, "array-differ": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", @@ -20196,12 +15868,6 @@ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -20214,37 +15880,6 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array.prototype.reduce": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", - "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-array-method-boxes-properly": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "is-string": "^1.1.1" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - } - }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -20317,27 +15952,12 @@ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true }, - "async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "available-typed-arrays": { - "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==", - "dev": true, - "requires": { - "possible-typed-array-names": "^1.0.0" - } - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -20420,259 +16040,13 @@ "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bin-build": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", - "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", - "dev": true, - "requires": { - "decompress": "^4.0.0", - "download": "^6.2.2", - "execa": "^0.7.0", - "p-map-series": "^1.0.0", - "tempfile": "^2.0.0" - } - }, - "bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "executable": "^4.1.0" - } - }, - "bin-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", - "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "find-versions": "^3.0.0" - }, - "dependencies": { - "cross-spawn": { - "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", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "bin-version-check": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", - "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", - "dev": true, - "requires": { - "bin-version": "^3.0.0", - "semver": "^5.6.0", - "semver-truncate": "^1.1.2" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - } - } - }, - "bin-wrapper": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", - "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "requires": { - "bin-check": "^4.1.0", - "bin-version-check": "^4.0.0", - "download": "^7.1.0", - "import-lazy": "^3.1.0", - "os-filter-obj": "^2.0.0", - "pify": "^4.0.1" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true - }, - "download": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", - "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", - "dev": true, - "requires": { - "archive-type": "^4.0.0", - "caw": "^2.0.1", - "content-disposition": "^0.5.2", - "decompress": "^4.2.0", - "ext-name": "^5.0.0", - "file-type": "^8.1.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^8.3.1", - "make-dir": "^1.2.0", - "p-event": "^2.1.0", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true - }, - "p-event": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", - "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", - "dev": true, - "requires": { - "p-timeout": "^2.0.1" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - } + "tweetnacl": "^0.14.3" } }, "binary-extensions": { @@ -20764,22 +16138,6 @@ "ieee754": "^1.1.13" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -20792,12 +16150,6 @@ "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", "dev": true }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -20810,62 +16162,6 @@ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", "dev": true }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true - }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", - "dev": true - } - } - }, - "call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "requires": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - } - }, "call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -20892,22 +16188,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, "caniuse-lite": { "version": "1.0.30001692", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", @@ -20929,18 +16209,6 @@ "lodash": "^4.17.15" } }, - "caw": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", - "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", - "dev": true, - "requires": { - "get-proxy": "^2.0.0", - "isurl": "^1.0.0-alpha5", - "tunnel-agent": "^0.6.0", - "url-to-options": "^1.0.1" - } - }, "centra": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", @@ -21125,84 +16393,6 @@ "dev": true, "optional": true }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -21239,12 +16429,6 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, "comment-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", @@ -21307,31 +16491,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - } - }, "continuable-cache": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", @@ -21442,12 +16601,6 @@ "nth-check": "^2.0.1" } }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, "css-shorthand-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", @@ -21528,217 +16681,51 @@ }, "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 - } - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true - }, - "data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - } - }, - "data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - } - }, - "data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "requires": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "dev": true - }, - "debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "requires": { - "ms": "^2.1.3" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true - }, - "decompress": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", - "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", - "dev": true, - "requires": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", - "dev": true, - "requires": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" - } - }, - "decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "dev": true, - "requires": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" - }, - "dependencies": { - "file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "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 } } }, - "decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "requires": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" + "assert-plus": "^1.0.0" } }, - "decompress-unzip": { + "data-uri-to-buffer": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true + }, + "dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true + }, + "debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, "requires": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "ms": "^2.1.3" } }, "deep-eql": { @@ -21772,28 +16759,6 @@ "clone": "^1.0.2" } }, - "define-data-property": { - "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==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, "degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -21922,39 +16887,6 @@ "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true }, - "download": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", - "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", - "dev": true, - "requires": { - "caw": "^2.0.0", - "content-disposition": "^0.5.2", - "decompress": "^4.0.0", - "ext-name": "^5.0.0", - "file-type": "5.2.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^7.0.0", - "make-dir": "^1.0.0", - "p-event": "^1.0.0", - "pify": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, "dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -21966,12 +16898,6 @@ "gopd": "^1.2.0" } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "duplexify": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", @@ -21984,16 +16910,6 @@ "stream-shift": "^1.0.2" } }, - "each-async": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", - "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", - "dev": true, - "requires": { - "onetime": "^1.0.0", - "set-immediate-shim": "^1.0.0" - } - }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -22161,74 +17077,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "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==", - "dev": true - }, "es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -22262,17 +17110,6 @@ "hasown": "^2.0.2" } }, - "es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "requires": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - } - }, "esbuild": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", @@ -22952,127 +17789,6 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, - "exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "p-finally": "^1.0.0", - "pify": "^3.0.0", - "rimraf": "^2.5.4", - "tempfile": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "requires": { - "pify": "^2.2.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "exif-parser": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", @@ -23154,25 +17870,6 @@ } } }, - "ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "requires": { - "mime-db": "^1.28.0" - } - }, - "ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dev": true, - "requires": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -23335,12 +18032,6 @@ "flat-cache": "^3.0.4" } }, - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true - }, "filelist": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", @@ -23370,29 +18061,6 @@ } } }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true - }, - "filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", - "dev": true, - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - } - }, - "filesize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz", - "integrity": "sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA==", - "dev": true - }, "fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -23412,15 +18080,6 @@ "path-exists": "^4.0.0" } }, - "find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", - "dev": true, - "requires": { - "semver-regex": "^2.0.0" - } - }, "findup-sync": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", @@ -23480,15 +18139,6 @@ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true }, - "for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "requires": { - "is-callable": "^1.2.7" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -23534,78 +18184,30 @@ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", - "dev": true, - "requires": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, + "requires": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + } }, "fs.realpath": { "version": "1.0.0", @@ -23626,26 +18228,6 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, - "function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, "gaze": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", @@ -23746,21 +18328,6 @@ "es-object-atoms": "^1.0.0" } }, - "get-proxy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", - "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", - "dev": true, - "requires": { - "npm-conf": "^1.1.0" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, "get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -23770,17 +18337,6 @@ "pump": "^3.0.0" } }, - "get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - } - }, "get-tsconfig": { "version": "4.7.5", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", @@ -23824,93 +18380,6 @@ "assert-plus": "^1.0.0" } }, - "gifsicle": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-4.0.1.tgz", - "integrity": "sha512-A/kiCLfDdV+ERV/UB+2O41mifd+RxH8jlRG8DMxZO84Bma/Fw0htqZ+hY2iaalLRNyUu7tYZQslqUBJxBggxbg==", - "dev": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "execa": "^1.0.0", - "logalot": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "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", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "gifwrap": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", @@ -23994,16 +18463,6 @@ "type-fest": "^0.20.2" } }, - "globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "requires": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - } - }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -24066,51 +18525,6 @@ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", - "dev": true - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -24248,271 +18662,21 @@ "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", "dev": true, - "requires": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" - } - }, - "grunt-eslint": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.3.0.tgz", - "integrity": "sha512-dUPiRgX8fhmh4uwTAn9xrzg7HV5j5DhGmZZGJdHfjy/AN9G4jD+5IjfbcAJ209JcIG8m4B7xz3crIhuDSm3siQ==", - "dev": true, - "requires": { - "chalk": "^4.1.2", - "eslint": "^8.44.0" - } - }, - "grunt-image": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/grunt-image/-/grunt-image-5.0.1.tgz", - "integrity": "sha512-HtVvj+iBZ52ApQz5II/qupQxYxqp4wPdPt8n5BPON8/UxRrNwtpfA4zZND8eDprWQnA0LkzzsVL0GMhdAYF23Q==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "each-async": "^1.1.1", - "exec-buffer": "^3.2.0", - "filesize": "^4.0.0", - "gifsicle": "^4.0.1", - "guetzli": "^2.0.0", - "is-gif": "^3.0.0", - "is-jpg": "^2.0.0", - "is-png": "^2.0.0", - "is-svg": "^4.1.0", - "jpeg-recompress-bin": "^4.0.0", - "mkdirp": "^0.5.1", - "mozjpeg": "^6.0.0", - "optipng-bin": "^6.0.0", - "pify": "^4.0.0", - "pngquant-bin": "^5.0.0", - "round10": "^1.0.3", - "svgo": "^1.2.2", - "zopflipng-bin": "^5.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "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==", - "dev": true - } - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - } - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - } + "requires": { + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" + } + }, + "grunt-eslint": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-24.3.0.tgz", + "integrity": "sha512-dUPiRgX8fhmh4uwTAn9xrzg7HV5j5DhGmZZGJdHfjy/AN9G4jD+5IjfbcAJ209JcIG8m4B7xz3crIhuDSm3siQ==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "eslint": "^8.44.0" } }, "grunt-known-options": { @@ -24602,17 +18766,6 @@ "integrity": "sha512-fLTY6Ai1JpIv1INYCWq3/gNZKsvGrcg6M2XxBsmwdciY//3+12/dlKZy5C5HjjupwpcpScggilgSyvwnU+I1Fg==", "dev": true }, - "guetzli": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/guetzli/-/guetzli-2.0.0.tgz", - "integrity": "sha512-o/g6IZeTN0kOXGxr2SlvwDKa6CJHIRYh6kR28keyhE2+uJl+3bODBAJR4kmX8gKjFEQVAq02GYwfIIbJAFFekw==", - "dev": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.1.0" - } - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -24646,57 +18799,18 @@ } } }, - "has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "requires": { - "dunder-proto": "^1.0.0" - } - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true - }, "has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, "has-tostringtag": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", @@ -24766,12 +18880,6 @@ "entities": "^4.4.0" } }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, "http-parser-js": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", @@ -24869,12 +18977,6 @@ "resolve-from": "^4.0.0" } }, - "import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", - "dev": true - }, "import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", @@ -24931,33 +19033,12 @@ "rxjs": "^7.8.1" } }, - "internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - } - }, "interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, "ip-address": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", @@ -24986,45 +19067,12 @@ "is-windows": "^1.0.1" } }, - "is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "requires": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - } - }, - "is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "requires": { - "has-bigints": "^1.0.2" - } - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -25034,16 +19082,6 @@ "binary-extensions": "^2.0.0" } }, - "is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - } - }, "is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", @@ -25053,12 +19091,6 @@ "builtin-modules": "^3.3.0" } }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, "is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -25068,48 +19100,12 @@ "hasown": "^2.0.0" } }, - "is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "requires": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - } - }, - "is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "requires": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "requires": { - "call-bound": "^1.0.3" - } - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -25122,35 +19118,6 @@ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", "dev": true }, - "is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - } - }, - "is-gif": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-3.0.0.tgz", - "integrity": "sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==", - "dev": true, - "requires": { - "file-type": "^10.4.0" - }, - "dependencies": { - "file-type": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", - "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", - "dev": true - } - } - }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -25160,70 +19127,24 @@ "is-extglob": "^2.1.1" } }, - "is-jpg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", - "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=", - "dev": true - }, - "is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true - }, - "is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - } - }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", - "dev": true - }, "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", - "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", @@ -25233,24 +19154,6 @@ "isobject": "^3.0.1" } }, - "is-png": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz", - "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==", - "dev": true - }, - "is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "requires": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - } - }, "is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", @@ -25266,72 +19169,6 @@ "is-unc-path": "^1.0.0" } }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true - }, - "is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "requires": { - "call-bound": "^1.0.3" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - } - }, - "is-svg": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.4.0.tgz", - "integrity": "sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==", - "dev": true, - "requires": { - "fast-xml-parser": "^4.1.3" - } - }, - "is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "requires": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - } - }, - "is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "requires": { - "which-typed-array": "^1.1.16" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -25353,37 +19190,6 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true - }, - "is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "requires": { - "call-bound": "^1.0.3" - } - }, - "is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - } - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -25414,16 +19220,6 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, "jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -25553,16 +19349,6 @@ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", "dev": true }, - "jpeg-recompress-bin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jpeg-recompress-bin/-/jpeg-recompress-bin-4.0.0.tgz", - "integrity": "sha512-hm55De89eEzz4DeL8SXWN8kXxARlNhTs8NShUbBqvg5cxUHHKYLsLwEDAukJ/q2Gr571wHunaU2+2Ivnac7L+w==", - "dev": true, - "requires": { - "bin-wrapper": "^4.1.0", - "logalot": "^2.0.0" - } - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -25953,36 +19739,6 @@ } } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "locate-app": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.5.0.tgz", @@ -26070,43 +19826,15 @@ "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", - "dev": true, - "requires": { - "figures": "^1.3.5", - "squeak": "^1.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - } + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "loglevel": { @@ -26121,22 +19849,6 @@ "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", "dev": true }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -26146,35 +19858,6 @@ "get-func-name": "^2.0.1" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "indent-string": "^2.1.0", - "longest": "^1.0.0", - "meow": "^3.3.0" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - } - } - }, "lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -26196,23 +19879,6 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, "make-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", @@ -26228,12 +19894,6 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, "markdown-it": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", @@ -26285,83 +19945,6 @@ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - } - } - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -26405,12 +19988,6 @@ "mime-db": "1.52.0" } }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -26526,17 +20103,6 @@ } } }, - "mozjpeg": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-6.0.1.tgz", - "integrity": "sha512-9Z59pJMi8ni+IUvSH5xQwK5tNLw7p3dwDNCZ3o1xE+of3G5Hc/yOz6Ue/YuLiBXU3ZB5oaHPURyPdqfBX/QYJA==", - "dev": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.1.0" - } - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -26592,12 +20158,6 @@ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -26656,69 +20216,12 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "dependencies": { - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - } - } - }, "normalize.css": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", "dev": true }, - "npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "requires": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - } - } - }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -26746,26 +20249,6 @@ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - } - }, "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", @@ -26778,21 +20261,6 @@ "isobject": "^3.0.0" } }, - "object.getownpropertydescriptors": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", - "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", - "dev": true, - "requires": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "gopd": "^1.0.1", - "safe-array-concat": "^1.1.2" - } - }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -26812,18 +20280,6 @@ "isobject": "^3.0.1" } }, - "object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, "omggif": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", @@ -26839,12 +20295,6 @@ "wrappy": "1" } }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, "optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -26859,26 +20309,6 @@ "type-check": "^0.4.0" } }, - "optipng-bin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-6.0.0.tgz", - "integrity": "sha512-95bB4y8IaTsa/8x6QH4bLUuyvyOoGBCLDA7wOgDL8UFqJpSUh1Hob8JRJhit+wC1ZLN3tQ7mFt7KuBj0x8F2Wg==", - "dev": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.0", - "logalot": "^2.0.0" - } - }, - "os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "dev": true, - "requires": { - "arch": "^2.1.0" - } - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -26901,44 +20331,6 @@ "os-tmpdir": "^1.0.0" } }, - "own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true - }, - "p-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", - "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", - "dev": true, - "requires": { - "p-timeout": "^1.1.1" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -26957,30 +20349,6 @@ "p-limit": "^3.0.2" } }, - "p-map-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", - "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", - "dev": true, - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -27248,136 +20616,25 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pixelmatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", "dev": true, "requires": { - "pngjs": "^3.0.0" - } - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true - }, - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true - }, - "pngquant-bin": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-5.0.2.tgz", - "integrity": "sha512-OLdT+4JZx5BqE1CFJkrvomYV0aSsv6x2Bba+aWaVc0PMfWlE+ZByNKYAdKeIqsM4uvW1HOSEHnf8KcOnykPNxA==", - "dev": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1", - "execa": "^0.10.0", - "logalot": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "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", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "pngjs": "^3.0.0" } }, - "possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", "dev": true }, "postcss": { @@ -27453,12 +20710,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, "pretty-format": { "version": "30.0.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz", @@ -27523,12 +20774,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, "proxy-agent": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", @@ -27559,12 +20804,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -27593,12 +20832,6 @@ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true - }, "qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -27614,17 +20847,6 @@ "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", "dev": true }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -27813,52 +21035,6 @@ "minimatch": "^3.0.5" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - } - } - }, - "reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - } - }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -27871,20 +21047,6 @@ "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true }, - "regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - } - }, "regjsparser": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", @@ -27902,15 +21064,6 @@ } } }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -28042,15 +21195,6 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "resq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", @@ -28089,12 +21233,6 @@ "glob": "^7.1.3" } }, - "round10": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/round10/-/round10-1.0.3.tgz", - "integrity": "sha1-hhEPRqEIdKGTHaf91eBtGFeo5NA=", - "dev": true - }, "run-async": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", @@ -28125,27 +21263,6 @@ "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", "dev": true }, - "safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -28158,24 +21275,6 @@ "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", "dev": true }, - "safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, "safe-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", @@ -28185,17 +21284,6 @@ "regexp-tree": "~0.1.1" } }, - "safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "requires": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -28208,15 +21296,6 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "seek-bzip": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", - "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", - "dev": true, - "requires": { - "commander": "^2.8.1" - } - }, "selenium-webdriver": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", @@ -28313,29 +21392,6 @@ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true }, - "semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true - }, - "semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "requires": { - "semver": "^5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - } - } - }, "serialize-error": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", @@ -28362,49 +21418,6 @@ "randombytes": "^2.1.0" } }, - "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==", - "dev": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "requires": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - } - }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -28474,12 +21487,6 @@ "side-channel-map": "^1.0.1" } }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -28524,24 +21531,6 @@ "socks": "^2.8.3" } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", - "dev": true, - "requires": { - "sort-keys": "^1.0.0" - } - }, "source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -28555,114 +21544,55 @@ "dev": true }, "spacetrim": { - "version": "0.11.59", - "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.59.tgz", - "integrity": "sha512-lLYsktklSRKprreOm7NXReW8YiX2VBjbgmXYEziOoGf/qsJqAEACaDvoTtUOycwjpaSh+bT8eu0KrJn7UNxiCg==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "dev": true - }, - "split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true - }, - "sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, - "squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "console-stream": "^0.1.1", - "lpad-align": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "version": "0.11.59", + "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.59.tgz", + "integrity": "sha512-lLYsktklSRKprreOm7NXReW8YiX2VBjbgmXYEziOoGf/qsJqAEACaDvoTtUOycwjpaSh+bT8eu0KrJn7UNxiCg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true + }, + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, "sshpk": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", @@ -28680,12 +21610,6 @@ "tweetnacl": "~0.14.0" } }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, "stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -28703,16 +21627,6 @@ } } }, - "stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - } - }, "stream-buffers": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", @@ -28736,12 +21650,6 @@ "text-decoder": "^1.1.0" } }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", - "dev": true - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -28779,44 +21687,6 @@ "strip-ansi": "^6.0.1" } }, - "string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - } - }, - "string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, "stringify-object": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", @@ -28846,30 +21716,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "dev": true, - "requires": { - "is-natural-number": "^4.0.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-final-newline": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", @@ -28891,23 +21737,6 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } - } - }, "strnum": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", @@ -29264,79 +22093,6 @@ } } }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "dependencies": { - "bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - } - }, "text-decoder": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", @@ -29352,18 +22108,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, "timm": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", @@ -29416,12 +22160,6 @@ "os-tmpdir": "~1.0.2" } }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -29441,29 +22179,6 @@ "punycode": "^2.1.1" } }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", - "dev": true - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } - } - }, "ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -29524,59 +22239,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - } - }, - "typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - } - }, - "typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - } - }, - "typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - } - }, "typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -29590,28 +22252,6 @@ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true }, - "unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "requires": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - } - }, - "unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -29652,12 +22292,6 @@ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true - }, "upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -29683,21 +22317,6 @@ "punycode": "^2.1.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true - }, "urlpattern-polyfill": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", @@ -29725,18 +22344,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -29943,75 +22550,6 @@ "isexe": "^2.0.0" } }, - "which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "requires": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - } - }, - "which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "requires": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, - "which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "requires": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - } - }, - "which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - } - }, "workerpool": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", @@ -30283,17 +22821,6 @@ } } } - }, - "zopflipng-bin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/zopflipng-bin/-/zopflipng-bin-5.0.0.tgz", - "integrity": "sha512-8AWRT/CPkIBEup96LSiVdhLT4n7b4bpzY0BcQ26OjdRnjODa+JWNK55Ii63CiOEyqObPSwjLifuUI5ooFmjiGQ==", - "dev": true, - "requires": { - "bin-build": "^3.0.0", - "bin-wrapper": "^4.0.1", - "logalot": "^2.1.0" - } } } } diff --git a/package.json b/package.json index e956b032be..e82cdf7ab6 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "grunt-banana-checker": "0.13.0", "grunt-contrib-watch": "1.1.0", "grunt-eslint": "24.3.0", - "grunt-image": "5.0.1", "grunt-mocha-test": "0.13.3", "grunt-stylelint": "0.20.1", "grunt-tyops": "0.1.1", From 063dd10e85f61889d8daa038f5e485cbaa8b32bb Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 30 Jul 2025 21:10:49 -0500 Subject: [PATCH 500/730] Edit check: adjust paddings Bug: T399883 Change-Id: Ia959af5fb9d5f58c7d838bcf38ffb1f9d201d895 --- editcheck/modules/EditCheck.less | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index b6dca87e97..f111bd00f5 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -156,15 +156,15 @@ cursor: auto; background-color: @background-color-base; margin: @spacing-50 -@spacing-75 -@spacing-50 -@spacing-75; - padding: @spacing-50 @spacing-75 @spacing-75; + padding: @spacing-75; } &-actions { margin-top: @spacing-100; - margin-bottom: @spacing-100; } &-footer { + margin-top: @spacing-100; color: @color-subtle; } @@ -245,7 +245,8 @@ /* Transition out faster, as keyboard may be coming up */ transition: transform 100ms; transform: translateY( 0% ); - max-width: 995px; + // See: .ve-init-mw-target-surface in ve.init.mw.MobileArticleTarget.less + max-width: calc( 993.3px + (2 * 1em) ); margin: 0 auto; &-title { @@ -280,6 +281,7 @@ &-body { background-color: transparent; + padding-top: 0; padding-left: 2em; margin-left: 0; } From 61efddec15d0f17a592bae4ac6443384e8a595e4 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 30 Jul 2025 21:50:46 -0500 Subject: [PATCH 501/730] Edit check: update paste check flow Bug: T399675 Change-Id: I0613d8d1ce6409cbbb0e0d161dfe3bd507069ba1 --- editcheck/i18n/en.json | 9 +++++ editcheck/i18n/qqq.json | 9 +++++ .../experimental/ImportCopyvioEditCheck.js | 35 +++++++++++++------ extension.json | 9 +++++ 4 files changed, 52 insertions(+), 10 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index 18d1c77624..d03e1317ed 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -24,6 +24,15 @@ "editcheck-dialog-title": "Before publishing", "editcheck-copyvio-title": "Pasted content", "editcheck-copyvio-description": "As a general rule, do not copy text from other sources. Doing so usually constitutes both a copyright violation and plagiarism.", + "editcheck-copyvio-action-keep": "Yes, keep it", + "editcheck-copyvio-action-remove": "No, remove it", + "editcheck-copyvio-keep-description": "Other editors would value learning more about your reason to keep this pasted text.", + "editcheck-copyvio-keep-wrote": "I wrote this content and it's not published elsewhere", + "editcheck-copyvio-keep-permission": "I have permission to reuse this content", + "editcheck-copyvio-keep-free": "This text is in the public domain or freely licensed", + "editcheck-copyvio-keep-other": "Other", + "editcheck-copyvio-keep-notify": "Thank you for sharing your reason to keep the pasted text!", + "editcheck-copyvio-remove-notify": "Thank you for removing this text!", "editcheck-tone-title": "Revise Tone?", "editcheck-tone-description": "Other users often revise this kind of wording, saying the tone is unbalanced. [$1 Learn more]", "editcheck-tone-descriptionlink": "//meta.wikimedia.org/wiki/Special:MyLanguage/Neutral_point_of_view", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index b4247f3204..e16ca487ac 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -26,6 +26,15 @@ "editcheck-dialog-title": "Title shown in the toolbar while the user is in the add a citation workflow.", "editcheck-copyvio-title": "Title of pasted content / copyvio check", "editcheck-copyvio-description": "Description of pasted content / copyvio check", + "editcheck-copyvio-action-keep": "Label for the keep option when asking users if they want to act on the pasted content check", + "editcheck-copyvio-action-remove": "Label for the remove option when asking users if they want to act on the pasted content check", + "editcheck-copyvio-keep-description": "Heading for form question asking why the user wants to keep pasted content", + "editcheck-copyvio-keep-wrote": "Answer option for pasted content check in response to {{msg-mw|editcheck-copyvio-keep-description}}", + "editcheck-copyvio-keep-permission": "Answer option for pasted content check in response to {{msg-mw|editcheck-copyvio-keep-description}}", + "editcheck-copyvio-keep-free": "Answer option for pasted content check in response to {{msg-mw|editcheck-copyvio-keep-description}}", + "editcheck-copyvio-keep-other": "Answer option for pasted content check in response to {{msg-mw|editcheck-copyvio-keep-description}}", + "editcheck-copyvio-keep-notify": "Notification message shown after pasted content is kept", + "editcheck-copyvio-remove-notify": "Notification message shown after pasted content is removed", "editcheck-tone-title": "Title of tone check", "editcheck-tone-description": "Help text explaining the tone check", "editcheck-tone-descriptionlink": "{{notranslate}}\nLink to learn more about the tone check, shown as part of {{msg-mw|editcheck-tone-description}}", diff --git a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js index fd3f5fdde3..396ef62548 100644 --- a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js +++ b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js @@ -15,14 +15,12 @@ mw.editcheck.ImportCopyvioEditCheck.static.name = 'importCopyvio'; mw.editcheck.ImportCopyvioEditCheck.static.choices = [ { - action: 'rewrite', - label: 'Rewrite', // ve.msg( 'editcheck-dialog-action-yes' ), - icon: 'edit' + action: 'keep', + label: ve.msg( 'editcheck-copyvio-action-keep' ) }, { - action: 'dismiss', - label: 'Keep', // ve.msg( 'editcheck-dialog-action-no' ), - icon: 'check' + action: 'remove', + label: ve.msg( 'editcheck-copyvio-action-remove' ) } ]; @@ -55,10 +53,25 @@ mw.editcheck.ImportCopyvioEditCheck.prototype.onDocumentChange = function ( surf mw.editcheck.ImportCopyvioEditCheck.prototype.act = function ( choice, action, surface ) { switch ( choice ) { - case 'dismiss': - this.dismiss( action ); - break; - case 'rewrite': + case 'keep': + return action.widget.showFeedback( { + description: ve.msg( 'editcheck-copyvio-keep-description' ), + choices: [ 'wrote', 'permission', 'free', 'other' ].map( + ( key ) => ( { + data: key, + // Messages that can be used here: + // * editcheck-copyvio-keep-wrote + // * editcheck-copyvio-keep-permission + // * editcheck-copyvio-keep-free + // * editcheck-copyvio-keep-other + label: ve.msg( 'editcheck-copyvio-keep-' + key ) + } ) ) + } ).then( ( reason ) => { + this.dismiss( action ); + mw.notify( ve.msg( 'editcheck-copyvio-keep-notify' ), { type: 'success' } ); + return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); + } ); + case 'remove': action.fragments.forEach( ( fragment ) => { fragment.removeContent(); } ); @@ -67,6 +80,8 @@ mw.editcheck.ImportCopyvioEditCheck.prototype.act = function ( choice, action, s action.fragments[ action.fragments.length - 1 ].select(); surface.getView().focus(); }, 500 ); + + mw.notify( ve.msg( 'editcheck-copyvio-remove-notify' ), { type: 'success' } ); break; } }; diff --git a/extension.json b/extension.json index 55adb1508f..125f57767b 100644 --- a/extension.json +++ b/extension.json @@ -677,6 +677,15 @@ "editcheck-dialog-title", "editcheck-copyvio-title", "editcheck-copyvio-description", + "editcheck-copyvio-action-keep", + "editcheck-copyvio-action-remove", + "editcheck-copyvio-keep-description", + "editcheck-copyvio-keep-wrote", + "editcheck-copyvio-keep-permission", + "editcheck-copyvio-keep-free", + "editcheck-copyvio-keep-other", + "editcheck-copyvio-keep-notify", + "editcheck-copyvio-remove-notify", "editcheck-tone-title", "editcheck-tone-title-acted", "editcheck-tone-description", From 3b0d01fcdb681b33c01546ac20dfea19fc19f1f8 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 28 Jul 2025 11:24:14 -0500 Subject: [PATCH 502/730] Edit check: the active check's gutter highlight should appear on top Change-Id: I2ec713687ceead940fa8dcfa1e4760d041b6461b --- editcheck/modules/EditCheck.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index f111bd00f5..49feea76d8 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -428,6 +428,10 @@ overflow: hidden; background-color: @color-base; + &-active { + z-index: 1; + } + &-error { background-color: @color-error; } From 5879cd26df3aa676d917f53b71f676df49e5f3a0 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 31 Jul 2025 13:00:45 +0100 Subject: [PATCH 503/730] Update VE core submodule to master (7fba6a44c) New changes: a9b44ac23 Use a less aggressively minimized minImgDataUri d631c551e Fix documentation of ve.dm.Converter to correct type 1b06a2b68 Document and streamline existing VisualDiff code a bit 349b2bf85 Remove uses of transparent pixel in CSS 7fba6a44c TreeModifier: Step out when inserting a node into a text node Bug: T399863 Bug: T400116 Change-Id: I256dbd641a8f3fdb6a78506582b6c41e089c341b --- lib/ve | 2 +- modules/ve-mw/tests/dm/ve.dm.mwExample.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/ve b/lib/ve index 307c0c15a5..7fba6a44ce 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 307c0c15a54641067da22c78b9e1351712dd546b +Subproject commit 7fba6a44ceae33afe5aa230982e39915381b6443 diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js b/modules/ve-mw/tests/dm/ve.dm.mwExample.js index da58e2dbc0..d92a1ab119 100644 --- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js +++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js @@ -1235,7 +1235,7 @@ ve.dm.mwExample.domToDataCases = { mediaTag: 'img', mw: {}, resource: './Foo', - src: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=', + src: ve.ce.minImgDataUri, type: 'thumb', width: 300 } @@ -1287,7 +1287,7 @@ ve.dm.mwExample.domToDataCases = { mediaTag: 'img', mw: {}, resource: './Foo', - src: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=', + src: ve.ce.minImgDataUri, type: 'thumb', width: 300 } @@ -1331,7 +1331,7 @@ ve.dm.mwExample.domToDataCases = { mediaTag: 'img', mw: {}, resource: './Foo', - src: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=', + src: ve.ce.minImgDataUri, type: 'thumb', width: 300 } @@ -1368,7 +1368,7 @@ ve.dm.mwExample.domToDataCases = { mediaTag: 'img', mw: {}, resource: './Foo', - src: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=', + src: ve.ce.minImgDataUri, type: 'thumb', width: 300 } @@ -1402,7 +1402,7 @@ ve.dm.mwExample.domToDataCases = { mediaTag: 'img', mw: {}, resource: './Foo', - src: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=', + src: ve.ce.minImgDataUri, type: 'thumb', width: 300 } From cb6f45ca18790b1891ae7b812b238b29f07553c3 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 31 Jul 2025 19:05:37 +0100 Subject: [PATCH 504/730] Fix placement of toolbar insert group on mobile Only applies to wikis using $wgVisualEditorMobileInsertMenu. Bug: T400933 Change-Id: I2aa9aad0f2342494b82afba0d1e4c32b9e034577 --- .../targets/ve.init.mw.MobileArticleTarget.js | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js index 4362e79caa..f6c8b66aed 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js @@ -78,6 +78,17 @@ ve.init.mw.MobileArticleTarget.static.toolbarGroups = [ name: 'link', include: [ 'link' ] }, + { + name: 'insert', + label: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), + title: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), + narrowConfig: { + invisibleLabel: true, + icon: 'add' + }, + // This is the default for include=*, but that's not guaranteed: + type: 'list' + }, { name: 'editMode', type: 'list', @@ -97,18 +108,9 @@ ve.init.mw.MobileArticleTarget.static.toolbarGroups = [ ]; const mobileInsertMenu = mw.config.get( 'wgVisualEditorConfig' ).mobileInsertMenu; +const insertGroupIndex = ve.init.mw.MobileArticleTarget.static.toolbarGroups.findIndex( ( toolGroup ) => toolGroup.name === 'insert' ); if ( mobileInsertMenu ) { - const insertGroup = { - name: 'insert', - label: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), - title: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ), - narrowConfig: { - invisibleLabel: true, - icon: 'add' - }, - // This is the default for include=*, but that's not guaranteed: - type: 'list' - }; + const insertGroup = ve.init.mw.MobileArticleTarget.static.toolbarGroups[ insertGroupIndex ]; if ( mobileInsertMenu === true ) { insertGroup.include = '*'; insertGroup.forceExpand = [ 'transclusion', 'insertTable' ]; @@ -119,7 +121,9 @@ if ( mobileInsertMenu ) { // Citoid sets this up, so we need to force it for everything: insertGroup.forceExpand = mobileInsertMenu; } - ve.init.mw.MobileArticleTarget.static.toolbarGroups.push( insertGroup ); +} else { + // Feature disabled, remove the insert group + ve.init.mw.MobileArticleTarget.static.toolbarGroups.splice( insertGroupIndex, 1 ); } ve.init.mw.MobileArticleTarget.static.trackingName = 'mobile'; From 6d0147e607cbbacdf2b857f317c68150308e878f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 31 Jul 2025 18:52:12 +0100 Subject: [PATCH 505/730] GutterSidebarEditCheckDialog: Guard against null bounding rects Change-Id: I9f79ce290944646e59cc525ae9c0839a6c5f407b --- editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js index 3d61f2344a..9eaf0365f8 100644 --- a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js +++ b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js @@ -111,7 +111,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions const rects = action.getHighlightSelections().map( ( selection ) => { const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); return selectionView.getSelectionBoundingRect(); - } ); + } ).filter( ( rect ) => rect ); const boundingRect = ve.getBoundingRect( rects ); if ( !boundingRect ) { return; From b649837cfdd3e96c9e95533919618037ee4b4a3c Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 1 Aug 2025 10:11:31 +0200 Subject: [PATCH 506/730] Localisation updates from https://translatewiki.net. Change-Id: Ibb9e4e5ef34cad2d723d2991e0a724f346879b3e --- editcheck/i18n/de.json | 9 +++++++++ editcheck/i18n/it.json | 7 +++++++ i18n/ve-mw/ar.json | 2 ++ i18n/ve-wmf/ar.json | 1 + 4 files changed, 19 insertions(+) diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index 30fb41b841..08542e8f0c 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -20,6 +20,15 @@ "editcheck-dialog-title": "Vor der Veröffentlichung", "editcheck-copyvio-title": "Eingefügter Inhalt", "editcheck-copyvio-description": "Kopiere in der Regel keinen Text aus anderen Quellen. Dies stellt in der Regel sowohl eine Verletzung des Urheberrechts als auch ein Plagiat dar.", + "editcheck-copyvio-action-keep": "Ja, behalten.", + "editcheck-copyvio-action-remove": "Nein, entfernen.", + "editcheck-copyvio-keep-description": "Andere Redakteure würden gerne mehr über deine Gründe für die Beibehaltung dieses eingefügten Textes erfahren.", + "editcheck-copyvio-keep-wrote": "Ich habe diesen Inhalt geschrieben und er ist nirgendwo anders veröffentlicht", + "editcheck-copyvio-keep-permission": "Ich habe die Erlaubnis , diesen Inhalt wieder zu verwenden .", + "editcheck-copyvio-keep-free": "Dieser Text ist gemeinfrei oder steht unter freier Lizenz.", + "editcheck-copyvio-keep-other": "Andere", + "editcheck-copyvio-keep-notify": "Danke, dass du uns deinen Grund für die Aufbewahrung des eingesteckten Textes genannt hast!", + "editcheck-copyvio-remove-notify": "Danke, dass du diesen Text entfernt hast!", "editcheck-tone-title": "Tonfall überarbeiten?", "editcheck-tone-description": "Andere Benutzer überarbeiteten diese Art der Formulierung häufig, weil sie den Tonfall als unausgewogen ansehen. [$1 Mehr erfahren]", "editcheck-tone-footer": "Identifiziert mit dem [$1 Sprachmodell BERT]", diff --git a/editcheck/i18n/it.json b/editcheck/i18n/it.json index b6b65ce94e..af87e68baa 100644 --- a/editcheck/i18n/it.json +++ b/editcheck/i18n/it.json @@ -19,6 +19,13 @@ "editcheck-dialog-addref-success-notify": "Grazie per aver aggiunto una fonte!", "editcheck-dialog-addref-title": "Aggiungi una fonte", "editcheck-dialog-title": "Prima della pubblicazione", + "editcheck-copyvio-action-keep": "Sì, mantienilo", + "editcheck-copyvio-action-remove": "No, rimuovilo", + "editcheck-copyvio-keep-wrote": "Io ho scritto questo contenuto e non è pubblicato altrove", + "editcheck-copyvio-keep-permission": "Ho il permesso di riutilizzare questo contenuto", + "editcheck-copyvio-keep-free": "Questo testo è nel pubblico dominio o concesso in licenza libera", + "editcheck-copyvio-keep-other": "Altro", + "editcheck-copyvio-remove-notify": "Grazie per aver rimosso questo testo!", "editcheck-tone-reject-other": "Altro", "editcheck-review-title": "Rivedi modifiche", "tag-editcheck-reference-decline-other": "Edit Check (citazioni) rifiutato (altro)" diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index dff6bb8f83..ef298f0e15 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -94,9 +94,11 @@ "visualeditor-dialog-media-info-artist": "رُفع بواسطة $1", "visualeditor-dialog-media-info-audiofile": "ملف صوتي", "visualeditor-dialog-media-info-created": "أنشأ بواسطة: $1", + "visualeditor-dialog-media-info-ellipsis": "…", "visualeditor-dialog-media-info-meta-artist": "المؤلف: $1", "visualeditor-dialog-media-info-moreinfo": "مزيد من المعلومات", "visualeditor-dialog-media-info-readmore": "اقرأ المزيد", + "visualeditor-dialog-media-info-separator": "·", "visualeditor-dialog-media-info-uploaded": "رفع في: $1", "visualeditor-dialog-media-page-advanced": "متقدم", "visualeditor-dialog-media-page-general": "عام", diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index c2ecda4c2e..93550d31bd 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -27,6 +27,7 @@ "tag-editcheck-references-activated-description": "يعتقد EditCheck أنه ربما كان هناك حاجة إلى مرجع، وتم عرض واجهة المستخدم", "tag-editcheck-references-shown": "تم عرض التحقق من التحرير (المراجع)", "tag-editcheck-references-shown-description": "يعتقد EditCheck أنه قد يكون هناك حاجة إلى مرجع، وقد تم عرض واجهة المستخدم", + "tag-editcheck-tone-description": "اكتشف EditCheck وجود مشكلة محتملة في نغمة بعض المحتوى المضاف", "tag-editcheck-tone-shown": "تم عرض علامة التحرير (النغمة)", "tag-editcheck-tone-shown-description": "يعتقد EditCheck أنه قد يكون من الضروري إجراء تعديل على النغمة في بعض المحتوى، وقد تم عرض واجهة المستخدم", "tag-visualeditor": "تحرير مرئي", From 255b304380d2e9c97323a96b39af067e15893c64 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 1 Aug 2025 12:52:59 +0100 Subject: [PATCH 507/730] Update VE core submodule to master (21ae6b49e) New changes: 12810d2ff SelectionManager: Guard against null bounding rect 21ae6b49e SelectionManager: Add a showGutter option Bug: T400905 Change-Id: I196bebe1229ca1b118a95d3cf0c3607e9032b02d --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 7fba6a44ce..21ae6b49e5 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 7fba6a44ceae33afe5aa230982e39915381b6443 +Subproject commit 21ae6b49e57c44f2fe49ea21176b6a7e0781afda From eb6c3f4bc68dd80b0e4d90758bb4f68310292cb3 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 4 Aug 2025 09:32:13 +0200 Subject: [PATCH 508/730] Localisation updates from https://translatewiki.net. Change-Id: I5c8828a7605184ced50376ee7e4268a051928735 --- editcheck/i18n/ar.json | 9 +++++++++ editcheck/i18n/az.json | 9 +++++++++ editcheck/i18n/de.json | 8 +++++--- editcheck/i18n/fa.json | 9 +++++++++ editcheck/i18n/fi.json | 11 ++++++++++- editcheck/i18n/hy.json | 4 +++- editcheck/i18n/lb.json | 6 ++++++ editcheck/i18n/mk.json | 9 +++++++++ editcheck/i18n/nl.json | 10 ++++++++++ editcheck/i18n/sr-ec.json | 4 ++++ editcheck/i18n/zh-hans.json | 16 ++++++++++++++++ i18n/ve-mw/mwlanguagevariant/sq.json | 7 ++++--- i18n/ve-mw/sq.json | 21 +++++++++++---------- i18n/ve-wmf/zh-hans.json | 14 ++++++++++---- 14 files changed, 115 insertions(+), 22 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index 11fbc56f5e..62c28f977f 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -24,6 +24,15 @@ "editcheck-dialog-title": "قبل النشر", "editcheck-copyvio-title": "محتوى ملصوق", "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. عادة، يُشكل هذا انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", + "editcheck-copyvio-action-keep": "نعم، احتفظ به", + "editcheck-copyvio-action-remove": "لا، أزله", + "editcheck-copyvio-keep-description": "يقدر المحررون الآخرون معرفة المزيد عن سبب احتفاظك بهذا النص الملصق.", + "editcheck-copyvio-keep-wrote": "لقد كتبت هذا المحتوى ولم يتم نشره في أي مكان آخر", + "editcheck-copyvio-keep-permission": "لدي الإذن لإعادة استخدام هذا المحتوى", + "editcheck-copyvio-keep-free": "هذا النص في النطاق العام أو يحمل رخصة حرة", + "editcheck-copyvio-keep-other": "آخر", + "editcheck-copyvio-keep-notify": "شكرًا لك على مشاركة سببك للاحتفاظ بالنص الملصق!", + "editcheck-copyvio-remove-notify": "شكرًا لك على إزالة هذا النص!", "editcheck-tone-title": "إعادة النظر في الأسلوب؟", "editcheck-tone-description": "غالبًا ما يقوم المستخدمون الآخرون بمراجعة هذا النوع من العبارات، استنادًا على أنّ الأسلوب غير متّزن. [$1 التعرف على المزيد]", "editcheck-tone-footer": "تم التحديد باستخدام [$1 نموذج BERT]", diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index eb7ed8b7c1..52396f2146 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -23,6 +23,15 @@ "editcheck-dialog-title": "Yayımlamadan əvvəl", "editcheck-copyvio-title": "Yapışdırılmış məzmun", "editcheck-copyvio-description": "Bir qayda olaraq, mətni digər mənbələrdən olduğu kimi kopyalamayın. Bunu etmək adətən həm müəllif hüquqlarının pozulması, həm də plagiat sayılır.", + "editcheck-copyvio-action-keep": "Bəli, saxla", + "editcheck-copyvio-action-remove": "Xeyr, sil", + "editcheck-copyvio-keep-description": "Digər redaktorlar bu yapışdırılmış mətni saxlamaq səbəbiniz haqqında daha çox öyrənmək istəyə bilərlər.", + "editcheck-copyvio-keep-wrote": "Bu məzmunu mən özüm yazmışam və başqa bir yerdə dərc olunmayıb", + "editcheck-copyvio-keep-permission": "Bu məzmunu təkrar istifadə etmək icazəm var", + "editcheck-copyvio-keep-free": "Bu mətn ictimai mülkiyyətdədir və ya azad lisenziyalıdır", + "editcheck-copyvio-keep-other": "Digər", + "editcheck-copyvio-keep-notify": "Yapışdırılmış mətni saxlamaq səbəbinizi paylaşdığınız üçün təşəkkür edirik!", + "editcheck-copyvio-remove-notify": "Bu mətni sildiyiniz üçün təşəkkür edirik!", "editcheck-tone-title": "Tona yenidən baxılsın?", "editcheck-tone-description": "Digər istifadəçilər tez-tez tonun balanssız olduğunu söyləyərək bu cür ifadələri başdan yazırlar. [$1 Ətraflı məlumat]", "editcheck-tone-footer": "[$1 BERT modeli] istifadə edilməklə müəyyən edilmişdir", diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index 08542e8f0c..50614f8ebd 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -1,6 +1,8 @@ { "@metadata": { - "authors": [] + "authors": [ + "Brettchenweber" + ] }, "editcheck-dialog-action-no": "Nein", "editcheck-dialog-action-yes": "Ja", @@ -24,10 +26,10 @@ "editcheck-copyvio-action-remove": "Nein, entfernen.", "editcheck-copyvio-keep-description": "Andere Redakteure würden gerne mehr über deine Gründe für die Beibehaltung dieses eingefügten Textes erfahren.", "editcheck-copyvio-keep-wrote": "Ich habe diesen Inhalt geschrieben und er ist nirgendwo anders veröffentlicht", - "editcheck-copyvio-keep-permission": "Ich habe die Erlaubnis , diesen Inhalt wieder zu verwenden .", + "editcheck-copyvio-keep-permission": "Ich habe die Erlaubnis, diesen Inhalt weiterzuverwenden.", "editcheck-copyvio-keep-free": "Dieser Text ist gemeinfrei oder steht unter freier Lizenz.", "editcheck-copyvio-keep-other": "Andere", - "editcheck-copyvio-keep-notify": "Danke, dass du uns deinen Grund für die Aufbewahrung des eingesteckten Textes genannt hast!", + "editcheck-copyvio-keep-notify": "Danke, dass du uns deinen Grund für die Beibehaltung des eingefügten Textes genannt hast!", "editcheck-copyvio-remove-notify": "Danke, dass du diesen Text entfernt hast!", "editcheck-tone-title": "Tonfall überarbeiten?", "editcheck-tone-description": "Andere Benutzer überarbeiteten diese Art der Formulierung häufig, weil sie den Tonfall als unausgewogen ansehen. [$1 Mehr erfahren]", diff --git a/editcheck/i18n/fa.json b/editcheck/i18n/fa.json index bfdd737209..f768e1040a 100644 --- a/editcheck/i18n/fa.json +++ b/editcheck/i18n/fa.json @@ -18,6 +18,15 @@ "editcheck-dialog-title": "پیش از انتشار", "editcheck-copyvio-title": "متن چسبانده‌شده", "editcheck-copyvio-description": "به‌عنوان یک قاعدهٔ کلی، متن را از سایر منابع کپی نکنید. چنین کاری معمولاً ترکیبی است از نقض حق تکثیر و سرقت ادبی.", + "editcheck-copyvio-action-keep": "بله، نگهش دار", + "editcheck-copyvio-action-remove": "خیر، حذفش کن", + "editcheck-copyvio-keep-description": "برای سایر ویرایشگران مهم است که دربارهٔ دلیل شما برای نگه داشتن این متن چسبانده‌شده بیشتر بدانند.", + "editcheck-copyvio-keep-wrote": "خودم این متن را نوشته‌ام و جای دیگری منتشر نشده است", + "editcheck-copyvio-keep-permission": "من اجازهٔ استفادهٔ مجدد از این محتوا را دارم", + "editcheck-copyvio-keep-free": "این متن تحت مالکیت عمومی قرار دارد یا دارای اجازه‌نامهٔ آزاد است", + "editcheck-copyvio-keep-other": "سایر", + "editcheck-copyvio-keep-notify": "از این که دلیل نگه داشتن متن چسبانده‌شده را به اشتراک گذاشتید ممنونیم!", + "editcheck-copyvio-remove-notify": "از این که این متن را حذف کردید ممنونیم!", "editcheck-tone-description": "کاربران دیگر معمولاً چنین جمله‌بندی‌هایی را اصلاح می‌کنند، زیرا معتقدند که لحن آن نامتعادل است. [$1 بیشتر بدانید]", "editcheck-review-title": "بازبینی تغییرات", "tag-editcheck-reference-decline-common-knowledge": "بررسی ویرایش (ارجاعات) رد شد (دانش عمومی)", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 49ee730608..54012b26dd 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -14,7 +14,7 @@ "editcheck-dialog-action-submit": "Lähetä", "editcheck-dialog-addref-description": "Auta lukijoita ymmärtämään, mistä tämä tieto on peräisin lisäämällä lähdeviite.", "editcheck-dialog-addref-reject-question": "Mikset lisää lähdeviitettä?", - "editcheck-dialog-addref-reject-description": "Muut muokkaajat arvostaisivat kuulla päätöksestäsi olla lisäämättä lähdeviitettä.", + "editcheck-dialog-addref-reject-description": "Muut muokkaajat arvostaisivat kuulla, mistä syystä päätit olla lisäämättä lähdeviitettä.", "editcheck-dialog-addref-reject-irrelevant": "En usko, että lähdeviitteet ovat tarpeen tekemässäni muokkauksessa", "editcheck-dialog-addref-reject-common-knowledge": "Lisäämäni tieto on yleisesti tunnettua", "editcheck-dialog-addref-reject-uncertain": "En ole varma, minkä lähdeviitteen lisäisin", @@ -24,6 +24,15 @@ "editcheck-dialog-title": "Ennen julkaisemista", "editcheck-copyvio-title": "Liitetty sisältö", "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Se on usein sekä tekijänoikeusrikkomus että plagiarismia.", + "editcheck-copyvio-action-keep": "Kyllä, säilytä se", + "editcheck-copyvio-action-remove": "Ei, poista se", + "editcheck-copyvio-keep-description": "Muut muokkaajat arvostaisivat kuulla, mistä syystä säilytit tämän liitetyn sisällön.", + "editcheck-copyvio-keep-wrote": "Kirjoitin tämän sisällön, eikä sitä ole julkaistu muualla", + "editcheck-copyvio-keep-permission": "Minulla on lupa uudelleenkäyttää tätä sisältöä", + "editcheck-copyvio-keep-free": "Tämä teksti on vapaasti lisensoitu tai se on public domainissa", + "editcheck-copyvio-keep-other": "Muu syy", + "editcheck-copyvio-keep-notify": "Kiitos, kun kerroit syysi liitetyn tekstin säilyttämiseksi!", + "editcheck-copyvio-remove-notify": "Kiitos tämän tekstin poistamisesta!", "editcheck-tone-title": "Korjaa sävyä?", "editcheck-tone-description": "Muut käyttäjät korjaavat usein tämänkaltaisia ilmauksia, koska ne ovat sävyltään epäneutraaleja. [$1 Lisätietoja]", "editcheck-tone-footer": "Tunnistettu [$1 BERT-mallin] avulla", diff --git a/editcheck/i18n/hy.json b/editcheck/i18n/hy.json index 48c0713c30..4ec5f62729 100644 --- a/editcheck/i18n/hy.json +++ b/editcheck/i18n/hy.json @@ -1,9 +1,11 @@ { "@metadata": { "authors": [ + "Kareyac", "Սահակ" ] }, "editcheck-dialog-action-no": "Ոչ", - "editcheck-dialog-action-yes": "Այո" + "editcheck-dialog-action-yes": "Այո", + "editcheck-copyvio-keep-other": "Այլ" } diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index abbdd93e26..742f32ff73 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -8,6 +8,12 @@ "editcheck-dialog-action-yes": "Jo", "editcheck-dialog-action-revise": "Iwwerschaffen", "editcheck-dialog-action-back": "Zréck", + "editcheck-copyvio-action-keep": "Jo, halen", + "editcheck-copyvio-action-remove": "Nee, ewechhuelen", + "editcheck-copyvio-keep-wrote": "Ech hunn dësen Inhalt geschriwwen an en ass soss néierens publizéiert", + "editcheck-copyvio-keep-free": "Dësen Text ass am Domaine public oder steet ënner enger fräier Lizenz", + "editcheck-copyvio-keep-notify": "Merci, datt Dir Äre Grond gedeelt hutt fir den agepechten Text ze halen", + "editcheck-copyvio-remove-notify": "Merci, datt Dir dësen Text ewechgeholl hutt!", "editcheck-tone-title": "Tounfall iwwerschaffen?", "editcheck-tone-description": "Aner Benotzer iwwerschaffen dës Zort vu Ausdrocksweis dacks, well se fannen, datt den Tounfall net equilibréiert ass. [$1 Méi gewuer ginn]", "editcheck-tone-title-acted": "Tounfall iwwerschaffen", diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index 0c7b329c49..10e8ee328d 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -22,6 +22,15 @@ "editcheck-dialog-title": "Пред да објавите", "editcheck-copyvio-title": "Налепена содржина", "editcheck-copyvio-description": "По општо правило, не копирајте текст од други извори. Копирањето на текст претставува кршење на авторски права и плагијат.", + "editcheck-copyvio-action-keep": "Да, задржи", + "editcheck-copyvio-action-remove": "Не, отстрани", + "editcheck-copyvio-keep-description": "Другите уредници би целене да дознаат повеќе за причината зошто го задржувате овој прекопиран текст.", + "editcheck-copyvio-keep-wrote": "Јас ја напишав оваа соржина, и истата не е објавена на друго место", + "editcheck-copyvio-keep-permission": "Имам дозвола тука да ја користам оваа содржина", + "editcheck-copyvio-keep-free": "Овој текст е во јавна сопственост или под слободна лиценца", + "editcheck-copyvio-keep-other": "Друго", + "editcheck-copyvio-keep-notify": "Ви благодариме што ја споделивте причината за задржување на прекопираниот текст.", + "editcheck-copyvio-remove-notify": "Ви благодариме што го отстранивте овој текст!", "editcheck-tone-title": "Да се преработи тонот?", "editcheck-tone-description": "Други корисници често преработуваат вакви срочувања велејќи дека тонот не е урамнотежен. [$1 Дознајте повеќе]", "editcheck-tone-footer": "Утврдено користејќи [$1 BERT-модел]", diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index c660845def..b197fb2e31 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "ABPMAB", "Jeroen N", "Mainframe98", "McDutchie" @@ -24,6 +25,15 @@ "editcheck-dialog-title": "Voordat u dit publiceert", "editcheck-copyvio-title": "Geplakte inhoud", "editcheck-copyvio-description": "Over het algemeen geldt: kopieer geen tekst van andere bronnen. Dit is meestal een schending van het auteursrecht en ook plagiaat.", + "editcheck-copyvio-action-keep": "Ja, behouden", + "editcheck-copyvio-action-remove": "Nee, verwijderen", + "editcheck-copyvio-keep-description": "Andere redacteuren willen graag weten waarom u deze geplakte tekst behoudt.", + "editcheck-copyvio-keep-wrote": "Ik heb dit geschreven en het is nergens anders gepubliceerd", + "editcheck-copyvio-keep-permission": "Ik heb toestemming om dit te hergebruiken", + "editcheck-copyvio-keep-free": "Deze tekst is vrij van auteursrechten of beschikbaar onder een vrije licentie", + "editcheck-copyvio-keep-other": "Anders", + "editcheck-copyvio-keep-notify": "Bedankt dat u uw reden voor het behouden van de geplakte tekst hebt aangegeven.", + "editcheck-copyvio-remove-notify": "Bedankt voor het verwijderen van deze tekst.", "editcheck-tone-title": "Toon wijzigen?", "editcheck-tone-description": "Andere gebruikers herzien dit soort formuleringen vaak omdat ze de toon onevenwichtig vinden. [$1 Meer informatie]", "editcheck-tone-footer": "Geïdentificeerd met behulp van een [$1 BERT-model]", diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index 296191a6cb..0c8ff1f0bd 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -21,6 +21,10 @@ "editcheck-dialog-title": "Пре објављивања", "editcheck-copyvio-title": "Налепљен садржај", "editcheck-copyvio-description": "Опште правило је да се не копира текст из других извора. Копирање текста је кршење ауторских права и плагијат.", + "editcheck-copyvio-action-keep": "Да, задржи", + "editcheck-copyvio-action-remove": "Не, уклони", + "editcheck-copyvio-keep-free": "Овај текст је у јавном власништву или под слободном лиценцом", + "editcheck-copyvio-keep-other": "Друго", "editcheck-tone-reject-appropriate": "Тон је примеран", "editcheck-tone-reject-uncertain": "Не знам како да ревидирам тон", "editcheck-tone-reject-other": "Друго", diff --git a/editcheck/i18n/zh-hans.json b/editcheck/i18n/zh-hans.json index d42b536cd8..67f5c56d7a 100644 --- a/editcheck/i18n/zh-hans.json +++ b/editcheck/i18n/zh-hans.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Anterdc99", + "GuoPC", "Hakimi97", "LittlePaw365", "Peterxy12", @@ -13,6 +14,8 @@ "editcheck-dialog-action-yes": "是", "editcheck-dialog-action-decline": "拒绝", "editcheck-dialog-action-revise": "修订", + "editcheck-dialog-action-back": "返回", + "editcheck-dialog-action-submit": "提交", "editcheck-dialog-addref-description": "添加引证来帮助读者了解此信息的出处。", "editcheck-dialog-addref-reject-question": "您为何未添加引证?", "editcheck-dialog-addref-reject-description": "其他编者会想要进一步了解您作出拒绝引证的决定的原因。", @@ -25,11 +28,24 @@ "editcheck-dialog-title": "发布前", "editcheck-copyvio-title": "粘贴的内容", "editcheck-copyvio-description": "一般来说,不要从其他来源复制文本。这样做通常既构成侵犯版权,也构成抄袭。", + "editcheck-copyvio-action-keep": "是,保留", + "editcheck-copyvio-action-remove": "否,删除", + "editcheck-copyvio-keep-description": "其他编者会希望了解您保留此段粘贴文本的原因。", + "editcheck-copyvio-keep-wrote": "此内容由我撰写,且没有在其他地方发布过", + "editcheck-copyvio-keep-permission": "我有权再使用此内容", + "editcheck-copyvio-keep-free": "此段文本属于公共领域或具有自由许可", + "editcheck-copyvio-keep-other": "其他", + "editcheck-copyvio-keep-notify": "感谢您分享保留粘贴文本的原因!", + "editcheck-copyvio-remove-notify": "感谢您删除此段文本!", "editcheck-tone-title": "修改语气?", "editcheck-tone-description": "其他用户经常会修改这种措辞,认为其语气不平衡。[ $1了解更多]", "editcheck-tone-footer": "使用[$1 BERT模型]进行识别", "editcheck-tone-title-acted": "修改语气", "editcheck-tone-description-acted": "注意那些奉承、贬损、模糊、陈词滥调或支持特定观点的表达。", + "editcheck-tone-reject-appropriate": "语气恰当", + "editcheck-tone-reject-uncertain": "我不知道该如何修改语气", + "editcheck-tone-reject-other": "其他", + "editcheck-reject-description": "其他编者会希望了解您做出此选择的原因。", "editcheck-review-title": "查看更改", "tag-editcheck-reference-decline-common-knowledge": "拒绝(参考资料)编辑检查(常识)", "tag-editcheck-reference-decline-common-knowledge-description": "参考资料编辑检查以常识作为原因而拒绝", diff --git a/i18n/ve-mw/mwlanguagevariant/sq.json b/i18n/ve-mw/mwlanguagevariant/sq.json index 5d93421763..35c1b99fc3 100644 --- a/i18n/ve-mw/mwlanguagevariant/sq.json +++ b/i18n/ve-mw/mwlanguagevariant/sq.json @@ -3,7 +3,8 @@ "authors": [ "Besnik b", "TMg", - "Vyolla" + "Vyolla", + "Xhulianoo" ] }, "visualeditor-mwlanguagevariant-disabled": "Shndërrimi në variante është i çaktivizuar", @@ -32,7 +33,7 @@ "visualeditor-mwlanguagevariantinspector-filter-langs-placeholder": "Kod gjuhe", "visualeditor-mwlanguagevariantinspector-filter-text-label": "Lëndë", "visualeditor-mwlanguagevariantinspector-filter-text-placeholder": "Tekst i filtruar", - "visualeditor-mwlanguagevariantinspector-oneway-add-button": "Shtoni rastin e ri", + "visualeditor-mwlanguagevariantinspector-oneway-add-button": "Shto rast të ri", "visualeditor-mwlanguagevariantinspector-oneway-clear-button": "Hiqeni rastin", "visualeditor-mwlanguagevariantinspector-oneway-from-text-placeholder": "Tekst burimi", "visualeditor-mwlanguagevariantinspector-oneway-to-text-placeholder": "Tekst varianti", @@ -41,7 +42,7 @@ "visualeditor-mwlanguagevariantinspector-title-name": "Emër gjuhe", "visualeditor-mwlanguagevariantinspector-title-oneway": "Rregull shndërrimesh njëkahëshe", "visualeditor-mwlanguagevariantinspector-title-twoway": "Rregull shndërrimesh gjuhe", - "visualeditor-mwlanguagevariantinspector-twoway-add-button": "Shtoni rastin e ri", + "visualeditor-mwlanguagevariantinspector-twoway-add-button": "Shto rast të ri", "visualeditor-mwlanguagevariantinspector-twoway-clear-button": "Hiqeni rastin", "visualeditor-mwlanguagevariantinspector-twoway-text-placeholder": "Tekst varianti" } diff --git a/i18n/ve-mw/sq.json b/i18n/ve-mw/sq.json index dfd6e5b74b..90217c154d 100644 --- a/i18n/ve-mw/sq.json +++ b/i18n/ve-mw/sq.json @@ -16,7 +16,8 @@ "Ritam", "TMg", "Techlik", - "Vyolla" + "Vyolla", + "Xhulianoo" ] }, "collabpad-doctitle": "KolabPad: $1", @@ -35,11 +36,11 @@ "visualeditor-autosave-recovered-text": "Ndryshimet tuaja të paruajtura u rikthyen automatikisht.", "visualeditor-autosave-recovered-title": "Ndryshimet u rikthyen", "visualeditor-backbutton-tooltip": "Kthehuni mbrapsht", - "visualeditor-ca-createlocaldescriptionsource": "Shtoni burim vendor përshkrimi", + "visualeditor-ca-createlocaldescriptionsource": "Shto burim përshkrimi lokal", "visualeditor-ca-createsource": "Krijoni burim", "visualeditor-ca-editlocaldescriptionsource": "Përpunoni burim vendor përshkrimi", - "visualeditor-ca-editsource": "Përpunoni burim", - "visualeditor-ca-editsource-section": "përpunoni burim", + "visualeditor-ca-editsource": "Redakto burimin", + "visualeditor-ca-editsource-section": "përpuno burimin", "visualeditor-categories-tool": "Kategori", "visualeditor-changedesc-mwlanguagevariant": "U ndryshua markup varianti gjuhe", "visualeditor-changedesc-mwredirect": "U ndryshua objektiv ridrejtimi nga $1 në $2", @@ -84,7 +85,7 @@ "visualeditor-dialog-media-upload": "Ngarkoje", "visualeditor-dialog-meta-advancedsettings-label": "Rregullime të mëtejshme", "visualeditor-dialog-meta-advancedsettings-section": "Rregullime të mëtejshme", - "visualeditor-dialog-meta-categories-addcategory-label": "Shtoni kategori në këtë faqe", + "visualeditor-dialog-meta-categories-addcategory-label": "Shto një kategori në këtë faqe", "visualeditor-dialog-meta-categories-category": "Kategori", "visualeditor-dialog-meta-categories-data-label": "Kategori", "visualeditor-dialog-meta-categories-defaultsort-help": "Mënyrën se si renditet kjo faqe, kur shfaqet brenda një kategorie, mund ta anashkaloni duke caktuar një tjetër tregues për renditje. Kjo përdoret shpesh për t’i bërë faqet rreth personash të shfaqen sipas mbiemrit, por të emërtuara duke shfaqur së pari emrat e tyre.", @@ -94,7 +95,7 @@ "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Kategori me përputhje", "visualeditor-dialog-meta-categories-input-movecategorylabel": "Zhvendose këtë kategori këtu", "visualeditor-dialog-meta-categories-input-newcategorylabel": "Kategori e re", - "visualeditor-dialog-meta-categories-input-placeholder": "Shtoni kategori", + "visualeditor-dialog-meta-categories-input-placeholder": "Shto një kategori", "visualeditor-dialog-meta-categories-missing": "Kësaj kategorie i mungon një faqe përshkrimi.", "visualeditor-dialog-meta-categories-options": "Mundësi", "visualeditor-dialog-meta-categories-section": "Kategori", @@ -149,7 +150,7 @@ "visualeditor-dialog-transclusion-action-save": "Ruaje", "visualeditor-dialog-transclusion-template-title-nonexistent": "Ky model nuk ekziston.", "visualeditor-dialog-transclusion-template-title-modifier": "Dokumentimi i modelit dhe emrat e [//www.mediawiki.org/wiki/Manual:Glossary#Parametër parametrit] (në ekzistojnë) nuk janë të arritshme, kur modelet e redaktimit që përdorin sintaksë ose modifikues të mbyllur, si për shembullː [//www.mediawiki.org/wiki/Ndihmë:Zëvendësim zëv].", - "visualeditor-dialog-transclusion-add-wikitext": "Shtoni tekst wiki", + "visualeditor-dialog-transclusion-add-wikitext": "Shto tekst wiki", "visualeditor-dialog-transclusion-add-param-error-alias": " \"$1\" është shtuar si \"$2\". Ju lutem, kontrolloni opsionet anësore. Kjo është për shkak të përdorimit të [//www.mediawiki.org/wiki/Ndihmë:Modeletetëdhënave#pseudonimeve pseudonimeve] ose [//www.mediawiki.org/wiki/Ndihmë:Modeletetëdhënave#etiketave etiketave].", "visualeditor-dialog-transclusion-add-param-error-deprecated": "\"$1\" nuk mund të shtohet, sepse parametri është shenjuar si [//www.mediawiki.org/wiki/Ndihmë:TemplateData#ikundërshtuar i kundërshtuar].", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "Nuk mund të shtoni parametrat me emër të njëjtë.", @@ -159,7 +160,7 @@ "visualeditor-dialog-transclusion-add-param-placeholder": "Emri i parametrit", "visualeditor-dialog-transclusion-add-param-save": "Shtoni parametrin", "visualeditor-dialog-transclusion-add-template": "Shtoni gjedhe", - "visualeditor-dialog-transclusion-add-undocumented-param": "Shtoni parametrin e padokumentuar", + "visualeditor-dialog-transclusion-add-undocumented-param": "Shto parametër të padokumentuar", "visualeditor-dialog-transclusion-collapse-options": "Fshini mundësitë", "visualeditor-dialog-transclusion-contextitem-description": "Prodhuar nga: $1", "visualeditor-dialog-transclusion-expand-options": "Shfaq mundësitë", @@ -228,7 +229,7 @@ "visualeditor-linkinspector-educationpopup-title": "Lidhje", "visualeditor-linkinspector-illegal-title": "Titull faqeje i pavlefshëm", "visualeditor-linkinspector-invalid-external": "Jepni një URL të plotë, p.sh., https://example.org", - "visualeditor-linknodeinspector-add-label": "Shtoni etiketë", + "visualeditor-linknodeinspector-add-label": "Shto etiketë", "visualeditor-linknodeinspector-title": "Lidhje e thjeshtë", "visualeditor-magiclinknodeinspector-convert-link": "Shndërroje në lidhje të thjeshtë", "visualeditor-magiclinknodeinspector-title-isbn": "Lidhje ISBN", @@ -268,7 +269,7 @@ "visualeditor-mwgallerydialog-mode-field-label": "Mënyrë shfaqjeje", "visualeditor-mwgallerydialog-perrow-field-label": "Figura për rresht", "visualeditor-mwgallerydialog-remove-button-label": "Hiqe figurën", - "visualeditor-mwgallerydialog-search-button-label": "Shtoni figurë të re", + "visualeditor-mwgallerydialog-search-button-label": "Shto imazh të ri", "visualeditor-mwgallerydialog-show-filename-field-label": "Shfaq emra kartelash", "visualeditor-mwgallerydialog-styles-field-label": "Stile CSS", "visualeditor-mwgallerydialog-styles-input-placeholder": "Rregulla CSS, ndarë me pikëpresje", diff --git a/i18n/ve-wmf/zh-hans.json b/i18n/ve-wmf/zh-hans.json index 2acc3d2fa2..e55391ce6e 100644 --- a/i18n/ve-wmf/zh-hans.json +++ b/i18n/ve-wmf/zh-hans.json @@ -6,6 +6,7 @@ "Bencmq", "Demmy", "Diskdance", + "GuoPC", "Hydra", "Hzy980512", "Liangent", @@ -24,11 +25,16 @@ "아라" ] }, - "tag-editcheck-newcontent-description": "EditCheck 发现页面中添加了新的内容", - "tag-editcheck-newreference-description": "页面中添加了参考来源", - "tag-editcheck-references-description": "EditCheck 认为可能需要参考来源", + "tag-editcheck-newcontent-description": "编辑检查发现页面中添加了新的内容", + "tag-editcheck-newreference-description": "页面中添加了参考资料", + "tag-editcheck-references-description": "编辑检查认为可能需要参考资料", "tag-editcheck-references-activated": "编辑检查(参考资料)已激活", - "tag-editcheck-references-activated-description": "EditCheck认为可能需要参考文献,且显示了UI", + "tag-editcheck-references-activated-description": "编辑检查认为可能需要参考资料,并显示了UI", + "tag-editcheck-references-shown": "编辑检查(参考资料)已显示", + "tag-editcheck-references-shown-description": "编辑检查认为可能需要参考资料,并显示了UI", + "tag-editcheck-tone-description": "编辑检查检测到部分添加内容的语气可能存在问题", + "tag-editcheck-tone-shown": "编辑检查(语气)已显示", + "tag-editcheck-tone-shown-description": "编辑检查认为部分内容的语气可能需要调整,并显示了UI", "tag-visualeditor": "可视化编辑", "tag-visualeditor-description": "使用[[{{MediaWiki:visualeditor-descriptionpagelink}}|可视化编辑器]]进行的编辑", "tag-visualeditor-needcheck": "可视化编辑:需检查", From 7cdde3a0378e0a083ea43bd15f686618a4fb3981 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 5 Aug 2025 09:31:48 +0200 Subject: [PATCH 509/730] Localisation updates from https://translatewiki.net. Change-Id: I15588b2615e5e52f925acf3f6824f92ca000e14d --- i18n/ve-mw/bol.json | 7 ++++--- i18n/ve-mw/sas.json | 1 + i18n/ve-wmf/ps.json | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/i18n/ve-mw/bol.json b/i18n/ve-mw/bol.json index afa2a77972..1b6d445a9b 100644 --- a/i18n/ve-mw/bol.json +++ b/i18n/ve-mw/bol.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ - "El-hussain14" + "El-hussain14", + "Mbfika" ] }, "visualeditor-ca-createlocaldescriptionsource": "In sawwe kadi mosa ga konni", "visualeditor-ca-createsource": "Ƙirƙiri tushe", - "visualeditor-ca-editsource": "Ramu zalo", - "visualeditor-ca-editsource-section": "Ramu zalo", + "visualeditor-ca-editsource": "Ramu ko pari", + "visualeditor-ca-editsource-section": "Ramu ko pari", "visualeditor-descriptionpagelink": "Project:VisualEditor" } diff --git a/i18n/ve-mw/sas.json b/i18n/ve-mw/sas.json index 9f16c3bc59..c3542e11b5 100644 --- a/i18n/ve-mw/sas.json +++ b/i18n/ve-mw/sas.json @@ -4,6 +4,7 @@ "NikolasKHF" ] }, + "visualeditor-ca-createlocaldescriptionsource": "Romboq sumber déskripsi lokal", "visualeditor-ca-createsource": "Piaq sumber", "visualeditor-ca-editsource": "Kerisaq sumber", "visualeditor-ca-editsource-section": "kerisaq sumber" diff --git a/i18n/ve-wmf/ps.json b/i18n/ve-wmf/ps.json index 17d861cde6..041571e19d 100644 --- a/i18n/ve-wmf/ps.json +++ b/i18n/ve-wmf/ps.json @@ -12,6 +12,7 @@ "tag-editcheck-references-activated-description": "سمون‌کتنه فکر کوي چې شايد يوې سرچينې ته اړتيا کېدای شي او ک‌م ښودل شوې", "tag-editcheck-references-shown": "سمون کتنې (سرچينې) ښودل شوې", "tag-editcheck-references-shown-description": "سمون کتنه فکر کوي چې يوې سرچينې ته شايد اړتيا وي او ک‌م شودل شوې", + "tag-editcheck-tone-description": "سمون‌سم‌کتنې د ورگډې‌شوې منځپانگې په وينگ کې پټ‌ځواکې ستونزه وموندله.", "tag-editcheck-tone-shown": "سمون‌کتنه (غږبڼه) ښودل", "tag-editcheck-tone-shown-description": "سمون‌کتنه فکر کوي چې شايد ځينو منځپانگو کې د غږبڼې سمون ته اړتيا وه، او UI ښودل شوی", "tag-visualeditor": "ليدنيز سمون", From 47dcd6402bc89655d1d135db876fd3ffb7ec3473 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 6 Aug 2025 09:26:57 +0200 Subject: [PATCH 510/730] Localisation updates from https://translatewiki.net. Change-Id: I2023b2101e6af44c29f44a3a159a54ed3cb62164 --- editcheck/i18n/he.json | 5 ++ i18n/ve-mw/api/yue-hant.json | 34 ++++++- i18n/ve-mw/yue-hant.json | 168 +++++++++++++++++++++++++++++++++-- i18n/ve-wmf/br.json | 1 + i18n/ve-wmf/yue-hant.json | 11 +++ 5 files changed, 208 insertions(+), 11 deletions(-) diff --git a/editcheck/i18n/he.json b/editcheck/i18n/he.json index b699be4da9..e9128c53e9 100644 --- a/editcheck/i18n/he.json +++ b/editcheck/i18n/he.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Amire80", + "Neriah", "מקף" ] }, @@ -23,6 +24,10 @@ "editcheck-dialog-title": "לפני הפרסום", "editcheck-copyvio-title": "תוכן מודבק", "editcheck-copyvio-description": "ככלל, אין להעתיק טקסט ממקורות אחרים. בדרך־כלל, זאת גם הפרת זכויות יוצרים וגם גניבת ספרותית (פלגיאט).", + "editcheck-copyvio-action-keep": "כן, שמור את זה", + "editcheck-copyvio-action-remove": "לא, הסר את זה", + "editcheck-copyvio-keep-free": "טקסט זה נמצא בנחלת הכלל או ברישיון חופשי", + "editcheck-copyvio-keep-other": "אחר", "editcheck-tone-title": "לתקן את הנימה?", "editcheck-tone-description": "משתמשים אחרים נוטים לתקן ניסוח מסוג כזה, ואומרים שהנימה אינה מאוזנת. [$1 למידע נוסף]", "editcheck-tone-footer": "זוהה באמצעות [$1 מודל BERT]", diff --git a/i18n/ve-mw/api/yue-hant.json b/i18n/ve-mw/api/yue-hant.json index a02b9d6efe..08f6c2b355 100644 --- a/i18n/ve-mw/api/yue-hant.json +++ b/i18n/ve-mw/api/yue-hant.json @@ -1,19 +1,49 @@ { "@metadata": { "authors": [ + "JeffreyKim", "Winston Sung" ] }, + "apierror-visualeditor-badcachekey": "搵唔到嗰個密鑰嘅緩存序列化", "apierror-visualeditor-difffailed": "比較失敗", "apihelp-visualeditor-param-basetimestamp": "保存嗰陣,將爾個設成編輯嘅版本嘅時間戳。用來檢測編輯衝突。", + "apihelp-visualeditor-param-badetag": "如果RESTBase查詢返返去一個看似無效嘅ETag,請將佢傳送到呢度嚟記錄。", + "apihelp-visualeditor-param-cachekey": "如果要序列化或者diff ,請用之前序列化嘅結果嚟用呢個鍵嚟進行緩存請求。覆寫$1html。", + "apihelp-visualeditor-param-editintro": "編輯簡介嚟加入通知。", + "apihelp-visualeditor-param-etag": "ETag要發送。", + "apihelp-visualeditor-param-format": "輸出嘅格式。", "apihelp-visualeditor-param-html": "發畀Parsoid來轉成維基代碼嘅HTML代碼", "apihelp-visualeditor-param-oldid": "所用嘅修訂版本號(默認設成上一個版本)", "apihelp-visualeditor-param-paction": "要操嘅作", + "apihelp-visualeditor-param-page": "要喺上面執行操作嘅頁面。", + "apihelp-visualeditor-param-preload": "如果擷取嘅頁面仲未有內容,就要用嘅頁面。", + "apihelp-visualeditor-param-preloadparams": "如果有,要將參數替換入預載頁面。", + "apihelp-visualeditor-param-pst": "喺將轉換維基文字傳送去Parsoid之前預先儲存佢(paction = 解析片段)。", + "apihelp-visualeditor-param-section": "要採取行動嘅部分。", "apihelp-visualeditor-param-starttimestamp": "保存嗰陣,將爾個設成加載嘅版本嘅時間戳。用來檢測編輯衝突。", + "apihelp-visualeditor-param-stash": "些乎嗰陣,如果你想用些乎API ,將呢個設定為真。", "apihelp-visualeditor-param-wikitext": "發畀Parsoid來轉成HTML代碼嘅維基代碼\n(paction=parsefragment)。", + "apihelp-visualeditor-summary": "返返左Parsoid服務嘅頁面嘅 HTML5。", + "apihelp-visualeditoredit-param-basetimestamp": "些乎嗰陣,將呢個設定為編輯咗嘅修訂版本嘅時間戳記,用嚟偵測編輯衝突。", + "apihelp-visualeditoredit-param-cachekey": "用呢個密鑰用之前嘅序列化緩存請求嘅結果。覆寫$1html。", "apihelp-visualeditoredit-param-captchaid": "Captcha ID (保存captcha響應嗰時用)。", + "apihelp-visualeditoredit-param-captchaword": "回答驗證碼(當用驗證碼回應儲存嗰陣)。", + "apihelp-visualeditoredit-param-nocontent": "喺回應入面省略新修訂版本嘅HTML內容。", + "apihelp-visualeditoredit-param-plugins": "同API要求相關嘅外掛程式。", + "apihelp-visualeditoredit-param-data-{plugin}": "由外掛程式同API要求一齊傳送嘅任意資料。", + "apihelp-visualeditoredit-param-etag": "ETag要發送。", + "apihelp-visualeditoredit-param-html": "HTML要傳送去Parsoid換取維基文字。", "apihelp-visualeditoredit-param-minor": "細修改嘅標記。", - "apihelp-visualeditoredit-param-oldid": "所用修訂版本號。默認用上一個版本。用 0 表示新開版。", + "apihelp-visualeditoredit-param-needcheck": "些乎嗰陣,如果修訂版本可能會有來回問題,請設定呢個參數。噉樣會令到個編輯被標記。", + "apihelp-visualeditoredit-param-oldid": "要用嘅修訂版本冧巴。預設為最新修訂版本。", + "apihelp-visualeditoredit-param-paction": "要執行嘅動作。", + "apihelp-visualeditoredit-param-page": "要喺上面執行操作嘅頁面。", + "apihelp-visualeditoredit-param-section": "要採取行動嘅部分。", + "apihelp-visualeditoredit-param-sectiontitle": "新部分嘅呔圖。", "apihelp-visualeditoredit-param-starttimestamp": "保存嗰陣,將爾個設成加載嘅版本嘅時間戳。用來檢測編輯衝突。", - "apihelp-visualeditoredit-param-summary": "編輯摘要。" + "apihelp-visualeditoredit-param-summary": "編輯摘要。", + "apihelp-visualeditoredit-param-tags": "更改標籤嚟套用喺編輯。", + "apihelp-visualeditoredit-param-wikitext": "用嚟行動嘅維基文字。", + "apihelp-visualeditoredit-summary": "將HTML5頁面些乎到維基媒體(透過 Parsoid 服務轉換為維基文字)。" } diff --git a/i18n/ve-mw/yue-hant.json b/i18n/ve-mw/yue-hant.json index da9e31821e..218d6f976a 100644 --- a/i18n/ve-mw/yue-hant.json +++ b/i18n/ve-mw/yue-hant.json @@ -7,6 +7,7 @@ "H78c67c", "Hello903hello", "Jdforrester", + "JeffreyKim", "Ktchankt", "Moon0319", "Roy17", @@ -17,53 +18,90 @@ "捍粵者" ] }, + "collabpad-doctitle": "協作板:$1", + "collabpad-import-subtitle": "由$1起進口", + "collabpad": "協作板", "tooltip-ca-ve-edit": "用 VisualEditor 改呢版", + "tooltip-ca-ve-edit-local": "編輯本地描述版", + "tooltip-ca-ve-create": "建立呢個頁面", + "tooltip-ca-ve-create-local": "建立本地描述版", "tooltip-ca-editsource": "改呢版嘅代碼", + "tooltip-ca-editsource-local": "編輯本地描述版嘅源碼", "tooltip-ca-createsource": "整呢版嘅代碼出嚟", + "tooltip-ca-createsource-local": "建立本地描述版嘅源碼", "visualeditor-advancedsettings-tool": "進階設定", + "visualeditor-annotations-default-description": "呢個版嘅部分係註解範圍嘅一部分。", + "visualeditor-annotations-default-end": "註解範圍嘅結束", + "visualeditor-annotations-default-start": "註解範圍嘅開始", + "visualeditor-annotations-extended-documentation": "呢個註解範圍已經擴大咗,因為佢包含嘅內容嵌套得唔好。建議喺編輯之前確保註解內容嵌套得好;如果唔係,可能會加註解嘅範圍大過預期。", + "visualeditor-autosave-modified-prompt-accept": "繼續編輯", + "visualeditor-autosave-modified-prompt-message": "呢個頁面自從你上次載入之後已經編輯過。{{GENDER:|你}}想唔想繼續對舊版本嘅{{GENDER:|你嘅}}編輯,定係開始對最新版本嘅新編輯?", + "visualeditor-autosave-modified-prompt-reject": "開始新嘅編輯", + "visualeditor-autosave-modified-prompt-title": "繼續{{GENDER:|你嘅}}編輯?", + "visualeditor-autosave-not-recovered-text": "恢復唔到你未儲存嘅變更。", + "visualeditor-autosave-not-recovered-title": "變更復原失敗咗", + "visualeditor-autosave-recovered-text": "你未些牙嘅變更已經自動恢復返。", + "visualeditor-autosave-recovered-title": "啲變動已經恢復返晒", "visualeditor-backbutton-tooltip": "返去", "visualeditor-ca-createlocaldescriptionsource": "喺本站加檔案說明源碼", "visualeditor-ca-createsource": "加源碼", "visualeditor-ca-editlocaldescriptionsource": "改本站檔案說明源碼", "visualeditor-ca-editsource": "改源碼", "visualeditor-ca-editsource-section": "改源碼", + "visualeditor-ca-editsource-section-hint": "編輯部分嘅源碼:$1", "visualeditor-categories-tool": "類", + "visualeditor-changedesc-mwcategory-sortkey-changed": "排序鍵由$1改為$2", + "visualeditor-changedesc-mwcategory-sortkey-set": "排序鍵設定為$1", + "visualeditor-changedesc-mwcategory-sortkey-unset": "排序鍵由$1開始取消設定", + "visualeditor-changedesc-mwlanguagevariant": "語言變體標記已經改咗", + "visualeditor-changedesc-mwredirect": "重新導向目標由$1變咗去$2", + "visualeditor-changedesc-mwtransclusion": "範本參數改咗", "visualeditor-desc": "MediaWiki 嘅即見編輯器", "visualeditor-descriptionpagelink": "Project:VisualEditor", + "visualeditor-dialog-extension-abandonedit": "你真係要閂咗個對話框,唔套用你嘅改動?", + "visualeditor-dialog-media-alttext-checkbox": "用字幕做替代文字", "visualeditor-dialog-media-alttext-section": "替代文字", + "visualeditor-dialog-media-alttext-section-help": "你可以用呢個嚟為睇唔到嗰件嘢嘅人寫文字描述。描述應該足以令佢哋明白媒體項目所提供嘅目的同資訊。呢個對於盲人用戶同埋其他使用螢幕閱讀器軟件或者純文字瀏覽器嘅人嚟講係非常重要嘅。", "visualeditor-dialog-media-change-image": "換圖", "visualeditor-dialog-media-choose-image": "用呢幅圖", "visualeditor-dialog-media-content-description-link": "(描述頁)", "visualeditor-dialog-media-content-filename": "文件名", "visualeditor-dialog-media-content-section": "題", + "visualeditor-dialog-media-content-section-help": "你可以用呢個嚟顯示一個喺項目旁邊顯示嘅標籤,畀所有讀者睇。呢個通常用嚟解釋點解個項目同佢所顯示嘅上下文相關。 應該係簡潔同埋有資訊嘅。", "visualeditor-dialog-media-goback": "返去", "visualeditor-dialog-media-info-artist": "$1上載嘅檔案", "visualeditor-dialog-media-info-audiofile": "音頻文件", "visualeditor-dialog-media-info-created": "建立日期:$1", - "visualeditor-dialog-media-info-meta-artist": "藝術家名:$1", + "visualeditor-dialog-media-info-meta-artist": "作家名:$1", "visualeditor-dialog-media-info-moreinfo": "多啲資訊", "visualeditor-dialog-media-info-readmore": "睇多啲", "visualeditor-dialog-media-info-uploaded": "上載日期:$1", "visualeditor-dialog-media-page-advanced": "進階", "visualeditor-dialog-media-page-general": "一般", "visualeditor-dialog-media-position-checkbox": "圍住呢件嘢編排文字", + "visualeditor-dialog-media-position-checkbox-help": "你可以令呢個媒體項目同頁面嘅文字一齊顯示,而唔係浮動。你應該只係好少咁做,因為如果你取消勾選呢個方塊,呢個操作會破壞文字嘅流程。", "visualeditor-dialog-media-position-section": "位置", + "visualeditor-dialog-media-position-section-help": "你可以設定呢個媒體項目喺頁面上面出現嘅位置。呢個有時會用嚟分解頁面一邊嘅一條長啲嘅相。", "visualeditor-dialog-media-save": "保存", "visualeditor-dialog-media-search-tab-search": "搵", "visualeditor-dialog-media-search-tab-upload": "上載", "visualeditor-dialog-media-size-section": "相大細", + "visualeditor-dialog-media-size-section-help": "你可以設定媒體項目喺頁面上面出現嘅大細,呢個幾乎應該係正常嘅大細,因為自訂大小會干擾讀者嘅頁面版面配置,令到頁面唔一致。", "visualeditor-dialog-media-title": "聲畫設定", "visualeditor-dialog-media-type-border": "邊", "visualeditor-dialog-media-type-frame": "框", "visualeditor-dialog-media-type-frameless": "冇框", "visualeditor-dialog-media-type-none": "基本", "visualeditor-dialog-media-type-section": "圖款", + "visualeditor-dialog-media-type-section-help": "你可以設定媒體項目喺頁面上面嘅顯示方式。 呢個應該係縮圖格式,喺幾乎所有情況下都可以同其他頁面一致。", "visualeditor-dialog-media-type-thumb": "縮圖", "visualeditor-dialog-media-upload": "上載", "visualeditor-dialog-meta-advancedsettings-label": "進階設定", "visualeditor-dialog-meta-advancedsettings-section": "進階設定", - "visualeditor-dialog-meta-categories-category": "分類", + "visualeditor-dialog-meta-categories-addcategory-label": "喺呢版加類", + "visualeditor-dialog-meta-categories-category": "類", "visualeditor-dialog-meta-categories-data-label": "類", + "visualeditor-dialog-meta-categories-defaultsort-help": "你可以設定唔同嘅索引嚟排序,嚟覆寫呢個頁面喺類別入面顯示嗰陣嘅排序方式。呢個通常用嚟令有關人哋嘅頁面按姓氏顯示,但係要先顯示佢哋嘅名。", "visualeditor-dialog-meta-categories-defaultsort-label": "呢版預設排成", "visualeditor-dialog-meta-categories-hidden": "讀者睇唔到呢個分類。", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "隱藏類", @@ -82,6 +120,8 @@ "visualeditor-dialog-meta-languages-readonlynote": "呢個表包含咗連去爾版嘅所有其它話嘅版。呢個表暫時淨係可以喺源碼模式改,或者去維基數據改。", "visualeditor-dialog-meta-languages-section": "話", "visualeditor-dialog-meta-settings-displaytitle": "顯示標題", + "visualeditor-dialog-meta-settings-displaytitle-help": "你可以設定唔同嘅標籤嚟顯示,嚟覆寫呢個頁面呔圖嘅顯示方式。", + "visualeditor-dialog-meta-settings-hiddencat-help": "你可以防止呢個類別喺會員頁面嘅類別清單入面顯示,呢個方法對於編輯感興趣但唔係大部分讀者感興趣嘅類別好有用,例如需要插圖嘅頁面。", "visualeditor-dialog-meta-settings-hiddencat-label": "隱藏類", "visualeditor-dialog-meta-settings-index-default": "預設", "visualeditor-dialog-meta-settings-index-disable": "唔好", @@ -92,48 +132,113 @@ "visualeditor-dialog-meta-settings-newsectioneditlink-default": "預設", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "唔好", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "好", + "visualeditor-dialog-meta-settings-newsectioneditlink-help": "你可以喺呢頁強制顯示除咗「$1」標籤之外嘅額外標籤,噉樣就可以輕鬆噉加入新嘅部分,或者如果唔係嘅話,就強制唔顯示。", "visualeditor-dialog-meta-settings-newsectioneditlink-label": "喺呢版加個書籤,撳落去可以開新段", + "visualeditor-dialog-meta-settings-nocontentconvert-help": "你可以防止呢個頁面嘅內容自動轉換成其他指令碼。", "visualeditor-dialog-meta-settings-nocontentconvert-label": "唔轉語言變體", + "visualeditor-dialog-meta-settings-noeditsection-help": "喺適當嘅情況下,你可以停止條編輯拎喺每個部分旁邊出現。", "visualeditor-dialog-meta-settings-noeditsection-label": "呢版嘅細標題側邊唔顯示「改」掣", + "visualeditor-dialog-meta-settings-nogallery-help": "如果喺呢個情況下唔適當,你可以阻止呢個類別以圖庫形式顯示成員快勞。", "visualeditor-dialog-meta-settings-nogallery-label": "停用圖集", + "visualeditor-dialog-meta-settings-notitleconvert-help": "你可以防止呢個頁面嘅標題自動轉換成其他指令碼。", "visualeditor-dialog-meta-settings-notitleconvert-label": "標題唔轉語言變體", + "visualeditor-dialog-meta-settings-redirect-help": "你可以將呢個頁面變成重新導向,呢個頁面會自動將讀者帶去呢個維基上面嘅另一個頁面。呢個對拼寫錯誤同埋其他名稱或者概念好有用。如果你噉樣做,讀者就唔會睇到呢個頁面嘅內容。", "visualeditor-dialog-meta-settings-redirect-label": "呢版跳轉去", "visualeditor-dialog-meta-settings-redirect-placeholder": "跳轉目標", + "visualeditor-dialog-meta-settings-redirect-statichelp": "你可以防止呢個重新導向喺佢重新導向去嘅頁面移動嗰陣自動更新,喺非常罕見嘅情況下,呢個係需要嘅。", "visualeditor-dialog-meta-settings-redirect-staticlabel": "搬跳轉目標版嘅時候,唔好更新呢個跳轉", "visualeditor-dialog-meta-settings-section": "版嘅設定", "visualeditor-dialog-meta-settings-toc-default": "如有需要", "visualeditor-dialog-meta-settings-toc-disable": "一定唔顯示", "visualeditor-dialog-meta-settings-toc-force": "一定顯示", + "visualeditor-dialog-meta-settings-toc-help": "你可以強制列出頁面上每個標題嘅目錄喺少過四個標題嘅頁面上面顯示,或者強制佢完全唔出現。預設情況下,如果頁面有四個或以上嘅標題,就會顯示呢個功能。", "visualeditor-dialog-meta-settings-toc-label": "顯示目錄", "visualeditor-dialog-meta-templatesused-noresults": "搵唔到任何模。", "visualeditor-dialog-meta-title": "選項", + "visualeditor-dialog-table-collapsed": "最初摺埋咗", + "visualeditor-dialog-table-collapsible": "摺埋", "visualeditor-dialog-table-sortable": "篩選表", "visualeditor-dialog-table-wikitable": "格式化 (維基表)", "visualeditor-dialog-template-title": "模", + "visualeditor-dialog-transclusion-action-save": "儲存", + "visualeditor-dialog-transclusion-template-title-nonexistent": "呢個模唔存在。", + "visualeditor-dialog-transclusion-template-title-modifier": "當用嵌套語法或者修飾符編輯範本嗰陣,範本文件同埋[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameter]名稱(如果存在)係唔可用嘅,例如[//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst]。", + "visualeditor-dialog-transclusion-template-widget-aria": "撳空格嚟揀範本。", + "visualeditor-dialog-transclusion-template-widget-aria-selected": "撳Ctrl + Del就可以刪除範本、佢嘅參數同埋佢哋嘅值。撳Ctrl + Shift + 箭咀就可以將範本向上或者向下移動。", + "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "撳Ctrl + Del就可以刪除範本、佢嘅參數同埋佢哋嘅值。", + "visualeditor-dialog-transclusion-add-wikitext": "加入維基文字", + "visualeditor-dialog-transclusion-add-param-error-alias": "「$1」已經加咗做「$2」。請睇下側欄入面嘅選項。\n呢個係因為用咗[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases aliases]定係[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label labels]。", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "「$1」加唔到,因為個參數已經標記為[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated deprecated]。", + "visualeditor-dialog-transclusion-add-param-error-exists-selected": "加唔到參數「$2」兩次。", + "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "參數「$2」已經可以用。請喺側欄度睇吓啲選項。", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1係一個禁止嘅字元。請移除佢嚟加入參數。", + "visualeditor-dialog-transclusion-add-param-help": "如果知道,請輸入[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters undocumented parameter]個名稱。請注意,淨係得模板已知嘅參數先會有影響。\n你可以喺[[$1|範本嘅頁面]]搵到有關現有參數嘅資料。", + "visualeditor-dialog-transclusion-add-param-placeholder": "參數名稱", + "visualeditor-dialog-transclusion-add-param-save": "加", "visualeditor-dialog-transclusion-add-template": "加模", + "visualeditor-dialog-transclusion-add-template-button": "加模", + "visualeditor-dialog-transclusion-add-template-save": "加", + "visualeditor-dialog-transclusion-add-undocumented-param": "加入未記錄嘅參數", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "返去搜尋?你嘅變更將會丟失,而且呢個係復原唔到嘅。", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "閂咗個範本編輯器?你嘅變更將會丟失,而且呢個係復原唔到嘅。", "visualeditor-dialog-transclusion-collapse-options": "收埋啲選項", + "visualeditor-dialog-transclusion-confirmation-discard": "棄置編輯", + "visualeditor-dialog-transclusion-confirmation-reject": "繼續編輯", "visualeditor-dialog-transclusion-contextitem-description": "產生自:$1", + "visualeditor-dialog-transclusion-contextitem-loading": "載入緊…", "visualeditor-dialog-transclusion-expand-options": "睇選項", + "visualeditor-dialog-transclusion-filter-hide-unused": "收埋未用過", + "visualeditor-dialog-transclusion-filter-no-match": "搵唔到匹配嘅嘢", + "visualeditor-dialog-transclusion-filter-placeholder": "搵欄位", + "visualeditor-dialog-transclusion-filter-show-all": "顯示全部", + "visualeditor-dialog-transclusion-filter-title": "參數搜尋$1", + "visualeditor-dialog-transclusion-help-title": "支援範本編輯", + "visualeditor-dialog-transclusion-help-message": "範本會為內容提供格式。呢個編輯器會喺左邊顯示範本提供咗啲咩選項,然後可以喺右邊嘅呢啲選項加入值。", + "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates 編輯範本嘅幫助]", + "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions 鍵盤捷徑]", "visualeditor-dialog-transclusion-deprecated-parameter": "舊參數", "visualeditor-dialog-transclusion-deprecated-parameter-description": "呢個參數已經唔建議用。$1", "visualeditor-dialog-transclusion-loading": "載入緊…", + "visualeditor-dialog-transclusion-multipart-message": "你而家編輯緊一個範本同埋一個或者多個[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content 連接咗嘅內容](維基文字同/或者額外嘅範本)。", + "visualeditor-dialog-transclusion-no-template-data-description": "呢個模板唔見咗[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData],而佢嘅參數已經係[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters 自動生成]。結果個範本同埋佢嘅參數缺乏描述。[[$1|template's page]]上面可能有額外嘅資料。", "visualeditor-dialog-transclusion-no-template-description": "《$1》模仲未有解說,不過個模嘅[[$2|模頁]]上面可能有啲有用嘅資料。", + "visualeditor-dialog-transclusion-no-template-parameters": "呢個範本冇任何文件化嘅參數,而且可能係喺冇參數嘅情況下使用。", "visualeditor-dialog-transclusion-param-default": "預設:$1", + "visualeditor-dialog-transclusion-param-example-long": "例子:$1", + "visualeditor-dialog-transclusion-param-selection-aria-description": "撳空格就可以加入或者移除參數。撳Enter就可以加入參數,然後即刻編輯佢嘅數值。當已經揀咗個參數嗰陣,撳Enter嚟編輯個數值。", + "visualeditor-dialog-transclusion-param-selection-aria-label": "以$1計嘅參數", + "visualeditor-dialog-transclusion-param-undocumented": "(未記錄參數)", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "搵模", "visualeditor-dialog-transclusion-required-parameter": "必填參數", "visualeditor-dialog-transclusion-required-parameter-description": "呢個參數一定要填。", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "返去", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "照去", "visualeditor-dialog-transclusion-required-parameter-dialog-title": "漏咗$1個必填嘅參數", - "visualeditor-dialog-transclusion-required-parameter-is-blank": "肯定唔填$1個參數就繼續?", - "visualeditor-dialogbutton-media-tooltip": "聲畫", + "visualeditor-dialog-transclusion-required-parameter-is-blank": "你肯定你想繼續而唔使填$1{{PLURAL:$2|field|欄位}}?", + "visualeditor-dialog-transclusion-see-template": "範本係由用戶自行生成,可能缺乏完整嘅描述。呢個[[$2|模板頁面]]可能有額外嘅資料。", + "visualeditor-dialog-transclusion-title-insert-template": "插入模", + "visualeditor-dialog-transclusion-title-insert-known-template": "插入:$1", + "visualeditor-dialog-transclusion-title-edit-known-template": "編輯:$1", + "visualeditor-dialog-transclusion-title-edit-transclusion": "模內容", + "visualeditor-dialog-transclusion-template-search": "範本搜尋", + "visualeditor-dialog-transclusion-template-search-help": "搜尋識別關鍵字,搵到你想插入嘅範本。有描述嘅範本更有可能同視覺編輯器配合得好好。", + "visualeditor-dialog-transclusion-wikitext": "維基文字", + "visualeditor-dialog-transclusion-wikitext-widget-aria": "撳空格就可以揀維基文字元素。撳Enter嚟揀同編輯維基文字。", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "撳Ctrl + Del嚟刪除維基文字元素。撳Ctrl + Shift + 箭頭嚟向上或者向下移動個元素。", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "撳Ctrl + Del就可以刪除維基文字元素。", + "visualeditor-dialogbutton-media-tooltip": "相同媒體", "visualeditor-dialogbutton-template-tooltip": "模", "visualeditor-editconflict": "由於編輯衝突,{{GENDER:|你|妳|你}}嘅修改記唔低。{{GENDER:|你|妳|你}}想唔想人手解決呢個衝突?", + "visualeditor-editingtabdialog-body": "{{SITENAME}}而家記住你鍾意邊個編輯器。你可以喺編輯嗰陣切換編輯模式,同埋遲啲更改你嘅偏好設定。", "visualeditor-editingtabdialog-ok": "用我上次用過嘅編輯器", "visualeditor-editingtabdialog-title": "編輯掣", "visualeditor-editnotices-tool": "$1{{PLURAL:$1|張告示}}", "visualeditor-editnotices-tooltip": "編輯通告", "visualeditor-editsummary": "講吓你改咗啲乜", + "visualeditor-editsummary-characters-remaining": "剩低嘅字元數目", "visualeditor-educationpopup-dismiss": "清楚明白", + "visualeditor-expandable-less": "少啲", + "visualeditor-expandable-more": "多啲", "visualeditor-feedback-defaultmessage": "網址:$1", "visualeditor-formatdropdown-format-mw-heading1": "版題", "visualeditor-formatdropdown-format-mw-heading2": "標題", @@ -142,15 +247,26 @@ "visualeditor-formatdropdown-format-mw-heading5": "三等細標題", "visualeditor-formatdropdown-format-mw-heading6": "四等細標題", "visualeditor-generating-wikitext-progress": "生緊維基字", + "visualeditor-includes-noinclude-start": "摘錄入面排除嘅內容開頭", + "visualeditor-includes-noinclude-end": "喺摘錄入面排除咗嘅內容結束", + "visualeditor-includes-onlyinclude-start": "摘錄入面允許嘅內容開頭", + "visualeditor-includes-onlyinclude-end": "允許喺摘錄入面結束嘅內容", + "visualeditor-includes-includeonly": "淨係摘錄嘅內容", + "visualeditor-includes-noinclude-description": "當呢個頁面嘅內容由另一個頁面使用嗰陣,呢度嘅內容直至匹配嘅結束標記都唔會包括喺入面。編輯呢啲標記之外嘅內容嗰陣要小心,因為其他頁面可能會用呢個標記。", + "visualeditor-includes-onlyinclude-description": "當呢個頁面嘅內容由另一個頁面使用嗰陣,系統淨係會包括由呢度開始嘅內容,直至匹配嘅結束標記為止。喺呢啲標記之間編輯內容嗰陣要小心,因為其他頁面可能會用呢個標記。", + "visualeditor-includes-includeonly-description": "當呢個頁面嘅內容畀另一個頁面使用嗰陣,呢度會包括以下額外內容:", + "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion 了解多啲有關部分轉錄嘅資訊]", "visualeditor-languages-tool": "話", - "visualeditor-linkinspector-button-link-external": "出面連結", - "visualeditor-linkinspector-button-link-internal": "搵版", + "visualeditor-linkcontext-uneditable": "唔好意思,呢個連結暫時淨係可以喺源碼模式下編輯。", + "visualeditor-linkinspector-button-link-external": "外部網站", + "visualeditor-linkinspector-button-link-internal": "搵內部版", "visualeditor-linkinspector-convert-link-isbn": "轉做ISBN連結", "visualeditor-linkinspector-convert-link-pmid": "轉做PMID連結", "visualeditor-linkinspector-convert-link-rfc": "轉做RFC連結", "visualeditor-linkinspector-educationpopup-text": "鏈重要嘅字眼去第啲wiki文章甚至係第啲網站,用來幫讀者更加了解上下文。", "visualeditor-linkinspector-educationpopup-title": "拎", "visualeditor-linkinspector-illegal-title": "頁名無效", + "visualeditor-linkinspector-invalid-blocked": "呢個維基嘅人決定封鎖呢個網站啲拎,請試吓另一條拎。", "visualeditor-linkinspector-invalid-external": "入個完整嘅URL,例如 https://example.org", "visualeditor-linknodeinspector-add-label": "加label", "visualeditor-linknodeinspector-title": "短拎", @@ -174,8 +290,13 @@ "visualeditor-mweditmodeve-tool-unavailable": "呢度用唔到即見編輯", "visualeditor-mweditmodewt-popup-body": "你可以隨時撳呢個嘜頭返去編輯源碼。", "visualeditor-mweditmodewt-popup-title": "你轉咗去即見編輯", + "visualeditor-mwgallerycontext-description": "$1{{PLURAL:$1|image|相}}", + "visualeditor-mwgallerydialog-caption-field-label": "圖庫字幕", "visualeditor-mwgallerydialog-card-images": "圖", "visualeditor-mwgallerydialog-card-options": "選項", + "visualeditor-mwgallerydialog-classes-field-label": "CSS 課程", + "visualeditor-mwgallerydialog-classes-input-placeholder": "班名,用空格嚟分隔", + "visualeditor-mwgallerydialog-empty-gallery-message": "圖庫係空嘅。", "visualeditor-mwgallerydialog-heights-field-label": "影像高度", "visualeditor-mwgallerydialog-heights-input-placeholder": "預設高度:$1像素", "visualeditor-mwgallerydialog-mode-dropdown-label-nolines": "傳統,無邊", @@ -189,36 +310,65 @@ "visualeditor-mwgallerydialog-remove-button-label": "拎走張圖", "visualeditor-mwgallerydialog-search-button-label": "加新圖", "visualeditor-mwgallerydialog-show-filename-field-label": "顯示快勞名", + "visualeditor-mwgallerydialog-styles-field-label": "CSS 樣式", + "visualeditor-mwgallerydialog-styles-input-placeholder": "CSS 規則,用分號嚟分隔", "visualeditor-mwgallerydialog-title": "圖集", "visualeditor-mwgallerydialog-widths-field-label": "影像闊度", "visualeditor-mwgallerydialog-widths-input-placeholder": "預設闊度:$1像素", + "visualeditor-mwpredialog-convert": "允許文字樣式", + "visualeditor-mwpredialog-title": "預先格式化嘅純文字", "visualeditor-mwsignature-tool": "你嘅簽名", + "visualeditor-preference-visualeditor": "開着可視編輯器", + "visualeditor-preference-newwikitexteditor-enable": "用可視編輯器嘅wikitext模式,而唔係用其他wikitext編輯器", + "visualeditor-preference-newwikitexteditor-help": "呢個有時亦都叫做「2017年維基文字編輯器」。", "visualeditor-preference-tabs": "編輯模式:", "visualeditor-preference-tabs-multi-tab": "我要晒兩個編輯掣", "visualeditor-preference-tabs-prefer-ve": "盡量畀即見編輯器我", "visualeditor-preference-tabs-prefer-wt": "每次都畀源碼編輯器我", "visualeditor-preference-tabs-remember-last": "記住我上次用過邊個編輯器", + "visualeditor-preference-collab-label": "協作編輯", + "visualeditor-preference-collab-description": "邀請其他使用者喺視覺編輯器入面加入你嘅編輯工作階段。", + "visualeditor-rebase-client-export": "匯出", + "visualeditor-rebase-client-export-start": "匯出...", + "visualeditor-rebase-client-import": "匯入", "visualeditor-rebase-client-import-name": "頁名", + "visualeditor-rebase-client-title-help": "你可以喺儲存之前睇返啲變更。", + "visualeditor-recreate": "自從你開始編輯之後,呢個頁面已經刪除咗。撳「$1」嚟重新建立佢。", "visualeditor-redirect-description": "跳轉到$1", - "visualeditor-savedialog-identify-anon": "你想唔想以匿名身份記低你嘅修改?你嘅IP將會記落呢版嘅編輯史。", - "visualeditor-savedialog-identify-user": "你而家用[[User:$1|$1]]嘅身份登入。你嘅修改將會用呢個身份記低。", + "visualeditor-savedialog-identify-anon": "你已經唔再登入。如果你繼續,呢個頁面嘅編輯記錄入面會記錄你嘅IP位址。", + "visualeditor-savedialog-identify-temp": "你而家用緊臨時用戶名$1。如果你繼續,你嘅編輯將會同呢個用戶名相關聯。", + "visualeditor-savedialog-identify-user": "你而家以 [[User:$1|$1]]嘅身份登入咗。如果你繼續,你嘅編輯就會同呢個帳戶連結。", + "visualeditor-savedialog-keyboard-shortcut-submit": "你可以撳$1嚟儲存你嘅編輯。", "visualeditor-savedialog-label-publish-short": "發佈", + "visualeditor-savedialog-label-publish-short-start": "發佈...", "visualeditor-savedialog-label-resolve-conflict": "解決衝突", "visualeditor-savedialog-label-resume-editing": "繼續改", "visualeditor-savedialog-label-review": "檢查你嘅修改", "visualeditor-savedialog-label-review-good": "返去記低", "visualeditor-savedialog-label-save-short": "儲存", + "visualeditor-savedialog-label-save-short-start": "儲存...", + "visualeditor-savedialog-review-nosummary": "冇編輯摘要", + "visualeditor-savedialog-review-visual": "即見", + "visualeditor-savedialog-review-wikitext": "維基文字", "visualeditor-savedialog-title-conflict": "衝撞", "visualeditor-savedialog-title-preview": "檢查你嘅修改", "visualeditor-savedialog-title-review": "檢查你嘅修改", "visualeditor-savedialog-title-save": "保存你嘅修改", "visualeditor-section-body-placeholder": "新小節", "visualeditor-section-title-placeholder": "主題", + "visualeditor-loaderror-revidconflict": "伺服器返返去嘅修訂ID唔啱(文件:$1,元數據:$2)。", + "visualeditor-loaderror-wrongmode": "試過喺錯誤嘅模式度單撈入去編輯器(資料類型:「$1」,編輯器模式:「$2」)。", "visualeditor-settings-tool": "版嘅設定", "visualeditor-special-characters-group-other": "成日用", "visualeditor-templatesused-tool": "用咗嘅模", + "visualeditor-title-error": "無效嘅呔圖", "visualeditor-toload": "而家即將載入編輯器,如果你幾秒鐘之後仲見到呢句嘢嘅話,請[$1 重新載入呢版]。", + "visualeditor-tooltip-non-breaking-space": "非破壞空間", "visualeditor-version-label": "版本", + "visualeditor-wikitext-progress": "轉換緊維基文字", "visualeditor-wikitext-warning": "你而家用緊 VisualEditor。[[{{MediaWiki:visualeditor-wikitext-warning-link}}|維基代碼]]喺呢度用唔到。你可以隨時轉去改源碼,撳個掣就得,你改咗嘅嘢唔會唔見。", - "visualeditor-wikitext-warning-title": "偵測到維基代碼" + "visualeditor-wikitext-warning-title": "偵測到維基代碼", + "visualeditor-wikitextconvert-title": "將格式轉換成維基文字?", + "visualeditor-wikitextconvert-message": "你貼咗啲格式豐富嘅內容。你想唔想將呢個格式轉換成維基文字?", + "visualeditor-wikitextconvert-convert": "轉換成維基文字" } diff --git a/i18n/ve-wmf/br.json b/i18n/ve-wmf/br.json index 42ef30a1d4..6bcc348f55 100644 --- a/i18n/ve-wmf/br.json +++ b/i18n/ve-wmf/br.json @@ -16,6 +16,7 @@ "tag-editcheck-references-activated-description": "Hervez EditCheck e vefe ezhomm eus un daveenn, ha diskouezet eo bet an etrefas implijer", "tag-editcheck-references-shown": "Edit Check (daveoù) diskouezet", "tag-editcheck-references-shown-description": "Hervez EditCheck e vefe ezhomm eus un daveenn, ha diskouezet eo bet an etrefas implijer", + "tag-editcheck-tone-description": "EditCheck en deus dinoet e c'hallfe bezañ ur gudenn gant ton endalc'hadoù ouzhpennet zo", "tag-editcheck-tone-shown": "Edit Check (ton) diskouezet", "tag-editcheck-tone-shown-description": "Hervez EditCheck ez eus ezhomm da gemmañ an ton en endalc'hadoù zo, ha diskouezet eo bet an etrefas implijer", "tag-visualeditor": "Gwelaozer", diff --git a/i18n/ve-wmf/yue-hant.json b/i18n/ve-wmf/yue-hant.json index f3f681407c..cf725ab133 100644 --- a/i18n/ve-wmf/yue-hant.json +++ b/i18n/ve-wmf/yue-hant.json @@ -1,9 +1,20 @@ { "@metadata": { "authors": [ + "JeffreyKim", "Winston Sung" ] }, + "tag-editcheck-newcontent-description": "EditCheck認為頁面加入咗新內容", + "tag-editcheck-newreference-description": "喺頁面加入咗參考資料", + "tag-editcheck-references-description": "EditCheck認為可能需要啲參考資料", + "tag-editcheck-references-activated": "編輯已經啟動咗檢查(參考資料)", + "tag-editcheck-references-activated-description": "EditCheck認為可能需要返啲參考資料,並且顯示埋用戶介面", + "tag-editcheck-references-shown": "編輯顯示咗嘅檢查(參考文獻)", + "tag-editcheck-references-shown-description": "EditCheck認為可能需要返啲參考資料,並且顯示埋用戶介面", + "tag-editcheck-tone-description": "EditCheck偵測到部分新增內容嘅語氣有潛在問題", + "tag-editcheck-tone-shown": "編輯顯示咗嘅檢查(音色)", + "tag-editcheck-tone-shown-description": "EditCheck認為可能需要調整返某啲內容嘅音色,所以就顯示咗個用戶介面", "tag-visualeditor": "可見修改", "tag-visualeditor-description": "用[[{{MediaWiki:visualeditor-descriptionpagelink}}|VisualEditor]]改嘅", "tag-visualeditor-needcheck": "VisualEditor: 請檢查", From 55cb63ecfb46fb8a84f20696f7dff3e4cd0de4e6 Mon Sep 17 00:00:00 2001 From: David Chan Date: Sun, 13 Jul 2025 22:35:05 +0100 Subject: [PATCH 511/730] EditCheck: Add 'stale' state to checks The stale check means that the check contents have been modified since the check was last run. A check can also be forced into a 'stale' state when the user clicks an certain button e.g. 'revise' in ToneCheck. The 'stale' state is shown the user with top and bottom borders of a bounding rectangle. Bug: T390250 Bug: T397984 Change-Id: I4ddd43395c616543c84e0c4fad5d8445207acbce --- editcheck/modules/EditCheck.less | 34 +++++++++++++++++++ editcheck/modules/EditCheckAction.js | 22 ++++++++++++ editcheck/modules/controller.js | 34 ++++++++++++++----- .../editchecks/experimental/ToneCheck.js | 4 ++- 4 files changed, 85 insertions(+), 9 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 49feea76d8..733f491d0d 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -421,6 +421,40 @@ } } +.ve-ce-surface-selections-editCheckWarning-stale .ve-ce-surface-selection-bounding { + @padding: 3px; + @border: 2px; + @color: #36c; + padding: @padding; + margin: -( @padding + @border ) 0 0 -@padding; + border-style: solid; + border-color: @color; + border-width: @border 0; + @triangleSize: 5px; + + &::before, + &::after { + content: ''; + position: absolute; + width: 0; + height: 0; + } + + &::before { + left: 0; + top: 0; + border-left: @triangleSize solid @color; + border-bottom: @triangleSize solid transparent; + } + + &::after { + right: 0; + bottom: 0; + border-right: @triangleSize solid @color; + border-top: @triangleSize solid transparent; + } +} + .ve-ui-editCheck-gutter-highlight { position: absolute; left: 0; diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index a9a8950fa1..f79bf97ede 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -21,6 +21,7 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.check = config.check; this.fragments = config.fragments; + this.originalText = this.fragments.map( ( fragment ) => fragment.getText() ); this.focusFragment = config.focusFragment; this.message = config.message; this.footer = config.footer; @@ -198,3 +199,24 @@ mw.editcheck.EditCheckAction.prototype.equals = function ( other ) { return other.fragments.some( ( otherFragment ) => otherFragment.getSelection().equals( selection ) ); } ); }; + +/** + * Force the action into a stale or not-stale state + * + * @param {boolean} stale + */ +mw.editcheck.EditCheckAction.prototype.setStale = function ( stale ) { + this.originalText = stale ? null : this.fragments.map( ( fragment ) => fragment.getText() ); +}; + +/** + * Check whether the text has changed since this action was created + * + * @return {boolean} Whether the text has changed since this action was created + */ +mw.editcheck.EditCheckAction.prototype.isStale = function () { + return !this.originalText || !OO.compare( + this.originalText, + this.fragments.map( ( fragment ) => fragment.getText() ) + ); +}; diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index c1dfb00ad7..3ac8734024 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -235,27 +235,43 @@ Controller.prototype.refresh = function () { * do not occur until checks have completed. * * @param {string} listener e.g. onBeforeSave, onDocumentChange, onBranchNodeChange - * @param {boolean} always Emit updates even if no actions changed + * @param {boolean} fromRefresh Update comes from a manual refresh, not a real event * @return {Promise} An updated set of actions. * @fires Controller#actionsUpdated */ -Controller.prototype.updateForListener = function ( listener, always ) { +Controller.prototype.updateForListener = function ( listener, fromRefresh ) { + // Get the existing actions for this listener const existing = this.getActions( listener ); - const otherListenersExisting = this.getActions().filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); + // Get existing actions for other listeners (excludes the existing actions for this listener) + const otherListenersExisting = this.getActions().filter( ( action ) => existing.every( ( existingAction ) => !action.equals( existingAction ) ) ); + + // Create all actions for this listener return mw.editcheck.editCheckFactory.createAllByListener( this, listener, this.surface.getModel() ) - .then( ( actions ) => actions.map( ( action ) => existing.find( ( oldAction ) => oldAction.equals( action ) ) || action ) ) - .then( ( actions ) => { + .then( ( actionsFromListener ) => { + // Try to match each new action to an existing one (to preserve state) + let actions = actionsFromListener.map( ( action ) => existing.find( ( existingAction ) => action.equals( existingAction ) ) || action ); + + if ( !fromRefresh ) { + actions.forEach( ( action ) => action.setStale( false ) ); + } + + // Update the actions for this listener this.actionsByListener[ listener ] = actions; const newActions = actions.filter( ( action ) => existing.every( ( oldAction ) => !action.equals( oldAction ) ) ); const discardedActions = existing.filter( ( action ) => actions.every( ( newAction ) => !action.equals( newAction ) ) ); - if ( always || actions.length !== existing.length || newActions.length || discardedActions.length ) { + + // If the actions list changed, update + if ( fromRefresh || actions.length !== existing.length || newActions.length || discardedActions.length ) { + // Add actions from other listeners and sort actions = actions.concat( otherListenersExisting ); actions.sort( mw.editcheck.EditCheckAction.static.compareStarts ); // TODO: We need to consider a consistency check here as the document state may have changed since the // action within the promise was created + // Notify listeners that actions have been updated this.emit( 'actionsUpdated', listener, actions, newActions, discardedActions, false ); } + // Return the updated actions return actions; } ); }; @@ -644,13 +660,15 @@ Controller.prototype.drawSelections = function () { const surfaceView = this.surface.getView(); if ( this.focusedAction ) { // The currently-focused action gets a selection: - // TODO: clicking the selection should activate the sidebar-action + // TODO: clicking the selection should activate the sidebar-action in pre-save mode surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', this.focusedAction.getHighlightSelections().map( ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) ), - {} + this.focusedAction.isStale() ? + { wrapperClass: 've-ce-surface-selections-editCheckWarning-stale', showBounding: true, showRects: false } : + {} ); } else { surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index bc9bbed50a..d8c354fe96 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -131,11 +131,13 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); } ); } else if ( choice === 'edit' && surface ) { + action.setStale( true ); + action.clickedRevise = true; // If in pre-save mode, close the check dialog const closePromise = this.controller.inBeforeSave ? this.controller.closeDialog() : ve.createDeferred().resolve().promise(); return closePromise.then( () => { surface.getView().activate(); - action.fragments[ action.fragments.length - 1 ].collapseToStart().select(); + action.fragments[ action.fragments.length - 1 ].collapseToEnd().select(); } ); } }; From ff7afdaa7e7a05564cf63242bd86db6608fd83f5 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 30 Jul 2025 18:50:06 +0100 Subject: [PATCH 512/730] EditCheck: Suppress gutter for stale/revising checks Bug: T400828 Change-Id: Ia3916d3a35c8847ad3f12511bdd6fbf927f3e87e --- editcheck/modules/controller.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 3ac8734024..5b422701c7 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -701,6 +701,9 @@ Controller.prototype.drawGutter = function () { const surfaceView = this.surface.getView(); actions.forEach( ( action ) => { + if ( action.isStale() ) { + return; + } action.top = Infinity; action.getHighlightSelections().forEach( ( selection ) => { const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); From b59149a53e3704bdf4043aac2532ceec3cc13126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Tue, 29 Jul 2025 14:49:02 +0100 Subject: [PATCH 513/730] ToneCheck: Add a "recheck" button when a user revises a paragraph Bug: T397984 Change-Id: Ie635bccb4e6f23934539908139d44b283eaa1307 --- editcheck/i18n/en.json | 2 + editcheck/i18n/qqq.json | 2 + editcheck/modules/EditCheckAction.js | 15 ++++++- editcheck/modules/controller.js | 15 ++++++- .../editchecks/experimental/ToneCheck.js | 41 ++++++++++++++++++- extension.json | 2 + 6 files changed, 72 insertions(+), 5 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index d03e1317ed..2b27fda88c 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -10,6 +10,7 @@ "editcheck-dialog-action-yes": "Yes", "editcheck-dialog-action-decline": "Decline", "editcheck-dialog-action-revise": "Revise", + "editcheck-dialog-action-recheck": "Recheck", "editcheck-dialog-action-back": "Back", "editcheck-dialog-action-submit": "Submit", "editcheck-dialog-addref-description": "Help readers understand where this information is coming from by adding a citation.", @@ -43,6 +44,7 @@ "editcheck-tone-reject-appropriate": "The tone is appropriate", "editcheck-tone-reject-uncertain": "I'm not sure how to revise the tone", "editcheck-tone-reject-other": "Other", + "editcheck-tone-thank": "Thank you for revising the tone!", "editcheck-reject-description": "Other editors would value learning why you made this choice.", "editcheck-review-title": "Review changes", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (references) declined (common knowledge)", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index e16ca487ac..32104723c3 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -12,6 +12,7 @@ "editcheck-dialog-action-yes": "Label for the yes option when asking users if they want to act on a check.\n\n{{Identical|Yes}}", "editcheck-dialog-action-decline": "Label for the decline option when asking users if they want to act on a check.\n\n{{Identical|Decline}}", "editcheck-dialog-action-revise": "Label for the revise option when asking users if they want to act on a check.\n\n{{Identical|Revise}}", + "editcheck-dialog-action-recheck": "Label for the revise option when asking users if they want to re-run a check.", "editcheck-dialog-action-back": "Label for the back option when asking users if they want to act on a check.\n\n{{Identical|Back}}", "editcheck-dialog-action-submit": "Label for the submit option when asking users if they want to act on a check.\n\n{{Identical|Submit}}", "editcheck-dialog-addref-description": "Help text explaining why it is helpful to add a citation.", @@ -45,6 +46,7 @@ "editcheck-tone-reject-appropriate": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", "editcheck-tone-reject-uncertain": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", "editcheck-tone-reject-other": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", + "editcheck-tone-thank": "Toast pop up to thank the user for their revisions if they resolve the check after clicking {{msg-mw|editcheck-dialog-action-revise}}", "editcheck-reject-description": "Other editors would value learning more about your decision to skip this check.", "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", "tag-editcheck-reference-decline-common-knowledge": "Short description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index f79bf97ede..4b74599829 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -19,6 +19,7 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { // Mixin constructor OO.EventEmitter.call( this ); + this.mode = ''; this.check = config.check; this.fragments = config.fragments; this.originalText = this.fragments.map( ( fragment ) => fragment.getText() ); @@ -150,7 +151,7 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi message: this.getDescription(), footer: this.getFooter(), classes: collapsed ? [ 've-ui-editCheckActionWidget-collapsed' ] : '', - mode: this.check.mode, + mode: this.mode, singleAction: singleAction } ); widget.actions.connect( this, { @@ -163,6 +164,10 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi return widget; }; +mw.editcheck.EditCheckAction.prototype.setMode = function ( mode ) { + this.mode = mode; +}; + /** * Handle click events from an action button * @@ -206,6 +211,7 @@ mw.editcheck.EditCheckAction.prototype.equals = function ( other ) { * @param {boolean} stale */ mw.editcheck.EditCheckAction.prototype.setStale = function ( stale ) { + this.setMode( stale ? 'revising' : '' ); this.originalText = stale ? null : this.fragments.map( ( fragment ) => fragment.getText() ); }; @@ -220,3 +226,10 @@ mw.editcheck.EditCheckAction.prototype.isStale = function () { this.fragments.map( ( fragment ) => fragment.getText() ) ); }; + +/** + * Method called by the controller when the action is removed from the action list + */ +mw.editcheck.EditCheckAction.prototype.discarded = function () { + this.emit( 'discard' ); +}; diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 5b422701c7..70378e7022 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -251,8 +251,14 @@ Controller.prototype.updateForListener = function ( listener, fromRefresh ) { // Try to match each new action to an existing one (to preserve state) let actions = actionsFromListener.map( ( action ) => existing.find( ( existingAction ) => action.equals( existingAction ) ) || action ); + let staleUpdated = false; if ( !fromRefresh ) { - actions.forEach( ( action ) => action.setStale( false ) ); + actions.forEach( ( action ) => { + if ( action.isStale() ) { + action.setStale( false ); + staleUpdated = true; + } + } ); } // Update the actions for this listener @@ -262,7 +268,7 @@ Controller.prototype.updateForListener = function ( listener, fromRefresh ) { const discardedActions = existing.filter( ( action ) => actions.every( ( newAction ) => !action.equals( newAction ) ) ); // If the actions list changed, update - if ( fromRefresh || actions.length !== existing.length || newActions.length || discardedActions.length ) { + if ( fromRefresh || staleUpdated || actions.length !== existing.length || newActions.length || discardedActions.length ) { // Add actions from other listeners and sort actions = actions.concat( otherListenersExisting ); actions.sort( mw.editcheck.EditCheckAction.static.compareStarts ); @@ -458,6 +464,11 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions } } + // Let actions know they've been discarded + for ( const action of discardedActions ) { + action.discarded(); + } + // do we need to show mid-edit actions? if ( listener === 'onBeforeSave' ) { return; diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index d8c354fe96..5feef98a87 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -97,12 +97,19 @@ mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { { action: 'edit', label: ve.msg( 'editcheck-dialog-action-revise' ), - icon: 'edit' + modes: [ '' ] + }, + { + action: 'recheck', + label: ve.msg( 'editcheck-dialog-action-recheck' ), + flags: [ 'primary', 'progressive' ], + icon: 'check', + modes: [ 'revising' ] }, { action: 'dismiss', label: ve.msg( 'editcheck-dialog-action-decline' ), - icon: 'check' + modes: [ '', 'revising' ] } ] } ); @@ -132,6 +139,11 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { } ); } else if ( choice === 'edit' && surface ) { action.setStale( true ); + if ( action.clickedRevise !== true ) { // first time + action.once( 'discard', () => { + mw.notify( ve.msg( 'editcheck-tone-thank' ), { type: 'success' } ); + } ); + } action.clickedRevise = true; // If in pre-save mode, close the check dialog const closePromise = this.controller.inBeforeSave ? this.controller.closeDialog() : ve.createDeferred().resolve().promise(); @@ -139,6 +151,31 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { surface.getView().activate(); action.fragments[ action.fragments.length - 1 ].collapseToEnd().select(); } ); + } else if ( choice === 'recheck' ) { + const recheckDeferred = ve.createDeferred(); + + const progress = new OO.ui.ProgressBarWidget( { + progress: false, + inline: true + } ); + action.widget.$body.prepend( progress.$element ); + + this.controller.updateForListener( 'onBranchNodeChange' ).then( () => { + recheckDeferred.resolve(); + } ); + + const minimumTimeDeferred = ve.createDeferred(); + setTimeout( () => { + minimumTimeDeferred.resolve(); + }, 500 ); + + setTimeout( () => { + /* Silently fail if it takes too long */ + recheckDeferred.resolve(); + }, 3000 ); + // Caller requires a Deferred as it then calls '.always()' + // eslint-disable-next-line no-jquery/no-when + return $.when( recheckDeferred, minimumTimeDeferred ); } }; diff --git a/extension.json b/extension.json index 125f57767b..897863a2cc 100644 --- a/extension.json +++ b/extension.json @@ -663,6 +663,7 @@ "editcheck-dialog-action-yes", "editcheck-dialog-action-decline", "editcheck-dialog-action-revise", + "editcheck-dialog-action-recheck", "editcheck-dialog-action-back", "editcheck-dialog-action-submit", "editcheck-dialog-addref-description", @@ -696,6 +697,7 @@ "editcheck-tone-reject-appropriate", "editcheck-tone-reject-uncertain", "editcheck-tone-reject-other", + "editcheck-tone-thank", "editcheck-reject-description", "editcheck-review-title", "visualeditor-backbutton-tooltip", From 7802fb510c18e8f17cf35301fffcd5acadaae400 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 31 Jul 2025 18:02:51 +0100 Subject: [PATCH 514/730] EditCheck: Use core support for gutter highlights Bug: T400905 Depends-On: I00e9d4ca7ced31b43e48947026d4f6e05b79bf19 Change-Id: I18aae987eba2688a1f692dfd04c97466766c0c46 --- editcheck/modules/EditCheck.less | 154 ++++++++++++++----------------- editcheck/modules/controller.js | 101 +++++++++----------- 2 files changed, 111 insertions(+), 144 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 733f491d0d..549568e48d 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -391,102 +391,82 @@ /* Selections */ -.ve-ce-surface-reviewMode + .ve-ui-overlay .ve-ce-surface-selections-editCheck .ve-ce-surface-selection { - opacity: 0.2; - pointer-events: auto; -} - -.ve-ce-surface-selections-editCheck .ve-ce-surface-selection-rect { - mix-blend-mode: darken; - // Adjust target colours to account for 50% opacity - background: ( ( #fce7fe - 0.8 * ( #fff ) ) / 0.2 ); - // border: 1px solid ( ( #d02aac - 0.8 * ( #fff ) ) / 0.2 ); - border-radius: 2px; - padding: 2px; - margin: -2px 0 0 -2px; -} - -.ve-ce-surface-selections-editCheckWarning .ve-ce-surface-selection { - &-rects { - opacity: 0.2; - } - - &-rect { - // Adjust target colours to account for 50% opacity - background: ( ( #fef6e7 - 0.8 * ( #fff ) ) / 0.2 ); - // border: 1px solid ( ( #a66200 - 0.8 * ( #fff ) ) / 0.2 ); - border-radius: 2px; - padding: 2px; - margin: -2px 0 0 -2px; - } -} - -.ve-ce-surface-selections-editCheckWarning-stale .ve-ce-surface-selection-bounding { - @padding: 3px; - @border: 2px; - @color: #36c; - padding: @padding; - margin: -( @padding + @border ) 0 0 -@padding; - border-style: solid; - border-color: @color; - border-width: @border 0; - @triangleSize: 5px; - - &::before, - &::after { - content: ''; - position: absolute; - width: 0; - height: 0; - } - - &::before { - left: 0; - top: 0; - border-left: @triangleSize solid @color; - border-bottom: @triangleSize solid transparent; - } +.ve-ce-surface-selections-editCheck { + &-active { + .ve-ce-surface-selection { + &-rects { + opacity: 0.2; + } - &::after { - right: 0; - bottom: 0; - border-right: @triangleSize solid @color; - border-top: @triangleSize solid transparent; - } -} + &-rect { + // Adjust target colours to account for 50% opacity + background: ( ( #fef6e7 - 0.8 * ( #fff ) ) / 0.2 ); + // border: 1px solid ( ( #a66200 - 0.8 * ( #fff ) ) / 0.2 ); + border-radius: 2px; + padding: 2px; + margin: -2px 0 0 -2px; + } -.ve-ui-editCheck-gutter-highlight { - position: absolute; - left: 0; - width: 2px; - overflow: hidden; - background-color: @color-base; + &-bounding { + @padding: 3px; + @border: 2px; + @color: #36c; + padding: @padding; + margin: -( @padding + @border ) 0 0 -@padding; + border-style: solid; + border-color: @color; + border-width: @border 0; + @triangleSize: 5px; + + &::before, + &::after { + content: ''; + position: absolute; + width: 0; + height: 0; + } + + &::before { + left: 0; + top: 0; + border-left: @triangleSize solid @color; + border-bottom: @triangleSize solid transparent; + } + + &::after { + right: 0; + bottom: 0; + border-right: @triangleSize solid @color; + border-top: @triangleSize solid transparent; + } + } + } - &-active { - z-index: 1; - } + .ve-ce-surface-selection-gutter { + background-color: @color-base; + z-index: 1; + } - &-error { - background-color: @color-error; - } + .ve-ce-surface-selection-editCheck { + &-error .ve-ce-surface-selection-gutter { + background-color: @color-error; + } - &-warning { - background-color: @color-warning; - } + &-warning .ve-ce-surface-selection-gutter { + background-color: @color-warning; + } - &-notice { - background-color: @color-notice; - } + &-notice .ve-ce-surface-selection-gutter { + background-color: @color-notice; + } - &-success { - background-color: @color-success; + &-success .ve-ce-surface-selection-gutter { + background-color: @color-success; + } + } } - &-inactive { + &-inactive .ve-ce-surface-selection-gutter { background-color: @border-color-base; } - - .mw-mf & { - left: -10px; - } } diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 70378e7022..7cdb189874 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -25,8 +25,6 @@ function Controller( target ) { this.branchNode = null; this.focusedAction = null; - this.$highlights = $( '

' ); - this.taggedFragments = {}; this.taggedIds = {}; @@ -116,7 +114,6 @@ Controller.prototype.setup = function () { this.surface.on( 'destroy', () => { this.off( 'actionsUpdated' ); - this.$highlights.empty(); const win = this.surface.getSidebarDialogs().getCurrentWindow(); if ( win ) { @@ -197,7 +194,6 @@ Controller.prototype.editChecksArePossible = function () { */ Controller.prototype.updatePositions = function () { this.drawSelections(); - this.drawGutter(); this.emit( 'position' ); }; @@ -669,22 +665,6 @@ Controller.prototype.restoreToolbar = function ( target ) { */ Controller.prototype.drawSelections = function () { const surfaceView = this.surface.getView(); - if ( this.focusedAction ) { - // The currently-focused action gets a selection: - // TODO: clicking the selection should activate the sidebar-action in pre-save mode - surfaceView.getSelectionManager().drawSelections( - 'editCheckWarning', - this.focusedAction.getHighlightSelections().map( - ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) - ), - this.focusedAction.isStale() ? - { wrapperClass: 've-ce-surface-selections-editCheckWarning-stale', showBounding: true, showRects: false } : - {} - ); - } else { - surfaceView.getSelectionManager().drawSelections( 'editCheckWarning', [] ); - } - if ( this.inBeforeSave ) { // Review mode grays out everything that's not highlighted: const highlightNodes = []; @@ -694,56 +674,63 @@ Controller.prototype.drawSelections = function () { } ); } ); surfaceView.setReviewMode( true, highlightNodes ); - } -}; - -/** - * Draw gutter indicators next to each action's selection (on desktop). - */ -Controller.prototype.drawGutter = function () { - if ( OO.ui.isMobile() ) { return; } - this.$highlights.empty(); + const actions = this.getActions(); if ( actions.length === 0 ) { return; } - const surfaceView = this.surface.getView(); + const isStale = !!this.focusedAction && this.focusedAction.isStale(); + const showGutter = !isStale && !OO.ui.isMobile(); + const activeOptions = { showGutter: showGutter, showRects: !isStale, showBounding: isStale }; + const inactiveOptions = { showGutter: showGutter, showRects: false }; + + const activeSelections = this.focusedAction ? this.focusedAction.getHighlightSelections().map( + ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) + ) : []; + const inactiveSelections = []; + // Optimization: When showGutter is false inactive selections currently render nothing + if ( showGutter ) { + actions.forEach( ( action ) => { + const isActive = ( action === this.focusedAction ); + action.getHighlightSelections().forEach( ( selection ) => { + const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); + if ( isActive ) { + activeSelections.push( selectionView ); + } else { + inactiveSelections.push( selectionView ); + } + } ); + } ); + } + // The following classes are used here: + // * ve-ce-surface-selections-editCheck-active + // * ve-ce-surface-selections-editCheck-inactive + surfaceView.getSelectionManager().drawSelections( 'editCheck-active', activeSelections, activeOptions ); + surfaceView.getSelectionManager().drawSelections( 'editCheck-inactive', inactiveSelections, inactiveOptions ); + + // Add 'type' classes actions.forEach( ( action ) => { - if ( action.isStale() ) { - return; - } - action.top = Infinity; + const type = action.getType(); + const isActive = action === this.focusedAction; action.getHighlightSelections().forEach( ( selection ) => { - const selectionView = ve.ce.Selection.static.newFromModel( selection, surfaceView ); - const rect = selectionView.getSelectionBoundingRect(); - if ( !rect ) { + if ( !isActive && !showGutter ) { + // Optimization: When showGutter is false inactive selections currently render nothing return; } - // The following classes are used here: - // * ve-ui-editCheck-gutter-highlight-error - // * ve-ui-editCheck-gutter-highlight-warning - // * ve-ui-editCheck-gutter-highlight-notice - // * ve-ui-editCheck-gutter-highlight-success - // * ve-ui-editCheck-gutter-highlight-active - // * ve-ui-editCheck-gutter-highlight-inactive - this.$highlights.append( $( '
' ) - .addClass( 've-ui-editCheck-gutter-highlight' ) - .addClass( 've-ui-editCheck-gutter-highlight-' + action.getType() ) - .addClass( 've-ui-editCheck-gutter-highlight-' + ( action === this.focusedAction ? 'active' : 'inactive' ) ) - .css( { - top: rect.top - 2, - height: rect.height + 4 - } ) - .on( 'click', () => this.focusAction( action ) ) - ); - action.top = Math.min( action.top, rect.top ); + const selectionElements = surfaceView.getSelectionManager().getCachedSelection( isActive ? 'editCheck-active' : 'editCheck-inactive', selection, isActive ? activeOptions : inactiveOptions ); + if ( selectionElements ) { + // The following classes are used here: + // * ve-ce-surface-selection-editCheck-error + // * ve-ce-surface-selection-editCheck-warning + // * ve-ce-surface-selection-editCheck-notice + // * ve-ce-surface-selection-editCheck-success + selectionElements.$selection.addClass( 've-ce-surface-selection-editCheck-' + type ); + } } ); } ); - - surfaceView.appendHighlights( this.$highlights, false ); }; /** From a67c0148c5d6c719bdf911a1a170262155b7488d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 7 Aug 2025 09:56:41 +0200 Subject: [PATCH 515/730] Localisation updates from https://translatewiki.net. Change-Id: Ia6dd1785dd8323411350654d8e67faea80762fb2 --- editcheck/i18n/de.json | 2 ++ editcheck/i18n/fr.json | 8 ++++++++ editcheck/i18n/gl.json | 9 +++++++++ i18n/ve-mw/api/yue-hant.json | 11 ++++++----- i18n/ve-mw/de.json | 2 +- i18n/ve-mw/yue-hant.json | 10 +++++----- 6 files changed, 31 insertions(+), 11 deletions(-) diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index 50614f8ebd..680922a8b8 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -8,6 +8,7 @@ "editcheck-dialog-action-yes": "Ja", "editcheck-dialog-action-decline": "Ablehnen", "editcheck-dialog-action-revise": "Überarbeiten", + "editcheck-dialog-action-recheck": "Erneut überprüfen", "editcheck-dialog-action-back": "Zurück", "editcheck-dialog-action-submit": "Speichern", "editcheck-dialog-addref-description": "Hilf den Lesern zu verstehen, woher diese Informationen stammen, indem du einen Beleg hinzufügst.", @@ -39,6 +40,7 @@ "editcheck-tone-reject-appropriate": "Der Tonfall ist angemessen", "editcheck-tone-reject-uncertain": "Ich bin nicht sicher, wie ich den Tonfall ändern soll", "editcheck-tone-reject-other": "Andere", + "editcheck-tone-thank": "Danke, dass du den Tonfall überarbeitet hast!", "editcheck-reject-description": "Andere Benutzer würden es schätzen, zu erfahren, warum du diese Wahl getroffen hast.", "editcheck-review-title": "Änderungen überprüfen", "tag-editcheck-reference-decline-common-knowledge": "Bearbeitungsprüfung (Belege) abgelehnt (Allgemeinwissen)", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index 80c1b82954..6eb09ed02e 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -26,6 +26,14 @@ "editcheck-dialog-title": "Avant de publier", "editcheck-copyvio-title": "Contenu copié-collé", "editcheck-copyvio-description": "En règle générale, ne copiez pas de texte provenant d'autres sources. Cela constitue généralement une violation des droits d'auteur et un plagiat.", + "editcheck-copyvio-action-keep": "Oui, gardez-le.", + "editcheck-copyvio-action-remove": "Non, enlevez-le.", + "editcheck-copyvio-keep-description": "D'autres rédacteurs apprécieront d'en savoir plus sur votre raison de conserver ce texte collé.", + "editcheck-copyvio-keep-wrote": "J'ai écrit ce contenu et il n'est pas publié ailleurs", + "editcheck-copyvio-keep-permission": "J'ai la permission de réutiliser ce contenu", + "editcheck-copyvio-keep-free": "Ce texte est dans le domaine public ou sous licence libre", + "editcheck-copyvio-keep-other": "Autre", + "editcheck-copyvio-keep-notify": "Merci d'avoir partagé votre raison de conserver le texte collé !", "editcheck-tone-title": "Réviser le ton ?", "editcheck-tone-description": "D'autres utilisateurs révisent souvent ce genre de formulation, disant que le ton est déséquilibré. [$1 En savoir plus]", "editcheck-tone-footer": "Identifié à l'aide d'un [$1 modèle BERT]", diff --git a/editcheck/i18n/gl.json b/editcheck/i18n/gl.json index be795bfa4f..b51d8cf7b6 100644 --- a/editcheck/i18n/gl.json +++ b/editcheck/i18n/gl.json @@ -22,6 +22,15 @@ "editcheck-dialog-title": "Antes de publicares", "editcheck-copyvio-title": "Contido pegado", "editcheck-copyvio-description": "Como regra xeral, non copies texto doutras fontes. Facelo adoita constituír un plaxio e unha violación dos dereitos de autoría.", + "editcheck-copyvio-action-keep": "Si, mantelo", + "editcheck-copyvio-action-remove": "Non, eliminalo", + "editcheck-copyvio-keep-description": "Outros editores apreciarán saber o motivo polo que conservaches este texto pegado.", + "editcheck-copyvio-keep-wrote": "Escribín este contido e non está publicado en ningures", + "editcheck-copyvio-keep-permission": "Teño permiso para reutilizar este contido", + "editcheck-copyvio-keep-free": "Este texto é de dominio público ou ten unha licenza libre", + "editcheck-copyvio-keep-other": "Outro", + "editcheck-copyvio-keep-notify": "Grazas por compartires o motivo polo que conservaches o texto pegado!", + "editcheck-copyvio-remove-notify": "Grazas por eliminares este texto!", "editcheck-tone-title": "Revisar o ton?", "editcheck-tone-description": "Outros usuarios adoitan revisar este tipo de redacción, porque consideran que o ton non é axeitado. [$1 Máis información]", "editcheck-tone-footer": "Identificado usando un [$1 modelo BERT]", diff --git a/i18n/ve-mw/api/yue-hant.json b/i18n/ve-mw/api/yue-hant.json index 08f6c2b355..d56c8d085b 100644 --- a/i18n/ve-mw/api/yue-hant.json +++ b/i18n/ve-mw/api/yue-hant.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "JeffreyKim", + "Ktchankt", "Winston Sung" ] }, @@ -22,10 +23,10 @@ "apihelp-visualeditor-param-pst": "喺將轉換維基文字傳送去Parsoid之前預先儲存佢(paction = 解析片段)。", "apihelp-visualeditor-param-section": "要採取行動嘅部分。", "apihelp-visualeditor-param-starttimestamp": "保存嗰陣,將爾個設成加載嘅版本嘅時間戳。用來檢測編輯衝突。", - "apihelp-visualeditor-param-stash": "些乎嗰陣,如果你想用些乎API ,將呢個設定為真。", + "apihelp-visualeditor-param-stash": "儲存緊嗰陣,如果你想用儲存API,將呢個設定設做 true。", "apihelp-visualeditor-param-wikitext": "發畀Parsoid來轉成HTML代碼嘅維基代碼\n(paction=parsefragment)。", "apihelp-visualeditor-summary": "返返左Parsoid服務嘅頁面嘅 HTML5。", - "apihelp-visualeditoredit-param-basetimestamp": "些乎嗰陣,將呢個設定為編輯咗嘅修訂版本嘅時間戳記,用嚟偵測編輯衝突。", + "apihelp-visualeditoredit-param-basetimestamp": "儲存嗰陣,將呢個設定做編輯咗嘅修訂版本嘅時間戳記,用嚟偵測編輯衝突。", "apihelp-visualeditoredit-param-cachekey": "用呢個密鑰用之前嘅序列化緩存請求嘅結果。覆寫$1html。", "apihelp-visualeditoredit-param-captchaid": "Captcha ID (保存captcha響應嗰時用)。", "apihelp-visualeditoredit-param-captchaword": "回答驗證碼(當用驗證碼回應儲存嗰陣)。", @@ -35,15 +36,15 @@ "apihelp-visualeditoredit-param-etag": "ETag要發送。", "apihelp-visualeditoredit-param-html": "HTML要傳送去Parsoid換取維基文字。", "apihelp-visualeditoredit-param-minor": "細修改嘅標記。", - "apihelp-visualeditoredit-param-needcheck": "些乎嗰陣,如果修訂版本可能會有來回問題,請設定呢個參數。噉樣會令到個編輯被標記。", + "apihelp-visualeditoredit-param-needcheck": "儲存嗰陣,如果修訂版本可能會有來回問題,請設定呢個參數。噉樣會令到個編輯被標記。", "apihelp-visualeditoredit-param-oldid": "要用嘅修訂版本冧巴。預設為最新修訂版本。", "apihelp-visualeditoredit-param-paction": "要執行嘅動作。", "apihelp-visualeditoredit-param-page": "要喺上面執行操作嘅頁面。", "apihelp-visualeditoredit-param-section": "要採取行動嘅部分。", - "apihelp-visualeditoredit-param-sectiontitle": "新部分嘅呔圖。", + "apihelp-visualeditoredit-param-sectiontitle": "新章節嘅標題。", "apihelp-visualeditoredit-param-starttimestamp": "保存嗰陣,將爾個設成加載嘅版本嘅時間戳。用來檢測編輯衝突。", "apihelp-visualeditoredit-param-summary": "編輯摘要。", "apihelp-visualeditoredit-param-tags": "更改標籤嚟套用喺編輯。", "apihelp-visualeditoredit-param-wikitext": "用嚟行動嘅維基文字。", - "apihelp-visualeditoredit-summary": "將HTML5頁面些乎到維基媒體(透過 Parsoid 服務轉換為維基文字)。" + "apihelp-visualeditoredit-summary": "將HTML5頁面儲存到維基媒體(透過 Parsoid 服務轉換為維基文字)。" } diff --git a/i18n/ve-mw/de.json b/i18n/ve-mw/de.json index 3f9a259162..c80c93516c 100644 --- a/i18n/ve-mw/de.json +++ b/i18n/ve-mw/de.json @@ -330,7 +330,7 @@ "visualeditor-mwpredialog-convert": "Textgestaltung erlauben", "visualeditor-mwpredialog-title": "Vorformatierter Klartext", "visualeditor-mwsignature-tool": "Deine Unterschrift", - "visualeditor-preference-visualeditor": "Aktivieren des visuellen Editors", + "visualeditor-preference-visualeditor": "Visuellen Editor aktivieren", "visualeditor-preference-newwikitexteditor-enable": "Wikitextmodus innerhalb des visuellen Editors anstelle eines anderen Wikitexteditors verwenden", "visualeditor-preference-newwikitexteditor-help": "Dies wird manchmal als „Wikitext-Editor von 2017“ bezeichnet.", "visualeditor-preference-tabs": "Bearbeitungsmodus:", diff --git a/i18n/ve-mw/yue-hant.json b/i18n/ve-mw/yue-hant.json index 218d6f976a..4fd7c4d3ab 100644 --- a/i18n/ve-mw/yue-hant.json +++ b/i18n/ve-mw/yue-hant.json @@ -40,7 +40,7 @@ "visualeditor-autosave-modified-prompt-title": "繼續{{GENDER:|你嘅}}編輯?", "visualeditor-autosave-not-recovered-text": "恢復唔到你未儲存嘅變更。", "visualeditor-autosave-not-recovered-title": "變更復原失敗咗", - "visualeditor-autosave-recovered-text": "你未些牙嘅變更已經自動恢復返。", + "visualeditor-autosave-recovered-text": "你未儲存嘅變更已經自動恢復返。", "visualeditor-autosave-recovered-title": "啲變動已經恢復返晒", "visualeditor-backbutton-tooltip": "返去", "visualeditor-ca-createlocaldescriptionsource": "喺本站加檔案說明源碼", @@ -120,7 +120,7 @@ "visualeditor-dialog-meta-languages-readonlynote": "呢個表包含咗連去爾版嘅所有其它話嘅版。呢個表暫時淨係可以喺源碼模式改,或者去維基數據改。", "visualeditor-dialog-meta-languages-section": "話", "visualeditor-dialog-meta-settings-displaytitle": "顯示標題", - "visualeditor-dialog-meta-settings-displaytitle-help": "你可以設定唔同嘅標籤嚟顯示,嚟覆寫呢個頁面呔圖嘅顯示方式。", + "visualeditor-dialog-meta-settings-displaytitle-help": "你可以設定唔同嘅標籤嚟顯示,嚟覆寫呢個頁面標題嘅顯示方式。", "visualeditor-dialog-meta-settings-hiddencat-help": "你可以防止呢個類別喺會員頁面嘅類別清單入面顯示,呢個方法對於編輯感興趣但唔係大部分讀者感興趣嘅類別好有用,例如需要插圖嘅頁面。", "visualeditor-dialog-meta-settings-hiddencat-label": "隱藏類", "visualeditor-dialog-meta-settings-index-default": "預設", @@ -138,7 +138,7 @@ "visualeditor-dialog-meta-settings-nocontentconvert-label": "唔轉語言變體", "visualeditor-dialog-meta-settings-noeditsection-help": "喺適當嘅情況下,你可以停止條編輯拎喺每個部分旁邊出現。", "visualeditor-dialog-meta-settings-noeditsection-label": "呢版嘅細標題側邊唔顯示「改」掣", - "visualeditor-dialog-meta-settings-nogallery-help": "如果喺呢個情況下唔適當,你可以阻止呢個類別以圖庫形式顯示成員快勞。", + "visualeditor-dialog-meta-settings-nogallery-help": "如果喺呢個情況下唔適當,你可以阻止呢個類以圖庫形式顯示下屬檔案。", "visualeditor-dialog-meta-settings-nogallery-label": "停用圖集", "visualeditor-dialog-meta-settings-notitleconvert-help": "你可以防止呢個頁面嘅標題自動轉換成其他指令碼。", "visualeditor-dialog-meta-settings-notitleconvert-label": "標題唔轉語言變體", @@ -357,11 +357,11 @@ "visualeditor-section-body-placeholder": "新小節", "visualeditor-section-title-placeholder": "主題", "visualeditor-loaderror-revidconflict": "伺服器返返去嘅修訂ID唔啱(文件:$1,元數據:$2)。", - "visualeditor-loaderror-wrongmode": "試過喺錯誤嘅模式度單撈入去編輯器(資料類型:「$1」,編輯器模式:「$2」)。", + "visualeditor-loaderror-wrongmode": "試過喺錯誤嘅模式度載入去編輯器(資料類型:「$1」,編輯器模式:「$2」)。", "visualeditor-settings-tool": "版嘅設定", "visualeditor-special-characters-group-other": "成日用", "visualeditor-templatesused-tool": "用咗嘅模", - "visualeditor-title-error": "無效嘅呔圖", + "visualeditor-title-error": "無效嘅標題。", "visualeditor-toload": "而家即將載入編輯器,如果你幾秒鐘之後仲見到呢句嘢嘅話,請[$1 重新載入呢版]。", "visualeditor-tooltip-non-breaking-space": "非破壞空間", "visualeditor-version-label": "版本", From b58fce947d8b117843c4c5328501b6eef2553531 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 6 Aug 2025 23:02:23 -0500 Subject: [PATCH 516/730] Edit check: change the name of the paste check from importCopyvio Name gets used in various automatically-generated bits of logging, so this will be much easier to understand. Bug: T400096 Change-Id: Ic6bbbfcad0663ef75c5626f210fe0c0053a7a6a0 --- .../modules/editchecks/experimental/ImportCopyvioEditCheck.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js index 396ef62548..2f4eb8ab81 100644 --- a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js +++ b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js @@ -11,7 +11,7 @@ mw.editcheck.ImportCopyvioEditCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.ImportCopyvioEditCheck.static.title = ve.msg( 'editcheck-copyvio-title' ); -mw.editcheck.ImportCopyvioEditCheck.static.name = 'importCopyvio'; +mw.editcheck.ImportCopyvioEditCheck.static.name = 'paste'; mw.editcheck.ImportCopyvioEditCheck.static.choices = [ { From 42a1a4cb6a97bd67ad0adb058cb897a3a6faa95f Mon Sep 17 00:00:00 2001 From: thiemowmde Date: Thu, 7 Aug 2025 08:21:47 +0200 Subject: [PATCH 517/730] Replace OO.ui.msg() with more consistent ve.msg() I'm not 100% sure, but I think these are all just mistakes. Please make sure you test this if you can. Especially the change in the "init" file. Change-Id: I42eab7734d60a5fe9869530fd7a3546d8338698c --- .../ve.init.mw.DesktopArticleTarget.js | 4 ++-- .../ve.ui.MWLanguageVariantNodeContextItem.js | 2 +- .../ve.ui.MWLanguageVariantInspector.js | 20 +++++++++---------- ....ui.MWTransclusionOutlineControlsWidget.js | 6 +++--- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js index 420968ccd5..7a9efdabdf 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js @@ -682,8 +682,8 @@ ve.init.mw.DesktopArticleTarget.prototype.loadFail = function ( code, errorDetai OO.ui.confirm( $confirmPromptMessage, { actions: [ - { action: 'accept', label: OO.ui.msg( 'ooui-dialog-process-retry' ), flags: 'primary' }, - { action: 'reject', label: OO.ui.msg( 'ooui-dialog-message-reject' ), flags: 'safe' } + { action: 'accept', label: ve.msg( 'ooui-dialog-process-retry' ), flags: 'primary' }, + { action: 'reject', label: ve.msg( 'ooui-dialog-message-reject' ), flags: 'safe' } ] } ).then( ( confirmed ) => { if ( confirmed ) { diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWLanguageVariantNodeContextItem.js b/modules/ve-mw/ui/contextitems/ve.ui.MWLanguageVariantNodeContextItem.js index f7a3d1e9d7..b5aadff550 100644 --- a/modules/ve-mw/ui/contextitems/ve.ui.MWLanguageVariantNodeContextItem.js +++ b/modules/ve-mw/ui/contextitems/ve.ui.MWLanguageVariantNodeContextItem.js @@ -199,7 +199,7 @@ ve.ui.MWLanguageVariantNodeContextItem.prototype.renderBody = function () { // * visualeditor-mwlanguagevariantcontextitem-flag-describe // * visualeditor-mwlanguagevariantcontextitem-flag-hidden // * visualeditor-mwlanguagevariantcontextitem-flag-title - $body.append( $( '

' ).text( OO.ui.msg( + $body.append( $( '

' ).text( ve.msg( 'visualeditor-mwlanguagevariantcontextitem-flag-' + flag ) ) ); } diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWLanguageVariantInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWLanguageVariantInspector.js index 2463e03b29..289c46fc5d 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWLanguageVariantInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWLanguageVariantInspector.js @@ -297,7 +297,7 @@ ve.ui.MWLanguageVariantDisabledInspector.static.title = OO.ui.deferMsg( ve.ui.MWLanguageVariantDisabledInspector.prototype.initialize = function () { ve.ui.MWLanguageVariantDisabledInspector.super.prototype.initialize.call( this ); - this.textTarget = this.createTextTarget( OO.ui.msg( + this.textTarget = this.createTextTarget( ve.msg( 'visualeditor-mwlanguagevariantinspector-disabled-placeholder' ) ); this.form.$element.append( this.textTarget.$element ); @@ -443,7 +443,7 @@ ve.ui.MWLanguageVariantFilterInspector.static.title = OO.ui.deferMsg( ve.ui.MWLanguageVariantFilterInspector.prototype.initialize = function () { ve.ui.MWLanguageVariantFilterInspector.super.prototype.initialize.call( this ); - this.textTarget = this.createTextTarget( OO.ui.msg( + this.textTarget = this.createTextTarget( ve.msg( 'visualeditor-mwlanguagevariantinspector-filter-text-placeholder' ) ); @@ -451,7 +451,7 @@ ve.ui.MWLanguageVariantFilterInspector.prototype.initialize = function () { allowArbitary: false, allowDisplayInvalidTags: true, allowedValues: ve.init.platform.getLanguageCodes().sort(), - placeholder: OO.ui.msg( + placeholder: ve.msg( 'visualeditor-mwlanguagevariantinspector-filter-langs-placeholder' ), icon: 'language' @@ -467,13 +467,13 @@ ve.ui.MWLanguageVariantFilterInspector.prototype.initialize = function () { this.form.$element.append( new OO.ui.FieldLayout( this.langWidget, { align: 'top', - label: OO.ui.msg( 'visualeditor-mwlanguagevariantinspector-filter-langs-label' ) + label: ve.msg( 'visualeditor-mwlanguagevariantinspector-filter-langs-label' ) } ).$element ); this.form.$element.append( new OO.ui.FieldLayout( this.textTarget, { align: 'top', - label: OO.ui.msg( 'visualeditor-mwlanguagevariantinspector-filter-text-label' ) + label: ve.msg( 'visualeditor-mwlanguagevariantinspector-filter-text-label' ) } ).$element ); }; @@ -562,7 +562,7 @@ ve.ui.MWLanguageVariantTwoWayInspector.prototype.initialize = function () { this.form.$element.append( this.layout.$element ); this.addButton = new OO.ui.ButtonInputWidget( { - label: OO.ui.msg( 'visualeditor-mwlanguagevariantinspector-twoway-add-button' ), + label: ve.msg( 'visualeditor-mwlanguagevariantinspector-twoway-add-button' ), icon: 'add' } ); this.form.$element.append( this.addButton.$element ); @@ -600,7 +600,7 @@ ve.ui.MWLanguageVariantTwoWayInspector.prototype.createItem = function ( lang, c dialogManager: this.manager.getSurface().getDialogs(), dirInput: 'none' } ); - const textTarget = this.createTextTarget( OO.ui.msg( + const textTarget = this.createTextTarget( ve.msg( 'visualeditor-mwlanguagevariantinspector-twoway-text-placeholder' ) ); const clearButton = new OO.ui.ButtonInputWidget( { @@ -709,7 +709,7 @@ ve.ui.MWLanguageVariantOneWayInspector.prototype.initialize = function () { this.form.$element.append( this.layout.$element ); this.addButton = new OO.ui.ButtonInputWidget( { - label: OO.ui.msg( 'visualeditor-mwlanguagevariantinspector-oneway-add-button' ), + label: ve.msg( 'visualeditor-mwlanguagevariantinspector-oneway-add-button' ), icon: 'add' } ); this.form.$element.append( this.addButton.$element ); @@ -744,14 +744,14 @@ ve.ui.MWLanguageVariantOneWayInspector.prototype.getSetupProcess = function ( da * documents for this mapping item. */ ve.ui.MWLanguageVariantOneWayInspector.prototype.createItem = function ( from, lang, to ) { - const fromTextTarget = this.createTextTarget( OO.ui.msg( + const fromTextTarget = this.createTextTarget( ve.msg( 'visualeditor-mwlanguagevariantinspector-oneway-from-text-placeholder' ) ); const languageInput = new ve.ui.LanguageInputWidget( { dialogManager: this.manager.getSurface().getDialogs(), dirInput: 'none' } ); - const toTextTarget = this.createTextTarget( OO.ui.msg( + const toTextTarget = this.createTextTarget( ve.msg( 'visualeditor-mwlanguagevariantinspector-oneway-to-text-placeholder' ) ); const clearButton = new OO.ui.ButtonInputWidget( { diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineControlsWidget.js b/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineControlsWidget.js index 69a8c062cf..e277fdfcb1 100644 --- a/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineControlsWidget.js +++ b/modules/ve-mw/ui/widgets/ve.ui.MWTransclusionOutlineControlsWidget.js @@ -33,19 +33,19 @@ ve.ui.MWTransclusionOutlineControlsWidget = function OoUiOutlineControlsWidget() this.upButton = new OO.ui.ButtonWidget( { framed: false, icon: 'upTriangle', - title: OO.ui.msg( 'ooui-outline-control-move-up' ), + title: ve.msg( 'ooui-outline-control-move-up' ), disabled: true } ); this.downButton = new OO.ui.ButtonWidget( { framed: false, icon: 'downTriangle', - title: OO.ui.msg( 'ooui-outline-control-move-down' ), + title: ve.msg( 'ooui-outline-control-move-down' ), disabled: true } ); this.removeButton = new OO.ui.ButtonWidget( { framed: false, icon: 'trash', - title: OO.ui.msg( 'ooui-outline-control-remove' ), + title: ve.msg( 'ooui-outline-control-remove' ), disabled: true } ); From e0a95a61efe44dfc282c500221ed00e697bc014c Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Fri, 8 Aug 2025 05:40:10 +0000 Subject: [PATCH 518/730] build: Updating dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit composer: * mediawiki/mediawiki-phan-config: 0.16.0 → 0.17.0 npm: * @wdio/cli: 9.15.0 → 9.18.4 Change-Id: Ia44aa6239a0648028dd5358de1e1b1bb43690a03 --- composer.json | 2 +- package-lock.json | 2462 +++++++++++++++++++++++++++++++-------------- package.json | 2 +- 3 files changed, 1687 insertions(+), 779 deletions(-) diff --git a/composer.json b/composer.json index 9643207a43..5f2fd1cbce 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "require-dev": { "mediawiki/mediawiki-codesniffer": "47.0.0", - "mediawiki/mediawiki-phan-config": "0.16.0", + "mediawiki/mediawiki-phan-config": "0.17.0", "mediawiki/minus-x": "1.1.3", "php-parallel-lint/php-console-highlighter": "1.0.0", "php-parallel-lint/php-parallel-lint": "1.4.0" diff --git a/package-lock.json b/package-lock.json index b9745235d5..8bcd94912c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "visualeditor", "version": "0.0.0", "devDependencies": { - "@wdio/cli": "9.15.0", + "@wdio/cli": "9.18.4", "@wdio/junit-reporter": "9.15.0", "@wdio/local-runner": "9.15.0", "@wdio/mocha-framework": "9.15.0", @@ -685,76 +685,75 @@ "dev": true }, "node_modules/@inquirer/checkbox": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", - "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.0.tgz", + "integrity": "sha512-fdSw07FLJEU5vbpOPzXo5c6xmMGDzbZE2+niuDHX5N6mc6V0Ebso/q3xiHra4D73+PMsC8MJmcaZKuAAoaQsSA==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/confirm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", - "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", + "version": "5.1.14", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz", + "integrity": "sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "version": "10.1.15", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.15.tgz", + "integrity": "sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==", "dev": true, "dependencies": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", + "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" - } - }, - "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.15.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz", - "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==", - "dev": true, - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@inquirer/core/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" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/core/node_modules/wrap-ansi": { @@ -772,158 +771,235 @@ } }, "node_modules/@inquirer/editor": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", - "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.15.tgz", + "integrity": "sha512-wst31XT8DnGOSS4nNJDIklGKnf+8shuauVrWzgKegWUe28zfCftcWZ2vktGdzJgcylWSS2SrDnYUb6alZcwnCQ==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "external-editor": "^3.1.0" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/expand": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", - "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.17.tgz", + "integrity": "sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/figures": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz", - "integrity": "sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", + "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@inquirer/input": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", - "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.1.tgz", + "integrity": "sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/number": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", - "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.17.tgz", + "integrity": "sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/password": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", - "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.17.tgz", + "integrity": "sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/prompts": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", - "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.0.tgz", + "integrity": "sha512-JHwGbQ6wjf1dxxnalDYpZwZxUEosT+6CPGD9Zh4sm9WXdtUp9XODCQD3NjSTmu+0OAyxWXNOqf0spjIymJa2Tw==", "dev": true, "dependencies": { - "@inquirer/checkbox": "^3.0.1", - "@inquirer/confirm": "^4.0.1", - "@inquirer/editor": "^3.0.1", - "@inquirer/expand": "^3.0.1", - "@inquirer/input": "^3.0.1", - "@inquirer/number": "^2.0.1", - "@inquirer/password": "^3.0.1", - "@inquirer/rawlist": "^3.0.1", - "@inquirer/search": "^2.0.1", - "@inquirer/select": "^3.0.1" + "@inquirer/checkbox": "^4.2.0", + "@inquirer/confirm": "^5.1.14", + "@inquirer/editor": "^4.2.15", + "@inquirer/expand": "^4.0.17", + "@inquirer/input": "^4.2.1", + "@inquirer/number": "^3.0.17", + "@inquirer/password": "^4.0.17", + "@inquirer/rawlist": "^4.1.5", + "@inquirer/search": "^3.1.0", + "@inquirer/select": "^4.3.1" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/rawlist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", - "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.5.tgz", + "integrity": "sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/search": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", - "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.0.tgz", + "integrity": "sha512-PMk1+O/WBcYJDq2H7foV0aAZSmDdkzZB9Mw2v/DmONRJopwA/128cS9M/TXWLKKdEQKZnKwBzqu2G4x/2Nqx8Q==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/select": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", - "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.1.tgz", + "integrity": "sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", + "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", "dev": true, - "dependencies": { - "mute-stream": "^1.0.0" - }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@isaacs/cliui": { @@ -2074,15 +2150,6 @@ "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", "dev": true }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/node": { "version": "20.19.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.1.tgz", @@ -2116,12 +2183,6 @@ "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", "dev": true }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", - "dev": true - }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -2521,34 +2582,30 @@ } }, "node_modules/@wdio/cli": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.15.0.tgz", - "integrity": "sha512-51fuO5nalIFMay94VrAl11hLwcUVrfKZ+4+2lmEtaZKpfTLUj6ugp9ls3suBPgrhWQimikICc1oIs5TmwXHQGg==", + "version": "9.18.4", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.18.4.tgz", + "integrity": "sha512-nSCMxko+g91KvUhIvUBp3ULnCDTBD8D5ma7LbPBDr7j72mQyXlQoNamKRCNsNVaFEXA/FtCmPXc1m/ynQDgeaA==", "dev": true, "dependencies": { - "@types/node": "^20.1.1", "@vitest/snapshot": "^2.1.1", - "@wdio/config": "9.15.0", - "@wdio/globals": "9.15.0", - "@wdio/logger": "9.15.0", - "@wdio/protocols": "9.15.0", - "@wdio/types": "9.15.0", - "@wdio/utils": "9.15.0", + "@wdio/config": "9.18.0", + "@wdio/globals": "9.17.0", + "@wdio/logger": "9.18.0", + "@wdio/protocols": "9.16.2", + "@wdio/types": "9.16.2", + "@wdio/utils": "9.18.0", "async-exit-hook": "^2.0.1", - "chalk": "^5.2.0", + "chalk": "^5.4.1", "chokidar": "^4.0.0", - "dotenv": "^16.3.1", - "ejs": "^3.1.9", - "execa": "^9.2.0", + "create-wdio": "9.18.2", + "dotenv": "^17.2.0", "import-meta-resolve": "^4.0.0", - "inquirer": "^11.0.1", "lodash.flattendeep": "^4.4.0", "lodash.pickby": "^4.6.0", "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", - "recursive-readdir": "^2.2.3", "tsx": "^4.7.2", - "webdriverio": "9.15.0", + "webdriverio": "9.18.4", "yargs": "^17.7.2" }, "bin": { @@ -2558,6 +2615,136 @@ "node": ">=18.20.0" } }, + "node_modules/@wdio/cli/node_modules/@wdio/config": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.18.0.tgz", + "integrity": "sha512-fN+Z7SkKjb0u3UUMSxMN4d+CCZQKZhm/tx3eX7Rv+3T78LtpOjlesBYQ7Ax3tQ3tp8hgEo+CoOXU0jHEYubFrg==", + "dev": true, + "dependencies": { + "@wdio/logger": "9.18.0", + "@wdio/types": "9.16.2", + "@wdio/utils": "9.18.0", + "deepmerge-ts": "^7.0.3", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/cli/node_modules/@wdio/globals": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.17.0.tgz", + "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==", + "dev": true, + "engines": { + "node": ">=18.20.0" + }, + "peerDependencies": { + "expect-webdriverio": "^5.3.4", + "webdriverio": "^9.0.0" + }, + "peerDependenciesMeta": { + "expect-webdriverio": { + "optional": false + }, + "webdriverio": { + "optional": false + } + } + }, + "node_modules/@wdio/cli/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/cli/node_modules/@wdio/protocols": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz", + "integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==", + "dev": true + }, + "node_modules/@wdio/cli/node_modules/@wdio/repl": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz", + "integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/cli/node_modules/@wdio/types": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.16.2.tgz", + "integrity": "sha512-P86FvM/4XQGpJKwlC2RKF3I21TglPvPOozJGG9HoL0Jmt6jRF20ggO/nRTxU0XiWkRdqESUTmfA87bdCO4GRkQ==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/cli/node_modules/@wdio/utils": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.18.0.tgz", + "integrity": "sha512-M+QH05FUw25aFXZfjb+V16ydKoURgV61zeZrMjQdW2aAiks3F5iiI9pgqYT5kr1kHZcMy8gawGqQQ+RVfKYscQ==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "^2.2.0", + "@wdio/logger": "9.18.0", + "@wdio/types": "9.16.2", + "decamelize": "^6.0.0", + "deepmerge-ts": "^7.0.3", + "edgedriver": "^6.1.2", + "geckodriver": "^5.0.0", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.2.24", + "mitt": "^3.0.1", + "safaridriver": "^1.0.0", + "split2": "^4.2.0", + "wait-port": "^1.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/cli/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/@wdio/cli/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@wdio/cli/node_modules/chalk": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", @@ -2585,32 +2772,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@wdio/cli/node_modules/execa": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", - "dev": true, - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/@wdio/cli/node_modules/find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", @@ -2627,20 +2788,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/cli/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "node_modules/@wdio/cli/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=18" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@wdio/cli/node_modules/hosted-git-info": { @@ -2655,29 +2820,11 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@wdio/cli/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@wdio/cli/node_modules/htmlfy": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz", + "integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==", + "dev": true }, "node_modules/@wdio/cli/node_modules/json-parse-even-better-errors": { "version": "3.0.2", @@ -2712,6 +2859,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@wdio/cli/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/@wdio/cli/node_modules/normalize-package-data": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", @@ -2726,22 +2888,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@wdio/cli/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wdio/cli/node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -2812,18 +2958,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/@wdio/cli/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wdio/cli/node_modules/read-pkg": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", @@ -2872,16 +3006,34 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@wdio/cli/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==", + "node_modules/@wdio/cli/node_modules/serialize-error": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz", + "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==", "dev": true, + "dependencies": { + "type-fest": "^4.31.0" + }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/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/@wdio/cli/node_modules/type-fest": { @@ -2896,6 +3048,72 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@wdio/cli/node_modules/webdriver": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.18.0.tgz", + "integrity": "sha512-07lC4FLj45lHJo0FvLjUp5qkjzEGWJWKGsxLoe9rQ2Fg88iYsqgr9JfSj8qxHpazBaBd+77+ZtpmMZ2X2D1Zuw==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "9.18.0", + "@wdio/logger": "9.18.0", + "@wdio/protocols": "9.16.2", + "@wdio/types": "9.16.2", + "@wdio/utils": "9.18.0", + "deepmerge-ts": "^7.0.3", + "https-proxy-agent": "^7.0.6", + "undici": "^6.21.3", + "ws": "^8.8.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/cli/node_modules/webdriverio": { + "version": "9.18.4", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.18.4.tgz", + "integrity": "sha512-Q/gghz/Zt7EhTnbDQfLb61WgSwCksXZE60lEzmDXe4fULCH/6Js5IWUsne3W+BRy6nXeVvFscHD/d7S77dbamw==", + "dev": true, + "dependencies": { + "@types/node": "^20.11.30", + "@types/sinonjs__fake-timers": "^8.1.5", + "@wdio/config": "9.18.0", + "@wdio/logger": "9.18.0", + "@wdio/protocols": "9.16.2", + "@wdio/repl": "9.16.2", + "@wdio/types": "9.16.2", + "@wdio/utils": "9.18.0", + "archiver": "^7.0.1", + "aria-query": "^5.3.0", + "cheerio": "^1.0.0-rc.12", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "grapheme-splitter": "^1.0.4", + "htmlfy": "^0.8.1", + "is-plain-obj": "^4.1.0", + "jszip": "^3.10.1", + "lodash.clonedeep": "^4.5.0", + "lodash.zip": "^4.2.0", + "query-selector-shadow-dom": "^1.0.1", + "resq": "^1.11.0", + "rgb2hex": "0.2.5", + "serialize-error": "^12.0.0", + "urlpattern-polyfill": "^10.0.0", + "webdriver": "9.18.0" + }, + "engines": { + "node": ">=18.20.0" + }, + "peerDependencies": { + "puppeteer-core": ">=22.x || <=24.x" + }, + "peerDependenciesMeta": { + "puppeteer-core": { + "optional": true + } + } + }, "node_modules/@wdio/cli/node_modules/yocto-queue": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", @@ -3345,18 +3563,6 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/utils/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wikimedia/codex-design-tokens": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@wikimedia/codex-design-tokens/-/codex-design-tokens-1.1.1.tgz", @@ -4564,6 +4770,15 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", + "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", + "dev": true, + "engines": { + "node": ">=20" + } + }, "node_modules/comment-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", @@ -4778,88 +4993,357 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/create-wdio": { + "version": "9.18.2", + "resolved": "https://registry.npmjs.org/create-wdio/-/create-wdio-9.18.2.tgz", + "integrity": "sha512-atf81YJfyTNAJXsNu3qhpqF4OO43tHGTpr88duAc1Hk4a0uXJAPUYLnYxshOuMnfmeAxlWD+NqGU7orRiXEuJg==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "chalk": "^5.3.0", + "commander": "^14.0.0", + "cross-spawn": "^7.0.3", + "ejs": "^3.1.10", + "execa": "^9.6.0", + "import-meta-resolve": "^4.1.0", + "inquirer": "^12.7.0", + "normalize-package-data": "^7.0.0", + "read-pkg-up": "^10.1.0", + "recursive-readdir": "^2.2.3", + "semver": "^7.6.3", + "type-fest": "^4.41.0", + "yargs": "^17.7.2" + }, + "bin": { + "create-wdio": "bin/wdio.js" }, "engines": { - "node": ">= 8" + "node": ">=12.0.0" } }, - "node_modules/css-functions-list": { - "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==", + "node_modules/create-wdio/node_modules/chalk": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.5.0.tgz", + "integrity": "sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=12 || >=16" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "node_modules/create-wdio/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-shorthand-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", - "integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==", - "dev": true - }, - "node_modules/css-tokenize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", - "integrity": "sha512-gLmmbJdwH9HLY4bcA17lnZ8GgPwEXRbvxBJGHnkiB6gLhRpTzjkjtMIvz7YORGW/Ptv2oMk8b5g+u7mRD6Dd7A==", + "node_modules/create-wdio/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, - "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^1.0.33" + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/css-tokenize/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "node_modules/create-wdio/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, - "license": "MIT" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/css-tokenize/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "node_modules/create-wdio/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/css-tokenize/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "node_modules/create-wdio/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/normalize-package-data": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.1.tgz", + "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^8.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/create-wdio/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/create-wdio/node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/read-pkg-up": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/create-wdio/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/create-wdio/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-functions-list": { + "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, + "license": "MIT", + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.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-shorthand-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", + "integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==", + "dev": true + }, + "node_modules/css-tokenize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", + "integrity": "sha512-gLmmbJdwH9HLY4bcA17lnZ8GgPwEXRbvxBJGHnkiB6gLhRpTzjkjtMIvz7YORGW/Ptv2oMk8b5g+u7mRD6Dd7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^1.0.33" + } + }, + "node_modules/css-tokenize/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/css-tokenize/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/css-tokenize/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true, "license": "MIT" }, @@ -4991,6 +5475,18 @@ } } }, + "node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-eql": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", @@ -5201,9 +5697,9 @@ } }, "node_modules/dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz", + "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==", "dev": true, "engines": { "node": ">=12" @@ -5285,9 +5781,9 @@ } }, "node_modules/edgedriver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.1.tgz", - "integrity": "sha512-/dM/PoBf22Xg3yypMWkmRQrBKEnSyNaZ7wHGCT9+qqT14izwtFT+QvdR89rjNkMfXwW+bSFoqOfbcvM+2Cyc7w==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.2.tgz", + "integrity": "sha512-UvFqd/IR81iPyWMcxXbUNi+xKWR7JjfoHjfuwjqsj9UHQKn80RpQmS0jf+U25IPi+gKVPcpOSKm0XkqgGMq4zQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -5295,7 +5791,7 @@ "@zip.js/zip.js": "^2.7.53", "decamelize": "^6.0.0", "edge-paths": "^3.0.5", - "fast-xml-parser": "^4.5.0", + "fast-xml-parser": "^5.0.8", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.5", "node-fetch": "^3.3.2", @@ -5308,18 +5804,6 @@ "node": ">=18.0.0" } }, - "node_modules/edgedriver/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/edgedriver/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -6514,6 +6998,48 @@ "node": ">=0.8.x" } }, + "node_modules/execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/exif-parser": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", @@ -6743,9 +7269,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "dev": true, "funding": [ { @@ -6754,7 +7280,7 @@ } ], "dependencies": { - "strnum": "^1.1.1" + "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -6862,9 +7388,9 @@ } }, "node_modules/filelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", - "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "dependencies": { "minimatch": "^5.0.1" @@ -6880,9 +7406,9 @@ } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -7045,19 +7571,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/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, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -7174,18 +7687,6 @@ "node": ">=18.0.0" } }, - "node_modules/geckodriver/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/geckodriver/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -8202,22 +8703,29 @@ "dev": true }, "node_modules/inquirer": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz", - "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.9.0.tgz", + "integrity": "sha512-LlFVmvWVCun7uEgPB3vups9NzBrjJn48kRNtFGw3xU1H5UXExTEz/oF1JGLaB0fvlkUB+W6JfgLcSEaSdH7RPA==", "dev": true, "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/prompts": "^6.0.1", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", + "@inquirer/core": "^10.1.15", + "@inquirer/prompts": "^7.8.0", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", - "mute-stream": "^1.0.0", - "run-async": "^3.0.0", - "rxjs": "^7.8.1" + "mute-stream": "^2.0.0", + "run-async": "^4.0.5", + "rxjs": "^7.8.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/interpret": { @@ -8366,6 +8874,18 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -8399,6 +8919,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -8482,15 +9014,14 @@ } }, "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" }, "bin": { "jake": "bin/cli.js" @@ -8500,9 +9031,9 @@ } }, "node_modules/jake/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, "node_modules/jest-diff": { @@ -9441,6 +9972,12 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -9575,12 +10112,12 @@ } }, "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/mwbot": { @@ -9724,6 +10261,34 @@ "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", "dev": true }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -11029,6 +11594,15 @@ "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", "dev": true }, + "node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -11061,9 +11635,9 @@ } }, "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.5.tgz", + "integrity": "sha512-oN9GTgxUNDBumHTTDmQ8dep6VIJbgj9S3dPP+9XylVLIK4xB9XTXtKWROd5pnhdXR9k0EgO1JRcNh0T+Ny2FsA==", "dev": true, "engines": { "node": ">=0.12.0" @@ -11145,6 +11719,25 @@ "regexp-tree": "~0.1.1" } }, + "node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "dependencies": { + "ret": "~0.5.0" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -11417,6 +12010,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -11762,9 +12367,9 @@ } }, "node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", "dev": true, "funding": [ { @@ -12837,18 +13442,6 @@ } } }, - "node_modules/webdriverio/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -12981,18 +13574,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -13639,63 +14220,44 @@ "dev": true }, "@inquirer/checkbox": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", - "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.0.tgz", + "integrity": "sha512-fdSw07FLJEU5vbpOPzXo5c6xmMGDzbZE2+niuDHX5N6mc6V0Ebso/q3xiHra4D73+PMsC8MJmcaZKuAAoaQsSA==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" } }, "@inquirer/confirm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", - "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", + "version": "5.1.14", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.14.tgz", + "integrity": "sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" } }, "@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "version": "10.1.15", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.15.tgz", + "integrity": "sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==", "dev": true, "requires": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", + "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "dependencies": { - "@types/node": { - "version": "22.15.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz", - "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, - "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 - }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -13710,126 +14272,124 @@ } }, "@inquirer/editor": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", - "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.15.tgz", + "integrity": "sha512-wst31XT8DnGOSS4nNJDIklGKnf+8shuauVrWzgKegWUe28zfCftcWZ2vktGdzJgcylWSS2SrDnYUb6alZcwnCQ==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "external-editor": "^3.1.0" } }, "@inquirer/expand": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", - "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.17.tgz", + "integrity": "sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" } }, "@inquirer/figures": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz", - "integrity": "sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", + "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", "dev": true }, "@inquirer/input": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", - "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.1.tgz", + "integrity": "sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" } }, "@inquirer/number": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", - "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.17.tgz", + "integrity": "sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" } }, "@inquirer/password": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", - "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.17.tgz", + "integrity": "sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2" } }, "@inquirer/prompts": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", - "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.0.tgz", + "integrity": "sha512-JHwGbQ6wjf1dxxnalDYpZwZxUEosT+6CPGD9Zh4sm9WXdtUp9XODCQD3NjSTmu+0OAyxWXNOqf0spjIymJa2Tw==", "dev": true, "requires": { - "@inquirer/checkbox": "^3.0.1", - "@inquirer/confirm": "^4.0.1", - "@inquirer/editor": "^3.0.1", - "@inquirer/expand": "^3.0.1", - "@inquirer/input": "^3.0.1", - "@inquirer/number": "^2.0.1", - "@inquirer/password": "^3.0.1", - "@inquirer/rawlist": "^3.0.1", - "@inquirer/search": "^2.0.1", - "@inquirer/select": "^3.0.1" + "@inquirer/checkbox": "^4.2.0", + "@inquirer/confirm": "^5.1.14", + "@inquirer/editor": "^4.2.15", + "@inquirer/expand": "^4.0.17", + "@inquirer/input": "^4.2.1", + "@inquirer/number": "^3.0.17", + "@inquirer/password": "^4.0.17", + "@inquirer/rawlist": "^4.1.5", + "@inquirer/search": "^3.1.0", + "@inquirer/select": "^4.3.1" } }, "@inquirer/rawlist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", - "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.5.tgz", + "integrity": "sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" } }, "@inquirer/search": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", - "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.0.tgz", + "integrity": "sha512-PMk1+O/WBcYJDq2H7foV0aAZSmDdkzZB9Mw2v/DmONRJopwA/128cS9M/TXWLKKdEQKZnKwBzqu2G4x/2Nqx8Q==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" } }, "@inquirer/select": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", - "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.1.tgz", + "integrity": "sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" } }, "@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", + "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", "dev": true, - "requires": { - "mute-stream": "^1.0.0" - } + "requires": {} }, "@isaacs/cliui": { "version": "8.0.2", @@ -14679,15 +15239,6 @@ "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", "dev": true }, - "@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/node": { "version": "20.19.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.1.tgz", @@ -14721,12 +15272,6 @@ "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", "dev": true }, - "@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", - "dev": true - }, "@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -14976,37 +15521,128 @@ } }, "@wdio/cli": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.15.0.tgz", - "integrity": "sha512-51fuO5nalIFMay94VrAl11hLwcUVrfKZ+4+2lmEtaZKpfTLUj6ugp9ls3suBPgrhWQimikICc1oIs5TmwXHQGg==", + "version": "9.18.4", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.18.4.tgz", + "integrity": "sha512-nSCMxko+g91KvUhIvUBp3ULnCDTBD8D5ma7LbPBDr7j72mQyXlQoNamKRCNsNVaFEXA/FtCmPXc1m/ynQDgeaA==", "dev": true, "requires": { - "@types/node": "^20.1.1", "@vitest/snapshot": "^2.1.1", - "@wdio/config": "9.15.0", - "@wdio/globals": "9.15.0", - "@wdio/logger": "9.15.0", - "@wdio/protocols": "9.15.0", - "@wdio/types": "9.15.0", - "@wdio/utils": "9.15.0", + "@wdio/config": "9.18.0", + "@wdio/globals": "9.17.0", + "@wdio/logger": "9.18.0", + "@wdio/protocols": "9.16.2", + "@wdio/types": "9.16.2", + "@wdio/utils": "9.18.0", "async-exit-hook": "^2.0.1", - "chalk": "^5.2.0", + "chalk": "^5.4.1", "chokidar": "^4.0.0", - "dotenv": "^16.3.1", - "ejs": "^3.1.9", - "execa": "^9.2.0", + "create-wdio": "9.18.2", + "dotenv": "^17.2.0", "import-meta-resolve": "^4.0.0", - "inquirer": "^11.0.1", "lodash.flattendeep": "^4.4.0", "lodash.pickby": "^4.6.0", "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", - "recursive-readdir": "^2.2.3", "tsx": "^4.7.2", - "webdriverio": "9.15.0", + "webdriverio": "9.18.4", "yargs": "^17.7.2" }, "dependencies": { + "@wdio/config": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.18.0.tgz", + "integrity": "sha512-fN+Z7SkKjb0u3UUMSxMN4d+CCZQKZhm/tx3eX7Rv+3T78LtpOjlesBYQ7Ax3tQ3tp8hgEo+CoOXU0jHEYubFrg==", + "dev": true, + "requires": { + "@wdio/logger": "9.18.0", + "@wdio/types": "9.16.2", + "@wdio/utils": "9.18.0", + "deepmerge-ts": "^7.0.3", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" + } + }, + "@wdio/globals": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.17.0.tgz", + "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==", + "dev": true, + "requires": {} + }, + "@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "requires": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + } + }, + "@wdio/protocols": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz", + "integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==", + "dev": true + }, + "@wdio/repl": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz", + "integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==", + "dev": true, + "requires": { + "@types/node": "^20.1.0" + } + }, + "@wdio/types": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.16.2.tgz", + "integrity": "sha512-P86FvM/4XQGpJKwlC2RKF3I21TglPvPOozJGG9HoL0Jmt6jRF20ggO/nRTxU0XiWkRdqESUTmfA87bdCO4GRkQ==", + "dev": true, + "requires": { + "@types/node": "^20.1.0" + } + }, + "@wdio/utils": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.18.0.tgz", + "integrity": "sha512-M+QH05FUw25aFXZfjb+V16ydKoURgV61zeZrMjQdW2aAiks3F5iiI9pgqYT5kr1kHZcMy8gawGqQQ+RVfKYscQ==", + "dev": true, + "requires": { + "@puppeteer/browsers": "^2.2.0", + "@wdio/logger": "9.18.0", + "@wdio/types": "9.16.2", + "decamelize": "^6.0.0", + "deepmerge-ts": "^7.0.3", + "edgedriver": "^6.1.2", + "geckodriver": "^5.0.0", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.2.24", + "mitt": "^3.0.1", + "safaridriver": "^1.0.0", + "split2": "^4.2.0", + "wait-port": "^1.1.0" + } + }, + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "chalk": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", @@ -15022,26 +15658,6 @@ "readdirp": "^4.0.1" } }, - "execa": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", - "dev": true, - "requires": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - } - }, "find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", @@ -15052,14 +15668,18 @@ "path-exists": "^5.0.0" } }, - "get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "requires": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" } }, "hosted-git-info": { @@ -15071,16 +15691,10 @@ "lru-cache": "^10.0.1" } }, - "is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true - }, - "is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "htmlfy": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz", + "integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==", "dev": true }, "json-parse-even-better-errors": { @@ -15104,6 +15718,15 @@ "p-locate": "^6.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" + } + }, "normalize-package-data": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", @@ -15115,16 +15738,6 @@ "validate-npm-package-license": "^3.0.4" } }, - "npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "requires": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - } - }, "p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -15170,12 +15783,6 @@ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true }, - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - }, "read-pkg": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", @@ -15205,11 +15812,23 @@ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true }, - "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 + "serialize-error": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz", + "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==", + "dev": true, + "requires": { + "type-fest": "^4.31.0" + } + }, + "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" + } }, "type-fest": { "version": "4.41.0", @@ -15217,6 +15836,58 @@ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true }, + "webdriver": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.18.0.tgz", + "integrity": "sha512-07lC4FLj45lHJo0FvLjUp5qkjzEGWJWKGsxLoe9rQ2Fg88iYsqgr9JfSj8qxHpazBaBd+77+ZtpmMZ2X2D1Zuw==", + "dev": true, + "requires": { + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "9.18.0", + "@wdio/logger": "9.18.0", + "@wdio/protocols": "9.16.2", + "@wdio/types": "9.16.2", + "@wdio/utils": "9.18.0", + "deepmerge-ts": "^7.0.3", + "https-proxy-agent": "^7.0.6", + "undici": "^6.21.3", + "ws": "^8.8.0" + } + }, + "webdriverio": { + "version": "9.18.4", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.18.4.tgz", + "integrity": "sha512-Q/gghz/Zt7EhTnbDQfLb61WgSwCksXZE60lEzmDXe4fULCH/6Js5IWUsne3W+BRy6nXeVvFscHD/d7S77dbamw==", + "dev": true, + "requires": { + "@types/node": "^20.11.30", + "@types/sinonjs__fake-timers": "^8.1.5", + "@wdio/config": "9.18.0", + "@wdio/logger": "9.18.0", + "@wdio/protocols": "9.16.2", + "@wdio/repl": "9.16.2", + "@wdio/types": "9.16.2", + "@wdio/utils": "9.18.0", + "archiver": "^7.0.1", + "aria-query": "^5.3.0", + "cheerio": "^1.0.0-rc.12", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "grapheme-splitter": "^1.0.4", + "htmlfy": "^0.8.1", + "is-plain-obj": "^4.1.0", + "jszip": "^3.10.1", + "lodash.clonedeep": "^4.5.0", + "lodash.zip": "^4.2.0", + "query-selector-shadow-dom": "^1.0.1", + "resq": "^1.11.0", + "rgb2hex": "0.2.5", + "serialize-error": "^12.0.0", + "urlpattern-polyfill": "^10.0.0", + "webdriver": "9.18.0" + } + }, "yocto-queue": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", @@ -15565,14 +16236,6 @@ "safaridriver": "^1.0.0", "split2": "^4.2.0", "wait-port": "^1.1.0" - }, - "dependencies": { - "decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true - } } }, "@wikimedia/codex-design-tokens": { @@ -16429,6 +17092,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", + "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", + "dev": true + }, "comment-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", @@ -16470,104 +17139,286 @@ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", - "dev": true - }, - "cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true - }, - "core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", - "dev": true, - "requires": { - "browserslist": "^4.23.0" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "requires": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - } - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true - }, - "crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "requires": { + "browserslist": "^4.23.0" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "requires": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true + }, + "crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "create-wdio": { + "version": "9.18.2", + "resolved": "https://registry.npmjs.org/create-wdio/-/create-wdio-9.18.2.tgz", + "integrity": "sha512-atf81YJfyTNAJXsNu3qhpqF4OO43tHGTpr88duAc1Hk4a0uXJAPUYLnYxshOuMnfmeAxlWD+NqGU7orRiXEuJg==", + "dev": true, + "requires": { + "chalk": "^5.3.0", + "commander": "^14.0.0", + "cross-spawn": "^7.0.3", + "ejs": "^3.1.10", + "execa": "^9.6.0", + "import-meta-resolve": "^4.1.0", + "inquirer": "^12.7.0", + "normalize-package-data": "^7.0.0", + "read-pkg-up": "^10.1.0", + "recursive-readdir": "^2.2.3", + "semver": "^7.6.3", + "type-fest": "^4.41.0", + "yargs": "^17.7.2" + }, + "dependencies": { + "chalk": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.5.0.tgz", + "integrity": "sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==", + "dev": true + }, + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true + }, + "lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "normalize-package-data": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.1.tgz", + "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==", + "dev": true, + "requires": { + "hosted-git-info": "^8.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "dependencies": { + "type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true + } + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + } + }, + "normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + } } }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "read-pkg-up": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" } + }, + "type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true + }, + "yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true } } }, @@ -16728,6 +17579,12 @@ "ms": "^2.1.3" } }, + "decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true + }, "deep-eql": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", @@ -16882,9 +17739,9 @@ } }, "dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz", + "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==", "dev": true }, "dunder-proto": { @@ -16947,28 +17804,22 @@ } }, "edgedriver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.1.tgz", - "integrity": "sha512-/dM/PoBf22Xg3yypMWkmRQrBKEnSyNaZ7wHGCT9+qqT14izwtFT+QvdR89rjNkMfXwW+bSFoqOfbcvM+2Cyc7w==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.2.tgz", + "integrity": "sha512-UvFqd/IR81iPyWMcxXbUNi+xKWR7JjfoHjfuwjqsj9UHQKn80RpQmS0jf+U25IPi+gKVPcpOSKm0XkqgGMq4zQ==", "dev": true, "requires": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", "decamelize": "^6.0.0", "edge-paths": "^3.0.5", - "fast-xml-parser": "^4.5.0", + "fast-xml-parser": "^5.0.8", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.5", "node-fetch": "^3.3.2", "which": "^5.0.0" }, "dependencies": { - "decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true - }, "isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -17789,6 +18640,38 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, + "execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "dev": true, + "requires": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "dependencies": { + "get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "requires": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + } + } + } + }, "exif-parser": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", @@ -17955,12 +18838,12 @@ "dev": true }, "fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "dev": true, "requires": { - "strnum": "^1.1.1" + "strnum": "^2.1.0" } }, "fastest-levenshtein": { @@ -18033,9 +18916,9 @@ } }, "filelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", - "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { "minimatch": "^5.0.1" @@ -18051,9 +18934,9 @@ } }, "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -18162,14 +19045,6 @@ "requires": { "cross-spawn": "^7.0.6", "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 - } } }, "forever-agent": { @@ -18253,12 +19128,6 @@ "which": "^5.0.0" }, "dependencies": { - "decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true - }, "isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -19018,19 +19887,18 @@ "dev": true }, "inquirer": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz", - "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.9.0.tgz", + "integrity": "sha512-LlFVmvWVCun7uEgPB3vups9NzBrjJn48kRNtFGw3xU1H5UXExTEz/oF1JGLaB0fvlkUB+W6JfgLcSEaSdH7RPA==", "dev": true, "requires": { - "@inquirer/core": "^9.2.1", - "@inquirer/prompts": "^6.0.1", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", + "@inquirer/core": "^10.1.15", + "@inquirer/prompts": "^7.8.0", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", - "mute-stream": "^1.0.0", - "run-async": "^3.0.0", - "rxjs": "^7.8.1" + "mute-stream": "^2.0.0", + "run-async": "^4.0.5", + "rxjs": "^7.8.2" } }, "interpret": { @@ -19145,6 +20013,12 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -19169,6 +20043,12 @@ "is-unc-path": "^1.0.0" } }, + "is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -19231,21 +20111,20 @@ } }, "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" }, "dependencies": { "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true } } @@ -20024,6 +20903,12 @@ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true }, + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -20123,9 +21008,9 @@ } }, "mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true }, "mwbot": { @@ -20222,6 +21107,24 @@ "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", "dev": true }, + "npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "requires": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "dependencies": { + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + } + } + }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -21212,6 +22115,12 @@ } } }, + "ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -21234,9 +22143,9 @@ } }, "run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.5.tgz", + "integrity": "sha512-oN9GTgxUNDBumHTTDmQ8dep6VIJbgj9S3dPP+9XylVLIK4xB9XTXtKWROd5pnhdXR9k0EgO1JRcNh0T+Ny2FsA==", "dev": true }, "run-parallel": { @@ -21284,6 +22193,15 @@ "regexp-tree": "~0.1.1" } }, + "safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "requires": { + "ret": "~0.5.0" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -21487,6 +22405,12 @@ "side-channel-map": "^1.0.1" } }, + "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 + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -21738,9 +22662,9 @@ "dev": true }, "strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", "dev": true }, "style-search": { @@ -22488,14 +23412,6 @@ "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", "webdriver": "9.15.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true - } } }, "websocket-driver": { @@ -22592,14 +23508,6 @@ "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" - }, - "dependencies": { - "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", - "dev": true - } } }, "ws": { diff --git a/package.json b/package.json index e82cdf7ab6..3cff236576 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "test": "grunt test && node build/checkModules.js && npm run minify-svg" }, "devDependencies": { - "@wdio/cli": "9.15.0", + "@wdio/cli": "9.18.4", "@wdio/junit-reporter": "9.15.0", "@wdio/local-runner": "9.15.0", "@wdio/mocha-framework": "9.15.0", From 285ffaab967d3490945c2b4b63f240e90dd060a0 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 8 Aug 2025 10:07:40 +0200 Subject: [PATCH 519/730] Localisation updates from https://translatewiki.net. Change-Id: Ib50c6bf9d42e47c038e1fed231577229893813c0 --- editcheck/i18n/az.json | 2 ++ editcheck/i18n/fi.json | 2 ++ editcheck/i18n/it.json | 1 + editcheck/i18n/ko.json | 1 + editcheck/i18n/lij.json | 11 +++++++++++ editcheck/i18n/mk.json | 2 ++ editcheck/i18n/ps.json | 1 + editcheck/i18n/uk.json | 27 +++++++++++++++++++++++++++ i18n/ve-mw/uk.json | 1 + i18n/ve-mw/vi.json | 2 +- i18n/ve-wmf/lij.json | 1 + i18n/ve-wmf/uk.json | 5 +++++ 12 files changed, 55 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index 52396f2146..bca237184f 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -9,6 +9,7 @@ "editcheck-dialog-action-yes": "Bəli", "editcheck-dialog-action-decline": "Rədd et", "editcheck-dialog-action-revise": "Nəzərdən keçir", + "editcheck-dialog-action-recheck": "Yenidən yoxla", "editcheck-dialog-action-back": "Geriyə", "editcheck-dialog-action-submit": "Təsdiq et", "editcheck-dialog-addref-description": "İstinad əlavə etməklə oxuculara bu məlumatın haradan gəldiyini anlamağa kömək edin.", @@ -40,6 +41,7 @@ "editcheck-tone-reject-appropriate": "Ton uyğun gəlir", "editcheck-tone-reject-uncertain": "Tonu necə dəyişdirəcəyimi bilmirəm", "editcheck-tone-reject-other": "Digər", + "editcheck-tone-thank": "Tonu yenidən nəzərdən keçirdiyiniz üçün təşəkkür edirik!", "editcheck-reject-description": "Digər redaktorlar niyə bu seçimi etdiyinizi bilmək istəyəcəklər.", "editcheck-review-title": "Dəyişiklikləri yoxla", "tag-editcheck-reference-decline-common-knowledge": "Redaktə Yoxlanışı (istinadlar) rədd edildi (hamının bildiyi)", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 54012b26dd..72e753b62b 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -10,6 +10,7 @@ "editcheck-dialog-action-yes": "Kyllä", "editcheck-dialog-action-decline": "Hylkää", "editcheck-dialog-action-revise": "Muokkaa", + "editcheck-dialog-action-recheck": "Tarkista uudelleen", "editcheck-dialog-action-back": "Takaisin", "editcheck-dialog-action-submit": "Lähetä", "editcheck-dialog-addref-description": "Auta lukijoita ymmärtämään, mistä tämä tieto on peräisin lisäämällä lähdeviite.", @@ -41,6 +42,7 @@ "editcheck-tone-reject-appropriate": "Sävy on sopiva", "editcheck-tone-reject-uncertain": "En ole varma, miten korjata sävyä", "editcheck-tone-reject-other": "Muu", + "editcheck-tone-thank": "Kiitos sävyn korjaamisesta!", "editcheck-reject-description": "Muut muokkaajat arvostaisivat kuulla, miksi teit tämän valinnan.", "editcheck-review-title": "Tarkasta muutokset", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", diff --git a/editcheck/i18n/it.json b/editcheck/i18n/it.json index af87e68baa..9ffba5d249 100644 --- a/editcheck/i18n/it.json +++ b/editcheck/i18n/it.json @@ -7,6 +7,7 @@ }, "editcheck-dialog-action-no": "No", "editcheck-dialog-action-yes": "Sì", + "editcheck-dialog-action-recheck": "Ricontrolla", "editcheck-dialog-action-back": "Indietro", "editcheck-dialog-action-submit": "Invia", "editcheck-dialog-addref-description": "Aiuta i lettori a capire da dove provengono queste informazioni aggiungendo una fonte.", diff --git a/editcheck/i18n/ko.json b/editcheck/i18n/ko.json index 69f652377f..627abb23f1 100644 --- a/editcheck/i18n/ko.json +++ b/editcheck/i18n/ko.json @@ -19,6 +19,7 @@ "editcheck-dialog-addref-reject-other": "그 외", "editcheck-dialog-addref-success-notify": "인용 추가해주셔서 감사합니다!", "editcheck-dialog-addref-title": "인용 추가", + "editcheck-copyvio-keep-other": "기타", "editcheck-tone-reject-other": "기타", "editcheck-review-title": "변경사항 검토", "tag-editcheck-reference-decline-common-knowledge": "편집 검사(출처)를 거부함 (상식)", diff --git a/editcheck/i18n/lij.json b/editcheck/i18n/lij.json index 4b7e1da682..9106b79236 100644 --- a/editcheck/i18n/lij.json +++ b/editcheck/i18n/lij.json @@ -8,6 +8,7 @@ "editcheck-dialog-action-yes": "Scì", "editcheck-dialog-action-decline": "Refûa", "editcheck-dialog-action-revise": "Védde tórna", + "editcheck-dialog-action-recheck": "Contròlla tórna", "editcheck-dialog-action-back": "Inderê", "editcheck-dialog-action-submit": "Mànda", "editcheck-dialog-addref-description": "Agiùtta i letoî a capî da dónde vêgnan st'informaçioìn chi azonzéndoghe 'na nòtta.", @@ -22,6 +23,15 @@ "editcheck-dialog-title": "Prìmma de pubricâ", "editcheck-copyvio-title": "Contegnûo inpastetòu", "editcheck-copyvio-description": "Cómme régola generâle, no copiâ do tèsto da de âtre vivàgne. De sòlito st'açión chi a l'é tànto 'na violaçión do dirìtto d'outô che 'n plâgio.", + "editcheck-copyvio-action-keep": "Scì, tégnilo", + "editcheck-copyvio-action-remove": "No, lévilo", + "editcheck-copyvio-keep-description": "Di âtri editoî poriéivan aprexâ de savéine de ciù in scê tò raxoìn pe conservâ sto tèsto copiòu chi.", + "editcheck-copyvio-keep-wrote": "Mi ò scrîto sto contegnûo chi e no l'é pubricòu da de âtre pàrte", + "editcheck-copyvio-keep-permission": "Mi ò o permìsso pe dêuviâ tórna sto contegnûo chi", + "editcheck-copyvio-keep-free": "Sto tèsto chi o l'é into pùbrico domìnio ò o l'é concèsso in licénsa lìbera", + "editcheck-copyvio-keep-other": "Âtro", + "editcheck-copyvio-keep-notify": "Gràçie p'avéi sconpartîo a tò raxón pe tegnî o tèsto incolòu!", + "editcheck-copyvio-remove-notify": "Gràçie p'avéi levòu sto tèsto chi!", "editcheck-tone-title": "Rivédde o tón?", "editcheck-tone-description": "Di âtri uténti revixónn-an de spesso sta ménn-a de formolaçión, da-o tón ch'o no l'é neotrâle. [$1 Savéine de ciù]", "editcheck-tone-footer": "Identificòu pe mêzo de 'n [$1 modéllo BERT].", @@ -30,6 +40,7 @@ "editcheck-tone-reject-appropriate": "O tón o l'é apropiòu", "editcheck-tone-reject-uncertain": "No són segûo de cómme rivédde o tón", "editcheck-tone-reject-other": "Âtro", + "editcheck-tone-thank": "Gràçie p'avéi revìsto o tón!", "editcheck-reject-description": "Di âtri editoî dexidiéivan savéine de ciù in sciô perché t'æ fæto sta çèrnia chi.", "editcheck-review-title": "Rivéddi modìfiche", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (nòtte) refuòu (conoscénsa sconpartîa)", diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index 10e8ee328d..5d9f549569 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -8,6 +8,7 @@ "editcheck-dialog-action-yes": "Да", "editcheck-dialog-action-decline": "Одбиј", "editcheck-dialog-action-revise": "Преработи", + "editcheck-dialog-action-recheck": "Провери повторно", "editcheck-dialog-action-back": "Назад", "editcheck-dialog-action-submit": "Поднеси", "editcheck-dialog-addref-description": "Помогнете им на читателите да разберат од каде доаѓаат информациите ставајќи навод.", @@ -39,6 +40,7 @@ "editcheck-tone-reject-appropriate": "Тонот е соодветен.", "editcheck-tone-reject-uncertain": "Не знам како да го преработам тонот", "editcheck-tone-reject-other": "Друго", + "editcheck-tone-thank": "Ви благодариме што го преработивте тонот!", "editcheck-reject-description": "Другите корисници би ценеле да дознаат зошто го направивте овој избор.", "editcheck-review-title": "Прегледај промени", "tag-editcheck-reference-decline-common-knowledge": "Проверката на уредувањето (наводи) е одбиена (општопознато)", diff --git a/editcheck/i18n/ps.json b/editcheck/i18n/ps.json index 14b3f6ab76..4ca56ca2e1 100644 --- a/editcheck/i18n/ps.json +++ b/editcheck/i18n/ps.json @@ -4,6 +4,7 @@ "شاه زمان پټان" ] }, + "editcheck-dialog-action-recheck": "بياځلي‌سم‌کتنه", "editcheck-dialog-action-back": "پر شا کېدل", "editcheck-dialog-action-submit": "سپارل", "editcheck-tone-reject-uncertain": "زه ډاډه نه يم چې څنگه وينگ کره کړم", diff --git a/editcheck/i18n/uk.json b/editcheck/i18n/uk.json index ac172d5ea8..19d8903b95 100644 --- a/editcheck/i18n/uk.json +++ b/editcheck/i18n/uk.json @@ -6,6 +6,11 @@ }, "editcheck-dialog-action-no": "Ні", "editcheck-dialog-action-yes": "Так", + "editcheck-dialog-action-decline": "Відхилити", + "editcheck-dialog-action-revise": "Переглянути", + "editcheck-dialog-action-recheck": "Перевірити ще раз", + "editcheck-dialog-action-back": "Назад", + "editcheck-dialog-action-submit": "Надіслати", "editcheck-dialog-addref-description": "Допоможіть читачам зрозуміти, звідки ця інформація, додавши вказівку на джерело.", "editcheck-dialog-addref-reject-question": "Чому ви не додаєте вказівку на джерело?", "editcheck-dialog-addref-reject-description": "Інші редактори хотіли б дізнатися більше про ваше рішення відхилити додавання джерела.", @@ -16,6 +21,28 @@ "editcheck-dialog-addref-success-notify": "Дякуємо, що вказали джерело!", "editcheck-dialog-addref-title": "Додати джерело", "editcheck-dialog-title": "Перед публікацією", + "editcheck-copyvio-title": "Вставлений вміст", + "editcheck-copyvio-description": "Як правило, не копіюйте текст з інших джерел. Зазвичай це є порушенням авторських прав та плагіатом.", + "editcheck-copyvio-action-keep": "Так, залишити це.", + "editcheck-copyvio-action-remove": "Ні, прибрати це", + "editcheck-copyvio-keep-description": "Іншим редакторам буде цінно дізнатися, чому ви зберігаєте цей вставлений текст.", + "editcheck-copyvio-keep-wrote": "Цей контент написано мною, і це ще ніде не опубліковано", + "editcheck-copyvio-keep-permission": "Я маю дозвіл на повторне використання цього контенту", + "editcheck-copyvio-keep-free": "Цей текст є суспільним надбанням або вільноліцензований", + "editcheck-copyvio-keep-other": "Інше", + "editcheck-copyvio-keep-notify": "Дякуємо вам, що поділилися своєю причиною, чому ви зберігаєте вставлений текст!", + "editcheck-copyvio-remove-notify": "Дякуємо, що прибрали цей текст!", + "editcheck-tone-title": "Переглянути тон?", + "editcheck-tone-description": "Інші користувачі часто переписують подібні формулювання, кажучи, що тон незбалансований. [$1 Дізнатися більше]", + "editcheck-tone-footer": "Визначено за допомогою [$1 моделі BERT]", + "editcheck-tone-title-acted": "Перегляд тону", + "editcheck-tone-description-acted": "Уникайте висловлювань, які є улесливими, зневажливими, розпливчастими, клішованими або такими, що схвалюють певну точку зору.", + "editcheck-tone-reject-appropriate": "Тон відповідний", + "editcheck-tone-reject-uncertain": "Я не знаю, як змінити тон", + "editcheck-tone-reject-other": "Інше", + "editcheck-tone-thank": "Дякуємо, що скоригували тон!", + "editcheck-reject-description": "Іншим редакторам буде цінно дізнатися, чому ви зробили такий вибір.", + "editcheck-review-title": "Переглянути зміни", "tag-editcheck-reference-decline-common-knowledge": "Підказку додати посилання відхилено через загальновідомість", "tag-editcheck-reference-decline-common-knowledge-description": "Підказку додати примітку на джерело відхилено через загальновідомість", "tag-editcheck-reference-decline-irrelevant": "Підказку додати примітку на джерело відхилено («не стосується»)", diff --git a/i18n/ve-mw/uk.json b/i18n/ve-mw/uk.json index 1af2a50004..3dd27c0f46 100644 --- a/i18n/ve-mw/uk.json +++ b/i18n/ve-mw/uk.json @@ -268,6 +268,7 @@ "visualeditor-includes-includeonly-description": "Коли вміст цієї сторінки використовується на іншій сторінці, тут буде включено такий додатковий вміст:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Докладніше про часткове включення]", "visualeditor-languages-tool": "Мови", + "visualeditor-linkcontext-uneditable": "Вибачте, це посилання наразі можна редагувати лише у режимі вихідного тексту.", "visualeditor-linkinspector-button-link-external": "Зовнішній сайт", "visualeditor-linkinspector-button-link-internal": "Пошук внутрішніх сторінок", "visualeditor-linkinspector-convert-link-isbn": "Перетворити в ISBN-посилання", diff --git a/i18n/ve-mw/vi.json b/i18n/ve-mw/vi.json index 5dc1319b4d..87e4dcf0c5 100644 --- a/i18n/ve-mw/vi.json +++ b/i18n/ve-mw/vi.json @@ -329,7 +329,7 @@ "visualeditor-mwpredialog-convert": "Cho phép định dạng hóa văn bản", "visualeditor-mwpredialog-title": "Văn bản thuần định dạng sẵn", "visualeditor-mwsignature-tool": "Chữ ký của bạn", - "visualeditor-preference-visualeditor": "Bật trình chỉnh sửa trực quan", + "visualeditor-preference-visualeditor": "Bật trình soạn thảo trực quan", "visualeditor-preference-newwikitexteditor-enable": "Sử dụng chế độ văn bản wiki bên trong trình soạn thảo trực quan, thay vì một trình soạn thảo văn bản wiki khác", "visualeditor-preference-newwikitexteditor-help": "Đôi khi, trình soạn thảo này còn được gọi là “Trình soạn thảo mã wiki 2017”.", "visualeditor-preference-tabs": "Chế độ sửa đổi:", diff --git a/i18n/ve-wmf/lij.json b/i18n/ve-wmf/lij.json index fe36fa124e..9787a4f97f 100644 --- a/i18n/ve-wmf/lij.json +++ b/i18n/ve-wmf/lij.json @@ -12,6 +12,7 @@ "tag-editcheck-references-activated-description": "EditCheck o crédde che 'na nòtta a poriéiva êse necesâia e che l'UI a l'é stæta mostrâ", "tag-editcheck-references-shown": "Edit Check (nòtte) mostròu", "tag-editcheck-references-shown-description": "EditCheck o crédde che 'na nòtta a poriéiva êse necesâia e che l'UI a l'é stæta mostrâ", + "tag-editcheck-tone-description": "L'EditCheck o l'à notòu 'n problêma potençiâle co-o tón de quàrche contegnûo azónto", "tag-editcheck-tone-shown": "Edit Check (tón) mostròu", "tag-editcheck-tone-shown-description": "EditCheck o crédde che 'n agiustaménto do tón inte çèrto contegnûo o poriéiva êse necesâio, e l'UI a l'é stæta mostrâ", "tag-visualeditor": "Modìfica vizoâle", diff --git a/i18n/ve-wmf/uk.json b/i18n/ve-wmf/uk.json index 70a5ca1cd9..2b0f323eb7 100644 --- a/i18n/ve-wmf/uk.json +++ b/i18n/ve-wmf/uk.json @@ -25,6 +25,11 @@ "tag-editcheck-references-description": "Звіряння редагування показало, що варто додати посилання на джерело", "tag-editcheck-references-activated": "Звіряння редагувань (посилання на джерела) активовано", "tag-editcheck-references-activated-description": "Звіряння редагування показало, що варто додати посилання на джерело, і показано інтерфейс користувача для цього", + "tag-editcheck-references-shown": "Звіряння редагувань (посилання на джерела) показано", + "tag-editcheck-references-shown-description": "Звіряння редагування показало, що варто додати посилання на джерело, і показано інтерфейс користувача для цього", + "tag-editcheck-tone-description": "Звіряння редагувань виявило потенційну проблему з тоном деякого доданого контенту", + "tag-editcheck-tone-shown": "Звіряння редагувань (тон) показано", + "tag-editcheck-tone-shown-description": "Звіряння редагувань вважає, що, можливо, потрібно було скоригувати тон певного контенту, і показано інтерфейс користувача для цього", "tag-visualeditor": "Візуальний редактор", "tag-visualeditor-description": "Редагування виконано з використанням [[{{MediaWiki:visualeditor-descriptionpagelink}}|візуального редактора]]", "tag-visualeditor-needcheck": "Візуальний редактор: Перевірити", From 6aa4b7063a985ecc3beaafbe963cdd780400e9a7 Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Sun, 10 Aug 2025 15:34:34 +0000 Subject: [PATCH 520/730] build: Updating npm dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * @inquirer/editor: 4.2.15 → 4.2.16 * https://github.com/advisories/GHSA-52f5-9888-hmc6 * external-editor: 3.1.0 → * https://github.com/advisories/GHSA-52f5-9888-hmc6 * tmp: 0.0.30, 0.0.33 → 0.0.30 * https://github.com/advisories/GHSA-52f5-9888-hmc6 Change-Id: Ib889bf865429ed1cab6bc88da6d8da9e4d586ca1 --- package-lock.json | 205 +++++++++++++--------------------------------- 1 file changed, 59 insertions(+), 146 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8bcd94912c..2fa190c2d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -771,14 +771,14 @@ } }, "node_modules/@inquirer/editor": { - "version": "4.2.15", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.15.tgz", - "integrity": "sha512-wst31XT8DnGOSS4nNJDIklGKnf+8shuauVrWzgKegWUe28zfCftcWZ2vktGdzJgcylWSS2SrDnYUb6alZcwnCQ==", + "version": "4.2.16", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.16.tgz", + "integrity": "sha512-iSzLjT4C6YKp2DU0fr8T7a97FnRRxMO6CushJnW5ktxLNM2iNeuyUuUA5255eOLPORoGYCrVnuDOEBdGkHGkpw==", "dev": true, "dependencies": { "@inquirer/core": "^10.1.15", - "@inquirer/type": "^3.0.8", - "external-editor": "^3.1.0" + "@inquirer/external-editor": "^1.0.0", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" @@ -814,6 +814,22 @@ } } }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.0.tgz", + "integrity": "sha512-5v3YXc5ZMfL6OJqXPrX9csb4l7NlQA2doO1yynUjpUChT9hg4JcuBVP0RbsEJ/3SL/sxWEyFjT2W69ZhtoBWqg==", + "dev": true, + "dependencies": { + "chardet": "^2.1.0", + "iconv-lite": "^0.6.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + } + }, "node_modules/@inquirer/figures": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", @@ -4533,9 +4549,9 @@ } }, "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", "dev": true }, "node_modules/check-error": { @@ -5869,18 +5885,6 @@ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, - "node_modules/encoding-sniffer/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -7162,20 +7166,6 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -8308,18 +8298,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/grunt/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/grunt/node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -8575,12 +8553,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -11777,18 +11755,6 @@ "rimraf": "bin.js" } }, - "node_modules/selenium-webdriver/node_modules/tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/semlog": { "version": "0.6.10", "resolved": "https://registry.npmjs.org/semlog/-/semlog-0.6.10.tgz", @@ -12974,15 +12940,15 @@ } }, "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", "dev": true, "dependencies": { - "os-tmpdir": "~1.0.2" + "os-tmpdir": "~1.0.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=0.4.0" } }, "node_modules/to-regex-range": { @@ -13477,18 +13443,6 @@ "node": ">=18" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -14272,14 +14226,14 @@ } }, "@inquirer/editor": { - "version": "4.2.15", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.15.tgz", - "integrity": "sha512-wst31XT8DnGOSS4nNJDIklGKnf+8shuauVrWzgKegWUe28zfCftcWZ2vktGdzJgcylWSS2SrDnYUb6alZcwnCQ==", + "version": "4.2.16", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.16.tgz", + "integrity": "sha512-iSzLjT4C6YKp2DU0fr8T7a97FnRRxMO6CushJnW5ktxLNM2iNeuyUuUA5255eOLPORoGYCrVnuDOEBdGkHGkpw==", "dev": true, "requires": { "@inquirer/core": "^10.1.15", - "@inquirer/type": "^3.0.8", - "external-editor": "^3.1.0" + "@inquirer/external-editor": "^1.0.0", + "@inquirer/type": "^3.0.8" } }, "@inquirer/expand": { @@ -14293,6 +14247,16 @@ "yoctocolors-cjs": "^2.1.2" } }, + "@inquirer/external-editor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.0.tgz", + "integrity": "sha512-5v3YXc5ZMfL6OJqXPrX9csb4l7NlQA2doO1yynUjpUChT9hg4JcuBVP0RbsEJ/3SL/sxWEyFjT2W69ZhtoBWqg==", + "dev": true, + "requires": { + "chardet": "^2.1.0", + "iconv-lite": "^0.6.3" + } + }, "@inquirer/figures": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", @@ -16918,9 +16882,9 @@ } }, "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", "dev": true }, "check-error": { @@ -17866,17 +17830,6 @@ "requires": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } } }, "end-of-stream": { @@ -18759,17 +18712,6 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -19456,15 +19398,6 @@ "path-is-absolute": "^1.0.0" } }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -19793,12 +19726,12 @@ "dev": true }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "ieee754": { @@ -22234,15 +22167,6 @@ "requires": { "glob": "^7.1.3" } - }, - "tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.1" - } } } }, @@ -23076,12 +23000,12 @@ "dev": true }, "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", "dev": true, "requires": { - "os-tmpdir": "~1.0.2" + "os-tmpdir": "~1.0.1" } }, "to-regex-range": { @@ -23438,17 +23362,6 @@ "dev": true, "requires": { "iconv-lite": "0.6.3" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } } }, "whatwg-mimetype": { From a1d0ab131455ee89b296f44ca80e47ab1bba8cf8 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 11 Aug 2025 09:38:58 +0200 Subject: [PATCH 521/730] Localisation updates from https://translatewiki.net. Change-Id: I15b46c6d8acfe3ae41b866c8a04b2f30e00c5e71 --- editcheck/i18n/ar.json | 2 ++ editcheck/i18n/ia.json | 11 +++++++++ editcheck/i18n/sr-ec.json | 1 + editcheck/i18n/yue-hant.json | 45 ++++++++++++++++++++++++++++++++++++ i18n/ve-mw/ban.json | 3 +++ i18n/ve-mw/bol.json | 2 +- i18n/ve-mw/yua.json | 12 ++++++++++ i18n/ve-mw/yue-hant.json | 24 +++++++++---------- i18n/ve-wmf/yua.json | 38 ++++++++++++++++++++++++++++++ i18n/ve-wmf/yue-hant.json | 5 ++-- 10 files changed, 128 insertions(+), 15 deletions(-) create mode 100644 editcheck/i18n/yue-hant.json create mode 100644 i18n/ve-wmf/yua.json diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index 62c28f977f..18909d9243 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -10,6 +10,7 @@ "editcheck-dialog-action-yes": "نعم", "editcheck-dialog-action-decline": "رفض", "editcheck-dialog-action-revise": "مراجعة", + "editcheck-dialog-action-recheck": "إعادة فحص", "editcheck-dialog-action-back": "رجوع", "editcheck-dialog-action-submit": "إرسال", "editcheck-dialog-addref-description": "ساعدوا القراء على فهم مصدر هذه المعلومات عن طريق إضافة استشهاد.", @@ -41,6 +42,7 @@ "editcheck-tone-reject-appropriate": "الأسلوب مناسب", "editcheck-tone-reject-uncertain": "أنا لست متيقنًا من كيفية مراجعة الأسلوب", "editcheck-tone-reject-other": "غيرها", + "editcheck-tone-thank": "شكرا لك على مراجعة النغمة!", "editcheck-reject-description": "سيكون من المفيد للمحررين الآخرين معرفة سبب اختيارك لهذا.", "editcheck-review-title": "مراجعة التغييرات", "tag-editcheck-reference-decline-common-knowledge": "تم رفض (ثقافة عامة) التحقّق من التحرير (مراجع)", diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index c4c4489a9e..b9ea1333e7 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -8,6 +8,7 @@ "editcheck-dialog-action-yes": "Si", "editcheck-dialog-action-decline": "Declinar", "editcheck-dialog-action-revise": "Revisar", + "editcheck-dialog-action-recheck": "Reverificar", "editcheck-dialog-action-back": "Retornar", "editcheck-dialog-action-submit": "Submitter", "editcheck-dialog-addref-description": "Adde un citation pro adjutar le lectores a comprender de ubi proveni iste information.", @@ -22,6 +23,15 @@ "editcheck-dialog-title": "Ante de publicar", "editcheck-copyvio-title": "Contento collate", "editcheck-copyvio-description": "Como regula general, non copia contento de altere fontes. Isto es generalmente un violation del derecto de autor e un plagiato.", + "editcheck-copyvio-action-keep": "Si, mantener", + "editcheck-copyvio-action-remove": "No, remover", + "editcheck-copyvio-keep-description": "Altere redactores volerea cognoscer tu ration pro conservar iste texto collate.", + "editcheck-copyvio-keep-wrote": "Io ha scribite iste contento e illo non ha essite publicate alterubi", + "editcheck-copyvio-keep-permission": "Io ha le permission de reusar iste contento", + "editcheck-copyvio-keep-free": "Iste texto es in le dominio public o sub licentia libere", + "editcheck-copyvio-keep-other": "Altere", + "editcheck-copyvio-keep-notify": "Gratias pro indicar tu ration pro conservar le texto collate!", + "editcheck-copyvio-remove-notify": "Gratias pro remover iste texto!", "editcheck-tone-title": "Revisar le tono?", "editcheck-tone-description": "Altere usatores sovente corrige iste genere de formulation perque le tono non se considera como equilibrate. [$1 Leger plus]", "editcheck-tone-footer": "Identificate usante un [$1 modello BERT]", @@ -30,6 +40,7 @@ "editcheck-tone-reject-appropriate": "Le tono es appropriate", "editcheck-tone-reject-uncertain": "Io non es secur como revisar le tono", "editcheck-tone-reject-other": "Altere", + "editcheck-tone-thank": "Gratias pro revisar le tono!", "editcheck-reject-description": "Altere redactores appreciarea saper proque tu ha optate pro isto.", "editcheck-review-title": "Revider cambiamentos", "tag-editcheck-reference-decline-common-knowledge": "Verification de modification (referentias) declinate (cognoscentia commun)", diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index 0c8ff1f0bd..47dc3b10dc 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -7,6 +7,7 @@ "editcheck-dialog-action-no": "Не", "editcheck-dialog-action-yes": "Да", "editcheck-dialog-action-decline": "Одбаци", + "editcheck-dialog-action-recheck": "Провери", "editcheck-dialog-action-back": "Назад", "editcheck-dialog-action-submit": "Проследи", "editcheck-dialog-addref-description": "Помозите читаоцима да знају одакле информација долази додавањем референце.", diff --git a/editcheck/i18n/yue-hant.json b/editcheck/i18n/yue-hant.json new file mode 100644 index 0000000000..2c6addb393 --- /dev/null +++ b/editcheck/i18n/yue-hant.json @@ -0,0 +1,45 @@ +{ + "@metadata": { + "authors": [ + "Ktchankt" + ] + }, + "editcheck-dialog-action-no": "唔係", + "editcheck-dialog-action-yes": "係", + "editcheck-dialog-action-decline": "拒絕", + "editcheck-dialog-action-revise": "修改", + "editcheck-dialog-action-recheck": "重新檢查", + "editcheck-dialog-action-back": "返去", + "editcheck-dialog-action-submit": "遞交", + "editcheck-dialog-addref-description": "加個文獻引用去幫讀者了解呢項資料係邊度嚟。", + "editcheck-dialog-addref-reject-question": "點解你唔加文獻引用?", + "editcheck-dialog-addref-reject-description": "其他編者想知點解你唔加文獻引用。", + "editcheck-dialog-addref-reject-irrelevant": "我唔認為文獻引用關我改嘅嘢事。", + "editcheck-dialog-addref-reject-common-knowledge": "我加嘅嘢好多人都識。", + "editcheck-dialog-addref-reject-uncertain": "我唔肯定要加咩文獻引用。", + "editcheck-dialog-addref-reject-other": "其他", + "editcheck-dialog-addref-success-notify": "多謝你加文獻引用!", + "editcheck-dialog-addref-title": "加文獻引用", + "editcheck-dialog-title": "發佈前", + "editcheck-copyvio-title": "貼上嘅內容", + "editcheck-copyvio-description": "一般情況下唔好由其他來源直接複製文字貼過嚟。咁做多數都係侵犯版權同抄襲。", + "editcheck-copyvio-action-keep": "好,保留佢", + "editcheck-copyvio-action-remove": "唔好,剷走佢", + "editcheck-copyvio-keep-description": "其他編者想知點解你貼呢堆字。", + "editcheck-copyvio-keep-wrote": "呢啲內容係我自己寫,冇喺其他地方發佈過", + "editcheck-copyvio-keep-permission": "我獲授權去重用呢啲內容", + "editcheck-copyvio-keep-free": "呢啲內容係喺公家領域或者自由版權", + "editcheck-copyvio-keep-other": "其他", + "editcheck-copyvio-keep-notify": "多謝你解釋點解你貼呢堆字!", + "editcheck-copyvio-remove-notify": "多謝你剷走呢堆字!", + "editcheck-tone-reject-other": "其他", + "editcheck-review-title": "審核改動", + "tag-editcheck-reference-decline-common-knowledge": "編輯檢查(參考)被拒(常識)", + "tag-editcheck-reference-decline-common-knowledge-description": "編輯檢查參考功能被拒,畀嘅原因係加嘅內容係常識", + "tag-editcheck-reference-decline-irrelevant": "編輯檢查(參考)被拒(唔關事)", + "tag-editcheck-reference-decline-irrelevant-description": "編輯檢查參考功能被拒,畀嘅原因係加嘅內容係唔關事", + "tag-editcheck-reference-decline-other": "編輯檢查(參考)被拒(其他)", + "tag-editcheck-reference-decline-other-description": "編輯檢查參考功能被拒,畀嘅係其他原因", + "tag-editcheck-reference-decline-uncertain": "編輯檢查(參考)被拒(唔肯定)", + "tag-editcheck-reference-decline-uncertain-description": "編輯檢查參考功能被拒,畀嘅原因係唔肯定加咩參考" +} diff --git a/i18n/ve-mw/ban.json b/i18n/ve-mw/ban.json index d661911328..541fa68b9a 100644 --- a/i18n/ve-mw/ban.json +++ b/i18n/ve-mw/ban.json @@ -12,6 +12,9 @@ "collabpad-import-subtitle": "Kaimpor saking $1", "collabpad": "CollabPad", "tooltip-ca-ve-edit": "Uah kaca puniki", + "tooltip-ca-ve-edit-local": "Uah kaca déskripsi lokal", + "tooltip-ca-ve-create": "Kardi kaca puniki", + "tooltip-ca-ve-create-local": "Kardi kaca déskripsi lokal", "tooltip-ca-editsource": "Uah kode wit kaca puniki", "tooltip-ca-createsource": "Kardi kode wit kaca puniki", "visualeditor-advancedsettings-tool": "Setélan lantur", diff --git a/i18n/ve-mw/bol.json b/i18n/ve-mw/bol.json index 1b6d445a9b..2406b4b724 100644 --- a/i18n/ve-mw/bol.json +++ b/i18n/ve-mw/bol.json @@ -8,6 +8,6 @@ "visualeditor-ca-createlocaldescriptionsource": "In sawwe kadi mosa ga konni", "visualeditor-ca-createsource": "Ƙirƙiri tushe", "visualeditor-ca-editsource": "Ramu ko pari", - "visualeditor-ca-editsource-section": "Ramu ko pari", + "visualeditor-ca-editsource-section": "ramu ko pari", "visualeditor-descriptionpagelink": "Project:VisualEditor" } diff --git a/i18n/ve-mw/yua.json b/i18n/ve-mw/yua.json index b7dcb03939..a32bf38dc8 100644 --- a/i18n/ve-mw/yua.json +++ b/i18n/ve-mw/yua.json @@ -3,9 +3,21 @@ "authors": [ "Juanchuy0", "Lorenzoitza", + "Tunichmay", + "ValentinaTec", "VicenteCancheM" ] }, + "collabpad-doctitle": "Taak’in: $1", + "collabpad-import-subtitle": "Tojol $1", + "collabpad": "Plataforma u múul meyaj", + "tooltip-ca-ve-edit": "K'ex le waala'", + "tooltip-ca-ve-edit-local": "Edit le linki abas kaambal u tsoolil le kúuchila'", + "tooltip-ca-ve-create": "beet a \"pagina\"", + "tooltip-ca-ve-create-local": "beet a\"pagina\"u tsoolil le kúuchila'", + "tooltip-ca-editsource": "je'el beet \"código fuente\"ti le\"pagina\"'", + "tooltip-ca-editsource-local": "je'el beet le \"codigo fuente\" ti' le \"pagina\" tu tsololil kuuchil", + "tooltip-ca-createsource": "beet u \"codigo fuente\"ti le\"pagina\"", "visualeditor-ca-createlocaldescriptionsource": "A'al tu'ux u taal", "visualeditor-ca-createsource": "A'al tu'ux u taal", "visualeditor-ca-editsource": "k'ex le coodigóo", diff --git a/i18n/ve-mw/yue-hant.json b/i18n/ve-mw/yue-hant.json index 4fd7c4d3ab..5326a0b803 100644 --- a/i18n/ve-mw/yue-hant.json +++ b/i18n/ve-mw/yue-hant.json @@ -54,7 +54,7 @@ "visualeditor-changedesc-mwcategory-sortkey-set": "排序鍵設定為$1", "visualeditor-changedesc-mwcategory-sortkey-unset": "排序鍵由$1開始取消設定", "visualeditor-changedesc-mwlanguagevariant": "語言變體標記已經改咗", - "visualeditor-changedesc-mwredirect": "重新導向目標由$1變咗去$2", + "visualeditor-changedesc-mwredirect": "跳轉目標由$1變咗去$2", "visualeditor-changedesc-mwtransclusion": "範本參數改咗", "visualeditor-desc": "MediaWiki 嘅即見編輯器", "visualeditor-descriptionpagelink": "Project:VisualEditor", @@ -124,14 +124,14 @@ "visualeditor-dialog-meta-settings-hiddencat-help": "你可以防止呢個類別喺會員頁面嘅類別清單入面顯示,呢個方法對於編輯感興趣但唔係大部分讀者感興趣嘅類別好有用,例如需要插圖嘅頁面。", "visualeditor-dialog-meta-settings-hiddencat-label": "隱藏類", "visualeditor-dialog-meta-settings-index-default": "預設", - "visualeditor-dialog-meta-settings-index-disable": "唔好", - "visualeditor-dialog-meta-settings-index-force": "好", + "visualeditor-dialog-meta-settings-index-disable": "唔係", + "visualeditor-dialog-meta-settings-index-force": "係", "visualeditor-dialog-meta-settings-index-help": "你可以要求搜索引擎將呢版列入佢哋個結果,或者要佢哋唔好噉做。呢個選項唔會影響網站以內嘅搜尋功能。", "visualeditor-dialog-meta-settings-index-label": "搜尋器可以搵到呢版", "visualeditor-dialog-meta-settings-label": "版嘅設定", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "預設", - "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "唔好", - "visualeditor-dialog-meta-settings-newsectioneditlink-force": "好", + "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "唔係", + "visualeditor-dialog-meta-settings-newsectioneditlink-force": "係", "visualeditor-dialog-meta-settings-newsectioneditlink-help": "你可以喺呢頁強制顯示除咗「$1」標籤之外嘅額外標籤,噉樣就可以輕鬆噉加入新嘅部分,或者如果唔係嘅話,就強制唔顯示。", "visualeditor-dialog-meta-settings-newsectioneditlink-label": "喺呢版加個書籤,撳落去可以開新段", "visualeditor-dialog-meta-settings-nocontentconvert-help": "你可以防止呢個頁面嘅內容自動轉換成其他指令碼。", @@ -142,10 +142,10 @@ "visualeditor-dialog-meta-settings-nogallery-label": "停用圖集", "visualeditor-dialog-meta-settings-notitleconvert-help": "你可以防止呢個頁面嘅標題自動轉換成其他指令碼。", "visualeditor-dialog-meta-settings-notitleconvert-label": "標題唔轉語言變體", - "visualeditor-dialog-meta-settings-redirect-help": "你可以將呢個頁面變成重新導向,呢個頁面會自動將讀者帶去呢個維基上面嘅另一個頁面。呢個對拼寫錯誤同埋其他名稱或者概念好有用。如果你噉樣做,讀者就唔會睇到呢個頁面嘅內容。", + "visualeditor-dialog-meta-settings-redirect-help": "你可以將呢個頁面變成跳轉,呢個頁面會自動將讀者帶去呢個維基上面嘅另一個頁面。呢個對拼寫錯誤同埋其他名稱或者概念好有用。如果你噉樣做,讀者就唔會睇到呢個頁面嘅內容。", "visualeditor-dialog-meta-settings-redirect-label": "呢版跳轉去", "visualeditor-dialog-meta-settings-redirect-placeholder": "跳轉目標", - "visualeditor-dialog-meta-settings-redirect-statichelp": "你可以防止呢個重新導向喺佢重新導向去嘅頁面移動嗰陣自動更新,喺非常罕見嘅情況下,呢個係需要嘅。", + "visualeditor-dialog-meta-settings-redirect-statichelp": "你可以防止呢個跳轉喺佢跳轉去嘅頁面搬走嗰陣自動更新,喺非常罕見嘅情況下,呢個係需要嘅。", "visualeditor-dialog-meta-settings-redirect-staticlabel": "搬跳轉目標版嘅時候,唔好更新呢個跳轉", "visualeditor-dialog-meta-settings-section": "版嘅設定", "visualeditor-dialog-meta-settings-toc-default": "如有需要", @@ -221,7 +221,7 @@ "visualeditor-dialog-transclusion-title-edit-known-template": "編輯:$1", "visualeditor-dialog-transclusion-title-edit-transclusion": "模內容", "visualeditor-dialog-transclusion-template-search": "範本搜尋", - "visualeditor-dialog-transclusion-template-search-help": "搜尋識別關鍵字,搵到你想插入嘅範本。有描述嘅範本更有可能同視覺編輯器配合得好好。", + "visualeditor-dialog-transclusion-template-search-help": "用識別關鍵字搵你想插入嘅模。有描述嘅模更有可能同即見編輯器配合得好。", "visualeditor-dialog-transclusion-wikitext": "維基文字", "visualeditor-dialog-transclusion-wikitext-widget-aria": "撳空格就可以揀維基文字元素。撳Enter嚟揀同編輯維基文字。", "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "撳Ctrl + Del嚟刪除維基文字元素。撳Ctrl + Shift + 箭頭嚟向上或者向下移動個元素。", @@ -318,7 +318,7 @@ "visualeditor-mwpredialog-convert": "允許文字樣式", "visualeditor-mwpredialog-title": "預先格式化嘅純文字", "visualeditor-mwsignature-tool": "你嘅簽名", - "visualeditor-preference-visualeditor": "開着可視編輯器", + "visualeditor-preference-visualeditor": "開着即見編輯器", "visualeditor-preference-newwikitexteditor-enable": "用可視編輯器嘅wikitext模式,而唔係用其他wikitext編輯器", "visualeditor-preference-newwikitexteditor-help": "呢個有時亦都叫做「2017年維基文字編輯器」。", "visualeditor-preference-tabs": "編輯模式:", @@ -327,7 +327,7 @@ "visualeditor-preference-tabs-prefer-wt": "每次都畀源碼編輯器我", "visualeditor-preference-tabs-remember-last": "記住我上次用過邊個編輯器", "visualeditor-preference-collab-label": "協作編輯", - "visualeditor-preference-collab-description": "邀請其他使用者喺視覺編輯器入面加入你嘅編輯工作階段。", + "visualeditor-preference-collab-description": "邀請其他用戶喺即見編輯器入面加入你嘅編輯工作階段。", "visualeditor-rebase-client-export": "匯出", "visualeditor-rebase-client-export-start": "匯出...", "visualeditor-rebase-client-import": "匯入", @@ -335,9 +335,9 @@ "visualeditor-rebase-client-title-help": "你可以喺儲存之前睇返啲變更。", "visualeditor-recreate": "自從你開始編輯之後,呢個頁面已經刪除咗。撳「$1」嚟重新建立佢。", "visualeditor-redirect-description": "跳轉到$1", - "visualeditor-savedialog-identify-anon": "你已經唔再登入。如果你繼續,呢個頁面嘅編輯記錄入面會記錄你嘅IP位址。", + "visualeditor-savedialog-identify-anon": "你已經唔再簽到。如果你繼續,呢個頁面嘅編輯記錄入面會記錄你嘅IP位址。", "visualeditor-savedialog-identify-temp": "你而家用緊臨時用戶名$1。如果你繼續,你嘅編輯將會同呢個用戶名相關聯。", - "visualeditor-savedialog-identify-user": "你而家以 [[User:$1|$1]]嘅身份登入咗。如果你繼續,你嘅編輯就會同呢個帳戶連結。", + "visualeditor-savedialog-identify-user": "你而家以[[User:$1|$1]]嘅身份簽到咗。如果你繼續,你嘅編輯就會同呢個戶口連結。", "visualeditor-savedialog-keyboard-shortcut-submit": "你可以撳$1嚟儲存你嘅編輯。", "visualeditor-savedialog-label-publish-short": "發佈", "visualeditor-savedialog-label-publish-short-start": "發佈...", diff --git a/i18n/ve-wmf/yua.json b/i18n/ve-wmf/yua.json new file mode 100644 index 0000000000..9e8d56e1a1 --- /dev/null +++ b/i18n/ve-wmf/yua.json @@ -0,0 +1,38 @@ +{ + "@metadata": { + "authors": [ + "Cohuoucan", + "Gutypc712", + "JhonRambo", + "Tunichmay", + "ValentinaTec" + ] + }, + "tag-editcheck-newcontent-description": "EditCheck ku tuukultik u ts'áabal túumben contenido ti' le link tia'al u paginail", + "tag-editcheck-newreference-description": "junp'eel referencia san t'aabak tia'al le paginao'", + "tag-editcheck-references-description": "EditCheck ku tukultik jump'éel referencia je'el u páajtal u k'a'abéettal", + "tag-editcheck-references-activated": "paakat edicion T’aab", + "tag-editcheck-references-activated-description": "EditCheck ku tukultik jump'éel referencia je'el u páajtal u k'a'abéettal, ka le UI bin u ye'esa'al", + "tag-editcheck-references-shown": "Editar Check (referencias) ku ye'esik", + "tag-editcheck-references-shown-description": "EditCheck ku tukultik jump'éel referencia je'el u páajtal u k'a'abéettal, ka le UI bin u ye'esa'al", + "tag-editcheck-tone-description": "EditCheck tu yilaj jump'éel talamil yéetel u tono yaan contenido añadido", + "tag-editcheck-tone-shown": "Editar Check (tono) ku ye'esik", + "tag-editcheck-tone-shown-description": "EditCheck ku tukultik jump'éel ajuste ti' le tono ti' yaan contenido je'el u páajtal u sido k'a'abéet, ka le UI bin u ye'esa'al", + "tag-visualeditor": "Edición visual", + "tag-visualeditor-description": "Edición beeta'an yéetel le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]].", + "tag-visualeditor-needcheck": "Edición visual: Compruebe", + "tag-visualeditor-needcheck-description": "Edición beeta'an yéetel le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]] tu'ux le yaan detectó le wikitexto posiblemente yaantal cambios ma' previstos.", + "tag-visualeditor-wikitext": "editor de código 2017", + "tag-visualeditor-wikitext-description": "Edición beeta'an yéetel le editor wikitexto 2017", + "tag-visualeditor-switched": "Edición visual: K'ex", + "tag-visualeditor-switched-description": "Le máax meyajtiko' káaj u editar yéetel le editor visual, ts'o'okole' tu k'exaj u editor wikitexto.", + "visualeditor-feedback-link": "Proyectó: k'eex paakat/ya'alo'ob", + "visualeditor-feedback-tool": "P'aat a tsiikbal yóolal le\"software\"'", + "visualeditor-help-label": "xookle \"guia de Usuario\"", + "visualeditor-welcomedialog-action": "kasej a je'el ts'iibtik", + "visualeditor-welcomedialog-content": "je'el máaxake'je'el u páajtal u je'el ts'íibtike' beyo ku saasiltaj", + "visualeditor-welcomedialog-content-thanks": "Niib óolal a wáantik yóok'ol kaab u kaaxaant láak' ba'alob", + "visualeditor-welcomedialog-switch": "K'ex le \"editor de codigo\"'", + "visualeditor-welcomedialog-switch-ve": "K'ex ti' le editor visual", + "visualeditor-welcomedialog-title": "{{GENDER:$1| Bienvenido}} ti' $2" +} diff --git a/i18n/ve-wmf/yue-hant.json b/i18n/ve-wmf/yue-hant.json index cf725ab133..9cd503d883 100644 --- a/i18n/ve-wmf/yue-hant.json +++ b/i18n/ve-wmf/yue-hant.json @@ -2,15 +2,16 @@ "@metadata": { "authors": [ "JeffreyKim", + "Ktchankt", "Winston Sung" ] }, "tag-editcheck-newcontent-description": "EditCheck認為頁面加入咗新內容", "tag-editcheck-newreference-description": "喺頁面加入咗參考資料", "tag-editcheck-references-description": "EditCheck認為可能需要啲參考資料", - "tag-editcheck-references-activated": "編輯已經啟動咗檢查(參考資料)", + "tag-editcheck-references-activated": "編輯檢查(參考)啟動咗", "tag-editcheck-references-activated-description": "EditCheck認為可能需要返啲參考資料,並且顯示埋用戶介面", - "tag-editcheck-references-shown": "編輯顯示咗嘅檢查(參考文獻)", + "tag-editcheck-references-shown": "編輯檢查(參考)顯示咗", "tag-editcheck-references-shown-description": "EditCheck認為可能需要返啲參考資料,並且顯示埋用戶介面", "tag-editcheck-tone-description": "EditCheck偵測到部分新增內容嘅語氣有潛在問題", "tag-editcheck-tone-shown": "編輯顯示咗嘅檢查(音色)", From 99277b0b64f70f2e101821e524e969617e532ad2 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 31 Jul 2025 11:48:14 -0500 Subject: [PATCH 522/730] Edit check: add a way to set a prompt for an action widget's choices This needs different formatting and spacing than the general message. Bug: T399675 Change-Id: I1b1e99726e3f18a74a24908a18377cb17bf3c7c3 --- editcheck/modules/EditCheck.less | 9 +++++++++ editcheck/modules/EditCheckAction.js | 16 ++++++++++++++-- editcheck/modules/EditCheckActionWidget.js | 10 +++++++++- editcheck/modules/editchecks/BaseEditCheck.js | 10 ++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 549568e48d..6b1296df6c 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -159,8 +159,17 @@ padding: @spacing-75; } + &-prompt { + margin-bottom: @spacing-75; + font-weight: @font-weight-semi-bold; + } + &-actions { margin-top: @spacing-100; + + &-prompted { + margin-top: @spacing-75; + } } &-footer { diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 4b74599829..2ad69c1856 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -10,6 +10,7 @@ * @param {ve.dm.SurfaceFragment} [config.focusFragment] Fragment to focus * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.title] Title * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.message] Body message + * @param {jQuery|string|Function|OO.ui.HtmlSnippet} [config.prompt] Prompt to show before choices * @param {string} [config.id] Optional unique identifier * @param {string} [config.icon] Optional icon name * @param {string} [config.type='warning'] Type of message (e.g., 'warning', 'error') @@ -25,6 +26,7 @@ mw.editcheck.EditCheckAction = function MWEditCheckAction( config ) { this.originalText = this.fragments.map( ( fragment ) => fragment.getText() ); this.focusFragment = config.focusFragment; this.message = config.message; + this.prompt = config.prompt; this.footer = config.footer; this.id = config.id; this.title = config.title; @@ -73,10 +75,19 @@ mw.editcheck.EditCheckAction.prototype.getTitle = function () { /** * Get the action's footer, if any * - * @return {jQuery|string|Function|OO.ui.HtmlSnippet} + * @return {jQuery|string|Function|OO.ui.HtmlSnippet|undefined} */ mw.editcheck.EditCheckAction.prototype.getFooter = function () { - return this.footer || this.check.getFooter(); + return this.footer || this.check.getFooter( this ); +}; + +/** + * Get the prompt question for the current choices + * + * @return {jQuery|string|Function|OO.ui.HtmlSnippet|undefined} + */ +mw.editcheck.EditCheckAction.prototype.getPrompt = function () { + return this.prompt || this.check.getPrompt( this ); }; /** @@ -150,6 +161,7 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi label: this.getTitle(), message: this.getDescription(), footer: this.getFooter(), + prompt: this.getPrompt(), classes: collapsed ? [ 've-ui-editCheckActionWidget-collapsed' ] : '', mode: this.mode, singleAction: singleAction diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index c5137bef83..798bdb5228 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -30,11 +30,19 @@ mw.editcheck.EditCheckActionWidget = function MWEditCheckActionWidget( config ) this.collapsed = false; this.message = new OO.ui.LabelWidget( { label: config.message } ); + this.prompt = config.prompt && new OO.ui.LabelWidget( { + label: config.prompt, + classes: [ 've-ui-editCheckActionWidget-prompt' ] + } ); this.footer = config.footer && new OO.ui.LabelWidget( { label: config.footer, classes: [ 've-ui-editCheckActionWidget-footer' ] } ); this.$actions = $( '

' ).addClass( 've-ui-editCheckActionWidget-actions oo-ui-element-hidden' ); + if ( this.prompt ) { + this.$actions.addClass( 've-ui-editCheckActionWidget-actions-prompted' ) + .append( this.prompt.$element ); + } this.$element.on( 'click', this.onClick.bind( this ) ); @@ -69,7 +77,7 @@ OO.inheritClass( mw.editcheck.EditCheckActionWidget, OO.ui.MessageWidget ); * Handle change events on the action set */ mw.editcheck.EditCheckActionWidget.prototype.onActionsChange = function () { - this.$actions.empty().addClass( 'oo-ui-element-hidden' ); + this.$actions.addClass( 'oo-ui-element-hidden' ).find( '.oo-ui-actionWidget' ).remove(); this.actions.get( { modes: [ this.mode ] } ).forEach( ( actionWidget ) => { this.$actions.append( actionWidget.$element ).removeClass( 'oo-ui-element-hidden' ); } ); diff --git a/editcheck/modules/editchecks/BaseEditCheck.js b/editcheck/modules/editchecks/BaseEditCheck.js index fdc8a717a4..2a2f19a633 100644 --- a/editcheck/modules/editchecks/BaseEditCheck.js +++ b/editcheck/modules/editchecks/BaseEditCheck.js @@ -98,6 +98,16 @@ mw.editcheck.BaseEditCheck.prototype.getTitle = function () { return this.constructor.static.title; }; +/** + * Get the prompt for the check's actions, if any + * + * @param {mw.editcheck.EditCheckAction} action + * @return {jQuery|string|Function|OO.ui.HtmlSnippet|undefined} + */ +mw.editcheck.BaseEditCheck.prototype.getPrompt = function () { + return this.constructor.static.prompt || undefined; +}; + /** * Get the footer of the check, if any * From de718e70fa2661530723eef76c571eace057c859 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 31 Jul 2025 11:49:06 -0500 Subject: [PATCH 523/730] Edit check: add prompt to copyvio Bug: T399675 Change-Id: Icfa1e12cbfc1a196adb61df212b5e3f4b86b3aa4 --- editcheck/i18n/en.json | 1 + editcheck/i18n/qqq.json | 1 + editcheck/modules/EditCheck.less | 1 + .../editchecks/experimental/ImportCopyvioEditCheck.js | 5 ++++- extension.json | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index 2b27fda88c..5390364ca8 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -25,6 +25,7 @@ "editcheck-dialog-title": "Before publishing", "editcheck-copyvio-title": "Pasted content", "editcheck-copyvio-description": "As a general rule, do not copy text from other sources. Doing so usually constitutes both a copyright violation and plagiarism.", + "editcheck-copyvio-prompt": "Did you write this text?", "editcheck-copyvio-action-keep": "Yes, keep it", "editcheck-copyvio-action-remove": "No, remove it", "editcheck-copyvio-keep-description": "Other editors would value learning more about your reason to keep this pasted text.", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index 32104723c3..8f01f62188 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -27,6 +27,7 @@ "editcheck-dialog-title": "Title shown in the toolbar while the user is in the add a citation workflow.", "editcheck-copyvio-title": "Title of pasted content / copyvio check", "editcheck-copyvio-description": "Description of pasted content / copyvio check", + "editcheck-copyvio-prompt": "Prompt shown before pasted content / copyvio check questions, asking whether to keep or remove the content", "editcheck-copyvio-action-keep": "Label for the keep option when asking users if they want to act on the pasted content check", "editcheck-copyvio-action-remove": "Label for the remove option when asking users if they want to act on the pasted content check", "editcheck-copyvio-keep-description": "Heading for form question asking why the user wants to keep pasted content", diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 6b1296df6c..bf57fbc86c 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -162,6 +162,7 @@ &-prompt { margin-bottom: @spacing-75; font-weight: @font-weight-semi-bold; + display: block; } &-actions { diff --git a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js index 2f4eb8ab81..4e10ef3e43 100644 --- a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js +++ b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js @@ -11,6 +11,10 @@ mw.editcheck.ImportCopyvioEditCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.ImportCopyvioEditCheck.static.title = ve.msg( 'editcheck-copyvio-title' ); +mw.editcheck.ImportCopyvioEditCheck.static.description = ve.msg( 'editcheck-copyvio-description' ); + +mw.editcheck.ImportCopyvioEditCheck.static.prompt = ve.msg( 'editcheck-copyvio-prompt' ); + mw.editcheck.ImportCopyvioEditCheck.static.name = 'paste'; mw.editcheck.ImportCopyvioEditCheck.static.choices = [ @@ -44,7 +48,6 @@ mw.editcheck.ImportCopyvioEditCheck.prototype.onDocumentChange = function ( surf const fragments = pastesById[ id ].map( ( range ) => surfaceModel.getLinearFragment( range ) ); return new mw.editcheck.EditCheckAction( { fragments: fragments, - message: ve.msg( 'editcheck-copyvio-description' ), id: id, check: this } ); diff --git a/extension.json b/extension.json index 897863a2cc..950df88de9 100644 --- a/extension.json +++ b/extension.json @@ -678,6 +678,7 @@ "editcheck-dialog-title", "editcheck-copyvio-title", "editcheck-copyvio-description", + "editcheck-copyvio-prompt", "editcheck-copyvio-action-keep", "editcheck-copyvio-action-remove", "editcheck-copyvio-keep-description", From 5137fd01415d0dd710d4294a996c420f51572a36 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 11 Aug 2025 11:22:13 -0500 Subject: [PATCH 524/730] Edit check: fix convert references check It was getting in the way in experimental mode because it wasn't restricted to only changed nodes. Also, make it actually function. Change-Id: I3531adb3aa63ccab1364154e37fe3169364568c1 --- .../experimental/ConvertReferenceEditCheck.js | 51 +++++++++++++++---- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js b/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js index 269a5d9dca..b953b1367a 100644 --- a/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js +++ b/editcheck/modules/editchecks/experimental/ConvertReferenceEditCheck.js @@ -5,31 +5,60 @@ mw.editcheck.ConvertReferenceEditCheck = function MWConvertReferenceEditCheck() OO.inheritClass( mw.editcheck.ConvertReferenceEditCheck, mw.editcheck.BaseEditCheck ); +mw.editcheck.ConvertReferenceEditCheck.static.title = ve.msg( 'citoid-referencecontextitem-convert-button' ); + mw.editcheck.ConvertReferenceEditCheck.static.name = 'convertReference'; +mw.editcheck.ConvertReferenceEditCheck.static.choices = [ + { + action: 'convert', + label: ve.msg( 'citoid-referencecontextitem-convert-button' ) + }, + { + action: 'dismiss', + label: ve.msg( 'ooui-dialog-process-dismiss' ) + } +]; + mw.editcheck.ConvertReferenceEditCheck.prototype.onDocumentChange = function ( surfaceModel ) { const seenIndexes = {}; const documentModel = surfaceModel.getDocument(); - return documentModel.getNodesByType( 'mwReference' ).map( ( node ) => { - const refModel = ve.dm.MWReferenceModel.static.newFromReferenceNode( node ); - const index = refModel.getListIndex(); + return this.getAddedNodes( documentModel, 'mwReference' ).map( ( node ) => { + const index = node.getIndexNumber(); if ( seenIndexes[ index ] ) { return null; } seenIndexes[ index ] = true; - const referenceNode = documentModel.getInternalList().getItemNode( index ); + const referenceNode = node.getInternalItem(); const href = ve.ui.CitoidReferenceContextItem.static.getConvertibleHref( referenceNode ); if ( href ) { - const fragment = surfaceModel.getLinearFragment( node.getOuterRange() ); - return new mw.editcheck.EditCheckAction( { - fragments: [ fragment ], - message: ve.msg( 'citoid-referencecontextitem-convert-message' ), - check: this - } ); + return node.getOuterRange(); } else { return null; } - } ).filter( ( obj ) => obj ); + } ).filter( ( obj ) => obj ).filter( ( range ) => !this.isDismissedRange( range ) ).map( ( range ) => ( + new mw.editcheck.EditCheckAction( { + fragments: [ surfaceModel.getLinearFragment( range ) ], + message: ve.msg( 'citoid-referencecontextitem-convert-message' ), + check: this + } ) + ) ); +}; + +mw.editcheck.ConvertReferenceEditCheck.prototype.act = function ( choice, action, surface ) { + switch ( choice ) { + case 'convert': { + action.fragments[ 0 ].select(); + const node = action.fragments[ 0 ].getSelectedNode(); + const href = ve.ui.CitoidReferenceContextItem.static.getConvertibleHref( node.getInternalItem() ); + const citoidAction = ve.ui.actionFactory.create( 'citoid', surface ); + citoidAction.open( true, href ); + break; + } + case 'dismiss': + this.dismiss( action ); + break; + } }; mw.editcheck.editCheckFactory.register( mw.editcheck.ConvertReferenceEditCheck ); From 653c4b4cd3a00d702a8878b0cbf077e8f7d2e6ea Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 12 Aug 2025 09:33:52 +0200 Subject: [PATCH 525/730] Localisation updates from https://translatewiki.net. Change-Id: Ie625458e7045b6448636af2d9191952e18e996f1 --- editcheck/i18n/de.json | 1 + editcheck/i18n/lb.json | 2 ++ editcheck/i18n/ps.json | 1 + editcheck/i18n/yue-hant.json | 3 +++ i18n/ve-mw/ko.json | 7 +++++++ i18n/ve-wmf/yua.json | 7 ++++--- 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index 680922a8b8..cf91b420fc 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -23,6 +23,7 @@ "editcheck-dialog-title": "Vor der Veröffentlichung", "editcheck-copyvio-title": "Eingefügter Inhalt", "editcheck-copyvio-description": "Kopiere in der Regel keinen Text aus anderen Quellen. Dies stellt in der Regel sowohl eine Verletzung des Urheberrechts als auch ein Plagiat dar.", + "editcheck-copyvio-prompt": "Hast du diesen Text geschrieben?", "editcheck-copyvio-action-keep": "Ja, behalten.", "editcheck-copyvio-action-remove": "Nein, entfernen.", "editcheck-copyvio-keep-description": "Andere Redakteure würden gerne mehr über deine Gründe für die Beibehaltung dieses eingefügten Textes erfahren.", diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index 742f32ff73..1d6c9a4c69 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -7,6 +7,7 @@ "editcheck-dialog-action-no": "Nee", "editcheck-dialog-action-yes": "Jo", "editcheck-dialog-action-revise": "Iwwerschaffen", + "editcheck-dialog-action-recheck": "Nach eng Kéier iwwerpréiwen", "editcheck-dialog-action-back": "Zréck", "editcheck-copyvio-action-keep": "Jo, halen", "editcheck-copyvio-action-remove": "Nee, ewechhuelen", @@ -19,6 +20,7 @@ "editcheck-tone-title-acted": "Tounfall iwwerschaffen", "editcheck-tone-reject-appropriate": "Den Tounfall ass passend", "editcheck-tone-reject-uncertain": "Ech weess net genee, wéi ech den Tounfall iwwerschaffe soll", + "editcheck-tone-thank": "Merci, datt Dir den Tounfall iwwerschafft hutt!", "editcheck-reject-description": "Aner Editeure géifen et appreciéiere fir gewuer ze ginn, firwat Dir dëse Choix gemaach hutt.", "editcheck-review-title": "Ännerungen nokucken" } diff --git a/editcheck/i18n/ps.json b/editcheck/i18n/ps.json index 4ca56ca2e1..1be315ecd8 100644 --- a/editcheck/i18n/ps.json +++ b/editcheck/i18n/ps.json @@ -9,5 +9,6 @@ "editcheck-dialog-action-submit": "سپارل", "editcheck-tone-reject-uncertain": "زه ډاډه نه يم چې څنگه وينگ کره کړم", "editcheck-tone-reject-other": "نور", + "editcheck-tone-thank": "د وينگ بياکتنې لپاره مننه!", "editcheck-reject-description": "نور سمونگر به دې ته ارزښت ورکړي چې ولې تاسو دا خوښ کړی." } diff --git a/editcheck/i18n/yue-hant.json b/editcheck/i18n/yue-hant.json index 2c6addb393..d516c8a5fa 100644 --- a/editcheck/i18n/yue-hant.json +++ b/editcheck/i18n/yue-hant.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "JeffreyKim", "Ktchankt" ] }, @@ -23,6 +24,7 @@ "editcheck-dialog-title": "發佈前", "editcheck-copyvio-title": "貼上嘅內容", "editcheck-copyvio-description": "一般情況下唔好由其他來源直接複製文字貼過嚟。咁做多數都係侵犯版權同抄襲。", + "editcheck-copyvio-prompt": "你係咪寫咗呢段文字?", "editcheck-copyvio-action-keep": "好,保留佢", "editcheck-copyvio-action-remove": "唔好,剷走佢", "editcheck-copyvio-keep-description": "其他編者想知點解你貼呢堆字。", @@ -33,6 +35,7 @@ "editcheck-copyvio-keep-notify": "多謝你解釋點解你貼呢堆字!", "editcheck-copyvio-remove-notify": "多謝你剷走呢堆字!", "editcheck-tone-reject-other": "其他", + "editcheck-tone-thank": "多謝晒你修改啲語氣!", "editcheck-review-title": "審核改動", "tag-editcheck-reference-decline-common-knowledge": "編輯檢查(參考)被拒(常識)", "tag-editcheck-reference-decline-common-knowledge-description": "編輯檢查參考功能被拒,畀嘅原因係加嘅內容係常識", diff --git a/i18n/ve-mw/ko.json b/i18n/ve-mw/ko.json index 3077dae9a1..250be70361 100644 --- a/i18n/ve-mw/ko.json +++ b/i18n/ve-mw/ko.json @@ -27,6 +27,7 @@ "Ryuch", "SeoJeongHo", "Tyey", + "YeBoy371", "Ykhwong", "고기랑", "고솜", @@ -40,9 +41,13 @@ "collabpad-import-subtitle": "$1에서 가져옴", "collabpad": "CollabPad", "tooltip-ca-ve-edit": "이 문서 편집", + "tooltip-ca-ve-edit-local": "로컬 설명 페이지 편집", "tooltip-ca-ve-create": "이 문서 만들기", + "tooltip-ca-ve-create-local": "로컬 설명 페이지 만들기", "tooltip-ca-editsource": "이 문서의 원본 코드를 편집", + "tooltip-ca-editsource-local": "로컬 설명 페이지의 소스 코드 편집", "tooltip-ca-createsource": "이 문서의 원본 코드를 만들기", + "tooltip-ca-createsource-local": "로컬 설명 페이지의 소스 코드 만들기", "visualeditor-advancedsettings-tool": "고급 설정", "visualeditor-autosave-modified-prompt-accept": "편집 재개", "visualeditor-autosave-modified-prompt-message": "이 문서는 마지막으로 불러온 이후 편집되었습니다. 오래된 판의 편집을 재개하거나 최신 판의 새 편집을 시작하시겠습니까?", @@ -60,6 +65,7 @@ "visualeditor-ca-editsource-section": "원본 편집", "visualeditor-ca-editsource-section-hint": "문단의 원본 코드 편집: $1", "visualeditor-categories-tool": "분류", + "visualeditor-changedesc-mwcategory-sortkey-changed": "정렬 키가 $1에서 $2(으)로 바뀌었습니다", "visualeditor-changedesc-mwredirect": "넘겨주기 대상이 $1에서 $2 문서로 바뀌었습니다", "visualeditor-changedesc-mwtransclusion": "틀의 변수가 변경되었습니다", "visualeditor-desc": "미디어위키를 위한 시각편집기", @@ -204,6 +210,7 @@ "visualeditor-dialog-transclusion-no-template-parameters": "이 틀에는 문서화된 매개 변수가 없으며 이러한 매개 변수 없이 사용하기 위한 것일 수 있습니다.", "visualeditor-dialog-transclusion-param-default": "기본값: $1", "visualeditor-dialog-transclusion-param-example-long": "예: $1", + "visualeditor-dialog-transclusion-param-selection-aria-label": "$1의 매개변수", "visualeditor-dialog-transclusion-param-undocumented": "(문서화되지 않은 변수)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "틀 찾기", "visualeditor-dialog-transclusion-required-parameter": "필수 필드", diff --git a/i18n/ve-wmf/yua.json b/i18n/ve-wmf/yua.json index 9e8d56e1a1..c812321e1e 100644 --- a/i18n/ve-wmf/yua.json +++ b/i18n/ve-wmf/yua.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Coala23", "Cohuoucan", "Gutypc712", "JhonRambo", @@ -8,11 +9,11 @@ "ValentinaTec" ] }, - "tag-editcheck-newcontent-description": "EditCheck ku tuukultik u ts'áabal túumben contenido ti' le link tia'al u paginail", + "tag-editcheck-newcontent-description": "EditCheck ku tukultik ts'áab túumben kaambal tu' wáalal u link.", "tag-editcheck-newreference-description": "junp'eel referencia san t'aabak tia'al le paginao'", - "tag-editcheck-references-description": "EditCheck ku tukultik jump'éel referencia je'el u páajtal u k'a'abéettal", + "tag-editcheck-references-description": "EditCheck ku tukultik jump'éel éesajile' je'el u páajtal u k'a'ana'antale'", "tag-editcheck-references-activated": "paakat edicion T’aab", - "tag-editcheck-references-activated-description": "EditCheck ku tukultik jump'éel referencia je'el u páajtal u k'a'abéettal, ka le UI bin u ye'esa'al", + "tag-editcheck-references-activated-description": "EditCheck ku tukultik junp'éel éesajile' je'el u páajtal u k'a'abéettal, yéetel chikpají le máax meyajtiko'", "tag-editcheck-references-shown": "Editar Check (referencias) ku ye'esik", "tag-editcheck-references-shown-description": "EditCheck ku tukultik jump'éel referencia je'el u páajtal u k'a'abéettal, ka le UI bin u ye'esa'al", "tag-editcheck-tone-description": "EditCheck tu yilaj jump'éel talamil yéetel u tono yaan contenido añadido", From 8c65b75c902712b97ae37f2e09ddd47054983261 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 12 Aug 2025 12:48:39 -0500 Subject: [PATCH 526/730] Edit check: widget collapsed state wasn't being set on creation Change-Id: I13aceaba7aaff70ae9a6a0180f560b49d0fbc2b8 --- editcheck/modules/EditCheckAction.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 2ad69c1856..e8029e34e0 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -162,7 +162,6 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi message: this.getDescription(), footer: this.getFooter(), prompt: this.getPrompt(), - classes: collapsed ? [ 've-ui-editCheckActionWidget-collapsed' ] : '', mode: this.mode, singleAction: singleAction } ); @@ -172,6 +171,7 @@ mw.editcheck.EditCheckAction.prototype.render = function ( collapsed, singleActi widget.actions.add( this.getChoices().map( ( choice ) => new OO.ui.ActionWidget( ve.extendObject( { modes: [ '' ], framed: true }, choice ) ) ) ); + widget.toggleCollapse( collapsed ); return widget; }; From 029ba070b4bfebe1b062db108f211cc7ce9458ba Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 12 Aug 2025 15:23:20 -0500 Subject: [PATCH 527/730] Tone check: surface wasn't being focused on revise Bug: T401727 Change-Id: I4406dc7f897a9ea369c8b484f292edd19ee3bedc --- editcheck/modules/editchecks/experimental/ToneCheck.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 5feef98a87..c6e5eadc40 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -148,8 +148,9 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { // If in pre-save mode, close the check dialog const closePromise = this.controller.inBeforeSave ? this.controller.closeDialog() : ve.createDeferred().resolve().promise(); return closePromise.then( () => { - surface.getView().activate(); action.fragments[ action.fragments.length - 1 ].collapseToEnd().select(); + surface.getView().activate( true ); + surface.getView().focus(); } ); } else if ( choice === 'recheck' ) { const recheckDeferred = ve.createDeferred(); From 7b80a4576a30612de9014d3b2cbecd24751f8298 Mon Sep 17 00:00:00 2001 From: Caro Medelius Date: Tue, 12 Aug 2025 13:07:26 -0700 Subject: [PATCH 528/730] Source editor 2017: make preview respect appearance choices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The user’s selected font size now applies to the content inside of the page chrome area on the preview window. Bug: T397458 Change-Id: I7fab3c98a7593e74aca0be3e6008b314e1d244f9 --- .../ve.init.mw.DesktopArticleTarget.init-vector-2022.less | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less index 2c6ebba22f..e9528567ad 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less @@ -38,6 +38,8 @@ .mw-body-content { grid-area: content; + font-size: var( --font-size-medium ); + line-height: var( --line-height-content ); } } From 3d110b99e2414325fd7925c7afcd34fdabb390a8 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 13 Aug 2025 00:10:42 -0500 Subject: [PATCH 529/730] Edit check: selectionmanager/gutter merge follow-ups Consolidating the selection methods together wound up returning early if there are no actions, but never removing the last-drawn selection from when there *were* actions. It also stopped drawing the selection highlight when in pre-save review mode. Follow-up to 7802fb510c18e8f17cf35301fffcd5acadaae400 Bug: T400905 Change-Id: I85986f5307a67205a58ed7b2bf6b3bb195da7b82 --- editcheck/modules/controller.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 7cdb189874..fde616830d 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -665,6 +665,13 @@ Controller.prototype.restoreToolbar = function ( target ) { */ Controller.prototype.drawSelections = function () { const surfaceView = this.surface.getView(); + const activeSelections = this.focusedAction ? this.focusedAction.getHighlightSelections().map( + ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) + ) : []; + const isStale = !!this.focusedAction && this.focusedAction.isStale(); + const showGutter = !isStale && !OO.ui.isMobile(); + const activeOptions = { showGutter: showGutter, showRects: !isStale, showBounding: isStale }; + if ( this.inBeforeSave ) { // Review mode grays out everything that's not highlighted: const highlightNodes = []; @@ -674,21 +681,21 @@ Controller.prototype.drawSelections = function () { } ); } ); surfaceView.setReviewMode( true, highlightNodes ); + // The following classes are used here: + // * ve-ce-surface-selections-editCheck-active + surfaceView.getSelectionManager().drawSelections( 'editCheck-active', activeSelections, activeOptions ); return; } const actions = this.getActions(); if ( actions.length === 0 ) { + // Clear any previously drawn selections + surfaceView.getSelectionManager().drawSelections( 'editCheck-active', [] ); + surfaceView.getSelectionManager().drawSelections( 'editCheck-inactive', [] ); return; } - const isStale = !!this.focusedAction && this.focusedAction.isStale(); - const showGutter = !isStale && !OO.ui.isMobile(); - const activeOptions = { showGutter: showGutter, showRects: !isStale, showBounding: isStale }; const inactiveOptions = { showGutter: showGutter, showRects: false }; - const activeSelections = this.focusedAction ? this.focusedAction.getHighlightSelections().map( - ( selection ) => ve.ce.Selection.static.newFromModel( selection, surfaceView ) - ) : []; const inactiveSelections = []; // Optimization: When showGutter is false inactive selections currently render nothing if ( showGutter ) { From e72c12a54c104f80d846029de5d642550096f9d7 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 13 Aug 2025 09:33:08 +0200 Subject: [PATCH 530/730] Localisation updates from https://translatewiki.net. Change-Id: Ice5ab29a6b839e007387e9b66d0fe5b86759efcd --- editcheck/i18n/ar.json | 1 + editcheck/i18n/az.json | 1 + editcheck/i18n/bn.json | 1 + editcheck/i18n/bo.json | 8 ++++++++ editcheck/i18n/diq.json | 1 + editcheck/i18n/fi.json | 5 +++-- editcheck/i18n/ia.json | 1 + editcheck/i18n/nl.json | 3 +++ editcheck/i18n/ps.json | 1 + i18n/ve-mw/api/yue-hant.json | 4 ++-- i18n/ve-mw/yue-hant.json | 6 +++--- 11 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 editcheck/i18n/bo.json diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index 18909d9243..eeac93c50e 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -25,6 +25,7 @@ "editcheck-dialog-title": "قبل النشر", "editcheck-copyvio-title": "محتوى ملصوق", "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. عادة، يُشكل هذا انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", + "editcheck-copyvio-prompt": "هل كتبت هذا النص؟", "editcheck-copyvio-action-keep": "نعم، احتفظ به", "editcheck-copyvio-action-remove": "لا، أزله", "editcheck-copyvio-keep-description": "يقدر المحررون الآخرون معرفة المزيد عن سبب احتفاظك بهذا النص الملصق.", diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index bca237184f..371e4e17e4 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -24,6 +24,7 @@ "editcheck-dialog-title": "Yayımlamadan əvvəl", "editcheck-copyvio-title": "Yapışdırılmış məzmun", "editcheck-copyvio-description": "Bir qayda olaraq, mətni digər mənbələrdən olduğu kimi kopyalamayın. Bunu etmək adətən həm müəllif hüquqlarının pozulması, həm də plagiat sayılır.", + "editcheck-copyvio-prompt": "Bu mətni siz özünüz yazmısınız?", "editcheck-copyvio-action-keep": "Bəli, saxla", "editcheck-copyvio-action-remove": "Xeyr, sil", "editcheck-copyvio-keep-description": "Digər redaktorlar bu yapışdırılmış mətni saxlamaq səbəbiniz haqqında daha çox öyrənmək istəyə bilərlər.", diff --git a/editcheck/i18n/bn.json b/editcheck/i18n/bn.json index 881a763967..617336fa6d 100644 --- a/editcheck/i18n/bn.json +++ b/editcheck/i18n/bn.json @@ -20,6 +20,7 @@ "editcheck-dialog-addref-success-notify": "একটি উদ্ধৃতি যোগ করার জন্য আপনাকে ধন্যবাদ!", "editcheck-dialog-addref-title": "উদ্ধৃতি যোগ করুন", "editcheck-dialog-title": "প্রকাশের আগে", + "editcheck-copyvio-prompt": "আপনি কি এই লেখাটি লিখেছেন?", "editcheck-tone-reject-other": "অন্যান্য", "editcheck-review-title": "পরিবর্তন পর্যালোচনা করুন", "tag-editcheck-reference-decline-common-knowledge": "সম্পাদনা পরীক্ষা (তথ্যসূত্র) প্রত্যাখ্যান (সাধারণ জ্ঞান)", diff --git a/editcheck/i18n/bo.json b/editcheck/i18n/bo.json new file mode 100644 index 0000000000..e9708dd405 --- /dev/null +++ b/editcheck/i18n/bo.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Tenzin Thoesam" + ] + }, + "editcheck-copyvio-prompt": "ཁྱོད་ཀྱིས་ཡིག་ཆ་འདི་བྲིས་པ་ཡིན་ནམ།" +} diff --git a/editcheck/i18n/diq.json b/editcheck/i18n/diq.json index 1026807e8d..6d568b9001 100644 --- a/editcheck/i18n/diq.json +++ b/editcheck/i18n/diq.json @@ -5,5 +5,6 @@ ] }, "editcheck-dialog-action-back": "Peyser", + "editcheck-copyvio-keep-other": "Sewbi", "editcheck-tone-reject-other": "Sewbi" } diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 72e753b62b..a0997335b4 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -25,8 +25,9 @@ "editcheck-dialog-title": "Ennen julkaisemista", "editcheck-copyvio-title": "Liitetty sisältö", "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Se on usein sekä tekijänoikeusrikkomus että plagiarismia.", - "editcheck-copyvio-action-keep": "Kyllä, säilytä se", - "editcheck-copyvio-action-remove": "Ei, poista se", + "editcheck-copyvio-prompt": "Kirjoititko tämän tekstin itse?", + "editcheck-copyvio-action-keep": "Kyllä, säilytä", + "editcheck-copyvio-action-remove": "Ei, poista", "editcheck-copyvio-keep-description": "Muut muokkaajat arvostaisivat kuulla, mistä syystä säilytit tämän liitetyn sisällön.", "editcheck-copyvio-keep-wrote": "Kirjoitin tämän sisällön, eikä sitä ole julkaistu muualla", "editcheck-copyvio-keep-permission": "Minulla on lupa uudelleenkäyttää tätä sisältöä", diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index b9ea1333e7..4119099ca1 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -23,6 +23,7 @@ "editcheck-dialog-title": "Ante de publicar", "editcheck-copyvio-title": "Contento collate", "editcheck-copyvio-description": "Como regula general, non copia contento de altere fontes. Isto es generalmente un violation del derecto de autor e un plagiato.", + "editcheck-copyvio-prompt": "Ha tu scribite iste texto?", "editcheck-copyvio-action-keep": "Si, mantener", "editcheck-copyvio-action-remove": "No, remover", "editcheck-copyvio-keep-description": "Altere redactores volerea cognoscer tu ration pro conservar iste texto collate.", diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index b197fb2e31..4aa848b867 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -11,6 +11,7 @@ "editcheck-dialog-action-yes": "Ja", "editcheck-dialog-action-decline": "Afwijzen", "editcheck-dialog-action-revise": "Herzien", + "editcheck-dialog-action-recheck": "Opnieuw controleren", "editcheck-dialog-action-back": "Terug", "editcheck-dialog-action-submit": "Indienen", "editcheck-dialog-addref-description": "Help lezers te begrijpen waar deze informatie vandaan komt door een referentie toe te voegen.", @@ -25,6 +26,7 @@ "editcheck-dialog-title": "Voordat u dit publiceert", "editcheck-copyvio-title": "Geplakte inhoud", "editcheck-copyvio-description": "Over het algemeen geldt: kopieer geen tekst van andere bronnen. Dit is meestal een schending van het auteursrecht en ook plagiaat.", + "editcheck-copyvio-prompt": "Hebt u deze tekst geschreven?", "editcheck-copyvio-action-keep": "Ja, behouden", "editcheck-copyvio-action-remove": "Nee, verwijderen", "editcheck-copyvio-keep-description": "Andere redacteuren willen graag weten waarom u deze geplakte tekst behoudt.", @@ -42,6 +44,7 @@ "editcheck-tone-reject-appropriate": "De toon is passend", "editcheck-tone-reject-uncertain": "Ik weet niet goed hoe ik de toon moet aanpassen", "editcheck-tone-reject-other": "Overige", + "editcheck-tone-thank": "Bedankt voor het aanpassen van de toon!", "editcheck-reject-description": "Andere redacteuren willen graag weten waarom u deze keuze hebt gemaakt.", "editcheck-review-title": "Wijzigingen controleren", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (referenties) afgewezen (algemene kennis)", diff --git a/editcheck/i18n/ps.json b/editcheck/i18n/ps.json index 1be315ecd8..40e6f381b6 100644 --- a/editcheck/i18n/ps.json +++ b/editcheck/i18n/ps.json @@ -7,6 +7,7 @@ "editcheck-dialog-action-recheck": "بياځلي‌سم‌کتنه", "editcheck-dialog-action-back": "پر شا کېدل", "editcheck-dialog-action-submit": "سپارل", + "editcheck-copyvio-action-remove": "نه، لرې يې کړه", "editcheck-tone-reject-uncertain": "زه ډاډه نه يم چې څنگه وينگ کره کړم", "editcheck-tone-reject-other": "نور", "editcheck-tone-thank": "د وينگ بياکتنې لپاره مننه!", diff --git a/i18n/ve-mw/api/yue-hant.json b/i18n/ve-mw/api/yue-hant.json index d56c8d085b..b60f4d65e0 100644 --- a/i18n/ve-mw/api/yue-hant.json +++ b/i18n/ve-mw/api/yue-hant.json @@ -6,7 +6,7 @@ "Winston Sung" ] }, - "apierror-visualeditor-badcachekey": "搵唔到嗰個密鑰嘅緩存序列化", + "apierror-visualeditor-badcachekey": "搵唔到嗰個密匙嘅緩存序列化", "apierror-visualeditor-difffailed": "比較失敗", "apihelp-visualeditor-param-basetimestamp": "保存嗰陣,將爾個設成編輯嘅版本嘅時間戳。用來檢測編輯衝突。", "apihelp-visualeditor-param-badetag": "如果RESTBase查詢返返去一個看似無效嘅ETag,請將佢傳送到呢度嚟記錄。", @@ -27,7 +27,7 @@ "apihelp-visualeditor-param-wikitext": "發畀Parsoid來轉成HTML代碼嘅維基代碼\n(paction=parsefragment)。", "apihelp-visualeditor-summary": "返返左Parsoid服務嘅頁面嘅 HTML5。", "apihelp-visualeditoredit-param-basetimestamp": "儲存嗰陣,將呢個設定做編輯咗嘅修訂版本嘅時間戳記,用嚟偵測編輯衝突。", - "apihelp-visualeditoredit-param-cachekey": "用呢個密鑰用之前嘅序列化緩存請求嘅結果。覆寫$1html。", + "apihelp-visualeditoredit-param-cachekey": "用呢個密匙用之前嘅序列化緩存請求嘅結果。覆寫$1html。", "apihelp-visualeditoredit-param-captchaid": "Captcha ID (保存captcha響應嗰時用)。", "apihelp-visualeditoredit-param-captchaword": "回答驗證碼(當用驗證碼回應儲存嗰陣)。", "apihelp-visualeditoredit-param-nocontent": "喺回應入面省略新修訂版本嘅HTML內容。", diff --git a/i18n/ve-mw/yue-hant.json b/i18n/ve-mw/yue-hant.json index 5326a0b803..ab1b6d5a60 100644 --- a/i18n/ve-mw/yue-hant.json +++ b/i18n/ve-mw/yue-hant.json @@ -79,7 +79,7 @@ "visualeditor-dialog-media-page-advanced": "進階", "visualeditor-dialog-media-page-general": "一般", "visualeditor-dialog-media-position-checkbox": "圍住呢件嘢編排文字", - "visualeditor-dialog-media-position-checkbox-help": "你可以令呢個媒體項目同頁面嘅文字一齊顯示,而唔係浮動。你應該只係好少咁做,因為如果你取消勾選呢個方塊,呢個操作會破壞文字嘅流程。", + "visualeditor-dialog-media-position-checkbox-help": "你可以令呢個媒體項目同頁面嘅文字一齊顯示,而唔係浮動。你應該只係好少咁做,因為如果你取消剔選呢個方格,呢個操作會破壞文字嘅流程。", "visualeditor-dialog-media-position-section": "位置", "visualeditor-dialog-media-position-section-help": "你可以設定呢個媒體項目喺頁面上面出現嘅位置。呢個有時會用嚟分解頁面一邊嘅一條長啲嘅相。", "visualeditor-dialog-media-save": "保存", @@ -229,7 +229,7 @@ "visualeditor-dialogbutton-media-tooltip": "相同媒體", "visualeditor-dialogbutton-template-tooltip": "模", "visualeditor-editconflict": "由於編輯衝突,{{GENDER:|你|妳|你}}嘅修改記唔低。{{GENDER:|你|妳|你}}想唔想人手解決呢個衝突?", - "visualeditor-editingtabdialog-body": "{{SITENAME}}而家記住你鍾意邊個編輯器。你可以喺編輯嗰陣切換編輯模式,同埋遲啲更改你嘅偏好設定。", + "visualeditor-editingtabdialog-body": "{{SITENAME}}而家記住你鍾意邊個編輯器。你可以喺編輯嗰陣切換編輯模式,同埋遲啲更改你嘅喜好設定。", "visualeditor-editingtabdialog-ok": "用我上次用過嘅編輯器", "visualeditor-editingtabdialog-title": "編輯掣", "visualeditor-editnotices-tool": "$1{{PLURAL:$1|張告示}}", @@ -290,7 +290,7 @@ "visualeditor-mweditmodeve-tool-unavailable": "呢度用唔到即見編輯", "visualeditor-mweditmodewt-popup-body": "你可以隨時撳呢個嘜頭返去編輯源碼。", "visualeditor-mweditmodewt-popup-title": "你轉咗去即見編輯", - "visualeditor-mwgallerycontext-description": "$1{{PLURAL:$1|image|相}}", + "visualeditor-mwgallerycontext-description": "$1{{PLURAL:$1|幅圖}}", "visualeditor-mwgallerydialog-caption-field-label": "圖庫字幕", "visualeditor-mwgallerydialog-card-images": "圖", "visualeditor-mwgallerydialog-card-options": "選項", From 1ae464aa9bb3e252d3bd7acc7fffeffd6fa2fd1e Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 12 Aug 2025 23:46:02 -0500 Subject: [PATCH 531/730] Edit check: removeAction needs to emit the full action list Otherwise calling it for mid-edit checks will inappropriately close the sidebar. Change-Id: Ibdfd9ae8eaf93aff1029f5c0e91813402b765c57 --- editcheck/modules/controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index fde616830d..d1d97d41a2 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -298,7 +298,7 @@ Controller.prototype.removeAction = function ( listener, action, rejected ) { this.focusedAction = null; } - this.emit( 'actionsUpdated', listener, actions, [], removed, rejected ); + this.emit( 'actionsUpdated', listener, this.getActions(), [], removed, rejected ); }; /** From 542157f21ae507d73ca5447ad725a8a1606c13c1 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 11 Aug 2025 14:42:22 -0500 Subject: [PATCH 532/730] Tone check: track less state in the action flow Clicking revise and then clicking discard was showing the success message. Recheck was also losing the stale button state after the first time it was clicked. Bug: T401617 Change-Id: Ia34a68a8a96b5b6d48ba3b6a71df00b989bd032b --- .../modules/editchecks/AsyncTextCheck.js | 23 +++++++++----- .../editchecks/experimental/ToneCheck.js | 30 ++++++++++++------- editcheck/modules/utils.js | 4 +-- 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/editcheck/modules/editchecks/AsyncTextCheck.js b/editcheck/modules/editchecks/AsyncTextCheck.js index e34a39bc67..e722942ee2 100644 --- a/editcheck/modules/editchecks/AsyncTextCheck.js +++ b/editcheck/modules/editchecks/AsyncTextCheck.js @@ -96,13 +96,7 @@ mw.editcheck.AsyncTextCheck.prototype.handleListener = function ( listener, surf if ( !fragments.length ) { return; } - actionPromises.push( Promise.resolve( - this.constructor.static.memoizedCheckAsync( - documentModel.data.getText( true, node.getRange() ) - ) - ).then( - ( outcome ) => this.afterMemoized( outcome ) - ).then( ( outcome ) => { + actionPromises.push( this.checkText( documentModel.data.getText( true, node.getRange() ) ).then( ( outcome ) => { if ( !outcome ) { return null; } @@ -138,6 +132,21 @@ mw.editcheck.AsyncTextCheck.prototype.onBranchNodeChange = function ( ...args ) */ mw.editcheck.AsyncTextCheck.prototype.newAction = null; +/** + * Check provided text + * + * @param {string} text + * @param {boolean} [bypass] Whether to bypass any memoized result + * @return {Promise} + */ +mw.editcheck.AsyncTextCheck.prototype.checkText = function ( text, bypass ) { + return Promise.resolve( + this.constructor.static.memoizedCheckAsync( text, bypass ) + ).then( + ( outcome ) => this.afterMemoized( outcome ) + ); +}; + /** * A filter to apply after the memoized call has occurred * diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index c6e5eadc40..beb4e66e93 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -1,6 +1,10 @@ mw.editcheck.ToneCheck = function MWToneCheck() { // Parent constructor mw.editcheck.ToneCheck.super.apply( this, arguments ); + + this.notifySuccess = () => { + mw.notify( ve.msg( 'editcheck-tone-thank' ), { type: 'success' } ); + }; }; OO.inheritClass( mw.editcheck.ToneCheck, mw.editcheck.AsyncTextCheck ); @@ -116,6 +120,7 @@ mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { }; mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { + action.off( 'discard', this.notifySuccess ); this.tag( 'interacted', action ); if ( choice === 'dismiss' ) { return action.widget.showFeedback( { @@ -139,12 +144,10 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { } ); } else if ( choice === 'edit' && surface ) { action.setStale( true ); - if ( action.clickedRevise !== true ) { // first time - action.once( 'discard', () => { - mw.notify( ve.msg( 'editcheck-tone-thank' ), { type: 'success' } ); - } ); - } - action.clickedRevise = true; + // Once revising has started the user will either make enough of an + // edit that this action is discarded, or will `act` again and this + // event-handler will be removed above: + action.once( 'discard', this.notifySuccess ); // If in pre-save mode, close the check dialog const closePromise = this.controller.inBeforeSave ? this.controller.closeDialog() : ve.createDeferred().resolve().promise(); return closePromise.then( () => { @@ -161,9 +164,10 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { } ); action.widget.$body.prepend( progress.$element ); - this.controller.updateForListener( 'onBranchNodeChange' ).then( () => { - recheckDeferred.resolve(); - } ); + this.checkText( action.fragments[ action.fragments.length - 1 ].getText() ) + .then( ( result ) => { + recheckDeferred.resolve( result ); + } ); const minimumTimeDeferred = ve.createDeferred(); setTimeout( () => { @@ -176,7 +180,13 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { }, 3000 ); // Caller requires a Deferred as it then calls '.always()' // eslint-disable-next-line no-jquery/no-when - return $.when( recheckDeferred, minimumTimeDeferred ); + return $.when( recheckDeferred, minimumTimeDeferred ).then( ( result ) => { + action.setStale( false ); + if ( !result ) { + this.notifySuccess(); + this.controller.removeAction( 'onBranchNodeChange', action, false ); + } + } ); } }; diff --git a/editcheck/modules/utils.js b/editcheck/modules/utils.js index 3365b58562..78883fe1a8 100644 --- a/editcheck/modules/utils.js +++ b/editcheck/modules/utils.js @@ -4,12 +4,12 @@ */ mw.editcheck.memoize = function ( handler ) { const memory = new Map(); - return ( arg ) => { + return ( arg, bypass ) => { if ( typeof arg !== 'string' ) { throw new Error( 'Argument must be a string' ); } - if ( !memory.has( arg ) ) { + if ( bypass || !memory.has( arg ) ) { memory.set( arg, handler( arg ) ); } return memory.get( arg ); From c6912273ef4ed729761619951e6cdbca35375804 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 30 Apr 2025 18:42:49 +0100 Subject: [PATCH 533/730] LinkCache: Skip the "missing link" microcache in certain cases When rendering generic article links we want to ensure all semantic link classes are applied, not just "new". Leave this functionality (for now) for simplier use cases, e.g. rendering the categories list. Bug: T393041 Change-Id: I457eaa2e40562fa213af277a98d50793f36f05d0 --- .../ve.ce.MWInternalLinkAnnotation.js | 4 +++- .../apiresponsecache/ve.init.mw.LinkCache.js | 24 +++++++++++-------- .../ve.ui.MWInternalLinkContextItem.js | 2 +- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/modules/ve-mw/ce/annotations/ve.ce.MWInternalLinkAnnotation.js b/modules/ve-mw/ce/annotations/ve.ce.MWInternalLinkAnnotation.js index 29c22b085f..175a267bc7 100644 --- a/modules/ve-mw/ce/annotations/ve.ce.MWInternalLinkAnnotation.js +++ b/modules/ve-mw/ce/annotations/ve.ce.MWInternalLinkAnnotation.js @@ -64,7 +64,9 @@ ve.ce.MWInternalLinkAnnotation.prototype.updateClasses = function () { ve.init.platform.linkCache.styleElement( model.getAttribute( 'lookupTitle' ), this.$anchor, - !!model.getFragment() + !!model.getFragment(), + // Skip the "missing link" cache and ensure all styles are applied + false ); } }; diff --git a/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js b/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js index f9a54c9ba7..e97617fd04 100644 --- a/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js +++ b/modules/ve-mw/init/apiresponsecache/ve.init.mw.LinkCache.js @@ -67,19 +67,23 @@ ve.init.mw.LinkCache.static.processPage = function ( page ) { * @param {string} title * @param {jQuery} $element Element to style * @param {boolean} [hasFragment=false] Whether the link goes to a fragment + * @param {boolean} [useMissing=true] Use the "missing link" chache if available. Only applies the "new" + * style but this cache is more likely to be populated. In the case of a cache miss the full cache is used. */ -ve.init.mw.LinkCache.prototype.styleElement = function ( title, $element, hasFragment ) { - const cachedMissingData = this.getCached( '_missing/' + title ); - - let promise; - // Use the synchronous missing link cache data if it exists - if ( cachedMissingData ) { - promise = ve.createDeferred().resolve( cachedMissingData ).promise(); - } else { - promise = this.get( title ); +ve.init.mw.LinkCache.prototype.styleElement = function ( title, $element, hasFragment, useMissing ) { + if ( useMissing !== false ) { + const cachedMissingData = this.getCached( '_missing/' + title ); + + // Use the synchronous missing link cache data if it exists + if ( cachedMissingData ) { + if ( cachedMissingData.missing && !cachedMissingData.known ) { + $element.addClass( 'new' ); + } + return; + } } - promise.then( ( data ) => { + this.get( title ).then( ( data ) => { // eslint-disable-next-line mediawiki/class-doc $element.addClass( data.linkclasses ); if ( data.missing && !data.known ) { diff --git a/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js b/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js index 32b5307804..39f69c8a6c 100644 --- a/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js +++ b/modules/ve-mw/ui/contextitems/ve.ui.MWInternalLinkContextItem.js @@ -65,7 +65,7 @@ ve.ui.MWInternalLinkContextItem.static.generateBody = function ( linkCache, mode ve.setAttributeSafe( $link[ 0 ], 'href', title.getUrl(), '#' ); // Style based on link cache information - ve.init.platform.linkCache.styleElement( lookupTitle, $link, fragment ); + ve.init.platform.linkCache.styleElement( lookupTitle, $link, fragment, false ); // Don't style as a self-link in the context menu (but do elsewhere) $link.removeClass( 'mw-selflink' ); From f995b8565a38c15b26821ffa1a702c986659c159 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 13 Aug 2025 09:43:40 -0500 Subject: [PATCH 534/730] Edit check: getActions should sort actions after merging lists Change-Id: I0497bd1753470248c42af455d010b36a454353cc --- editcheck/modules/controller.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index d1d97d41a2..4bce717d43 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -345,7 +345,9 @@ Controller.prototype.getActions = function ( listener ) { return this.actionsByListener[ listener ] || []; } const listeners = this.inBeforeSave ? [ 'onBeforeSave' ] : midEditListeners; - return [].concat( ...listeners.map( ( lr ) => this.actionsByListener[ lr ] || [] ) ); + const actions = [].concat( ...listeners.map( ( lr ) => this.actionsByListener[ lr ] || [] ) ); + actions.sort( mw.editcheck.EditCheckAction.static.compareStarts ); + return actions; }; /** From df745c09b49aa5540f7d89db4c77140dfffc962b Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 13 Aug 2025 09:49:41 -0500 Subject: [PATCH 535/730] Edit check: rely on getActions for the final result in updateForListener Change-Id: I4cfaeded08dd05f509cd53364859d948652704c0 --- editcheck/modules/controller.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 4bce717d43..977dffd1b5 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -238,14 +238,12 @@ Controller.prototype.refresh = function () { Controller.prototype.updateForListener = function ( listener, fromRefresh ) { // Get the existing actions for this listener const existing = this.getActions( listener ); - // Get existing actions for other listeners (excludes the existing actions for this listener) - const otherListenersExisting = this.getActions().filter( ( action ) => existing.every( ( existingAction ) => !action.equals( existingAction ) ) ); // Create all actions for this listener return mw.editcheck.editCheckFactory.createAllByListener( this, listener, this.surface.getModel() ) .then( ( actionsFromListener ) => { // Try to match each new action to an existing one (to preserve state) - let actions = actionsFromListener.map( ( action ) => existing.find( ( existingAction ) => action.equals( existingAction ) ) || action ); + const actions = actionsFromListener.map( ( action ) => existing.find( ( existingAction ) => action.equals( existingAction ) ) || action ); let staleUpdated = false; if ( !fromRefresh ) { @@ -265,13 +263,10 @@ Controller.prototype.updateForListener = function ( listener, fromRefresh ) { // If the actions list changed, update if ( fromRefresh || staleUpdated || actions.length !== existing.length || newActions.length || discardedActions.length ) { - // Add actions from other listeners and sort - actions = actions.concat( otherListenersExisting ); - actions.sort( mw.editcheck.EditCheckAction.static.compareStarts ); // TODO: We need to consider a consistency check here as the document state may have changed since the // action within the promise was created // Notify listeners that actions have been updated - this.emit( 'actionsUpdated', listener, actions, newActions, discardedActions, false ); + this.emit( 'actionsUpdated', listener, this.getActions(), newActions, discardedActions, false ); } // Return the updated actions return actions; From 8dcaf28f5b5881a6391106dd14c8e9000c785e40 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 13 Aug 2025 12:44:06 -0500 Subject: [PATCH 536/730] Edit check: stop deselecting checks when the selection leaves them Bug: T401342 Change-Id: I8ae0a49b0d03fe584828039658a267e54f1bbb69 --- editcheck/modules/controller.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 977dffd1b5..f839030f4a 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -390,7 +390,10 @@ Controller.prototype.onSelect = function ( selection ) { ( check ) => check.getHighlightSelections().some( ( highlight ) => highlight.getCoveringRange().containsRange( selection.getCoveringRange() ) ) ); - this.focusAction( actions[ 0 ] || null, false ); + if ( actions.length > 0 ) { + // Focus the last action returned, because it should be the most-specific + this.focusAction( actions[ actions.length - 1 ], false ); + } }; /** From 4acceaa1dc5010d627f95f814ae7f5ca56efbd2e Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 13 Aug 2025 14:36:31 -0500 Subject: [PATCH 537/730] Tone check: stop "revise" from undoing itself immediately Bug: T401727 Change-Id: I467d3f9b8bfa715416d1bb52a5550baeae1816e6 --- editcheck/modules/controller.js | 31 ++++++++++++------- .../editchecks/experimental/ToneCheck.js | 7 +++-- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index f839030f4a..0b46290a48 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -362,17 +362,8 @@ Controller.prototype.onSelect = function ( selection ) { return; } - if ( !this.inBeforeSave ) { - let newBranchNode; - if ( selection instanceof ve.dm.LinearSelection ) { - newBranchNode = this.surface.model.documentModel.getBranchNodeFromOffset( selection.range.to ); - } else { - newBranchNode = null; - } - if ( newBranchNode !== this.branchNode ) { - this.branchNode = newBranchNode; - this.updateForListener( 'onBranchNodeChange' ); - } + if ( !this.inBeforeSave && this.updateCurrentBranchNodeFromSelection( selection ) ) { + this.updateForListener( 'onBranchNodeChange' ); } if ( OO.ui.isMobile() ) { @@ -796,6 +787,24 @@ Controller.prototype.closeSidebars = function ( action ) { return ve.createDeferred().resolve().promise(); }; +/** + * Set the current branch node from a selection + * + * @param {ve.dm.Selection} selection New selection + * @return {boolean} whether the branch node changed + */ +Controller.prototype.updateCurrentBranchNodeFromSelection = function ( selection ) { + let newBranchNode = null; + if ( selection instanceof ve.dm.LinearSelection ) { + newBranchNode = this.surface.model.documentModel.getBranchNodeFromOffset( selection.range.to ); + } + if ( newBranchNode !== this.branchNode ) { + this.branchNode = newBranchNode; + return true; + } + return false; +}; + module.exports = { Controller: Controller }; diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index beb4e66e93..3db988f74d 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -151,8 +151,11 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { // If in pre-save mode, close the check dialog const closePromise = this.controller.inBeforeSave ? this.controller.closeDialog() : ve.createDeferred().resolve().promise(); return closePromise.then( () => { - action.fragments[ action.fragments.length - 1 ].collapseToEnd().select(); - surface.getView().activate( true ); + const fragment = action.fragments[ action.fragments.length - 1 ].collapseToEnd(); + // prevent triggering branch node change listeners and thus clearing staleness immediately: + this.controller.updateCurrentBranchNodeFromSelection( fragment.getSelection() ); + fragment.select(); + // select won't have refocused the article if it didn't change: surface.getView().focus(); } ); } else if ( choice === 'recheck' ) { From f03b45401a93f6abbb3d9869d366bc204d93c153 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 14 Aug 2025 10:06:14 +0200 Subject: [PATCH 538/730] Localisation updates from https://translatewiki.net. Change-Id: Ia45b8a8a494029c4c5f820141c45f2123cc75d90 --- editcheck/i18n/ar.json | 2 +- editcheck/i18n/mk.json | 1 + i18n/ve-mw/yue-hant.json | 16 ++++++++-------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index eeac93c50e..c5138285b4 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -43,7 +43,7 @@ "editcheck-tone-reject-appropriate": "الأسلوب مناسب", "editcheck-tone-reject-uncertain": "أنا لست متيقنًا من كيفية مراجعة الأسلوب", "editcheck-tone-reject-other": "غيرها", - "editcheck-tone-thank": "شكرا لك على مراجعة النغمة!", + "editcheck-tone-thank": "شكرا لك على مراجعة الأسلوب!", "editcheck-reject-description": "سيكون من المفيد للمحررين الآخرين معرفة سبب اختيارك لهذا.", "editcheck-review-title": "مراجعة التغييرات", "tag-editcheck-reference-decline-common-knowledge": "تم رفض (ثقافة عامة) التحقّق من التحرير (مراجع)", diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index 5d9f549569..c406f2e95a 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -23,6 +23,7 @@ "editcheck-dialog-title": "Пред да објавите", "editcheck-copyvio-title": "Налепена содржина", "editcheck-copyvio-description": "По општо правило, не копирајте текст од други извори. Копирањето на текст претставува кршење на авторски права и плагијат.", + "editcheck-copyvio-prompt": "Дали вие го имате напишано текстов?", "editcheck-copyvio-action-keep": "Да, задржи", "editcheck-copyvio-action-remove": "Не, отстрани", "editcheck-copyvio-keep-description": "Другите уредници би целене да дознаат повеќе за причината зошто го задржувате овој прекопиран текст.", diff --git a/i18n/ve-mw/yue-hant.json b/i18n/ve-mw/yue-hant.json index ab1b6d5a60..0d50e99217 100644 --- a/i18n/ve-mw/yue-hant.json +++ b/i18n/ve-mw/yue-hant.json @@ -39,7 +39,7 @@ "visualeditor-autosave-modified-prompt-reject": "開始新嘅編輯", "visualeditor-autosave-modified-prompt-title": "繼續{{GENDER:|你嘅}}編輯?", "visualeditor-autosave-not-recovered-text": "恢復唔到你未儲存嘅變更。", - "visualeditor-autosave-not-recovered-title": "變更復原失敗咗", + "visualeditor-autosave-not-recovered-title": "改動復原失敗咗", "visualeditor-autosave-recovered-text": "你未儲存嘅變更已經自動恢復返。", "visualeditor-autosave-recovered-title": "啲變動已經恢復返晒", "visualeditor-backbutton-tooltip": "返去", @@ -142,7 +142,7 @@ "visualeditor-dialog-meta-settings-nogallery-label": "停用圖集", "visualeditor-dialog-meta-settings-notitleconvert-help": "你可以防止呢個頁面嘅標題自動轉換成其他指令碼。", "visualeditor-dialog-meta-settings-notitleconvert-label": "標題唔轉語言變體", - "visualeditor-dialog-meta-settings-redirect-help": "你可以將呢個頁面變成跳轉,呢個頁面會自動將讀者帶去呢個維基上面嘅另一個頁面。呢個對拼寫錯誤同埋其他名稱或者概念好有用。如果你噉樣做,讀者就唔會睇到呢個頁面嘅內容。", + "visualeditor-dialog-meta-settings-redirect-help": "你可以將呢個頁面變成跳轉,呢個頁面會自動將讀者帶去呢個維基上面嘅另一個頁面。呢個對拼寫錯誤同埋其他名或者概念好有用。如果你噉樣做,讀者就唔會睇到呢個頁面嘅內容。", "visualeditor-dialog-meta-settings-redirect-label": "呢版跳轉去", "visualeditor-dialog-meta-settings-redirect-placeholder": "跳轉目標", "visualeditor-dialog-meta-settings-redirect-statichelp": "你可以防止呢個跳轉喺佢跳轉去嘅頁面搬走嗰陣自動更新,喺非常罕見嘅情況下,呢個係需要嘅。", @@ -162,18 +162,18 @@ "visualeditor-dialog-template-title": "模", "visualeditor-dialog-transclusion-action-save": "儲存", "visualeditor-dialog-transclusion-template-title-nonexistent": "呢個模唔存在。", - "visualeditor-dialog-transclusion-template-title-modifier": "當用嵌套語法或者修飾符編輯範本嗰陣,範本文件同埋[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameter]名稱(如果存在)係唔可用嘅,例如[//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst]。", + "visualeditor-dialog-transclusion-template-title-modifier": "當用嵌套語法或者修飾符編輯模嗰陣,模文件同埋[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameter]名(如果存在)係唔可用嘅,例如[//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst]。", "visualeditor-dialog-transclusion-template-widget-aria": "撳空格嚟揀範本。", - "visualeditor-dialog-transclusion-template-widget-aria-selected": "撳Ctrl + Del就可以刪除範本、佢嘅參數同埋佢哋嘅值。撳Ctrl + Shift + 箭咀就可以將範本向上或者向下移動。", + "visualeditor-dialog-transclusion-template-widget-aria-selected": "撳Ctrl + Del就可以刪模、佢嘅參數同埋佢哋嘅值。撳Ctrl + Shift + 箭咀就可以將模向上搬或者向下搬。", "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "撳Ctrl + Del就可以刪除範本、佢嘅參數同埋佢哋嘅值。", "visualeditor-dialog-transclusion-add-wikitext": "加入維基文字", "visualeditor-dialog-transclusion-add-param-error-alias": "「$1」已經加咗做「$2」。請睇下側欄入面嘅選項。\n呢個係因為用咗[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases aliases]定係[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label labels]。", "visualeditor-dialog-transclusion-add-param-error-deprecated": "「$1」加唔到,因為個參數已經標記為[//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated deprecated]。", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "加唔到參數「$2」兩次。", "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "參數「$2」已經可以用。請喺側欄度睇吓啲選項。", - "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1係一個禁止嘅字元。請移除佢嚟加入參數。", - "visualeditor-dialog-transclusion-add-param-help": "如果知道,請輸入[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters undocumented parameter]個名稱。請注意,淨係得模板已知嘅參數先會有影響。\n你可以喺[[$1|範本嘅頁面]]搵到有關現有參數嘅資料。", - "visualeditor-dialog-transclusion-add-param-placeholder": "參數名稱", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1係一個禁用嘅字元。請剷走佢嚟加入參數。", + "visualeditor-dialog-transclusion-add-param-help": "如果知道,請輸入[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters undocumented parameter]個名。請注意,淨係得模已知嘅參數先會有影響。\n你可以喺[[$1|模嘅頁面]]搵到有關現有參數嘅資料。", + "visualeditor-dialog-transclusion-add-param-placeholder": "參數名", "visualeditor-dialog-transclusion-add-param-save": "加", "visualeditor-dialog-transclusion-add-template": "加模", "visualeditor-dialog-transclusion-add-template-button": "加模", @@ -224,7 +224,7 @@ "visualeditor-dialog-transclusion-template-search-help": "用識別關鍵字搵你想插入嘅模。有描述嘅模更有可能同即見編輯器配合得好。", "visualeditor-dialog-transclusion-wikitext": "維基文字", "visualeditor-dialog-transclusion-wikitext-widget-aria": "撳空格就可以揀維基文字元素。撳Enter嚟揀同編輯維基文字。", - "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "撳Ctrl + Del嚟刪除維基文字元素。撳Ctrl + Shift + 箭頭嚟向上或者向下移動個元素。", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "撳Ctrl + Del嚟刪維基文字元素。撳Ctrl + Shift + 箭嘴嚟向上搬或者向下搬個元素。", "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "撳Ctrl + Del就可以刪除維基文字元素。", "visualeditor-dialogbutton-media-tooltip": "相同媒體", "visualeditor-dialogbutton-template-tooltip": "模", From 0b93db0083610835c8fde1cf278dbc589392df7f Mon Sep 17 00:00:00 2001 From: thiemowmde Date: Thu, 14 Aug 2025 13:47:37 +0200 Subject: [PATCH 539/730] Update VE core submodule to master (2824d0c43) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New changes: e56e72f0f Add all necessary public methods to ve.dm.InternalListNodeGroup 28c3aa259 Reduce InternalListNodeGroup footprint related to unique keys 9bd07f635 Streamline ve.dm.InternalList.getItemInsertion implementation 05df35a2b Init private properties in InternalListNodeGroup dynamically dde5c6fb1 Improve documentation of Cite-related InternalList abbb6f74e Replace [].concat() with more recent syntax, where possible 3958b09d4 Optimize ve.ce.Document hasClass() check for performance 9bfd88686 Replace stray OO.ui.msg() with ve.msg() da88c13b1 build: Upgrade eslint-config-wikimedia to 0.31.0 950251706 Fix ve.ui.PreviewElement.afterRender throwing errors 6b2ad9004 build: Updating tmp to 0.2.5 061493822 ve.dm.Transaction: Remove unused trySplit/tryUnsplit/insertOperations 41317cf8c TransactionBuilder: Remove pushReplaceInternal 3aadc01c4 Make use of existing named DIFF_… constants 211b2d11f Update RangeFix to 0.3.1 2824d0c43 Two more fixes for the (existing) InternalList behavior Localisation Updates: 588807816, cee69b27a, 9182e9a0d Added files: - tests/dm/ve.dm.InternalListNodeGroup.test.js Bug: T392076 Bug: T397145 Bug: T397395 Change-Id: If5f0096f61f0d966c3ae918d620fb9f87b8737ad --- extension.json | 1 + lib/ve | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/extension.json b/extension.json index 950df88de9..a46feebe27 100644 --- a/extension.json +++ b/extension.json @@ -2657,6 +2657,7 @@ "modules/ve-mw/tests/dm/ve.dm.Document.test.js", "lib/ve/tests/dm/ve.dm.HashValueStore.test.js", "lib/ve/tests/dm/ve.dm.InternalList.test.js", + "lib/ve/tests/dm/ve.dm.InternalListNodeGroup.test.js", "lib/ve/tests/dm/ve.dm.LinearData.test.js", "lib/ve/tests/dm/ve.dm.Transaction.test.js", "lib/ve/tests/dm/ve.dm.TransactionBuilder.test.js", diff --git a/lib/ve b/lib/ve index 21ae6b49e5..2824d0c430 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 21ae6b49e57c44f2fe49ea21176b6a7e0781afda +Subproject commit 2824d0c4307a9c663ca0710828a0cd9df0351025 From c450122834b537d4a7df4ecea09b255634002b09 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 13 Aug 2025 16:18:21 +0100 Subject: [PATCH 540/730] Use $veConfig for VE configs Change-Id: Idf2ed68e0db17088f1b303524a45fdd99bcf4ae4 --- includes/Hooks.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/Hooks.php b/includes/Hooks.php index 6ac48d7ad9..b8bf569772 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -1187,7 +1187,7 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf 'editCheckReliabilityAvailable' => ApiEditCheckReferenceUrl::isAvailable(), 'namespacesWithSubpages' => $namespacesWithSubpagesEnabled, 'specialBooksources' => urldecode( SpecialPage::getTitleFor( 'Booksources' )->getPrefixedURL() ), - 'rebaserUrl' => $coreConfig->get( 'VisualEditorRebaserURL' ), + 'rebaserUrl' => $veConfig->get( 'VisualEditorRebaserURL' ), 'feedbackApiUrl' => $veConfig->get( 'VisualEditorFeedbackAPIURL' ), 'feedbackTitle' => $veConfig->get( 'VisualEditorFeedbackTitle' ), 'sourceFeedbackTitle' => $veConfig->get( 'VisualEditorSourceFeedbackTitle' ), From 8c69980f573c17a5263b2074ca567cdedf62d0a2 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 4 Jun 2025 16:11:36 +0100 Subject: [PATCH 541/730] MWLanguagesPage: Remove unused code for unsupported editing of local lang links Change-Id: Ib773dd69d059791ebf8036bdd7c9e9082fead28f --- .../ve-mw/ui/pages/ve.ui.MWLanguagesPage.js | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js b/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js index 4b6202aed7..e25e4ec33c 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js @@ -118,40 +118,6 @@ ve.ui.MWLanguagesPage.prototype.onAllLanguageItemsSuccess = function ( response return languages; }; -/** - * Gets language item from meta list item - * - * @param {ve.dm.MWLanguageMetaItem} metaItem - * @return {Object} item - */ -ve.ui.MWLanguagesPage.prototype.getLanguageItemFromMetaListItem = function ( metaItem ) { - // TODO: get real values from metaItem once Parsoid actually provides them - T50970 - return { - lang: 'lang', - langname: 'langname', - title: 'title', - metaItem: metaItem - }; -}; - -/** - * Get array of language items from meta list - * - * @return {Object[]} items - */ -ve.ui.MWLanguagesPage.prototype.getLocalLanguageItems = function () { - const items = [], - languages = this.metaList.getItemsInGroup( 'mwLanguage' ), - languageslength = languages.length; - - // Loop through MWLanguages and build out items - - for ( let i = 0; i < languageslength; i++ ) { - items.push( this.getLanguageItemFromMetaListItem( languages[ i ] ) ); - } - return items; -}; - /** * Get array of language items from meta list * From 4973586601b1661f66a87947130bcd13b4557bca Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 11 Jun 2025 14:38:55 +0100 Subject: [PATCH 542/730] Use LESS nesting in some more places Change-Id: Ic45fb265b9c8590839ea2cbe7a40d8a3f377a415 --- .../ve-mw/init/styles/ve.init.mw.Target.less | 29 ++++++++------ ...w.DesktopArticleTarget.init-apextheme.less | 8 ++-- ...DesktopArticleTarget.init-vector-2022.less | 22 +++++++---- ...ktopArticleTarget.init-wikimediatheme.less | 18 +++++---- ...e.init.mw.ProgressBarWidget-apextheme.less | 10 ++--- ...t.mw.ProgressBarWidget-wikimediatheme.less | 8 ++-- .../styles/ve.init.mw.ProgressBarWidget.less | 8 ++-- .../tools/ve.ui.MWFormatTool-minerva.less | 10 +++-- .../tools/ve.ui.MWFormatTool-monobook.less | 30 ++++++++------- .../tools/ve.ui.MWFormatTool-vector.less | 38 ++++++++++--------- .../ui/styles/tools/ve.ui.MWPopupTool.less | 16 ++++---- 11 files changed, 110 insertions(+), 87 deletions(-) diff --git a/modules/ve-mw/init/styles/ve.init.mw.Target.less b/modules/ve-mw/init/styles/ve.init.mw.Target.less index a34759ba71..74d9138474 100644 --- a/modules/ve-mw/init/styles/ve.init.mw.Target.less +++ b/modules/ve-mw/init/styles/ve.init.mw.Target.less @@ -62,17 +62,20 @@ * is now paragraph wrapped. Making these paragraphs display:inline would fix the * rendering but causes them to be destroyed by the CE when empty (T197987). */ -.ve-ce-mwTableNode.mw-collapsible :first-child tr:first-child th:last-child::before, -.ve-ce-mwTableNode.mw-collapsible > caption:first-child::after, -.ve-ui-diffElement table.mw-collapsible :first-child tr:first-child th:last-child::before, -.ve-ui-diffElement table.mw-collapsible > caption:first-child::after { - color: #999; - float: none; +.ve-ce-mwTableNode.mw-collapsible, +.ve-ui-diffElement table.mw-collapsible { + :first-child tr:first-child th:last-child::before, + & > caption:first-child::after { + color: #999; + float: none; + } } -.ve-ce-surface div.mw-collapsible::before, -.ve-ui-diffElement div.mw-collapsible::before { - color: #999; +.ve-ce-surface, +.ve-ui-diffElement { + div.mw-collapsible::before { + color: #999; + } } /* Categories */ @@ -93,9 +96,11 @@ a[ rel~='mw:PageProp/Category' ] { } /* Reset section node styles */ -.ve-init-mw-target .ve-ce-sectionNode::before, -.ve-init-mw-target .ve-ce-sectionNode::after { - content: normal; +.ve-init-mw-target .ve-ce-sectionNode { + &::before, + &::after { + content: normal; + } } .ve-init-mw-target .ve-ce-surface .ve-ce-sectionNode:not( .ve-ce-activeNode-active ) { diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.less index 265d14b930..1337bcba8e 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-apextheme.less @@ -10,9 +10,9 @@ box-shadow: 0 2px 2px 0 rgba( 0, 0, 0, 0.1 ); background-color: #f8fbfd; background-image: linear-gradient( to bottom, #fff 0, #f1f7fb 100% ); -} -.ve-init-mw-desktopArticleTarget-toolbarPlaceholder-floating, -.ve-init-mw-desktopArticleTarget-toolbarPlaceholder-open { - height: 44px; + &-floating, + &-open { + height: 44px; + } } diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less index e9528567ad..e817b8e5fc 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-vector-2022.less @@ -54,13 +54,19 @@ min-height: 15em; } -// Vector 2022 has no side borders, so there's no need for side padding in toolbar dialogs -.ve-init-mw-desktopArticleTarget-toolbar .ve-ui-toolbarDialog-position-above.ve-ui-toolbarDialog-padded .oo-ui-window-body, -.ve-init-mw-desktopArticleTarget-toolbar .ve-ui-toolbarDialog-position-below.ve-ui-toolbarDialog-padded .oo-ui-window-body { - padding-left: 0; - padding-right: 0; -} +.ve-init-mw-desktopArticleTarget-toolbar { + // Vector 2022 has no side borders, so there's no need for side padding in toolbar dialogs + .ve-ui-toolbarDialog-position-above, + .ve-ui-toolbarDialog-position-below { + &.ve-ui-toolbarDialog-padded .oo-ui-window-body { + padding-left: 0; + padding-right: 0; + } + } -.ve-init-mw-desktopArticleTarget-toolbar .ve-ui-toolbarDialog-position-side.ve-ui-toolbarDialog-padded .oo-ui-window-body { - padding-right: 0; + .ve-ui-toolbarDialog-position-side { + &.ve-ui-toolbarDialog-padded .oo-ui-window-body { + padding-right: 0; + } + } } diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less index 1fa41c7da3..2c4655d553 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.DesktopArticleTarget.init-wikimediatheme.less @@ -5,13 +5,15 @@ * @license The MIT License (MIT); see LICENSE.txt */ -.ve-init-mw-desktopArticleTarget-toolbarPlaceholder-bar { - height: 42px; - border-bottom: 1px solid #c8ccd1; - box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); -} +.ve-init-mw-desktopArticleTarget-toolbarPlaceholder { + &-bar { + height: 42px; + border-bottom: 1px solid #c8ccd1; + box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); + } -.ve-init-mw-desktopArticleTarget-toolbarPlaceholder-floating, -.ve-init-mw-desktopArticleTarget-toolbarPlaceholder-open { - height: 42px; + &-floating, + &-open { + height: 42px; + } } diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.less b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.less index c01fa48cf7..aed499d3ab 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-apextheme.less @@ -10,10 +10,10 @@ background: #fff; border-radius: 0.25em; box-shadow: 0 0.1em 0.5em rgba( 0, 0, 0, 0.15 ); -} -.ve-init-mw-progressBarWidget-bar { - border-right: 1px solid #ccc; - background: #cde7f4; - background-image: linear-gradient( to bottom, #eaf4fa 0%, #b0d9ee 100% ); + &-bar { + border-right: 1px solid #ccc; + background: #cde7f4; + background-image: linear-gradient( to bottom, #eaf4fa 0%, #b0d9ee 100% ); + } } diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.less b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.less index 6f55ccd77e..947ba45670 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget-wikimediatheme.less @@ -12,9 +12,9 @@ border: 1px solid #36c; border-radius: 0.875em; box-shadow: 0 1px 1px rgba( 0, 0, 0, 0.15 ); -} -.ve-init-mw-progressBarWidget-bar { - background-color: #36c; - height: 0.875em; + &-bar { + background-color: #36c; + height: 0.875em; + } } diff --git a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.less b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.less index a15c15ce1a..360687bfac 100644 --- a/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.less +++ b/modules/ve-mw/preinit/styles/ve.init.mw.ProgressBarWidget.less @@ -9,9 +9,9 @@ height: 1em; overflow: hidden; margin: 0 25%; -} -.ve-init-mw-progressBarWidget-bar { - height: 1em; - width: 0; + &-bar { + height: 1em; + width: 0; + } } diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.less b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.less index 581a6f9f75..26211ebbe4 100644 --- a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.less +++ b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-minerva.less @@ -5,7 +5,11 @@ * @license The MIT License (MIT); see LICENSE.txt */ -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading1 .oo-ui-tool-title, -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading2 .oo-ui-tool-title { - font-family: 'Linux Libertine', 'Georgia', 'Times', serif; +.oo-ui-menuToolGroup-tools { + .oo-ui-tool-name-heading1, + .oo-ui-tool-name-heading2 { + .oo-ui-tool-title { + font-family: 'Linux Libertine', 'Georgia', 'Times', serif; + } + } } diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.less b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.less index 754f43553d..991f031263 100644 --- a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.less +++ b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-monobook.less @@ -5,22 +5,24 @@ * @license The MIT License (MIT); see LICENSE.txt */ -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading1 .oo-ui-tool-title { - font-size: 188%; -} +.oo-ui-menuToolGroup-tools { + .oo-ui-tool-name-heading1 .oo-ui-tool-title { + font-size: 188%; + } -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading3 .oo-ui-tool-title { - font-size: 128%; -} + .oo-ui-tool-name-heading3 .oo-ui-tool-title { + font-size: 128%; + } -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading4 .oo-ui-tool-title { - font-size: 116%; -} + .oo-ui-tool-name-heading4 .oo-ui-tool-title { + font-size: 116%; + } -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading5 .oo-ui-tool-title { - font-size: 108%; -} + .oo-ui-tool-name-heading5 .oo-ui-tool-title { + font-size: 108%; + } -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading6 .oo-ui-tool-title { - font-size: 100%; + .oo-ui-tool-name-heading6 .oo-ui-tool-title { + font-size: 100%; + } } diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.less b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.less index 1fb80cf8a4..8ae2791e4c 100644 --- a/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.less +++ b/modules/ve-mw/ui/styles/tools/ve.ui.MWFormatTool-vector.less @@ -5,25 +5,29 @@ * @license The MIT License (MIT); see LICENSE.txt */ -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading1 .oo-ui-tool-title, -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading2 .oo-ui-tool-title { - font-family: 'Linux Libertine', 'Georgia', 'Times', serif; -} +.oo-ui-menuToolGroup-tools { + .oo-ui-tool-name-heading1, + .oo-ui-tool-name-heading2 { + .oo-ui-tool-title { + font-family: 'Linux Libertine', 'Georgia', 'Times', serif; + } + } -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading1 .oo-ui-tool-title { - font-size: 180%; -} + .oo-ui-tool-name-heading1 .oo-ui-tool-title { + font-size: 180%; + } -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading2 .oo-ui-tool-title { - font-size: 150%; -} + .oo-ui-tool-name-heading2 .oo-ui-tool-title { + font-size: 150%; + } -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading3 .oo-ui-tool-title { - font-size: 117%; -} + .oo-ui-tool-name-heading3 .oo-ui-tool-title { + font-size: 117%; + } -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading4 .oo-ui-tool-title, -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading5 .oo-ui-tool-title, -.oo-ui-menuToolGroup-tools .oo-ui-tool-name-heading6 .oo-ui-tool-title { - font-size: 100%; + .oo-ui-tool-name-heading4 .oo-ui-tool-title, + .oo-ui-tool-name-heading5 .oo-ui-tool-title, + .oo-ui-tool-name-heading6 .oo-ui-tool-title { + font-size: 100%; + } } diff --git a/modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.less b/modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.less index 7dc2b3836f..1aa856b4f8 100644 --- a/modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.less +++ b/modules/ve-mw/ui/styles/tools/ve.ui.MWPopupTool.less @@ -7,19 +7,19 @@ .ve-ui-mwPopupTool { white-space: normal; -} -.ve-ui-mwPopupTool .oo-ui-popupWidget-head { - font-weight: bold; + .oo-ui-popupWidget-head { + font-weight: bold; + } } .ve-ui-mwNoticesPopupTool-items { padding: 0.5em 1em; line-height: 1.6em; -} -.ve-ui-mwNoticesPopupTool-items > div:not( :first-child ) { - border-top: 1px solid #c8ccd1; - padding-top: 0.8em; - margin-top: 0.8em; + & > div:not( :first-child ) { + border-top: 1px solid #c8ccd1; + padding-top: 0.8em; + margin-top: 0.8em; + } } From b4420bc4b0c7975f2727909f27cbbd64a4882980 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 9 Jul 2025 19:02:23 +0100 Subject: [PATCH 543/730] Introduce VisualEditorFileModule to load files from lib/ve/build/modules.json Bug: T107283 Depends-On: Id2aea2b30ba884aa44ffd2a4a74db41f11ebedc5 Change-Id: I5f38a7c12bd3d6a09740e560adc177f7ab0dbe76 --- build/checkModules.js | 11 +- extension.json | 609 ++++------------------------ includes/VisualEditorFileModule.php | 84 ++++ 3 files changed, 171 insertions(+), 533 deletions(-) create mode 100644 includes/VisualEditorFileModule.php diff --git a/build/checkModules.js b/build/checkModules.js index ba11803779..278cdeb6c6 100644 --- a/build/checkModules.js +++ b/build/checkModules.js @@ -1,5 +1,6 @@ /** * Checks that all files referenced in lib/ve/build/modules.json are either: + * - referenced by a ResourceModule's veModules in extension.json (and thus loaded dynamically), or * - explicitly listed in scripts/styles in extension.json, or * - ignored via the ignore list in this script. * @@ -112,9 +113,17 @@ const extensionFiles = new Set(); addModulesToSet( extensionJson.ResourceModules, extensionFiles ); addModulesToSet( { QUnitTestModule: extensionJson.QUnitTestModule }, extensionFiles ); +// Modules listed in veModules of ResourceModules are loaded automatically. +Object.values( extensionJson.ResourceModules ).forEach( ( module ) => { + if ( module.veModules ) { + module.veModules.forEach( ( veModule ) => { + addModulesToSet( { [ veModule ]: modulesJson[ veModule ] || {} }, extensionFiles, 'lib/ve' ); + } ); + } +} ); + const modulesFiles = new Set(); addModulesToSet( modulesJson, modulesFiles, 'lib/ve' ); - const missingFiles = Array.from( modulesFiles ).filter( ( file ) => !extensionFiles.has( file ) && !isIgnored( file ) ); if ( unusedIgnores.size ) { diff --git a/extension.json b/extension.json index a46feebe27..d12875be84 100644 --- a/extension.json +++ b/extension.json @@ -288,14 +288,18 @@ "scripts": "lib/ve/lib/spark-md5/spark-md5.js" }, "ext.visualEditor.supportCheck": { - "group": "visualEditorA", - "scripts": "lib/ve/src/init/ve.init.SupportCheck.js" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.supportCheck" + ], + "group": "visualEditorA" }, "ext.visualEditor.sanitize": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/ve.sanitize.js" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.sanitize" ], + "group": "visualEditorA", "dependencies": [ "ext.visualEditor.base", "dompurify" @@ -362,7 +366,7 @@ "mediawiki.cookie", "mediawiki.api", "ext.visualEditor.supportCheck", - "ext.visualEditor.track", + "ext.visualEditor.core.utils", "ext.visualEditor.progressBarWidget", "ext.visualEditor.tempWikitextEditorWidget" ], @@ -381,7 +385,7 @@ "modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js" ], "dependencies": [ - "ext.visualEditor.track", + "ext.visualEditor.core.utils", "ext.visualEditor.core.utils.parsing", "mediawiki.jqueryMsg", "jquery.textSelection", @@ -575,25 +579,13 @@ ] }, "ext.visualEditor.collab": { + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.collab" + ], "scripts": [ - "lib/ve/rebaser/src/dm/ve.dm.RebaseDocState.js", - "lib/ve/rebaser/src/dm/ve.dm.RebaseServer.js", - "lib/ve/rebaser/src/dm/ve.dm.DocumentStore.js", - "lib/ve/rebaser/src/dm/ve.dm.ProtocolServer.js", - "lib/ve/src/dm/ve.dm.RebaseClient.js", - "lib/ve/src/dm/ve.dm.SurfaceSynchronizer.js", - "lib/ve/src/ui/widgets/ve.ui.AuthorItemWidget.js", - "lib/ve/src/ui/tools/ve.ui.AuthorListPopupTool.js", - "lib/ve/src/ve.FakePeer.js", - "lib/ve/collab/ve.collab.js", - "lib/ve/collab/ve.dm.CollabTransportServer.js", - "lib/ve/collab/ve.ui.CollabProcessDialog.js", - "lib/ve/collab/ve.ui.CollabTool.js", "modules/ve-mw-collab/ve.init.mw.collab.init.js" ], - "styles": [ - "lib/ve/src/ui/styles/widgets/ve.ui.AuthorItemWidget.less" - ], "dependencies": [ "color-picker", "peerjs", @@ -619,13 +611,11 @@ ] }, "ext.visualEditor.ve": { - "group": "visualEditorA", - "scripts": "lib/ve/src/ve.js" - }, - "ext.visualEditor.track": { - "group": "visualEditorA", - "scripts": "modules/ve-mw/ve.track.js", - "dependencies": "ext.visualEditor.ve" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.core.ve" + ], + "group": "visualEditorA" }, "ext.visualEditor.editCheck": { "group": "visualEditorA", @@ -707,40 +697,36 @@ ] }, "ext.visualEditor.core.utils": { + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.core.utils" + ], "group": "visualEditorA", "scripts": [ - "lib/ve/src/ve.utils.js", - "lib/ve/src/ve.TriggerListener.js" - ], - "debugScripts": [ - "lib/ve/src/ve.debug.js", - "lib/ve/src/ve.freeze.js" + "modules/ve-mw/ve.track.js" ], "dependencies": [ "ext.visualEditor.ve", - "ext.visualEditor.track", "oojs-ui" ] }, "ext.visualEditor.core.utils.parsing": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/ve.utils.parsing.js" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.core.utils.parsing" ], + "group": "visualEditorA", "dependencies": [ "ext.visualEditor.ve" ] }, "ext.visualEditor.base": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/ve.utils.client.js", - "lib/ve/src/init/ve.init.js", - "lib/ve/src/init/ve.init.SafeStorage.js", - "lib/ve/src/init/ve.init.ConflictableStorage.js", - "lib/ve/src/init/ve.init.Platform.js", - "lib/ve/src/init/ve.init.Target.js" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.core.utils.client", + "visualEditor.core.init" ], + "group": "visualEditorA", "dependencies": [ "oojs", "oojs-ui", @@ -778,8 +764,9 @@ "mediawiki.user", "mediawiki.util", "ext.visualEditor.base", - "ext.visualEditor.track", + "ext.visualEditor.core.utils", "ext.visualEditor.targetLoader", + "mediawiki.language.names", "jquery.uls.data" ], "messages": [ @@ -896,398 +883,14 @@ "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorDataModule" }, "ext.visualEditor.core": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/ve.Range.js", - "lib/ve/src/ve.SelectionState.js", - "lib/ve/src/ve.Node.js", - "lib/ve/src/ve.PositionStep.js", - "lib/ve/src/ve.BranchNode.js", - "lib/ve/src/ve.LeafNode.js", - "lib/ve/src/ve.Document.js", - "lib/ve/src/ve.EventSequencer.js", - "lib/ve/src/ve.Scheduler.js", - "lib/ve/src/dm/ve.dm.js", - "lib/ve/src/dm/ve.dm.Model.js", - "lib/ve/src/dm/ve.dm.ModelRegistry.js", - "lib/ve/src/dm/ve.dm.ModelFactory.js", - "lib/ve/src/dm/ve.dm.NodeFactory.js", - "lib/ve/src/dm/ve.dm.AnnotationFactory.js", - "lib/ve/src/dm/ve.dm.AnnotationSet.js", - "lib/ve/src/dm/ve.dm.Node.js", - "lib/ve/src/dm/ve.dm.ClassAttributeNode.js", - "lib/ve/src/dm/ve.dm.AlignableNode.js", - "lib/ve/src/dm/ve.dm.FocusableNode.js", - "lib/ve/src/dm/ve.dm.ResizableNode.js", - "lib/ve/src/dm/ve.dm.TableCellableNode.js", - "lib/ve/src/dm/ve.dm.Scalable.js", - "lib/ve/src/dm/ve.dm.BranchNode.js", - "lib/ve/src/dm/ve.dm.ContentBranchNode.js", - "lib/ve/src/dm/ve.dm.LeafNode.js", - "lib/ve/src/dm/ve.dm.Annotation.js", - "lib/ve/src/dm/ve.dm.InternalList.js", - "lib/ve/src/dm/ve.dm.InternalListNodeGroup.js", - "lib/ve/src/dm/ve.dm.MetaItem.js", - "lib/ve/src/dm/ve.dm.MetaList.js", - "lib/ve/src/dm/ve.dm.TableMatrix.js", - "lib/ve/src/dm/ve.dm.TransactionProcessor.js", - "lib/ve/src/dm/ve.dm.Transaction.js", - "lib/ve/src/dm/ve.dm.TransactionBuilder.js", - "lib/ve/src/dm/ve.dm.TransactionSquasher.js", - "lib/ve/src/dm/ve.dm.Change.js", - "lib/ve/src/dm/ve.dm.TreeCursor.js", - "lib/ve/src/dm/ve.dm.TreeModifier.js", - "lib/ve/src/dm/ve.dm.Selection.js", - "lib/ve/src/dm/ve.dm.Surface.js", - "lib/ve/src/dm/ve.dm.SurfaceFragment.js", - "lib/ve/src/dm/ve.dm.SourceSurfaceFragment.js", - "lib/ve/src/dm/ve.dm.DataString.js", - "lib/ve/src/dm/ve.dm.Document.js", - "lib/ve/src/dm/ve.dm.DocumentSlice.js", - "lib/ve/src/dm/ve.dm.TableSlice.js", - "lib/ve/src/dm/ve.dm.LinearData.js", - "lib/ve/src/dm/ve.dm.HashValueStore.js", - "lib/ve/src/dm/converters/ve.dm.DomFromModelConverter.js", - "lib/ve/src/dm/converters/ve.dm.ModelFromDomConverter.js", - "lib/ve/src/dm/ve.dm.Converter.js", - "lib/ve/src/dm/ve.dm.SourceConverter.js", - "lib/ve/src/dm/selections/ve.dm.LinearSelection.js", - "lib/ve/src/dm/selections/ve.dm.NullSelection.js", - "lib/ve/src/dm/selections/ve.dm.TableSelection.js", - "lib/ve/src/dm/nodes/ve.dm.GeneratedContentNode.js", - "lib/ve/src/dm/nodes/ve.dm.AlienNode.js", - "lib/ve/src/dm/nodes/ve.dm.AlienBlockNode.js", - "lib/ve/src/dm/nodes/ve.dm.AlienInlineNode.js", - "lib/ve/src/dm/nodes/ve.dm.AlienTableCellNode.js", - "lib/ve/src/dm/nodes/ve.dm.ArticleNode.js", - "lib/ve/src/dm/nodes/ve.dm.BlockquoteNode.js", - "lib/ve/src/dm/nodes/ve.dm.BreakNode.js", - "lib/ve/src/dm/nodes/ve.dm.CenterNode.js", - "lib/ve/src/dm/nodes/ve.dm.CommentNode.js", - "lib/ve/src/dm/nodes/ve.dm.FakeCommentNode.js", - "lib/ve/src/dm/nodes/ve.dm.RealCommentNode.js", - "lib/ve/src/dm/nodes/ve.dm.DefinitionListItemNode.js", - "lib/ve/src/dm/nodes/ve.dm.DefinitionListNode.js", - "lib/ve/src/dm/nodes/ve.dm.DivNode.js", - "lib/ve/src/dm/nodes/ve.dm.DocumentNode.js", - "lib/ve/src/dm/nodes/ve.dm.HeadingNode.js", - "lib/ve/src/dm/nodes/ve.dm.HorizontalRuleNode.js", - "lib/ve/src/dm/nodes/ve.dm.InternalItemNode.js", - "lib/ve/src/dm/nodes/ve.dm.InternalListNode.js", - "lib/ve/src/dm/nodes/ve.dm.ListItemNode.js", - "lib/ve/src/dm/nodes/ve.dm.ListNode.js", - "lib/ve/src/dm/nodes/ve.dm.ParagraphNode.js", - "lib/ve/src/dm/nodes/ve.dm.PreformattedNode.js", - "lib/ve/src/dm/nodes/ve.dm.SectionNode.js", - "lib/ve/src/dm/nodes/ve.dm.TableCaptionNode.js", - "lib/ve/src/dm/nodes/ve.dm.TableCellNode.js", - "lib/ve/src/dm/nodes/ve.dm.TableNode.js", - "lib/ve/src/dm/nodes/ve.dm.TableRowNode.js", - "lib/ve/src/dm/nodes/ve.dm.TableSectionNode.js", - "lib/ve/src/dm/nodes/ve.dm.TextNode.js", - "lib/ve/src/dm/nodes/ve.dm.ImageNode.js", - "lib/ve/src/dm/nodes/ve.dm.BlockImageNode.js", - "lib/ve/src/dm/nodes/ve.dm.BlockImageCaptionNode.js", - "lib/ve/src/dm/nodes/ve.dm.InlineImageNode.js", - "lib/ve/src/dm/annotations/ve.dm.LinkAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.TextStyleAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.ImportedDataAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.AbbreviationAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.BidiAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.BigAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.BoldAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.CodeSampleAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.CodeAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.DatetimeAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.DefinitionAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.DeleteAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.DiffAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.FontAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.HighlightAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.InsertAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.ItalicAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.QuotationAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.SmallAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.SpanAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.StrikethroughAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.SubscriptAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.SuperscriptAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.UnderlineAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.UserInputAnnotation.js", - "lib/ve/src/dm/annotations/ve.dm.VariableAnnotation.js", - "lib/ve/src/dm/metaitems/ve.dm.AlienMetaItem.js", - "lib/ve/src/dm/metaitems/ve.dm.RemovableAlienMetaItem.js", - "lib/ve/src/dm/metaitems/ve.dm.CommentMetaItem.js", - "lib/ve/src/ce/ve.ce.js", - "lib/ve/src/ce/ve.ce.TextStateChunk.js", - "lib/ve/src/ce/ve.ce.TextState.js", - "lib/ve/src/ce/ve.ce.RangeState.js", - "lib/ve/src/ce/ve.ce.AnnotationFactory.js", - "lib/ve/src/ce/ve.ce.NodeFactory.js", - "lib/ve/src/ce/ve.ce.Document.js", - "lib/ve/src/ce/ve.ce.View.js", - "lib/ve/src/ce/ve.ce.Annotation.js", - "lib/ve/src/ce/ve.ce.Node.js", - "lib/ve/src/ce/ve.ce.BranchNode.js", - "lib/ve/src/ce/ve.ce.ContentBranchNode.js", - "lib/ve/src/ce/ve.ce.LeafNode.js", - "lib/ve/src/ce/ve.ce.MetaItem.js", - "lib/ve/src/ce/ve.ce.ClassAttributeNode.js", - "lib/ve/src/ce/ve.ce.AlignableNode.js", - "lib/ve/src/ce/ve.ce.FocusableNode.js", - "lib/ve/src/ce/ve.ce.ResizableNode.js", - "lib/ve/src/ce/ve.ce.TableCellableNode.js", - "lib/ve/src/ce/ve.ce.Selection.js", - "lib/ve/src/ce/ve.ce.ClipboardHandler.js", - "lib/ve/src/ce/ve.ce.DragDropHandler.js", - "lib/ve/src/ce/ve.ce.SelectionManager.js", - "lib/ve/src/ce/ve.ce.Surface.js", - "lib/ve/src/ce/ve.ce.SurfaceObserver.js", - "lib/ve/src/ce/ve.ce.KeyDownHandlerFactory.js", - "lib/ve/src/ce/ve.ce.KeyDownHandler.js", - "lib/ve/src/ce/selections/ve.ce.LinearSelection.js", - "lib/ve/src/ce/selections/ve.ce.NullSelection.js", - "lib/ve/src/ce/selections/ve.ce.TableSelection.js", - "lib/ve/src/ce/keydownhandlers/ve.ce.LinearArrowKeyDownHandler.js", - "lib/ve/src/ce/keydownhandlers/ve.ce.LinearDeleteKeyDownHandler.js", - "lib/ve/src/ce/keydownhandlers/ve.ce.LinearEnterKeyDownHandler.js", - "lib/ve/src/ce/keydownhandlers/ve.ce.LinearEscapeKeyDownHandler.js", - "lib/ve/src/ce/keydownhandlers/ve.ce.TableArrowKeyDownHandler.js", - "lib/ve/src/ce/keydownhandlers/ve.ce.TableDeleteKeyDownHandler.js", - "lib/ve/src/ce/keydownhandlers/ve.ce.LinearTabKeyDownHandler.js", - "lib/ve/src/ce/nodes/ve.ce.GeneratedContentNode.js", - "lib/ve/src/ce/nodes/ve.ce.ContentEditableNode.js", - "lib/ve/src/ce/nodes/ve.ce.ActiveNode.js", - "lib/ve/src/ce/nodes/ve.ce.AlienNode.js", - "lib/ve/src/ce/nodes/ve.ce.AlienBlockNode.js", - "lib/ve/src/ce/nodes/ve.ce.AlienInlineNode.js", - "lib/ve/src/ce/nodes/ve.ce.AlienTableCellNode.js", - "lib/ve/src/ce/nodes/ve.ce.ArticleNode.js", - "lib/ve/src/ce/nodes/ve.ce.BlockquoteNode.js", - "lib/ve/src/ce/nodes/ve.ce.BreakNode.js", - "lib/ve/src/ce/nodes/ve.ce.CenterNode.js", - "lib/ve/src/ce/nodes/ve.ce.CommentNode.js", - "lib/ve/src/ce/nodes/ve.ce.DefinitionListItemNode.js", - "lib/ve/src/ce/nodes/ve.ce.DefinitionListNode.js", - "lib/ve/src/ce/nodes/ve.ce.DivNode.js", - "lib/ve/src/ce/nodes/ve.ce.DocumentNode.js", - "lib/ve/src/ce/nodes/ve.ce.HeadingNode.js", - "lib/ve/src/ce/nodes/ve.ce.HorizontalRuleNode.js", - "lib/ve/src/ce/nodes/ve.ce.InternalItemNode.js", - "lib/ve/src/ce/nodes/ve.ce.InternalListNode.js", - "lib/ve/src/ce/nodes/ve.ce.ListItemNode.js", - "lib/ve/src/ce/nodes/ve.ce.ListNode.js", - "lib/ve/src/ce/nodes/ve.ce.ParagraphNode.js", - "lib/ve/src/ce/nodes/ve.ce.PreformattedNode.js", - "lib/ve/src/ce/nodes/ve.ce.SectionNode.js", - "lib/ve/src/ce/nodes/ve.ce.TableCaptionNode.js", - "lib/ve/src/ce/nodes/ve.ce.TableCellNode.js", - "lib/ve/src/ce/nodes/ve.ce.TableNode.js", - "lib/ve/src/ce/nodes/ve.ce.TableRowNode.js", - "lib/ve/src/ce/nodes/ve.ce.TableSectionNode.js", - "lib/ve/src/ce/nodes/ve.ce.TextNode.js", - "lib/ve/src/ce/nodes/ve.ce.UnrenderedNode.js", - "lib/ve/src/ce/nodes/ve.ce.ImageNode.js", - "lib/ve/src/ce/nodes/ve.ce.BlockImageNode.js", - "lib/ve/src/ce/nodes/ve.ce.BlockImageCaptionNode.js", - "lib/ve/src/ce/nodes/ve.ce.InlineImageNode.js", - "lib/ve/src/ce/annotations/ve.ce.NailedAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.LinkAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.TextStyleAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.ImportedDataAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.AbbreviationAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.BidiAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.BigAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.BoldAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.CodeAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.CodeSampleAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.DatetimeAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.DefinitionAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.DeleteAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.FontAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.HighlightAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.InsertAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.ItalicAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.QuotationAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.SmallAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.SpanAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.StrikethroughAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.SubscriptAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.SuperscriptAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.UnderlineAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.UserInputAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.VariableAnnotation.js", - "lib/ve/src/ui/ve.ui.js", - "lib/ve/src/ui/ve.ui.Overlay.js", - "lib/ve/src/ui/ve.ui.Surface.js", - "lib/ve/src/ui/ve.ui.Context.js", - "lib/ve/src/ui/contexts/ve.ui.LinearContext.js", - "lib/ve/src/ui/contexts/ve.ui.TableLineContext.js", - "lib/ve/src/ui/ve.ui.ModeledFactory.js", - "lib/ve/src/ui/ve.ui.ContextItem.js", - "lib/ve/src/ui/ve.ui.ContextItemFactory.js", - "lib/ve/src/ui/ve.ui.Tool.js", - "lib/ve/src/ui/ve.ui.Toolbar.js", - "lib/ve/src/ui/ve.ui.TargetToolbar.js", - "lib/ve/src/ui/ve.ui.PositionedTargetToolbar.js", - "lib/ve/src/ui/ve.ui.ToolFactory.js", - "lib/ve/src/ui/ve.ui.Command.js", - "lib/ve/src/ui/ve.ui.CommandRegistry.js", - "lib/ve/src/ui/ve.ui.CommandHelpRegistry.js", - "lib/ve/src/ui/ve.ui.Trigger.js", - "lib/ve/src/ui/ve.ui.TriggerRegistry.js", - "lib/ve/src/ui/ve.ui.Sequence.js", - "lib/ve/src/ui/ve.ui.SequenceRegistry.js", - "lib/ve/src/ui/ve.ui.Action.js", - "lib/ve/src/ui/ve.ui.ActionFactory.js", - "lib/ve/src/ui/ve.ui.DataTransferHandler.js", - "lib/ve/src/ui/ve.ui.FileTransferHandler.js", - "lib/ve/src/ui/ve.ui.DataTransferHandlerFactory.js", - "lib/ve/src/ui/ve.ui.DataTransferItem.js", - "lib/ve/src/ui/ve.ui.WindowManager.js", - "lib/ve/src/ui/ve.ui.FragmentWindow.js", - "lib/ve/src/ui/ve.ui.NodeWindow.js", - "lib/ve/src/ui/ve.ui.TabIndexScope.js", - "lib/ve/src/ui/actions/ve.ui.AnnotationAction.js", - "lib/ve/src/ui/actions/ve.ui.BlockquoteAction.js", - "lib/ve/src/ui/actions/ve.ui.CompletionAction.js", - "lib/ve/src/ui/actions/ve.ui.ContentAction.js", - "lib/ve/src/ui/actions/ve.ui.FormatAction.js", - "lib/ve/src/ui/actions/ve.ui.HelpCompletionAction.js", - "lib/ve/src/ui/actions/ve.ui.HistoryAction.js", - "lib/ve/src/ui/actions/ve.ui.IndentationAction.js", - "lib/ve/src/ui/actions/ve.ui.LinkAction.js", - "lib/ve/src/ui/actions/ve.ui.ListAction.js", - "lib/ve/src/ui/actions/ve.ui.TableAction.js", - "lib/ve/src/ui/actions/ve.ui.WindowAction.js", - "lib/ve/src/ui/contextitems/ve.ui.LinearContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.ToolContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.PersistentContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.AnnotationContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.TableLineContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.MobileActionsContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.AlignableContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.CommentContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.LinkContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.TableContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.MergeCellsContextItem.js", - "lib/ve/src/ui/contextitems/ve.ui.SumCellsContextItem.js", - "lib/ve/src/ui/commands/ve.ui.ClearAnnotationCommand.js", - "lib/ve/src/ui/commands/ve.ui.HistoryCommand.js", - "lib/ve/src/ui/commands/ve.ui.IndentationCommand.js", - "lib/ve/src/ui/commands/ve.ui.MergeCellsCommand.js", - "lib/ve/src/ui/dialogs/ve.ui.FragmentDialog.js", - "lib/ve/src/ui/dialogs/ve.ui.NodeDialog.js", - "lib/ve/src/ui/dialogs/ve.ui.SidebarDialog.js", - "lib/ve/src/ui/dialogs/ve.ui.ToolbarDialog.js", - "lib/ve/src/ui/dialogs/ve.ui.CommandHelpDialog.js", - "lib/ve/src/ui/dialogs/ve.ui.FindAndReplaceDialog.js", - "lib/ve/src/ui/dialogs/ve.ui.ProgressDialog.js", - "lib/ve/src/ui/dialogs/ve.ui.SpecialCharacterDialog.js", - "lib/ve/src/ui/dialogs/ve.ui.TableDialog.js", - "lib/ve/src/ui/datatransferhandlers/ve.ui.PlainTextStringTransferHandler.js", - "lib/ve/src/ui/datatransferhandlers/ve.ui.HTMLStringTransferHandler.js", - "lib/ve/src/ui/datatransferhandlers/ve.ui.DSVFileTransferHandler.js", - "lib/ve/src/ui/datatransferhandlers/ve.ui.PlainTextFileTransferHandler.js", - "lib/ve/src/ui/datatransferhandlers/ve.ui.HTMLFileTransferHandler.js", - "lib/ve/src/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.js", - "lib/ve/src/ui/elements/ve.ui.PreviewElement.js", - "lib/ve/src/ui/windowmanagers/ve.ui.SurfaceWindowManager.js", - "lib/ve/src/ui/windowmanagers/ve.ui.SidebarDialogWindowManager.js", - "lib/ve/src/ui/windowmanagers/ve.ui.ToolbarDialogWindowManager.js", - "lib/ve/src/ui/widgets/ve.ui.AlignWidget.js", - "lib/ve/src/ui/widgets/ve.ui.TargetWidget.js", - "lib/ve/src/ui/widgets/ve.ui.LinkAnnotationWidget.js", - "lib/ve/src/ui/widgets/ve.ui.CompletionWidget.js", - "lib/ve/src/ui/widgets/ve.ui.ContextSelectWidget.js", - "lib/ve/src/ui/widgets/ve.ui.ContextOptionWidget.js", - "lib/ve/src/ui/widgets/ve.ui.DimensionsWidget.js", - "lib/ve/src/ui/widgets/ve.ui.MediaSizeWidget.js", - "lib/ve/src/ui/widgets/ve.ui.NoFocusButtonWidget.js", - "lib/ve/src/ui/widgets/ve.ui.WhitespacePreservingTextInputWidget.js", - "lib/ve/src/ui/tools/ve.ui.AnnotationTool.js", - "lib/ve/src/ui/tools/ve.ui.ChangeDirectionalityTool.js", - "lib/ve/src/ui/tools/ve.ui.ClearAnnotationTool.js", - "lib/ve/src/ui/tools/ve.ui.WindowTool.js", - "lib/ve/src/ui/tools/ve.ui.FragmentWindowTool.js", - "lib/ve/src/ui/tools/ve.ui.FragmentInspectorTool.js", - "lib/ve/src/ui/tools/ve.ui.LinkInspectorTool.js", - "lib/ve/src/ui/tools/ve.ui.CommentInspectorTool.js", - "lib/ve/src/ui/tools/ve.ui.ToolbarDialogTool.js", - "lib/ve/src/ui/tools/ve.ui.FormatTool.js", - "lib/ve/src/ui/tools/ve.ui.HelpCompletionTool.js", - "lib/ve/src/ui/tools/ve.ui.HistoryTool.js", - "lib/ve/src/ui/tools/ve.ui.IndentationTool.js", - "lib/ve/src/ui/tools/ve.ui.ListTool.js", - "lib/ve/src/ui/tools/ve.ui.TableTool.js", - "lib/ve/src/ui/inspectors/ve.ui.FragmentInspector.js", - "lib/ve/src/ui/inspectors/ve.ui.AnnotationInspector.js", - "lib/ve/src/ui/inspectors/ve.ui.NodeInspector.js", - "lib/ve/src/ui/inspectors/ve.ui.CommentInspector.js", - "lib/ve/src/ui/inspectors/ve.ui.LinkAnnotationInspector.js", - "lib/ve/src/ui/layouts/ve.ui.SymbolListBookletLayout.js", - "lib/ve/src/ui/pages/ve.ui.SymbolListPage.js" - ], - "debugScripts": [ - "lib/ve/src/ce/ve.ce.debug.js", - "lib/ve/src/ui/ve.ui.DebugBar.js", - "lib/ve/src/ve.Filibuster.js" - ], - "styles": [ - "lib/ve/src/ce/styles/nodes/ve.ce.FocusableNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.ActiveNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.AlienNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.BranchNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.ContentBranchNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.ParagraphNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.RootNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.GeneratedContentNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.HorizontalRuleNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.CommentNode.less", - "lib/ve/src/ce/styles/annotations/ve.ce.LanguageAnnotation.less", - "lib/ve/src/ce/styles/annotations/ve.ce.LinkAnnotation.less", - "lib/ve/src/ce/styles/nodes/ve.ce.ResizableNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.SectionNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.TableCellNode.less", - "lib/ve/src/ce/styles/nodes/ve.ce.TableNode.less", - "lib/ve/src/ce/styles/ve.ce.less", - "lib/ve/src/ce/styles/ve.ce.Surface.less", - "lib/ve/src/ce/styles/ve.ce.SelectionManager.less", - "lib/ve/src/ui/styles/ve.ui.icons.less", - "lib/ve/src/ui/styles/dialogs/ve.ui.SidebarDialog.less", - "lib/ve/src/ui/styles/dialogs/ve.ui.ToolbarDialog.less", - "lib/ve/src/ui/styles/dialogs/ve.ui.CommandHelpDialog.less", - "lib/ve/src/ui/styles/dialogs/ve.ui.FindAndReplaceDialog.less", - "lib/ve/src/ui/styles/dialogs/ve.ui.ProgressDialog.less", - "lib/ve/src/ui/styles/dialogs/ve.ui.SpecialCharacterDialog.less", - "lib/ve/src/ui/styles/dialogs/ve.ui.TableDialog.less", - "lib/ve/src/ui/styles/tools/ve.ui.FormatTool.less", - "lib/ve/src/ui/styles/widgets/ve.ui.CompletionWidget.less", - "lib/ve/src/ui/styles/widgets/ve.ui.ContextOptionWidget.less", - "lib/ve/src/ui/styles/widgets/ve.ui.ContextSelectWidget.less", - "lib/ve/src/ui/styles/widgets/ve.ui.DimensionsWidget.less", - "lib/ve/src/ui/styles/widgets/ve.ui.MediaSizeWidget.less", - "lib/ve/src/ui/styles/inspectors/ve.ui.CommentInspector.less", - "lib/ve/src/ui/styles/inspectors/ve.ui.FragmentInspector.less", - "lib/ve/src/ui/styles/layouts/ve.ui.SymbolListBookletLayout.less", - "lib/ve/src/ui/styles/widgets/ve.ui.TargetWidget.less", - "lib/ve/src/ui/styles/windowmanagers/ve.ui.SidebarDialogWindowManager.less", - "lib/ve/src/ui/styles/ve.ui.Context.less", - "lib/ve/src/ui/styles/ve.ui.ContextItem.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.LinearContextItem.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.TableLineContextItem.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.AlignableContextItem.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.CommentContextItem.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.LanguageContextItem.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.LinkContextItem.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.MergeCellsContextItem.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.ToolContextItem.less", - "lib/ve/src/ui/styles/ve.ui.Overlay.less", - "lib/ve/src/ui/styles/ve.ui.Surface.less", - "lib/ve/src/ui/styles/ve.ui.Toolbar.less", - "lib/ve/src/ui/styles/ve.ui.TableLineContext.less", - "lib/ve/src/ui/styles/ve.ui.DebugBar.less" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.core.root", + "visualEditor.core.model", + "visualEditor.core.view", + "visualEditor.core.ui" ], + "group": "visualEditorA", "skinStyles": { "default": [ "lib/ve/src/themes/wikimediaui.less" @@ -1322,6 +925,7 @@ "visualeditor-annotationbutton-bold-tooltip", "visualeditor-annotationbutton-code-tooltip", "visualeditor-annotationbutton-italic-tooltip", + "visualeditor-annotationbutton-language-tooltip", "visualeditor-annotationbutton-link-tooltip", "visualeditor-annotationbutton-small-tooltip", "visualeditor-annotationbutton-strikethrough-tooltip", @@ -1364,6 +968,8 @@ "visualeditor-dialog-action-goback", "visualeditor-dialog-action-insert", "visualeditor-dialog-command-help-title", + "visualeditor-dialog-language-auto-direction", + "visualeditor-dialog-language-search-title", "visualeditor-dialog-table-caption", "visualeditor-dialog-table-title", "visualeditor-dimensionswidget-height", @@ -1420,7 +1026,15 @@ "visualeditor-key-space", "visualeditor-key-tab", "visualeditor-key-up", + "visualeditor-language-search-input-placeholder", + "visualeditor-languageannotation-description", + "visualeditor-languageannotation-description-with-dir", "visualeditor-languagecontext-remove", + "visualeditor-languageinspector-title", + "visualeditor-languageinspector-widget-changelang", + "visualeditor-languageinspector-widget-label-direction", + "visualeditor-languageinspector-widget-label-langcode", + "visualeditor-languageinspector-widget-label-language", "visualeditor-linkcontext-label-change", "visualeditor-linkcontext-label-fallback", "visualeditor-linkcontext-label-label", @@ -1484,16 +1098,9 @@ }, "ext.visualEditor.commentAnnotation": { "group": "visualEditorA", - "scripts": [ - "lib/ve/src/dm/annotations/ve.dm.CommentAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.CommentAnnotation.js", - "lib/ve/src/ui/contextitems/ve.ui.CommentAnnotationContextItem.js", - "lib/ve/src/ui/tools/ve.ui.CommentAnnotationInspectorTool.js", - "lib/ve/src/ui/inspectors/ve.ui.CommentAnnotationInspector.js" - ], - "styles": [ - "lib/ve/src/ce/styles/annotations/ve.ce.CommentAnnotation.less", - "lib/ve/src/ui/styles/contextitems/ve.ui.CommentAnnotationContextItem.less" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.commentAnnotation" ], "dependencies": [ "ext.visualEditor.core" @@ -1503,16 +1110,11 @@ ] }, "ext.visualEditor.rebase": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/dm/ve.dm.RebaseClient.js", - "lib/ve/src/dm/ve.dm.SurfaceSynchronizer.js", - "lib/ve/src/ui/widgets/ve.ui.AuthorItemWidget.js", - "lib/ve/src/ui/tools/ve.ui.AuthorListPopupTool.js" - ], - "styles": [ - "lib/ve/src/ui/styles/widgets/ve.ui.AuthorItemWidget.less" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.rebase" ], + "group": "visualEditorA", "dependencies": [ "ext.visualEditor.core", "ext.visualEditor.sanitize", @@ -1532,27 +1134,21 @@ ] }, "ext.visualEditor.core.desktop": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/ui/contexts/ve.ui.DesktopContext.js", - "lib/ve/src/ui/windowmanagers/ve.ui.DesktopInspectorWindowManager.js" - ], - "styles": [ - "lib/ve/src/ui/styles/ve.ui.DesktopContext.less" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.desktop.build" ], + "group": "visualEditorA", "dependencies": [ "ext.visualEditor.core" ] }, "ext.visualEditor.core.mobile": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/ui/contexts/ve.ui.MobileContext.js", - "lib/ve/src/ui/windowmanagers/ve.ui.MobileWindowManager.js" - ], - "styles": [ - "lib/ve/src/ui/styles/ve.ui.MobileContext.less" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.mobile.build" ], + "group": "visualEditorA", "dependencies": [ "ext.visualEditor.core" ] @@ -1776,7 +1372,6 @@ "ext.visualEditor.mwgallery", "ext.visualEditor.mwimage", "ext.visualEditor.mwalienextension", - "ext.visualEditor.language", "ext.visualEditor.mwlanguage", "ext.visualEditor.icons" ] @@ -2246,17 +1841,11 @@ ] }, "ext.visualEditor.checkList": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/dm/nodes/ve.dm.CheckListNode.js", - "lib/ve/src/dm/nodes/ve.dm.CheckListItemNode.js", - "lib/ve/src/ce/nodes/ve.ce.CheckListNode.js", - "lib/ve/src/ce/nodes/ve.ce.CheckListItemNode.js", - "lib/ve/src/ui/tools/ve.ui.CheckListTool.js" - ], - "styles": [ - "lib/ve/src/ce/styles/nodes/ve.ce.CheckListNode.less" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.checkList" ], + "group": "visualEditorA", "dependencies": [ "ext.visualEditor.core" ], @@ -2265,17 +1854,11 @@ ] }, "ext.visualEditor.diffing": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/ve.DiffTreeNode.js", - "lib/ve/src/ve.DiffMatchPatch.js", - "lib/ve/src/dm/ve.dm.VisualDiff.js", - "lib/ve/src/ui/elements/ve.ui.DiffElement.js", - "lib/ve/src/ui/widgets/ve.ui.ChangeDescriptionsSelectWidget.js" - ], - "styles": [ - "lib/ve/src/ui/styles/elements/ve.ui.DiffElement.less" + "class": "MediaWiki\\Extension\\VisualEditor\\VisualEditorFileModule", + "veModules": [ + "visualEditor.diffing" ], + "group": "visualEditorA", "skinStyles": { "vector": [ "modules/ve-mw/ui/styles/elements/ve.ui.DiffElement-vector.less" @@ -2351,43 +1934,6 @@ "visualeditor-savedialog-review-wikitext" ] }, - "ext.visualEditor.language": { - "group": "visualEditorA", - "scripts": [ - "lib/ve/src/dm/annotations/ve.dm.LanguageAnnotation.js", - "lib/ve/src/ce/annotations/ve.ce.LanguageAnnotation.js", - "lib/ve/src/ui/contextitems/ve.ui.LanguageContextItem.js", - "lib/ve/src/ui/widgets/ve.ui.LanguageResultWidget.js", - "lib/ve/src/ui/widgets/ve.ui.LanguageSearchWidget.js", - "lib/ve/src/ui/dialogs/ve.ui.LanguageSearchDialog.js", - "lib/ve/src/ui/inspectors/ve.ui.LanguageInspector.js", - "lib/ve/src/ui/tools/ve.ui.LanguageInspectorTool.js", - "lib/ve/src/ui/widgets/ve.ui.LanguageInputWidget.js" - ], - "styles": [ - "lib/ve/src/ui/styles/inspectors/ve.ui.LanguageInspector.less", - "lib/ve/src/ui/styles/widgets/ve.ui.LanguageInputWidget.less", - "lib/ve/src/ui/styles/widgets/ve.ui.LanguageSearchWidget.less" - ], - "dependencies": [ - "ext.visualEditor.core", - "mediawiki.language.names", - "jquery.uls.data" - ], - "messages": [ - "visualeditor-annotationbutton-language-tooltip", - "visualeditor-dialog-language-auto-direction", - "visualeditor-dialog-language-search-title", - "visualeditor-language-search-input-placeholder", - "visualeditor-languageannotation-description", - "visualeditor-languageannotation-description-with-dir", - "visualeditor-languageinspector-title", - "visualeditor-languageinspector-widget-changelang", - "visualeditor-languageinspector-widget-label-direction", - "visualeditor-languageinspector-widget-label-langcode", - "visualeditor-languageinspector-widget-label-language" - ] - }, "ext.visualEditor.mwlanguage": { "group": "visualEditorA", "scripts": [ @@ -2805,7 +2351,6 @@ "ext.visualEditor.mwtransclusion", "ext.visualEditor.mwalienextension", "ext.visualEditor.mwwikitext", - "ext.visualEditor.language", "ext.visualEditor.desktopArticleTarget.init", "ext.visualEditor.desktopArticleTarget", "ext.visualEditor.rebase" diff --git a/includes/VisualEditorFileModule.php b/includes/VisualEditorFileModule.php new file mode 100644 index 0000000000..7dcc39fc09 --- /dev/null +++ b/includes/VisualEditorFileModule.php @@ -0,0 +1,84 @@ +getLocalServerObjectCache(); + $cacheKey = $cache->makeKey( + 'visualeditor-modules-json', + $jsonPath, + filemtime( $jsonPath ) + ); + $veModulesJson = $cache->getWithSetCallback( + $cacheKey, + $cache::TTL_DAY, + static function () use ( $jsonPath ) { + return json_decode( file_get_contents( $jsonPath ), true ); + } + ); + + // Prepend scripts/styles from $options['veModules'] to $options['scripts']/$options['styles'] + $scripts = []; + $debugScripts = []; + $styles = []; + foreach ( $options['veModules'] as $veModuleName ) { + if ( !isset( $veModulesJson[$veModuleName] ) ) { + throw new ConfigException( 'veModule not found: ' . $veModuleName ); + } + $module = $veModulesJson[$veModuleName]; + if ( isset( $module['scripts'] ) ) { + foreach ( $module['scripts'] as $item ) { + $path = is_array( $item ) ? $item['file'] : $item; + $fullPath = 'lib/ve/' . $path; + if ( is_array( $item ) && !empty( $item['debug'] ) ) { + $debugScripts[] = $fullPath; + } else { + $scripts[] = $fullPath; + } + } + } + if ( isset( $module['styles'] ) ) { + foreach ( $module['styles'] as $item ) { + $path = is_array( $item ) ? $item['file'] : $item; + $styles[] = 'lib/ve/' . $path; + } + } + } + if ( isset( $options['scripts'] ) && is_array( $options['scripts'] ) ) { + $options['scripts'] = array_merge( $scripts, $options['scripts'] ); + } else { + $options['scripts'] = $scripts; + } + if ( isset( $options['debugScripts'] ) && is_array( $options['debugScripts'] ) ) { + $options['debugScripts'] = array_merge( $debugScripts, $options['debugScripts'] ); + } else { + $options['debugScripts'] = $debugScripts; + } + if ( isset( $options['styles'] ) && is_array( $options['styles'] ) ) { + $options['styles'] = array_merge( $styles, $options['styles'] ); + } else { + $options['styles'] = $styles; + } + + parent::__construct( $options, $localBasePath, $remoteBasePath ); + } +} From d61e89a511ad7b96b639d62defc902fa82123c9c Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 14 Aug 2025 15:42:43 -0500 Subject: [PATCH 544/730] Edit check: make sure updatePositions isn't called after teardown Follow-up to 89cf0ed026cf3448e006114697780e3b7ca8d08a which made this method debounced. Bug: T401956 Change-Id: I9fc2f2a32d5f6acc069f520683303e1fb1fe0dee --- editcheck/modules/controller.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 0b46290a48..f329679fc6 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -193,6 +193,11 @@ Controller.prototype.editChecksArePossible = function () { * @fires Controller#position */ Controller.prototype.updatePositions = function () { + if ( !this.surface ) { + // This is debounced, and could potentially be called after teardown + return; + } + this.drawSelections(); this.emit( 'position' ); From 87baeedc1571cad85aa992e0a222af388547cf00 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 15 Aug 2025 09:53:49 +0200 Subject: [PATCH 545/730] Localisation updates from https://translatewiki.net. Change-Id: I48bda08d9ba5da5ab510721bb61a3ef217fc8962 --- editcheck/i18n/he.json | 6 +++--- editcheck/i18n/lb.json | 1 + editcheck/i18n/pl.json | 1 + i18n/ve-mw/ar.json | 1 + i18n/ve-mw/ms.json | 7 ++++++- i18n/ve-mw/sq.json | 2 +- i18n/ve-mw/yue-hant.json | 10 +++++----- i18n/ve-wmf/he.json | 1 + 8 files changed, 19 insertions(+), 10 deletions(-) diff --git a/editcheck/i18n/he.json b/editcheck/i18n/he.json index e9128c53e9..dfeb4f5411 100644 --- a/editcheck/i18n/he.json +++ b/editcheck/i18n/he.json @@ -24,9 +24,9 @@ "editcheck-dialog-title": "לפני הפרסום", "editcheck-copyvio-title": "תוכן מודבק", "editcheck-copyvio-description": "ככלל, אין להעתיק טקסט ממקורות אחרים. בדרך־כלל, זאת גם הפרת זכויות יוצרים וגם גניבת ספרותית (פלגיאט).", - "editcheck-copyvio-action-keep": "כן, שמור את זה", - "editcheck-copyvio-action-remove": "לא, הסר את זה", - "editcheck-copyvio-keep-free": "טקסט זה נמצא בנחלת הכלל או ברישיון חופשי", + "editcheck-copyvio-action-keep": "כן, להשאיר את זה", + "editcheck-copyvio-action-remove": "לא, להסיר את זה", + "editcheck-copyvio-keep-free": "הטקסט הזה נמצא בנחלת הכלל או מתפרסם לפי תנאי ברישיון חופשי", "editcheck-copyvio-keep-other": "אחר", "editcheck-tone-title": "לתקן את הנימה?", "editcheck-tone-description": "משתמשים אחרים נוטים לתקן ניסוח מסוג כזה, ואומרים שהנימה אינה מאוזנת. [$1 למידע נוסף]", diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index 1d6c9a4c69..f2ca547bdd 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -9,6 +9,7 @@ "editcheck-dialog-action-revise": "Iwwerschaffen", "editcheck-dialog-action-recheck": "Nach eng Kéier iwwerpréiwen", "editcheck-dialog-action-back": "Zréck", + "editcheck-copyvio-prompt": "Hutt Dir dësen Text geschriwwen?", "editcheck-copyvio-action-keep": "Jo, halen", "editcheck-copyvio-action-remove": "Nee, ewechhuelen", "editcheck-copyvio-keep-wrote": "Ech hunn dësen Inhalt geschriwwen an en ass soss néierens publizéiert", diff --git a/editcheck/i18n/pl.json b/editcheck/i18n/pl.json index 5342289305..88a0588e14 100644 --- a/editcheck/i18n/pl.json +++ b/editcheck/i18n/pl.json @@ -9,6 +9,7 @@ }, "editcheck-dialog-action-no": "Nie", "editcheck-dialog-action-yes": "Tak", + "editcheck-dialog-action-recheck": "Sprawdź ponownie", "editcheck-dialog-addref-description": "Pomóż czytelnikom, dodając przypis, mówiący skąd pochodzą te informacje.", "editcheck-dialog-addref-reject-question": "Dlaczego nie dodajesz przypisu?", "editcheck-dialog-addref-reject-description": "Inni edytorzy docenią informację o tym, dlaczego decydujesz się nie dodawać przypisu.", diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index ef298f0e15..e73b3f1a07 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -18,6 +18,7 @@ "Karim185.3", "Lolekek", "Maroen1990", + "Mdktb", "Meno25", "Mervat Salman", "Mido", diff --git a/i18n/ve-mw/ms.json b/i18n/ve-mw/ms.json index 228c5b3c21..9ad88b04ca 100644 --- a/i18n/ve-mw/ms.json +++ b/i18n/ve-mw/ms.json @@ -94,6 +94,7 @@ "visualeditor-dialog-media-upload": "Muat naik", "visualeditor-dialog-meta-advancedsettings-label": "Tetapan selanjutnya", "visualeditor-dialog-meta-advancedsettings-section": "Tetapan selanjutnya", + "visualeditor-dialog-meta-categories-addcategory-label": "Tambahkan kategori pada laman ini", "visualeditor-dialog-meta-categories-category": "Kategori", "visualeditor-dialog-meta-categories-data-label": "Kategori", "visualeditor-dialog-meta-categories-defaultsort-help": "Anda boleh menulis ganti bagaimana laman ini dipaparkan dalam kategorinya dengan menetapkan indeks yang berlainan sebagai isihan gantinya. Ini sering digunakan untuk memaparkan laman-laman tokoh mengikut nama akhir (marga atau nama keluarga), tetapi dinyatakan dengan nama pertama (nama berian) dahulu.", @@ -115,21 +116,25 @@ "visualeditor-dialog-meta-languages-readonlynote": "Ini merupakan senarai halaman dalam bahasa-bahasa lain yang terpaut dengan halaman ini; buat masa sekarang, ia hanya boleh disunting dalam mod sumber atau di Wikidata.", "visualeditor-dialog-meta-languages-section": "Bahasa", "visualeditor-dialog-meta-settings-displaytitle": "Tajuk paparan", - "visualeditor-dialog-meta-settings-displaytitle-help": "Anda boleh menggantikan cara paparan tajuk laman ini dengan menetapkan label yang lain untuk dipaparkan.", + "visualeditor-dialog-meta-settings-displaytitle-help": "Anda boleh mengatasi cara paparan tajuk laman ini dengan menetapkan label yang lain untuk dipaparkan.", "visualeditor-dialog-meta-settings-hiddencat-help": "Anda boleh mengelakkan kategori ini daripada terpapar dalam senarai kategori pada laman-laman anggotanya. Ini berguna untuk kategori yang diambil berat oleh penyunting tetapi tidak dipedulikan oleh kebanyakan pembaca, misalnya laman-laman yang memerlukan gambar ilustrasi.", "visualeditor-dialog-meta-settings-hiddencat-label": "Kategori tersembunyi", "visualeditor-dialog-meta-settings-index-default": "Asali", "visualeditor-dialog-meta-settings-index-disable": "Tidak", "visualeditor-dialog-meta-settings-index-force": "Ya", + "visualeditor-dialog-meta-settings-index-help": "Anda boleh memaksa enjin carian untuk menyenaraikan laman ini dalam hasil yang berkaitan, atau memaksa enjin ini untuk tidak berbuat demikian. Pilihan ini tidak menjejaskan carian dalam tapak.", "visualeditor-dialog-meta-settings-index-label": "Biarkan laman ini diindekskan oleh enjin carian", "visualeditor-dialog-meta-settings-label": "Tetapan halaman", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Asali", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Tidak", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Ya", + "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Anda boleh memaksa paparan tab tambahan selain tab \"$1\" pada laman ini yang akan memudahkan untuk menambah bahagian baharu atau memaksanya untuk tidak muncul jika sebaliknya.", "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Paparkan tab pada laman ini untuk menambah bahagian baru", "visualeditor-dialog-meta-settings-nocontentconvert-help": "Anda boleh menghalang isi kandungan laman ini daripada ditukar secara automatik kepada skrip (abjad) lain.", "visualeditor-dialog-meta-settings-nocontentconvert-label": "Jangan mengubah kandungan antara varian bahasa", + "visualeditor-dialog-meta-settings-noeditsection-help": "Anda boleh menghentikan pautan suntingan daripada muncul di sebelah setiap bahagian dalam kes luar biasa yang bersesuaian.", "visualeditor-dialog-meta-settings-noeditsection-label": "Matikan pautan sunting yang berdekatan dengan setiap tajuk pada laman ini.", + "visualeditor-dialog-meta-settings-nogallery-help": "Anda boleh menghalang kategori ini daripada memaparkan fail ahli dalam bentuk galeri, jika hal tersebut tidak sesuai dalam kes ini.", "visualeditor-dialog-meta-settings-nogallery-label": "Matikan galeri", "visualeditor-dialog-meta-settings-notitleconvert-help": "Anda boleh menghalang tajuk laman ini daripada ditukar secara automatik kepada skrip (abjad) lain.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Jangan mengubah tajuk antara varian bahasa", diff --git a/i18n/ve-mw/sq.json b/i18n/ve-mw/sq.json index 90217c154d..7de7bb3539 100644 --- a/i18n/ve-mw/sq.json +++ b/i18n/ve-mw/sq.json @@ -303,7 +303,7 @@ "visualeditor-savedialog-label-review-good": "Rikthehu te ruajtje formulari", "visualeditor-savedialog-label-save-short": "Ruaje", "visualeditor-savedialog-label-save-short-start": "Ruajeni…", - "visualeditor-savedialog-review-nosummary": "Pa përmbledhje përpunimi", + "visualeditor-savedialog-review-nosummary": "Nuk ka përmbledhje të përpunimit", "visualeditor-savedialog-review-visual": "Pamor", "visualeditor-savedialog-review-wikitext": "Tekst wiki", "visualeditor-savedialog-title-conflict": "Përplasje", diff --git a/i18n/ve-mw/yue-hant.json b/i18n/ve-mw/yue-hant.json index 0d50e99217..44c1a1c333 100644 --- a/i18n/ve-mw/yue-hant.json +++ b/i18n/ve-mw/yue-hant.json @@ -38,10 +38,10 @@ "visualeditor-autosave-modified-prompt-message": "呢個頁面自從你上次載入之後已經編輯過。{{GENDER:|你}}想唔想繼續對舊版本嘅{{GENDER:|你嘅}}編輯,定係開始對最新版本嘅新編輯?", "visualeditor-autosave-modified-prompt-reject": "開始新嘅編輯", "visualeditor-autosave-modified-prompt-title": "繼續{{GENDER:|你嘅}}編輯?", - "visualeditor-autosave-not-recovered-text": "恢復唔到你未儲存嘅變更。", + "visualeditor-autosave-not-recovered-text": "恢復唔到你未儲存嘅改動。", "visualeditor-autosave-not-recovered-title": "改動復原失敗咗", - "visualeditor-autosave-recovered-text": "你未儲存嘅變更已經自動恢復返。", - "visualeditor-autosave-recovered-title": "啲變動已經恢復返晒", + "visualeditor-autosave-recovered-text": "你未儲存嘅改動已經自動恢復返。", + "visualeditor-autosave-recovered-title": "啲改動已經恢復返晒", "visualeditor-backbutton-tooltip": "返去", "visualeditor-ca-createlocaldescriptionsource": "喺本站加檔案說明源碼", "visualeditor-ca-createsource": "加源碼", @@ -205,7 +205,7 @@ "visualeditor-dialog-transclusion-no-template-parameters": "呢個範本冇任何文件化嘅參數,而且可能係喺冇參數嘅情況下使用。", "visualeditor-dialog-transclusion-param-default": "預設:$1", "visualeditor-dialog-transclusion-param-example-long": "例子:$1", - "visualeditor-dialog-transclusion-param-selection-aria-description": "撳空格就可以加入或者移除參數。撳Enter就可以加入參數,然後即刻編輯佢嘅數值。當已經揀咗個參數嗰陣,撳Enter嚟編輯個數值。", + "visualeditor-dialog-transclusion-param-selection-aria-description": "撳空格就可以加入或者剷走參數。撳Enter就可以加入參數,然後即刻編輯佢嘅數值。當已經揀咗個參數嗰陣,撳Enter嚟編輯個數值。", "visualeditor-dialog-transclusion-param-selection-aria-label": "以$1計嘅參數", "visualeditor-dialog-transclusion-param-undocumented": "(未記錄參數)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "搵模", @@ -332,7 +332,7 @@ "visualeditor-rebase-client-export-start": "匯出...", "visualeditor-rebase-client-import": "匯入", "visualeditor-rebase-client-import-name": "頁名", - "visualeditor-rebase-client-title-help": "你可以喺儲存之前睇返啲變更。", + "visualeditor-rebase-client-title-help": "你可以喺儲存之前睇返啲改動。", "visualeditor-recreate": "自從你開始編輯之後,呢個頁面已經刪除咗。撳「$1」嚟重新建立佢。", "visualeditor-redirect-description": "跳轉到$1", "visualeditor-savedialog-identify-anon": "你已經唔再簽到。如果你繼續,呢個頁面嘅編輯記錄入面會記錄你嘅IP位址。", diff --git a/i18n/ve-wmf/he.json b/i18n/ve-wmf/he.json index 9feb85b872..8ac75210ee 100644 --- a/i18n/ve-wmf/he.json +++ b/i18n/ve-wmf/he.json @@ -24,6 +24,7 @@ "tag-editcheck-references-activated-description": "מערכת בדיקת עריכה חושבת שאולי נוספת הערת שוליים, וממשק המשתמש של זה הוצג", "tag-editcheck-references-shown": "הוצגה מערכת בדיקת עריכה (הערות שוליים)", "tag-editcheck-references-shown-description": "מערכת בדיקת העריכת חושבת שהייתה נחוצה הערת שוליים, וממשק המשתמש שלה הוצג", + "tag-editcheck-tone-description": "מערכת בדיקת עריכה זיהתה בעיה אפשרית בנימה של תוכן שנוסף", "tag-editcheck-tone-shown": "הוצגה הודעה של בדיקת עריכה (נימה)", "tag-editcheck-tone-shown-description": "מערכת בדיקת עריכה חושבת שאולי היה נחוץ תיקון בנימה של חלק מהתוכן והוצג ממשק המשתמש של זה", "tag-visualeditor": "עריכה חזותית", From d485636857e5c951a382e4998f63fbb2d8be4d75 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 6 Aug 2025 23:26:14 -0500 Subject: [PATCH 546/730] Edit check: link the tone check help page from editcheck-tone-shown tags Bug: T393821 Change-Id: I79a8d7dbfe54c78fc5c40d648e1d8c4108fc911f --- i18n/ve-wmf/en.json | 1 + i18n/ve-wmf/qqq.json | 1 + 2 files changed, 2 insertions(+) diff --git a/i18n/ve-wmf/en.json b/i18n/ve-wmf/en.json index 06fc92ca0b..374cbef8fc 100644 --- a/i18n/ve-wmf/en.json +++ b/i18n/ve-wmf/en.json @@ -32,6 +32,7 @@ "tag-editcheck-tone-description": "EditCheck detected a potential issue with the tone of some added content", "tag-editcheck-tone-shown": "Edit Check (tone) shown", "tag-editcheck-tone-shown-description": "EditCheck thinks an adjustment to the tone in some content might have been needed, and the UI was shown", + "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Visual edit", "tag-visualeditor-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", "tag-visualeditor-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", diff --git a/i18n/ve-wmf/qqq.json b/i18n/ve-wmf/qqq.json index c4a6883bd5..b70b9378de 100644 --- a/i18n/ve-wmf/qqq.json +++ b/i18n/ve-wmf/qqq.json @@ -42,6 +42,7 @@ "tag-editcheck-tone-description": "Long description of the editcheck-tone tag.\n\nHidden tag added when EditCheck detected a potential issue with the tone of some added content.", "tag-editcheck-tone-shown": "Short description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks that added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown-description}}\n{{Related|tag-editcheck-tone-shown-description}}", "tag-editcheck-tone-shown-description": "Long description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown}}\n{{Related|tag-editcheck-tone-shown}}", + "tag-editcheck-tone-shown-helppage": "{{notranslate}}\nLink to the tone check section of the EditCheck help page.\n\nUsed in:\n* {{msg-mw|tag-editcheck-tone-shown}}", "tag-visualeditor": "Short description of the visualeditor tag. Do not translate the link target, but do translate the words \"Visual edit\".\n\nShown on lists of changes (history, recentchanges, etc.) for each edit made using VisualEditor.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck}}\n{{Related|Tag-visualeditor}}\n{{Identical|VisualEditor}}", "tag-visualeditor-description": "Long description of the visualeditor tag ({{msg-mw|Tag-visualeditor}}).\n\nShown on [[Special:Tags]].\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck-description}}\n{{Related|Tag-visualeditor}}", "tag-visualeditor-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", From 3461f78acd062d44ff2f2e1ddd7661604ad3c3aa Mon Sep 17 00:00:00 2001 From: SomeRandomDeveloper Date: Fri, 15 Aug 2025 19:08:26 +0000 Subject: [PATCH 547/730] Use namespaced GlobalVarConfig The non-namespaced class alias was deprecated in MW 1.41. Bug: T402038 Change-Id: Ie80d4f735d9d241c0bd05937da1cf0706c643c46 --- extension.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension.json b/extension.json index d12875be84..32cc659a3a 100644 --- a/extension.json +++ b/extension.json @@ -2383,7 +2383,7 @@ "MediaWiki\\Extension\\VisualEditor\\EditCheck\\": "editcheck/includes/" }, "ConfigRegistry": { - "visualeditor": "GlobalVarConfig::newInstance" + "visualeditor": "MediaWiki\\Config\\GlobalVarConfig::newInstance" }, "attributes": { "EventLogging": { From 016fb215b707d8d71cd2a79801908e863d7f1706 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 18 Aug 2025 09:36:55 +0200 Subject: [PATCH 548/730] Localisation updates from https://translatewiki.net. Change-Id: I7b9c8a0ad2d809119a1fee846188672ad66f27cd --- editcheck/i18n/fa.json | 2 + editcheck/i18n/fr.json | 4 ++ editcheck/i18n/gl.json | 3 ++ editcheck/i18n/he.json | 8 ++++ editcheck/i18n/pt.json | 3 ++ editcheck/i18n/ta.json | 8 ++++ i18n/ve-mw/ms.json | 94 ++++++++++++++++++++++++++++++++++++++++-- i18n/ve-mw/sq.json | 4 +- i18n/ve-wmf/fr.json | 1 + i18n/ve-wmf/mk.json | 1 + i18n/ve-wmf/nl.json | 1 + i18n/ve-wmf/sq.json | 5 ++- 12 files changed, 126 insertions(+), 8 deletions(-) create mode 100644 editcheck/i18n/ta.json diff --git a/editcheck/i18n/fa.json b/editcheck/i18n/fa.json index f768e1040a..855a370ec3 100644 --- a/editcheck/i18n/fa.json +++ b/editcheck/i18n/fa.json @@ -6,6 +6,7 @@ }, "editcheck-dialog-action-no": "خیر", "editcheck-dialog-action-yes": "بله", + "editcheck-dialog-action-recheck": "بررسی مجدد", "editcheck-dialog-addref-description": "با افزودن یک یادکرد، به مخاطبان در یافتن مبدأ این اطلاعات کمک کنید.", "editcheck-dialog-addref-reject-question": "چرا نمی‌خواهید یادکرد اضافه کنید؟", "editcheck-dialog-addref-reject-description": "سایر ویرایشگران ممکن است بخواهند از دلیل تصمیم شما برای رد کردن یادکرد آگاه شوند.", @@ -28,6 +29,7 @@ "editcheck-copyvio-keep-notify": "از این که دلیل نگه داشتن متن چسبانده‌شده را به اشتراک گذاشتید ممنونیم!", "editcheck-copyvio-remove-notify": "از این که این متن را حذف کردید ممنونیم!", "editcheck-tone-description": "کاربران دیگر معمولاً چنین جمله‌بندی‌هایی را اصلاح می‌کنند، زیرا معتقدند که لحن آن نامتعادل است. [$1 بیشتر بدانید]", + "editcheck-tone-thank": "از این که این لحن را بازبینی کردید ممنونیم!", "editcheck-review-title": "بازبینی تغییرات", "tag-editcheck-reference-decline-common-knowledge": "بررسی ویرایش (ارجاعات) رد شد (دانش عمومی)", "tag-editcheck-reference-decline-common-knowledge-description": "ارجاع بررسی ویرایش تحت عنوان دانش عمومی رد شد", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index 6eb09ed02e..a3d5fff1d3 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -12,6 +12,7 @@ "editcheck-dialog-action-yes": "Oui", "editcheck-dialog-action-decline": "Refuser", "editcheck-dialog-action-revise": "Réviser", + "editcheck-dialog-action-recheck": "Revérifier", "editcheck-dialog-action-back": "Retour", "editcheck-dialog-action-submit": "Soumettre", "editcheck-dialog-addref-description": "Aidez les lecteurs à comprendre d'où proviennent ces informations en ajoutant une source.", @@ -26,6 +27,7 @@ "editcheck-dialog-title": "Avant de publier", "editcheck-copyvio-title": "Contenu copié-collé", "editcheck-copyvio-description": "En règle générale, ne copiez pas de texte provenant d'autres sources. Cela constitue généralement une violation des droits d'auteur et un plagiat.", + "editcheck-copyvio-prompt": "Avez-vous écrit ce texte ?", "editcheck-copyvio-action-keep": "Oui, gardez-le.", "editcheck-copyvio-action-remove": "Non, enlevez-le.", "editcheck-copyvio-keep-description": "D'autres rédacteurs apprécieront d'en savoir plus sur votre raison de conserver ce texte collé.", @@ -34,6 +36,7 @@ "editcheck-copyvio-keep-free": "Ce texte est dans le domaine public ou sous licence libre", "editcheck-copyvio-keep-other": "Autre", "editcheck-copyvio-keep-notify": "Merci d'avoir partagé votre raison de conserver le texte collé !", + "editcheck-copyvio-remove-notify": "Merci d’avoir enlevé ce texte !", "editcheck-tone-title": "Réviser le ton ?", "editcheck-tone-description": "D'autres utilisateurs révisent souvent ce genre de formulation, disant que le ton est déséquilibré. [$1 En savoir plus]", "editcheck-tone-footer": "Identifié à l'aide d'un [$1 modèle BERT]", @@ -42,6 +45,7 @@ "editcheck-tone-reject-appropriate": "Le ton est approprié", "editcheck-tone-reject-uncertain": "Je ne sais pas comment réviser le ton.", "editcheck-tone-reject-other": "Autre", + "editcheck-tone-thank": "Merci d’avoir révisé le ton !", "editcheck-reject-description": "D'autres rédacteurs apprécieront d'apprendre pourquoi vous avez fait ce choix.", "editcheck-review-title": "Relire les modifications", "tag-editcheck-reference-decline-common-knowledge": "Vérification de modification (références) refusée (savoir commun)", diff --git a/editcheck/i18n/gl.json b/editcheck/i18n/gl.json index b51d8cf7b6..b532bf1007 100644 --- a/editcheck/i18n/gl.json +++ b/editcheck/i18n/gl.json @@ -8,6 +8,7 @@ "editcheck-dialog-action-yes": "Si", "editcheck-dialog-action-decline": "Rexeitar", "editcheck-dialog-action-revise": "Revisar", + "editcheck-dialog-action-recheck": "Volver comprobar", "editcheck-dialog-action-back": "Volver", "editcheck-dialog-action-submit": "Enviar", "editcheck-dialog-addref-description": "Axuda aos lectores a comprender de onde provén esta información engadindo unha cita.", @@ -22,6 +23,7 @@ "editcheck-dialog-title": "Antes de publicares", "editcheck-copyvio-title": "Contido pegado", "editcheck-copyvio-description": "Como regra xeral, non copies texto doutras fontes. Facelo adoita constituír un plaxio e unha violación dos dereitos de autoría.", + "editcheck-copyvio-prompt": "Escribiches ti este texto?", "editcheck-copyvio-action-keep": "Si, mantelo", "editcheck-copyvio-action-remove": "Non, eliminalo", "editcheck-copyvio-keep-description": "Outros editores apreciarán saber o motivo polo que conservaches este texto pegado.", @@ -39,6 +41,7 @@ "editcheck-tone-reject-appropriate": "O ton é axeitado", "editcheck-tone-reject-uncertain": "Non sei como revisar o ton", "editcheck-tone-reject-other": "Outro", + "editcheck-tone-thank": "Grazas por revisares o ton!", "editcheck-reject-description": "Outros editores apreciarán saber por que tomaches esta decisión.", "editcheck-review-title": "Revisar os cambios", "tag-editcheck-reference-decline-common-knowledge": "Verificación de edición (referencias) rexeitada (coñecemento común)", diff --git a/editcheck/i18n/he.json b/editcheck/i18n/he.json index dfeb4f5411..f4b2e6951b 100644 --- a/editcheck/i18n/he.json +++ b/editcheck/i18n/he.json @@ -10,6 +10,7 @@ "editcheck-dialog-action-yes": "כן", "editcheck-dialog-action-decline": "דחייה", "editcheck-dialog-action-revise": "תיקון", + "editcheck-dialog-action-recheck": "בדיקה חוזרת", "editcheck-dialog-action-back": "חזרה", "editcheck-dialog-action-submit": "שליחה", "editcheck-dialog-addref-description": "{{GENDER:|עזור|עזרי}} לקוראים להבין מאיפה המידע הזה מגיע על־ידי הוספת הערת שוליים.", @@ -24,10 +25,16 @@ "editcheck-dialog-title": "לפני הפרסום", "editcheck-copyvio-title": "תוכן מודבק", "editcheck-copyvio-description": "ככלל, אין להעתיק טקסט ממקורות אחרים. בדרך־כלל, זאת גם הפרת זכויות יוצרים וגם גניבת ספרותית (פלגיאט).", + "editcheck-copyvio-prompt": "האם כתבת את הטקסט הזה?", "editcheck-copyvio-action-keep": "כן, להשאיר את זה", "editcheck-copyvio-action-remove": "לא, להסיר את זה", + "editcheck-copyvio-keep-description": "עורכים אחרים ישמחו לדעות עוד על הסיבה שלך להשארת הטקסט המודבק הזה.", + "editcheck-copyvio-keep-wrote": "כתבתי את התוכן הזה והוא לא פורסם במקום אחר", + "editcheck-copyvio-keep-permission": "יש לי אישור לשימוש חוזר בתוכן הזה", "editcheck-copyvio-keep-free": "הטקסט הזה נמצא בנחלת הכלל או מתפרסם לפי תנאי ברישיון חופשי", "editcheck-copyvio-keep-other": "אחר", + "editcheck-copyvio-keep-notify": "תודה ששיתפת את הסיבה שלך להשארת הטקסט המודבק!", + "editcheck-copyvio-remove-notify": "תודה שהסרת את הטקסט הזה!", "editcheck-tone-title": "לתקן את הנימה?", "editcheck-tone-description": "משתמשים אחרים נוטים לתקן ניסוח מסוג כזה, ואומרים שהנימה אינה מאוזנת. [$1 למידע נוסף]", "editcheck-tone-footer": "זוהה באמצעות [$1 מודל BERT]", @@ -36,6 +43,7 @@ "editcheck-tone-reject-appropriate": "הנימה הזאת הולמת", "editcheck-tone-reject-uncertain": "לא ברור לי איך לתקן את הנימה", "editcheck-tone-reject-other": "אחר", + "editcheck-tone-thank": "תודה שתיקנת את הנימה!", "editcheck-reject-description": "עורכים אחרים ישמחו לדעת למה בחרת בזה.", "editcheck-review-title": "סקירת שינויים", "tag-editcheck-reference-decline-common-knowledge": "מערכת בדיקת עריכה (הערות שוליים) – נדחה (ידוע לכול)", diff --git a/editcheck/i18n/pt.json b/editcheck/i18n/pt.json index 40494664a8..edbcd69e50 100644 --- a/editcheck/i18n/pt.json +++ b/editcheck/i18n/pt.json @@ -9,6 +9,7 @@ "editcheck-dialog-action-yes": "Sim", "editcheck-dialog-action-decline": "Rejeitar", "editcheck-dialog-action-revise": "Rever", + "editcheck-dialog-action-recheck": "Reverificar", "editcheck-dialog-action-back": "Anterior", "editcheck-dialog-action-submit": "Submeter", "editcheck-dialog-addref-description": "Ajude os leitores a entender de onde vêm estas informações, adicionando uma citação.", @@ -22,8 +23,10 @@ "editcheck-dialog-addref-title": "Adicionar uma citação", "editcheck-dialog-title": "Antes de publicar", "editcheck-copyvio-title": "Conteúdo colado", + "editcheck-copyvio-prompt": "Você escreveu este texto?", "editcheck-tone-reject-uncertain": "Eu não tenho a certeza de como rever o tom", "editcheck-tone-reject-other": "Outros", + "editcheck-tone-thank": "Obrigado por rever o tom!", "editcheck-review-title": "Rever alterações", "tag-editcheck-reference-decline-common-knowledge": "Verificação de Edições (referências) recusada (conhecimento comum)", "tag-editcheck-reference-decline-common-knowledge-description": "A referência da Verificação de Edições foi recusada como conhecimento comum", diff --git a/editcheck/i18n/ta.json b/editcheck/i18n/ta.json new file mode 100644 index 0000000000..e82463c168 --- /dev/null +++ b/editcheck/i18n/ta.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "ElangoRamanujam" + ] + }, + "editcheck-dialog-action-recheck": "மறு ஆய்வு" +} diff --git a/i18n/ve-mw/ms.json b/i18n/ve-mw/ms.json index 9ad88b04ca..c3d8dceffc 100644 --- a/i18n/ve-mw/ms.json +++ b/i18n/ve-mw/ms.json @@ -138,9 +138,10 @@ "visualeditor-dialog-meta-settings-nogallery-label": "Matikan galeri", "visualeditor-dialog-meta-settings-notitleconvert-help": "Anda boleh menghalang tajuk laman ini daripada ditukar secara automatik kepada skrip (abjad) lain.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Jangan mengubah tajuk antara varian bahasa", + "visualeditor-dialog-meta-settings-redirect-help": "Anda boleh menjadikan laman ini sebagai satu lencongan, yakni sejenis laman yang secara automatik akan membawa pembaca ke laman lain di wiki ini. Hal ini berguna untuk salah ejaan serta nama atau konsep alternatif. Jika anda berbuat demikian, pembaca tidak akan melihat kandungan laman ini.", "visualeditor-dialog-meta-settings-redirect-label": "Lencongkan laman ini ke", "visualeditor-dialog-meta-settings-redirect-placeholder": "Laman sasaran untuk lencongan", - "visualeditor-dialog-meta-settings-redirect-statichelp": "Anda boleh mencegah pengemaskinian automatik bagi lencongan ini apabila laman yang ditujui oleh lencongan ini dipindahkan, seandai-andainya perlu.", + "visualeditor-dialog-meta-settings-redirect-statichelp": "Anda boleh mencegah lencongan ini daripada dikemas kini secara automatik apabila laman yang dilencongkannya dipindah, dalam kes yang sangat jarang hal tersebut perlu dilakukan.", "visualeditor-dialog-meta-settings-redirect-staticlabel": "Cegah lencongan ini dari dikemaskinikan apabila laman sasaran dipindahkan.", "visualeditor-dialog-meta-settings-section": "Tetapan laman", "visualeditor-dialog-meta-settings-toc-default": "Jika perlu", @@ -155,15 +156,54 @@ "visualeditor-dialog-table-sortable": "Boleh isih", "visualeditor-dialog-table-wikitable": "Bergaya (wikitable)", "visualeditor-dialog-template-title": "Templat", + "visualeditor-dialog-transclusion-action-save": "Simpan", + "visualeditor-dialog-transclusion-template-title-nonexistent": "Templat ini tidak wujud.", + "visualeditor-dialog-transclusion-template-title-modifier": "Pendokumenan templat dan nama [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameter] (jika ada) tidak tersedia semasa menyunting templat menggunakan sintaks bersarang atau pengubah suai, seperti [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst].", + "visualeditor-dialog-transclusion-template-widget-aria": "Tekan kekunci Jarak (Space) untuk memilih templat.", + "visualeditor-dialog-transclusion-template-widget-aria-selected": "Tekan Ctrl+Del untuk memadam templat, parameternya dan nilainya. Tekan Ctrl+Shift+Anak panah untuk mengalihkan templat ke atas atau ke bawah.", + "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "Tekan Ctrl+Del untuk memadam templat, parameternya dan nilainya.", + "visualeditor-dialog-transclusion-add-wikitext": "Tambah wikiteks", + "visualeditor-dialog-transclusion-add-param-error-alias": "\"$1\" sudah ditambah sebagai \"$2\". Sila semak pilihan di palang sisi. Hal ini disebabkan sama ada penggunaan [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases alias] atau [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label label].", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "\"$1\" tidak boleh ditambah kerana parameter telah ditandakan sebagai [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated deprecated].", + "visualeditor-dialog-transclusion-add-param-error-exists-selected": "Tidak boleh menambah parameter \"$2\" dua kali.", + "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "Parameter \"$2\" sudah tersedia untuk digunakan. Sila semak pilihan di palang sisi.", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 ialah aksara terlarang. Sila alih keluar aksara tersebut untuk menambah parameter.", + "visualeditor-dialog-transclusion-add-param-help": "Jika diketahui, masukkan nama [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters parameter tidak berdokumen]. Ambil perhatian bahawa hanya parameter yang diketahui oleh templat akan mempunyai kesan. Anda boleh mendapatkan maklumat tentang parameter sedia ada pada [[$1|laman templat]].", + "visualeditor-dialog-transclusion-add-param-placeholder": "Nama parameter", + "visualeditor-dialog-transclusion-add-param-save": "Tambah", "visualeditor-dialog-transclusion-add-template": "Tambah templat", + "visualeditor-dialog-transclusion-add-template-button": "Tambah templat", + "visualeditor-dialog-transclusion-add-template-save": "Tambah", + "visualeditor-dialog-transclusion-add-undocumented-param": "Tambah parameter tidak berdokumen", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "Kembali mencari? Perubahan anda akan hilang dan tidak boleh dikembalikan.", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "Tutup alat sunting templat? Perubahan anda akan hilang dan tidak boleh dikembalikan.", "visualeditor-dialog-transclusion-collapse-options": "Sembunyikan pilihan", + "visualeditor-dialog-transclusion-confirmation-discard": "Buang suntingan", + "visualeditor-dialog-transclusion-confirmation-reject": "Teruskan menyunting", "visualeditor-dialog-transclusion-contextitem-description": "Dihasilkan daripada: $1", + "visualeditor-dialog-transclusion-contextitem-loading": "Memuatkan…", "visualeditor-dialog-transclusion-expand-options": "Tunjukkan pilihan", + "visualeditor-dialog-transclusion-filter-hide-unused": "Sembunyikan yang tidak digunakan", + "visualeditor-dialog-transclusion-filter-no-match": "Tiada padanan dijumpai", + "visualeditor-dialog-transclusion-filter-placeholder": "Cari medan", + "visualeditor-dialog-transclusion-filter-show-all": "Tunjukkan semua", + "visualeditor-dialog-transclusion-filter-title": "Carian parameter untuk $1", + "visualeditor-dialog-transclusion-help-title": "Sokongan penyuntingan templat", + "visualeditor-dialog-transclusion-help-message": "Templat menyediakan pemformatan untuk kandungan. Alat sunting ini menunjukkan pilihan yang disediakan oleh templat di sebelah kiri dan kemudiannya nilai boleh ditambahkan pada pilihan tersebut di sebelah kanan.", + "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates Bantuan untuk menyunting templat]", + "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions Pintasan papan kekunci]", "visualeditor-dialog-transclusion-deprecated-parameter": "Parameter lupus", "visualeditor-dialog-transclusion-deprecated-parameter-description": "Parameter telah dilupuskan. $1", "visualeditor-dialog-transclusion-loading": "Memuatkan...", + "visualeditor-dialog-transclusion-multipart-message": "Anda sedang menyunting templat serta satu atau lebih banyak [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content kandungan bersambungan] (wikiteks dan/atau templat tambahan).", + "visualeditor-dialog-transclusion-no-template-data-description": "Templat ini kekurangan [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters DataTemplat], dan parameternya telah [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters dijana secara automatik]. Akibatnya, templat dan parameternya tidak mempunyai keterangan. Mungkin terdapat maklumat tambahan pada [[$1|laman templat]].", "visualeditor-dialog-transclusion-no-template-description": "Templat \"$1\" belum ada keterangan, tetapi mungkin ada maklumat di [[$2|halaman templat]] berkenaan.", + "visualeditor-dialog-transclusion-no-template-parameters": "Templat ini tidak mempunyai parameter yang didokumenkan dan mungkin bertujuan untuk digunakan tanpa parameter tersebut.", "visualeditor-dialog-transclusion-param-default": "Asali: $1", + "visualeditor-dialog-transclusion-param-example-long": "Contoh: $1", + "visualeditor-dialog-transclusion-param-selection-aria-description": "Tekan kekunci jarak (Space) untuk menambah atau membuang parameter. Tekan Enter untuk menambah parameter dan segera menyunting nilainya. Jika parameter sudah dipilih, tekan Enter untuk menyunting nilai.", + "visualeditor-dialog-transclusion-param-selection-aria-label": "Parameter dalam $1", + "visualeditor-dialog-transclusion-param-undocumented": "(parameter tidak berdokumen)", "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Cari templat", "visualeditor-dialog-transclusion-required-parameter": "Parameter diperlukan", "visualeditor-dialog-transclusion-required-parameter-description": "Parameter diperlukan.", @@ -172,6 +212,16 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Ruangan|Ruangan-ruangan}} yang diperlukan masih tertinggal", "visualeditor-dialog-transclusion-required-parameter-is-blank": "Adakah anda betul-betul mahu teruskan tanpa mengisi {{PLURAL:$2|ruangan|ruangan-ruangan}} $1?", "visualeditor-dialog-transclusion-see-template": "Templat tersebut dijana oleh pengguna dan mungkin kekurangan penerangan yang lengkap. Mungkin terdapat maklumat tambahan tentang [[$2|laman templat ini]].", + "visualeditor-dialog-transclusion-title-insert-template": "Masukkan templat", + "visualeditor-dialog-transclusion-title-insert-known-template": "Masukkan: $1", + "visualeditor-dialog-transclusion-title-edit-known-template": "Sunting: $1", + "visualeditor-dialog-transclusion-title-edit-transclusion": "Kandungan templat", + "visualeditor-dialog-transclusion-template-search": "Carian templat", + "visualeditor-dialog-transclusion-template-search-help": "Cari templat yang ingin anda masukkan dengan mencari kata kunci untuk mengenal pasti. Templat yang mempunyai penerangan lebih berkemungkinan dapat berfungsi dengan alat sunting visual.", + "visualeditor-dialog-transclusion-wikitext": "Wikiteks", + "visualeditor-dialog-transclusion-wikitext-widget-aria": "Tekan kekunci jarak (Space) untuk memilih elemen wikiteks. Tekan Enter untuk memilih dan menyunting wikiteks.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "Tekan Ctrl+Del untuk memadamkan elemen teks wiki. Tekan Ctrl+Shift+Anak panah untuk menggerakkan elemen ke atas atau ke bawah.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "Tekan Ctrl+Del untuk memadamkan elemen teks wiki.", "visualeditor-dialogbutton-media-tooltip": "Imej dan media", "visualeditor-dialogbutton-template-tooltip": "Templat", "visualeditor-editconflict": "Suntingan anda tidak dapat disimpan disebabkan percanggahan antara suntingan. Adakah {{GENDER:|anda}} ingin menyelesaikan percanggahan ini secara manual?", @@ -181,7 +231,10 @@ "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|notis}}", "visualeditor-editnotices-tooltip": "Pemberitahuan suntingan", "visualeditor-editsummary": "Huraikan suntingan anda", + "visualeditor-editsummary-characters-remaining": "Bilangan aksara yang tinggal", "visualeditor-educationpopup-dismiss": "Baik, saya faham", + "visualeditor-expandable-less": "Kurang", + "visualeditor-expandable-more": "Lagi", "visualeditor-feedback-defaultmessage": "URL: $1", "visualeditor-formatdropdown-format-mw-heading1": "Tajuk laman", "visualeditor-formatdropdown-format-mw-heading2": "Judul", @@ -190,7 +243,17 @@ "visualeditor-formatdropdown-format-mw-heading5": "Subjudul 3", "visualeditor-formatdropdown-format-mw-heading6": "Subjudul 4", "visualeditor-generating-wikitext-progress": "Menghasilkan wikiteks", + "visualeditor-includes-noinclude-start": "Permulaan kandungan yang dikecualikan daripada petikan", + "visualeditor-includes-noinclude-end": "Akhiran kandungan dikecualikan daripada petikan", + "visualeditor-includes-onlyinclude-start": "Permulaan kandungan yang dibenarkan dalam petikan", + "visualeditor-includes-onlyinclude-end": "Akhiran kandungan yang dibenarkan dalam petikan", + "visualeditor-includes-includeonly": "Kandungan untuk petikan sahaja", + "visualeditor-includes-noinclude-description": "Apabila kandungan daripada laman ini digunakan pada laman lain, kandungan dari sini sehingga penanda akhir yang berpadanan tidak akan disertakan. Berhati-hati semasa menyunting kandungan di luar penanda ini, kerana laman-laman lain mungkin menggunakannya.", + "visualeditor-includes-onlyinclude-description": "Apabila kandungan dari laman ini digunakan pada laman lain, hanya kandungan dari sini sehingga penanda akhir yang berpadanan akan disertakan. Berhati-hati semasa menyunting kandungan antara penanda ini, kerana laman-laman lain mungkin menggunakannya.", + "visualeditor-includes-includeonly-description": "Apabila kandungan daripada laman ini digunakan pada laman lain, kandungan tambahan berikut akan disertakan di sini:", + "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Ketahui lebih lanjut tentang transklusi separa]", "visualeditor-languages-tool": "Bahasa", + "visualeditor-linkcontext-uneditable": "Minta maaf, elemen ini boleh disunting dalam mod “sunting sumber” sahaja buat masa sekarang.", "visualeditor-linkinspector-button-link-external": "Tapak luar", "visualeditor-linkinspector-button-link-internal": "Cari laman dalaman", "visualeditor-linkinspector-convert-link-isbn": "Tukarkan ke pautan ISBN", @@ -207,6 +270,9 @@ "visualeditor-magiclinknodeinspector-title-isbn": "Pautan ISBN", "visualeditor-magiclinknodeinspector-title-pmid": "Pautan PMID", "visualeditor-magiclinknodeinspector-title-rfc": "Pautan RFC", + "visualeditor-media-title-audio": "Audio", + "visualeditor-media-title-image": "Imej", + "visualeditor-media-title-video": "Video", "visualeditor-meta-tool": "Pilihan", "visualeditor-mweditmode-tooltip": "Tukar alat sunting", "visualeditor-mweditmodesource-progress": "Beralih kepada penyuntingan sumber...", @@ -220,6 +286,7 @@ "visualeditor-mweditmodeve-tool-unavailable": "Tidak boleh menyunting visual di sini", "visualeditor-mweditmodewt-popup-body": "Anda boleh bertukar kembali ke penyuntingan sumber bila-bila masa dengan mengklik ikon ini.", "visualeditor-mweditmodewt-popup-title": "Anda telah bertukar kepada penyuntingan visual", + "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|imej}}", "visualeditor-mwgallerydialog-caption-field-label": "Sari kata galeri", "visualeditor-mwgallerydialog-card-images": "Gambar", "visualeditor-mwgallerydialog-card-options": "Pilihan", @@ -229,6 +296,9 @@ "visualeditor-mwgallerydialog-heights-field-label": "Tinggi imej", "visualeditor-mwgallerydialog-heights-input-placeholder": "Tinggi asali: $1 px", "visualeditor-mwgallerydialog-mode-dropdown-label-nolines": "Tradisional, tanpa garis luar", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed": "Terpadat", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed-hover": "Terpadat dengan kapsyen pada tetimbul", + "visualeditor-mwgallerydialog-mode-dropdown-label-packed-overlay": "Terpadat dengan kapsyen bertindih", "visualeditor-mwgallerydialog-mode-dropdown-label-slideshow": "Slideshow", "visualeditor-mwgallerydialog-mode-dropdown-label-traditional": "Tradisional", "visualeditor-mwgallerydialog-mode-field-label": "Mod paparan", @@ -252,10 +322,18 @@ "visualeditor-preference-tabs-prefer-ve": "Sentiasa paparkan alat sunting visual jika boleh", "visualeditor-preference-tabs-prefer-wt": "Sentiasa paparkan alat sunting sumber", "visualeditor-preference-tabs-remember-last": "Ingat alat sunting terkini saya", + "visualeditor-preference-collab-label": "Suntingan kolaboratif", + "visualeditor-preference-collab-description": "Jemput pengguna lain untuk menyertai sesi suntingan anda dalam alat sunting visual.", + "visualeditor-rebase-client-export": "Eksport", + "visualeditor-rebase-client-export-start": "Eksport…", + "visualeditor-rebase-client-import": "Import", + "visualeditor-rebase-client-import-name": "Tajuk laman", + "visualeditor-rebase-client-title-help": "Anda akan dapat menyemak perubahan sebelum menyimpan.", "visualeditor-recreate": "Laman ini telah dihapuskan sejak anda mula menyunting. Tekan \"$1\" untuk menciptanya semula.", "visualeditor-redirect-description": "Melencong ke $1", - "visualeditor-savedialog-identify-anon": "Adakah anda ingin menyimpan halaman ini sebagai pengguna awanama? Alamat IP anda akan direkodkan pada sejarah suntingan halaman ini.", - "visualeditor-savedialog-identify-user": "Anda telah log masuk sebagai [[User:$1|$1]]. Suntingan anda akan dikaitkan dengan akaun ini jika anda menyimpan suntingan ini.", + "visualeditor-savedialog-identify-anon": "Anda tidak lagi log masuk. Jika anda meneruskan, alamat IP anda akan direkodkan dalam sejarah suntingan laman ini.", + "visualeditor-savedialog-identify-temp": "Anda kini menggunakan nama pengguna sementara $1. Jika anda meneruskan, suntingan anda akan dikaitkan dengan nama pengguna sementara ini.", + "visualeditor-savedialog-identify-user": "Anda kini log masuk sebagai [[Pengguna:$1|$1]]. Jika anda meneruskan, suntingan anda akan dikaitkan dengan akaun ini.", "visualeditor-savedialog-keyboard-shortcut-submit": "Anda boleh tekan $1 untuk menyimpan suntingan.", "visualeditor-savedialog-label-publish-short": "Siarkan", "visualeditor-savedialog-label-publish-short-start": "Terbitkan…", @@ -264,6 +342,7 @@ "visualeditor-savedialog-label-review": "Semak perubahan anda", "visualeditor-savedialog-label-review-good": "Kembali ke borang simpan", "visualeditor-savedialog-label-save-short": "Simpan", + "visualeditor-savedialog-label-save-short-start": "Simpan…", "visualeditor-savedialog-review-nosummary": "Tiada ringkasan suntingan", "visualeditor-savedialog-review-visual": "Visual", "visualeditor-savedialog-review-wikitext": "Wikiteks", @@ -273,12 +352,19 @@ "visualeditor-savedialog-title-save": "Simpan suntingan anda", "visualeditor-section-body-placeholder": "Bahagian baru", "visualeditor-section-title-placeholder": "Subjek", + "visualeditor-loaderror-revidconflict": "ID semakan yang dikembalikan oleh pelayan tidak berpadanan (dokumen: $1, metadata: $2).", + "visualeditor-loaderror-wrongmode": "Cuba memuatkan alat sunting dalam mod yang salah (jenis data: \"$1\", mod alat sunting: \"$2\").", "visualeditor-settings-tool": "Tetapan laman", "visualeditor-special-characters-group-other": "Sering digunakan", "visualeditor-templatesused-tool": "Templat yang digunakan", + "visualeditor-title-error": "Tajuk tidak sah.", "visualeditor-toload": "Editor akan dimuatkan sekarang. Jika anda masih melihat mesej ini setelah beberapa ketika, sila [$1 muatkan semula halaman].", + "visualeditor-tooltip-non-breaking-space": "Jarak tak terpecah", "visualeditor-version-label": "Versi", "visualeditor-wikitext-progress": "Menukar wikiteks", "visualeditor-wikitext-warning": "Anda sedang menggunakan editor visual - [[{{MediaWiki:visualeditor-wikitext-warning-link}}|wikiteks]] tidak digunakan di sini. Untuk beralih kepada mod sumber bila-bila masa tanpa menghilangkan pindaan, klik pada butang tukar.", - "visualeditor-wikitext-warning-title": "Penanda Wiki dikesan" + "visualeditor-wikitext-warning-title": "Penanda Wiki dikesan", + "visualeditor-wikitextconvert-title": "Tukar pemformatan kepada teks wiki?", + "visualeditor-wikitextconvert-message": "Anda menampal kandungan yang kaya pemformatan. Adakah anda ingin menukar pemformatan ini kepada teks wiki?", + "visualeditor-wikitextconvert-convert": "Menukar ke wikiteks" } diff --git a/i18n/ve-mw/sq.json b/i18n/ve-mw/sq.json index 7de7bb3539..37fce5fd22 100644 --- a/i18n/ve-mw/sq.json +++ b/i18n/ve-mw/sq.json @@ -40,7 +40,7 @@ "visualeditor-ca-createsource": "Krijoni burim", "visualeditor-ca-editlocaldescriptionsource": "Përpunoni burim vendor përshkrimi", "visualeditor-ca-editsource": "Redakto burimin", - "visualeditor-ca-editsource-section": "përpuno burimin", + "visualeditor-ca-editsource-section": "redakto burimin", "visualeditor-categories-tool": "Kategori", "visualeditor-changedesc-mwlanguagevariant": "U ndryshua markup varianti gjuhe", "visualeditor-changedesc-mwredirect": "U ndryshua objektiv ridrejtimi nga $1 në $2", @@ -241,7 +241,7 @@ "visualeditor-meta-tool": "Mundësi", "visualeditor-mweditmode-tooltip": "Ndërroni përpunues", "visualeditor-mweditmodesource-progress": "Po kalohet në përpunim burimi…", - "visualeditor-mweditmodesource-tool-current": "Përpunim burimi", + "visualeditor-mweditmodesource-tool-current": "Redaktim burimor", "visualeditor-mweditmodesource-tool-unavailable": "Këtu s’është i mundur përpunimi i burimit", "visualeditor-mweditmodeve-popup-body": "Te përpunimi pamor mund të riktheheni kurdo, përmes klikimit mbi këtë ikonë.", "visualeditor-mweditmodeve-popup-title": "Kaluat nën përpunim burimi", diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index 7054519223..2c65dfb426 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -51,6 +51,7 @@ "tag-editcheck-tone-description": "EditCheck a détecté un problème potentiel avec le ton de certains contenus ajoutés", "tag-editcheck-tone-shown": "Modifier la vérification (tonalité) affichée", "tag-editcheck-tone-shown-description": "EditCheck pense qu'un ajustement du ton de certains contenus aurait pu être nécessaire, et l'interface utilisateur a été affichée", + "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Éditeur visuel", "tag-visualeditor-description": "Modification effectuée avec l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|éditeur visuel]]", "tag-visualeditor-needcheck": "Éditeur visuel : à vérifier", diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index e406803e37..d2a9c3ac5d 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -18,6 +18,7 @@ "tag-editcheck-tone-description": "EditCheck пронајде потенцијален проблем со тонот во додадената содржина", "tag-editcheck-tone-shown": "Прикажана проверката на уредувања (тон)", "tag-editcheck-tone-shown-description": "Проверката на уредувања смета дека може да е потребно прилагодување на тонот во некои содржини, и бил прикажан корисничкиот посредник", + "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Нагледно уредување", "tag-visualeditor-description": "Уредување направено со [[{{MediaWiki:visualeditor-descriptionpagelink}}|нагледниот уредник]]", "tag-visualeditor-needcheck": "Нагледен уредник: Проверка", diff --git a/i18n/ve-wmf/nl.json b/i18n/ve-wmf/nl.json index ab09e0f5d6..63477306ec 100644 --- a/i18n/ve-wmf/nl.json +++ b/i18n/ve-wmf/nl.json @@ -33,6 +33,7 @@ "tag-editcheck-tone-description": "EditCheck heeft een mogelijk probleem ontdekt met de toon van bepaalde toegevoegde inhoud", "tag-editcheck-tone-shown": "Bewerkingscontrole (toon) weergegeven", "tag-editcheck-tone-shown-description": "EditCheck denkt dat een aanpassing van de toon in bepaalde inhoud nodig was geweest, en de gebruikersinterface is weergegeven", + "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Visuele tekstverwerker", "tag-visualeditor-description": "Bewerking gedaan met de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwerker]]", "tag-visualeditor-needcheck": "Visuele tekstverwerker: nakijken", diff --git a/i18n/ve-wmf/sq.json b/i18n/ve-wmf/sq.json index 3ae4ffc512..3552d44b7c 100644 --- a/i18n/ve-wmf/sq.json +++ b/i18n/ve-wmf/sq.json @@ -5,10 +5,11 @@ "Besnik b", "Euriditi", "Kosovastar", - "Liridon" + "Liridon", + "Xhulianoo" ] }, - "tag-visualeditor": "Përpunim pamor", + "tag-visualeditor": "Redaktim pamor", "tag-visualeditor-description": "Përpunim i bërë duke përdorur [[{{MediaWiki:visualeditor-descriptionpagelink}}|përpunuesin pamor]]", "tag-visualeditor-needcheck": "Përpunim pamor: Kontrollojeni", "tag-visualeditor-needcheck-description": "Përpunim i bërë duke përdorur [[{{MediaWiki:visualeditor-descriptionpagelink}}|përpunuesin pamor]] kur sistemi pikasi tekst wiki sipas gjasash me ndryshime të pasynuara.", From 4a63487755a782f285e84b7bd783d0ea2c771068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Fri, 1 Aug 2025 14:57:28 +0100 Subject: [PATCH 549/730] Added some documentation to various dialog-related classes inside editcheck Bug: T397928 Change-Id: I40ae428ed4c40078a0aa9018ae894f6ee0df87a5 --- editcheck/modules/dialogs/EditCheckDialog.js | 2 +- editcheck/modules/dialogs/EditCheckDialogTool.js | 3 +++ editcheck/modules/dialogs/FixedEditCheckDialog.js | 3 +++ editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js | 5 +++++ editcheck/modules/dialogs/SidebarEditCheckDialog.js | 4 ++++ 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index 4e34ccfc07..f28ad2f4b1 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -5,7 +5,7 @@ */ /** - * Edit check dialog + * EditCheckDialog constructor. * * Abstract mixin for FixedEditCheckDialog and SidebarEditCheckDialog. * diff --git a/editcheck/modules/dialogs/EditCheckDialogTool.js b/editcheck/modules/dialogs/EditCheckDialogTool.js index f6bf5c488c..a6b9f79492 100644 --- a/editcheck/modules/dialogs/EditCheckDialogTool.js +++ b/editcheck/modules/dialogs/EditCheckDialogTool.js @@ -1,4 +1,7 @@ /** + * Adds a robot button to the toolbar to enable/disable edit check. + * Note: Not currently added to extension.json or init.js, and therefore does not load. + * * @class * @extends ve.ui.ToolbarDialogTool * @constructor diff --git a/editcheck/modules/dialogs/FixedEditCheckDialog.js b/editcheck/modules/dialogs/FixedEditCheckDialog.js index ef7f408246..6d29a12a49 100644 --- a/editcheck/modules/dialogs/FixedEditCheckDialog.js +++ b/editcheck/modules/dialogs/FixedEditCheckDialog.js @@ -1,6 +1,9 @@ /** * FixedEditCheckDialog constructor. * + * This dialog displays edit checks in the pre-save moment, and shows single edit checks at the bottom of the display + * while on mobile. + * * @class * @extends ve.ui.ToolbarDialog * @mixes ve.ui.EditCheckDialog diff --git a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js index 9eaf0365f8..ec3c11393c 100644 --- a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js +++ b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js @@ -5,6 +5,11 @@ */ /** + * GutterSidebarEditCheckDialog constructor. + * + * The edit check dialog which is created when the user is on mobile. It adds a narrow gutter wide enough to show an + * icon. When clicked, we create (or reuse) a ve.ui.FixedEditCheckDialog instance to show the check details. + * * @class * @extends ve.ui.SidebarDialog * @constructor diff --git a/editcheck/modules/dialogs/SidebarEditCheckDialog.js b/editcheck/modules/dialogs/SidebarEditCheckDialog.js index 42afffb173..de927f5880 100644 --- a/editcheck/modules/dialogs/SidebarEditCheckDialog.js +++ b/editcheck/modules/dialogs/SidebarEditCheckDialog.js @@ -1,4 +1,8 @@ /** + * SidebarEditCheckDialog constructor. + * + * This dialog is shown to the side of a desktop editing session while the user is editing. + * * @class * @extends ve.ui.SidebarDialog * @mixes ve.ui.EditCheckDialog From 28bac41e1c5262d3cc25f4191b556faad4157d39 Mon Sep 17 00:00:00 2001 From: Dan Duvall Date: Wed, 13 Aug 2025 14:45:40 -0700 Subject: [PATCH 550/730] selenium: Skip flaky tests Skip the following tests: - Content Editable should save an edit - Content Editable should insert a table According to data at https://gitlab.wikimedia.org/thcipriani/flaky-tests/-/blob/208c52e03c8a3624aa8e0120f3d6780249ac9634/README.md these two tests currently account for 50% of flaky selenium test failures over the past 30 days. Let's skip them to avoid frequent issues with branch cut jobs and save compute resources due to CI churn. Bug: T400761 Bug: T401573 Change-Id: Iea0f985d066bdca5be9abeb142e255ffa83d513d --- tests/selenium/specs/content_editable.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/selenium/specs/content_editable.js b/tests/selenium/specs/content_editable.js index 19cb52f97d..82c43acd8e 100644 --- a/tests/selenium/specs/content_editable.js +++ b/tests/selenium/specs/content_editable.js @@ -33,7 +33,8 @@ describe( 'Content Editable', () => { await expect( await EditPage.veRootNode ).toHaveText( content ); } ); - it( 'should save an edit', async () => { + // Skipped starting 2025-08-14 because of T401573 + it.skip( 'should save an edit', async () => { await EditPage.veRootNode.setValue( content ); await EditPage.savePageDots.click(); await EditPage.savePage.waitForClickable(); @@ -43,7 +44,8 @@ describe( 'Content Editable', () => { await expect( await EditPage.notification ).toHaveText( 'The page has been created.' ); } ); - it( 'should insert a table', async () => { + // Skipped starting 2025-08-14 because of T401573 + it.skip( 'should insert a table', async () => { await EditPage.insertTable(); await expect( await EditPage.insertedTable ).toBeDisplayed(); From 904f56c2775d4ee0f9e5b5e5dccc34c0d5ed1d2e Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 13 Aug 2025 15:17:05 -0500 Subject: [PATCH 551/730] Edit check: fix check focus issues Newly-created actions under the cursor should grab the focus. Resolving the final action in the pre-save sidebar should scroll up to the newly-focused earlier action. Bug: T401342 Change-Id: Iaf3a52babf639d3f9bc47f3c1c958df374b15fb7 --- editcheck/modules/controller.js | 5 ++++ editcheck/modules/dialogs/EditCheckDialog.js | 24 +++++++++++++------ .../modules/dialogs/FixedEditCheckDialog.js | 2 ++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index f329679fc6..9c8f30b0c3 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -490,6 +490,11 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions newActions.forEach( ( action ) => { ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-midedit' } ); } ); + + if ( newActions.length ) { + // Check if any new actions are relevant to our current selection: + this.onSelect( this.surface.getModel().getSelection() ); + } } ); }; diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index f28ad2f4b1..d34fb52182 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -33,6 +33,8 @@ ve.ui.EditCheckDialog.static.activeSurface = !OO.ui.isMobile(); // Invisible title for accessibility ve.ui.EditCheckDialog.static.title = OO.ui.deferMsg( 'editcheck-review-title' ); +ve.ui.EditCheckDialog.static.alwaysFocusAction = false; + /* Methods */ /** @@ -131,21 +133,29 @@ ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, * @param {boolean} lastActionRejected Last action was rejected/dismissed */ ve.ui.EditCheckDialog.prototype.showActions = function ( actions, newActions, lastActionRejected ) { + let currentAction; + if ( this.currentActions && this.currentOffset && actions.includes( this.currentActions[ this.currentOffset ] ) ) { + currentAction = this.currentActions[ this.currentOffset ]; + } this.currentActions = actions; if ( actions.length === 0 ) { this.close( { action: lastActionRejected ? 'reject' : 'complete' } ); return; } - // This just adjusts so the previously selected check remains selected: - let newOffset = Math.min( this.currentOffset, actions.length - 1 ); - if ( newActions.length ) { - newOffset = actions.indexOf( newActions[ 0 ] ); - } - this.refresh(); - this.setCurrentOffset( newOffset, false ); + if ( currentAction ) { + // This just adjusts so the previously selected check remains selected: + this.setCurrentOffset( actions.indexOf( currentAction ), false, true ); + } else if ( newActions.length > 0 ) { + this.setCurrentOffset( actions.indexOf( newActions[ 0 ] ), false, false ); + } else if ( this.constructor.static.alwaysFocusAction ) { + // This dialog always wants to have an action focused, so slip the focus onto + // a nearby action if the current one was removed. + const newOffset = Math.min( this.currentOffset, actions.length - 1 ); + this.setCurrentOffset( newOffset, true, false ); + } }; /** diff --git a/editcheck/modules/dialogs/FixedEditCheckDialog.js b/editcheck/modules/dialogs/FixedEditCheckDialog.js index 6d29a12a49..781c27f2de 100644 --- a/editcheck/modules/dialogs/FixedEditCheckDialog.js +++ b/editcheck/modules/dialogs/FixedEditCheckDialog.js @@ -31,6 +31,8 @@ ve.ui.FixedEditCheckDialog.static.position = OO.ui.isMobile() ? 'below' : 'side' ve.ui.FixedEditCheckDialog.static.size = OO.ui.isMobile() ? 'full' : 'medium'; +ve.ui.FixedEditCheckDialog.static.alwaysFocusAction = true; + /* Methods */ /** From 15126927f8167272f80947fbe53fb8f029d25345 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 18 Aug 2025 08:50:42 -0500 Subject: [PATCH 552/730] Edit check: increase the padding below the decline survey Bug: T399883 Change-Id: I8bc1e49b29234e3e5e2225a270a9a0e10c09812c --- editcheck/modules/EditCheck.less | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index bf57fbc86c..ffcbd00e67 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -223,17 +223,14 @@ } .ve-ui-editCheckActionWidget-feedback { - .oo-ui-fieldLayout-header { + .oo-ui-fieldLayout-header, + .oo-ui-radioSelectWidget { padding-bottom: @spacing-100; } .oo-ui-labelElement-label { font-size: inherit; } - - .oo-ui-radioSelectWidget { - padding-bottom: @spacing-50; - } } .ve-ui-editCheckActionWidget-feedback ~ * { From 23baf87324e418a1f5a289891993b3501a9038a2 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 19 Aug 2025 09:32:33 +0200 Subject: [PATCH 553/730] Localisation updates from https://translatewiki.net. Change-Id: I223c38539809871224865f4fcd8b67665f822715 --- i18n/ve-wmf/ce.json | 1 + 1 file changed, 1 insertion(+) diff --git a/i18n/ve-wmf/ce.json b/i18n/ve-wmf/ce.json index 392d5568e2..747675c6ec 100644 --- a/i18n/ve-wmf/ce.json +++ b/i18n/ve-wmf/ce.json @@ -11,6 +11,7 @@ "tag-editcheck-references-activated-description": "EditCheck-на хетарехь, хьажоргаш оьшуш хила тарло, ткъа UI гайтина", "tag-editcheck-references-shown": "Хийцамаш таллар гуш ду (хьажоргаш)", "tag-editcheck-references-shown-description": "EditCheck-на хетарехь, хьажоргаш оьшуш хила тарло, ткъа UI гайтина", + "tag-editcheck-tone-shown": "Гойтуш хийцаран таллам (tone)", "tag-visualeditor": "БӀаьран редактор", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редакторца]] дина нисдарш", "tag-visualeditor-needcheck": "БӀаьран редактор: талла", From 95e983b3447b1ce34a0fc57a4977c19754c6c591 Mon Sep 17 00:00:00 2001 From: Sam Wilson Date: Mon, 18 Aug 2025 09:08:22 +0800 Subject: [PATCH 554/730] Only show template favoriting button if the template exists It's not possible to favorite templates that don't exist, but it is possible to insert them. Also change a few variables' scope, for clarity, and remove the FavoritesStore instantiation (which now happens in the button). Bug: T402023 Change-Id: If5cf22545bf875b8e76c2a3a74cb7f6b944b6e55 --- modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js index 7d06f01b1f..ab94361e97 100644 --- a/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js +++ b/modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js @@ -39,21 +39,17 @@ ve.ui.MWTemplatePage = function VeUiMWTemplatePage( template, name, config ) { label: this.spec.getLabel(), icon: 'puzzle' } ); - this.pageId = this.spec.templateData.pageId; // Add favorite button - this.usingTemplateDiscovery = mw.templateData !== undefined && mw.templateData.FavoriteButton !== undefined; - if ( this.usingTemplateDiscovery ) { - this.favoritesStore = new mw.templateData.FavoritesStore(); - this.favoriteButton = new mw.templateData.FavoriteButton( { - pageId: this.pageId, - favoritesStore: this.favoritesStore + const usingTemplateDiscovery = mw.templateData !== undefined && mw.templateData.FavoriteButton !== undefined; + if ( this.spec.templateData.pageId && usingTemplateDiscovery ) { + const favoriteButton = new mw.templateData.FavoriteButton( { + pageId: this.spec.templateData.pageId } ); - this.$element.prepend( $( '
' ) .addClass( 've-ui-mwTemplatePage-favorite' ) - .append( this.favoriteButton.$element ) + .append( favoriteButton.$element ) ); } From 2c9a6c52f945f2ffcae04b8bcc601aa89c99f55e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 20 Aug 2025 09:33:27 +0200 Subject: [PATCH 555/730] Localisation updates from https://translatewiki.net. Change-Id: Ie369d7ad3fdf0a3e5505a448d503d73d8061193b --- i18n/ve-mw/api/yue-hant.json | 5 +++-- i18n/ve-wmf/ar.json | 1 + i18n/ve-wmf/ia.json | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/i18n/ve-mw/api/yue-hant.json b/i18n/ve-mw/api/yue-hant.json index b60f4d65e0..2eaa8dc0aa 100644 --- a/i18n/ve-mw/api/yue-hant.json +++ b/i18n/ve-mw/api/yue-hant.json @@ -3,7 +3,8 @@ "authors": [ "JeffreyKim", "Ktchankt", - "Winston Sung" + "Winston Sung", + "Yueman" ] }, "apierror-visualeditor-badcachekey": "搵唔到嗰個密匙嘅緩存序列化", @@ -18,7 +19,7 @@ "apihelp-visualeditor-param-oldid": "所用嘅修訂版本號(默認設成上一個版本)", "apihelp-visualeditor-param-paction": "要操嘅作", "apihelp-visualeditor-param-page": "要喺上面執行操作嘅頁面。", - "apihelp-visualeditor-param-preload": "如果擷取嘅頁面仲未有內容,就要用嘅頁面。", + "apihelp-visualeditor-param-preload": "如果攞咗嘅頁面仲未有內容,就要用嘅頁面。", "apihelp-visualeditor-param-preloadparams": "如果有,要將參數替換入預載頁面。", "apihelp-visualeditor-param-pst": "喺將轉換維基文字傳送去Parsoid之前預先儲存佢(paction = 解析片段)。", "apihelp-visualeditor-param-section": "要採取行動嘅部分。", diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index 93550d31bd..10b8f60142 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -30,6 +30,7 @@ "tag-editcheck-tone-description": "اكتشف EditCheck وجود مشكلة محتملة في نغمة بعض المحتوى المضاف", "tag-editcheck-tone-shown": "تم عرض علامة التحرير (النغمة)", "tag-editcheck-tone-shown-description": "يعتقد EditCheck أنه قد يكون من الضروري إجراء تعديل على النغمة في بعض المحتوى، وقد تم عرض واجهة المستخدم", + "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "تحرير مرئي", "tag-visualeditor-description": "تم التعديل باستخدام [[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", "tag-visualeditor-needcheck": "المحرر المرئي: تحقق", diff --git a/i18n/ve-wmf/ia.json b/i18n/ve-wmf/ia.json index 5cbb89ad06..8a70a45a70 100644 --- a/i18n/ve-wmf/ia.json +++ b/i18n/ve-wmf/ia.json @@ -14,6 +14,7 @@ "tag-editcheck-tone-description": "EditCheck ha detegite un problema potential con le tono de certe contento addite", "tag-editcheck-tone-shown": "Verification de modification (tono) monstrate", "tag-editcheck-tone-shown-description": "EditCheck pensa que un adjustamento del tono in alcun contento poterea haber essite necessari, e le interfacie de usator ha essite monstrate", + "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Modification visual", "tag-visualeditor-description": "Modification facite con le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: a verificar", From db1122e55b9bca7986852d701c85010568a658b9 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 21 Aug 2025 09:54:37 +0200 Subject: [PATCH 556/730] Localisation updates from https://translatewiki.net. Change-Id: Ic3727fba368fa835dff7bdd5796c09b3c338b8c9 --- i18n/ve-mw/yue-hant.json | 8 ++++---- i18n/ve-mw/zh-hant.json | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/i18n/ve-mw/yue-hant.json b/i18n/ve-mw/yue-hant.json index 44c1a1c333..ac19ca2dfd 100644 --- a/i18n/ve-mw/yue-hant.json +++ b/i18n/ve-mw/yue-hant.json @@ -55,7 +55,7 @@ "visualeditor-changedesc-mwcategory-sortkey-unset": "排序鍵由$1開始取消設定", "visualeditor-changedesc-mwlanguagevariant": "語言變體標記已經改咗", "visualeditor-changedesc-mwredirect": "跳轉目標由$1變咗去$2", - "visualeditor-changedesc-mwtransclusion": "範本參數改咗", + "visualeditor-changedesc-mwtransclusion": "模嘅參數改咗", "visualeditor-desc": "MediaWiki 嘅即見編輯器", "visualeditor-descriptionpagelink": "Project:VisualEditor", "visualeditor-dialog-extension-abandonedit": "你真係要閂咗個對話框,唔套用你嘅改動?", @@ -163,7 +163,7 @@ "visualeditor-dialog-transclusion-action-save": "儲存", "visualeditor-dialog-transclusion-template-title-nonexistent": "呢個模唔存在。", "visualeditor-dialog-transclusion-template-title-modifier": "當用嵌套語法或者修飾符編輯模嗰陣,模文件同埋[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameter]名(如果存在)係唔可用嘅,例如[//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst]。", - "visualeditor-dialog-transclusion-template-widget-aria": "撳空格嚟揀範本。", + "visualeditor-dialog-transclusion-template-widget-aria": "撳空格掣嚟揀個模。", "visualeditor-dialog-transclusion-template-widget-aria-selected": "撳Ctrl + Del就可以刪模、佢嘅參數同埋佢哋嘅值。撳Ctrl + Shift + 箭咀就可以將模向上搬或者向下搬。", "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "撳Ctrl + Del就可以刪除範本、佢嘅參數同埋佢哋嘅值。", "visualeditor-dialog-transclusion-add-wikitext": "加入維基文字", @@ -192,7 +192,7 @@ "visualeditor-dialog-transclusion-filter-placeholder": "搵欄位", "visualeditor-dialog-transclusion-filter-show-all": "顯示全部", "visualeditor-dialog-transclusion-filter-title": "參數搜尋$1", - "visualeditor-dialog-transclusion-help-title": "支援範本編輯", + "visualeditor-dialog-transclusion-help-title": "改模支援", "visualeditor-dialog-transclusion-help-message": "範本會為內容提供格式。呢個編輯器會喺左邊顯示範本提供咗啲咩選項,然後可以喺右邊嘅呢啲選項加入值。", "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates 編輯範本嘅幫助]", "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/Special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions 鍵盤捷徑]", @@ -220,7 +220,7 @@ "visualeditor-dialog-transclusion-title-insert-known-template": "插入:$1", "visualeditor-dialog-transclusion-title-edit-known-template": "編輯:$1", "visualeditor-dialog-transclusion-title-edit-transclusion": "模內容", - "visualeditor-dialog-transclusion-template-search": "範本搜尋", + "visualeditor-dialog-transclusion-template-search": "搵模", "visualeditor-dialog-transclusion-template-search-help": "用識別關鍵字搵你想插入嘅模。有描述嘅模更有可能同即見編輯器配合得好。", "visualeditor-dialog-transclusion-wikitext": "維基文字", "visualeditor-dialog-transclusion-wikitext-widget-aria": "撳空格就可以揀維基文字元素。撳Enter嚟揀同編輯維基文字。", diff --git a/i18n/ve-mw/zh-hant.json b/i18n/ve-mw/zh-hant.json index 4053aa6e75..f660b86f46 100644 --- a/i18n/ve-mw/zh-hant.json +++ b/i18n/ve-mw/zh-hant.json @@ -286,6 +286,7 @@ "visualeditor-includes-includeonly-description": "當來自此頁面的內容被使用在另一個頁面時,以下額外內容會包含在此:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion 了解有關部分嵌入的更多資訊]", "visualeditor-languages-tool": "語言", + "visualeditor-linkcontext-uneditable": "很抱歉,此連結目前只能在原始碼模式下編輯。", "visualeditor-linkinspector-button-link-external": "外部站台", "visualeditor-linkinspector-button-link-internal": "搜尋內部頁面", "visualeditor-linkinspector-convert-link-isbn": "轉換為 ISBN 連結", From 199341ed0b57218cde9144e9007755a4ae3030db Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 21 Aug 2025 00:11:31 -0500 Subject: [PATCH 557/730] Edit check: gutter sidebar not correctly updating for all listeners Follow-up to 038f4fe7a342f59a2810e7b06fc15226c1a07f0e Change-Id: I1c6e1260253697875ff06f13889f3aa53d0b8091 --- editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js index ec3c11393c..2478073871 100644 --- a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js +++ b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js @@ -83,8 +83,8 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.getTeardownProcess = function ( dat /** * @inheritdoc */ -ve.ui.GutterSidebarEditCheckDialog.prototype.onActionsUpdated = function ( inBeforeSave, actions ) { - if ( inBeforeSave !== this.inBeforeSave ) { +ve.ui.GutterSidebarEditCheckDialog.prototype.onActionsUpdated = function ( listener, actions ) { + if ( ( this.inBeforeSave && listener !== 'onBeforeSave' ) || ( !this.inBeforeSave && listener === 'onBeforeSave' ) ) { return; } this.renderActions( actions ); From e7dd4fbae600eb8e48145306c4825a18aab5dfdb Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 22 Aug 2025 10:09:06 +0200 Subject: [PATCH 558/730] Localisation updates from https://translatewiki.net. Change-Id: I0f0989e78e038c18427d5abdd11812594c07a4a7 --- editcheck/i18n/pt-br.json | 2 + editcheck/i18n/pt.json | 3 + i18n/ve-mw/ps.json | 1 + i18n/ve-mw/sq.json | 186 ++++++++++++++++++++++---------------- i18n/ve-wmf/bn.json | 1 + i18n/ve-wmf/gl.json | 1 + i18n/ve-wmf/sq.json | 7 +- 7 files changed, 119 insertions(+), 82 deletions(-) diff --git a/editcheck/i18n/pt-br.json b/editcheck/i18n/pt-br.json index 93eb0f6659..aa56e114b9 100644 --- a/editcheck/i18n/pt-br.json +++ b/editcheck/i18n/pt-br.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "BraunOBruno", "Eduardoaddad", "Fúlvio" ] @@ -19,6 +20,7 @@ "editcheck-dialog-title": "Antes de publicar", "editcheck-copyvio-title": "Conteúdo promovido", "editcheck-copyvio-description": "Como regra geral, não copie textos de outras fontes. Isso geralmente constitui uma violação de direitos autorais e plágio.", + "editcheck-tone-description": "Outros usuários frequentemente revisam esse tipo de redação, dizendo que o tom é desequilibrado. [$1 Saiba mais]", "editcheck-review-title": "Revisar mudanças", "tag-editcheck-reference-decline-common-knowledge": "Verificação de edição (referências) recusada (conhecimento comum)", "tag-editcheck-reference-decline-common-knowledge-description": "A referência do EditCheck foi recusada como conhecimento comum", diff --git a/editcheck/i18n/pt.json b/editcheck/i18n/pt.json index edbcd69e50..14672426c6 100644 --- a/editcheck/i18n/pt.json +++ b/editcheck/i18n/pt.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "BraunOBruno", "Hamilton Abreu", "Mansil alfalb" ] @@ -24,6 +25,8 @@ "editcheck-dialog-title": "Antes de publicar", "editcheck-copyvio-title": "Conteúdo colado", "editcheck-copyvio-prompt": "Você escreveu este texto?", + "editcheck-tone-description": "Outros utilizadores costumam revisar esse tipo de redação, dizendo que o tom é desequilibrado. [$1 Saiba mais]", + "editcheck-tone-footer": "Identificado usando um [$1 modelo BERT]", "editcheck-tone-reject-uncertain": "Eu não tenho a certeza de como rever o tom", "editcheck-tone-reject-other": "Outros", "editcheck-tone-thank": "Obrigado por rever o tom!", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 0ff28e7f16..4ef958c702 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -42,6 +42,7 @@ "visualeditor-categories-tool": "وېشنيزې", "visualeditor-changedesc-mwcategory-sortkey-changed": "ترتيبولو کونجي له $1 څخه $2 ته بدله شوې", "visualeditor-changedesc-mwcategory-sortkey-set": "ترتيبولو کونجي $1 ته ټاکل شوې", + "visualeditor-changedesc-mwredirect": "موخې وړ مخگرځ له $1 څخه $2 ته بدل شو", "visualeditor-changedesc-mwtransclusion": "د کينډۍ پاراميترونه بدل شول", "visualeditor-desc": "د مېډياويکي لپاره ليدنيز سمونگر", "visualeditor-descriptionpagelink": "Project:ليدنيز سمونگر", diff --git a/i18n/ve-mw/sq.json b/i18n/ve-mw/sq.json index 37fce5fd22..883054c364 100644 --- a/i18n/ve-mw/sq.json +++ b/i18n/ve-mw/sq.json @@ -23,31 +23,42 @@ "collabpad-doctitle": "KolabPad: $1", "collabpad-import-subtitle": "Importuar nga $1", "collabpad": "KolabPad", - "tooltip-ca-ve-edit": "Përpunoni këtë faqe", - "tooltip-ca-editsource": "Përpunoni kodin burim të kësaj faqeje", - "tooltip-ca-createsource": "Krijoni kodin burim të kësaj faqeje", - "visualeditor-advancedsettings-tool": "Rregullime të mëtejshme", - "visualeditor-autosave-modified-prompt-accept": "Rikthejuni përpunimit", + "tooltip-ca-ve-edit": "Redakto këtë faqe", + "tooltip-ca-ve-edit-local": "Redakto faqen e përshkrimit lokal", + "tooltip-ca-ve-create": "Krijo këtë faqe", + "tooltip-ca-ve-create-local": "Krijo faqen e përshkrimit lokal", + "tooltip-ca-editsource": "Redakto kodin burimor të kësaj faqeje", + "tooltip-ca-editsource-local": "Redakto kodin burimor të faqes së përshkrimit lokal", + "tooltip-ca-createsource": "Krijo kodin burimor të kësaj faqeje", + "tooltip-ca-createsource-local": "Krijo kodin burimor të faqes së përshkrimit lokal", + "visualeditor-advancedsettings-tool": "Cilësimet e përparuara", + "visualeditor-autosave-modified-prompt-accept": "Riktheju redaktimit", "visualeditor-autosave-modified-prompt-message": "Kjo faqe qe përpunuar pas herës së fundit që e ngarkuat. Doni të rimerret përpunimi {{GENDER:|juaj}} i versionit të vjetër, apo të fillohet një përpunim i ri i versionit më të ri?", - "visualeditor-autosave-modified-prompt-reject": "Filloni një përpunim të ri", - "visualeditor-autosave-modified-prompt-title": "Të rimerret përpunimi {{GENDER:|juaj}}?", - "visualeditor-autosave-not-recovered-text": "Ndryshimet tuaja të paruajtura s’u rikthyen dot.", - "visualeditor-autosave-not-recovered-title": "Rikthimi i ndryshimit dështoi", - "visualeditor-autosave-recovered-text": "Ndryshimet tuaja të paruajtura u rikthyen automatikisht.", - "visualeditor-autosave-recovered-title": "Ndryshimet u rikthyen", - "visualeditor-backbutton-tooltip": "Kthehuni mbrapsht", - "visualeditor-ca-createlocaldescriptionsource": "Shto burim përshkrimi lokal", - "visualeditor-ca-createsource": "Krijoni burim", - "visualeditor-ca-editlocaldescriptionsource": "Përpunoni burim vendor përshkrimi", + "visualeditor-autosave-modified-prompt-reject": "Fillo një redaktim të ri", + "visualeditor-autosave-modified-prompt-title": "Dëshiron të rikthehesh te përpunimi {{GENDER:|yt}}?", + "visualeditor-autosave-not-recovered-text": "Ndryshimet e tua të paruajtura nuk mund të rikuperoheshin.", + "visualeditor-autosave-not-recovered-title": "Rikuperimi i ndryshimit dështoi", + "visualeditor-autosave-recovered-text": "Ndryshimet e tua të paruajtura u rikuperuan automatikisht.", + "visualeditor-autosave-recovered-title": "Ndryshimet u rikuperuan", + "visualeditor-backbutton-tooltip": "Kthehu prapa", + "visualeditor-ca-createlocaldescriptionsource": "Shto burimin lokal të përshkrimit", + "visualeditor-ca-createsource": "Krijo burimin", + "visualeditor-ca-editlocaldescriptionsource": "Redakto burimin e përshkrimit lokal", "visualeditor-ca-editsource": "Redakto burimin", "visualeditor-ca-editsource-section": "redakto burimin", - "visualeditor-categories-tool": "Kategori", - "visualeditor-changedesc-mwlanguagevariant": "U ndryshua markup varianti gjuhe", - "visualeditor-changedesc-mwredirect": "U ndryshua objektiv ridrejtimi nga $1 në $2", - "visualeditor-changedesc-mwtransclusion": "U ndryshuan parametra gjedhesh", - "visualeditor-desc": "Përpunues pamor për MediaWiki-n", + "visualeditor-ca-editsource-section-hint": "Redakto kodin burimor të pjesës: $1", + "visualeditor-categories-tool": "Kategoritë", + "visualeditor-changedesc-mwcategory-sortkey-changed": "Çelësi i renditjes ndryshoi nga $1 në $2", + "visualeditor-changedesc-mwcategory-sortkey-set": "Çelësi i renditjes u vendos në $1", + "visualeditor-changedesc-mwcategory-sortkey-unset": "Çelësi i renditjes u hoq nga $1", + "visualeditor-changedesc-mwlanguagevariant": "Shënimi i variantit të gjuhës ndryshoi", + "visualeditor-changedesc-mwredirect": "Objektivi i ridrejtimit ndryshoi nga $1 në $2", + "visualeditor-changedesc-mwtransclusion": "Parametrat e stampës u ndryshuan", + "visualeditor-desc": "Redaktues pamor për MediaWiki-n", "visualeditor-descriptionpagelink": "Project:Përpunuesi Pamor", - "visualeditor-dialog-media-alttext-section": "Tekst alternativ", + "visualeditor-dialog-extension-abandonedit": "A je i sigurt që dëshiron ta mbyllësh këtë dialog pa zbatuar ndryshimet e tua?", + "visualeditor-dialog-media-alttext-checkbox": "Përdor mbishkrimin si tekstin alternativ", + "visualeditor-dialog-media-alttext-section": "Teksti alternativ", "visualeditor-dialog-media-alttext-section-help": "Këtë mund ta përdorni për të shkruar një përshkrim teksti për persona që s’e shohin dot objektin. Përshkrimi duhet të jetë i mjaftueshëm që ata të kuptojnë qëllimin dhe informacionin e dhënë nga objekti media. Kjo është jetike për përdorues të verbër dhe persona të tjerë që përdorin program leximi ekrani ose shfletues që shfaqin vetëm tekst.", "visualeditor-dialog-media-change-image": "Ndryshoni figurën", "visualeditor-dialog-media-choose-image": "Përdor këtë figurë", @@ -59,35 +70,35 @@ "visualeditor-dialog-media-info-artist": "Ngarkuar nga $1", "visualeditor-dialog-media-info-audiofile": "Kartelë audio", "visualeditor-dialog-media-info-created": "Krijuar më: $1", - "visualeditor-dialog-media-info-meta-artist": "Artist: $1", - "visualeditor-dialog-media-info-moreinfo": "Më tepër të dhëna", - "visualeditor-dialog-media-info-readmore": "Lexoni më tepër", + "visualeditor-dialog-media-info-meta-artist": "Autori: $1", + "visualeditor-dialog-media-info-moreinfo": "Më shumë informacion", + "visualeditor-dialog-media-info-readmore": "Lexo më shumë", "visualeditor-dialog-media-info-uploaded": "Ngarkuar më: $1", - "visualeditor-dialog-media-page-advanced": "Të mëtejshme", + "visualeditor-dialog-media-page-advanced": "Të përparuara", "visualeditor-dialog-media-page-general": "Të përgjithshme", "visualeditor-dialog-media-position-checkbox": "Mbështille tekstin rreth këtij objekti", "visualeditor-dialog-media-position-checkbox-help": "Mund të realizoni shfaqjen e këtij objekti media brendazi, me tekstin e faqes, në vend se të jetë pezull. Këtë do të duhej ta bënit rrallë, ngaqë kjo do të dëmtojë rrjedhën e tekstit, nëse ia hiqni shenjën kësaj kutize.", - "visualeditor-dialog-media-position-section": "Pozicion", + "visualeditor-dialog-media-position-section": "Pozicioni", "visualeditor-dialog-media-position-section-help": "Mund të caktoni ku të shfaqet kjo media te faqja. Ndonjëherë kjo përdoret për të ndarë në pjesë një varg të gjatë figurash në njërën anë të faqes.", - "visualeditor-dialog-media-save": "Ruaje", - "visualeditor-dialog-media-search-tab-search": "Kërkoni", - "visualeditor-dialog-media-search-tab-upload": "Ngarkoje", - "visualeditor-dialog-media-size-section": "Madhësi figure", + "visualeditor-dialog-media-save": "Ruaj", + "visualeditor-dialog-media-search-tab-search": "Kërko", + "visualeditor-dialog-media-search-tab-upload": "Ngarko", + "visualeditor-dialog-media-size-section": "Madhësia e imazhit", "visualeditor-dialog-media-size-section-help": "Mund të caktoni sa i madh duket objekti media te faqja. Kjo do të duhej të ishte thuajse përherë madhësia normale, ngaqë një madhësi vetjake juaja do të ndikojë mbi skemën e faqes dhe do të cenojë unitetin e saj.", - "visualeditor-dialog-media-title": "Rregullime mediash", - "visualeditor-dialog-media-type-border": "Cak", + "visualeditor-dialog-media-title": "Cilësimet e medias", + "visualeditor-dialog-media-type-border": "Kufi", "visualeditor-dialog-media-type-frame": "Kornizë", "visualeditor-dialog-media-type-frameless": "Pa kornizë", "visualeditor-dialog-media-type-none": "Bazë", - "visualeditor-dialog-media-type-section": "Lloj figure", + "visualeditor-dialog-media-type-section": "Lloji i imazhit", "visualeditor-dialog-media-type-section-help": "Mund të caktoni se si të shfaqet te faqja objekti media. Thuajse në krejt rastet, për të qenë në një vijë me faqe të tjera, kjo do të duhej të ishte nën formatin miniaturë.", "visualeditor-dialog-media-type-thumb": "Miniaturë", - "visualeditor-dialog-media-upload": "Ngarkoje", - "visualeditor-dialog-meta-advancedsettings-label": "Rregullime të mëtejshme", + "visualeditor-dialog-media-upload": "Ngarko", + "visualeditor-dialog-meta-advancedsettings-label": "Cilësimet e përparuara", "visualeditor-dialog-meta-advancedsettings-section": "Rregullime të mëtejshme", "visualeditor-dialog-meta-categories-addcategory-label": "Shto një kategori në këtë faqe", - "visualeditor-dialog-meta-categories-category": "Kategori", - "visualeditor-dialog-meta-categories-data-label": "Kategori", + "visualeditor-dialog-meta-categories-category": "Kategoria", + "visualeditor-dialog-meta-categories-data-label": "Kategoritë", "visualeditor-dialog-meta-categories-defaultsort-help": "Mënyrën se si renditet kjo faqe, kur shfaqet brenda një kategorie, mund ta anashkaloni duke caktuar një tjetër tregues për renditje. Kjo përdoret shpesh për t’i bërë faqet rreth personash të shfaqen sipas mbiemrit, por të emërtuara duke shfaqur së pari emrat e tyre.", "visualeditor-dialog-meta-categories-defaultsort-label": "Rendite këtë faqe, si parazgjedhje, si", "visualeditor-dialog-meta-categories-hidden": "Kjo kategori është rregulluar të mos shfaqet në faqe te të cilat shtohet.", @@ -97,11 +108,11 @@ "visualeditor-dialog-meta-categories-input-newcategorylabel": "Kategori e re", "visualeditor-dialog-meta-categories-input-placeholder": "Shto një kategori", "visualeditor-dialog-meta-categories-missing": "Kësaj kategorie i mungon një faqe përshkrimi.", - "visualeditor-dialog-meta-categories-options": "Mundësi", - "visualeditor-dialog-meta-categories-section": "Kategori", + "visualeditor-dialog-meta-categories-options": "Mundësitë", + "visualeditor-dialog-meta-categories-section": "Kategoritë", "visualeditor-dialog-meta-categories-sortkey-label": "Rendite këtë faqe si të quhej", "visualeditor-dialog-meta-languages-code-label": "Kod gjuhe", - "visualeditor-dialog-meta-languages-label": "Gjuhë", + "visualeditor-dialog-meta-languages-label": "Gjuhët", "visualeditor-dialog-meta-languages-link-label": "Faqe e lidhur", "visualeditor-dialog-meta-languages-name-label": "Gjuhë", "visualeditor-dialog-meta-languages-readonlynote": "Kjo është një listë e faqeve në gjuhë të tjera të cilat lidhen me këtë faqe. Hëpërhë, mund të përpunohet vetëm me përpunuesin e burimit ose në Wikidata.", @@ -115,7 +126,7 @@ "visualeditor-dialog-meta-settings-index-force": "Po", "visualeditor-dialog-meta-settings-index-help": "Mund t’i detyroni motorët e kërkimeve ta paraqesin këtë faqe në përfundime kërkimesh që prodhojnë, ose t’i detyroni të mos e bëjnë këtë. Kjo mundësi nuk prek kërkimet brenda sajtit.", "visualeditor-dialog-meta-settings-index-label": "Lejoni indeksim të kësaj faqeje nga motorë kërkimesh", - "visualeditor-dialog-meta-settings-label": "Rregullime faqeje", + "visualeditor-dialog-meta-settings-label": "Cilësimet e faqes", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Parazgjedhje", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Jo", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Po", @@ -130,25 +141,25 @@ "visualeditor-dialog-meta-settings-notitleconvert-help": "Mund të parandaloni shndërrim automatik të titullit të kësaj faqeje në skripte të tjera.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Mos e shndërro titullin nga një variant gjuhe në një tjetër", "visualeditor-dialog-meta-settings-redirect-help": "Prej kësaj faqeje mund të krijoni një ridrejtim, një faqe që do t’i shpjerë automatikisht lexuesit te një tjetër faqe në këtë wiki. Kjo është e dobishme në rast gabimesh drejtshkrimi dhe emrash apo konceptesh alternative. Nëse e bëni këtë, lexuesit s’do ta shohin lëndën e kësaj faqeje.", - "visualeditor-dialog-meta-settings-redirect-label": "Ridrejtojeni këtë faqe për te", - "visualeditor-dialog-meta-settings-redirect-placeholder": "Faqe objektiv për ridrejtim", + "visualeditor-dialog-meta-settings-redirect-label": "Ridrejtoje këtë faqe te", + "visualeditor-dialog-meta-settings-redirect-placeholder": "Faqja e synuar për ridrejtim", "visualeditor-dialog-meta-settings-redirect-statichelp": "Mund të parandaloni përditësimin automatik të këtij ridrejtimi kur faqja te e cila ky shpie është lëvizur, për rastin shumë të rrallë që kjo është e nevojshme.", "visualeditor-dialog-meta-settings-redirect-staticlabel": "Parandaloje përditësimin e këtij ridrejtimi, kur faqja e synuar lëvizet.", - "visualeditor-dialog-meta-settings-section": "Rregullime faqeje", - "visualeditor-dialog-meta-settings-toc-default": "Në u dashtë", + "visualeditor-dialog-meta-settings-section": "Cilësimet e faqes", + "visualeditor-dialog-meta-settings-toc-default": "Nëse nevojitet", "visualeditor-dialog-meta-settings-toc-disable": "Kurrë", - "visualeditor-dialog-meta-settings-toc-force": "Përherë", + "visualeditor-dialog-meta-settings-toc-force": "Gjithmonë", "visualeditor-dialog-meta-settings-toc-help": "Mund të detyroni shfaqjen e një tryeze lënde që radhit çdo krye të faqes, për faqe me më pak se katër krye, ose ta bëni të mos shfaqet fare. Si parazgjedhje, do të shfaqet nëse faqja ka katër ose më tepër krye.", "visualeditor-dialog-meta-settings-toc-label": "Shfaq Tryezën e Lëndës", "visualeditor-dialog-meta-templatesused-noresults": "S’u gjetën gjedhe.", "visualeditor-dialog-meta-title": "Mundësi", - "visualeditor-dialog-table-collapsed": "Fillimisht e tkurrur", - "visualeditor-dialog-table-collapsible": "E tkurrshme", + "visualeditor-dialog-table-collapsed": "Fillimisht e palosur", + "visualeditor-dialog-table-collapsible": "E palosshme", "visualeditor-dialog-table-sortable": "E renditshme", "visualeditor-dialog-table-wikitable": "E stilizuar (tabelë wiki)", - "visualeditor-dialog-template-title": "Gjedhe", - "visualeditor-dialog-transclusion-action-save": "Ruaje", - "visualeditor-dialog-transclusion-template-title-nonexistent": "Ky model nuk ekziston.", + "visualeditor-dialog-template-title": "Stampë", + "visualeditor-dialog-transclusion-action-save": "Ruaj", + "visualeditor-dialog-transclusion-template-title-nonexistent": "Kjo stampë nuk ekziston.", "visualeditor-dialog-transclusion-template-title-modifier": "Dokumentimi i modelit dhe emrat e [//www.mediawiki.org/wiki/Manual:Glossary#Parametër parametrit] (në ekzistojnë) nuk janë të arritshme, kur modelet e redaktimit që përdorin sintaksë ose modifikues të mbyllur, si për shembullː [//www.mediawiki.org/wiki/Ndihmë:Zëvendësim zëv].", "visualeditor-dialog-transclusion-add-wikitext": "Shto tekst wiki", "visualeditor-dialog-transclusion-add-param-error-alias": " \"$1\" është shtuar si \"$2\". Ju lutem, kontrolloni opsionet anësore. Kjo është për shkak të përdorimit të [//www.mediawiki.org/wiki/Ndihmë:Modeletetëdhënave#pseudonimeve pseudonimeve] ose [//www.mediawiki.org/wiki/Ndihmë:Modeletetëdhënave#etiketave etiketave].", @@ -158,14 +169,23 @@ "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 është karakter i ndaluar. Ju lutem, hiqeni për të shtuar parametër.", "visualeditor-dialog-transclusion-add-param-help": "Nëse dihet, vendosni emrat e parametrave të padokumentuar. Vini re që vetëm parametrat e njohur nga modeli do të kenë efekt. Ndoshta mund ta gjeni informacionin me parametrat ekzistues në [[$1|faqen e modelit]].", "visualeditor-dialog-transclusion-add-param-placeholder": "Emri i parametrit", - "visualeditor-dialog-transclusion-add-param-save": "Shtoni parametrin", - "visualeditor-dialog-transclusion-add-template": "Shtoni gjedhe", + "visualeditor-dialog-transclusion-add-param-save": "Shto", + "visualeditor-dialog-transclusion-add-template": "Shto stampë", + "visualeditor-dialog-transclusion-add-template-button": "Shto stampë", + "visualeditor-dialog-transclusion-add-template-save": "Shto", "visualeditor-dialog-transclusion-add-undocumented-param": "Shto parametër të padokumentuar", - "visualeditor-dialog-transclusion-collapse-options": "Fshini mundësitë", - "visualeditor-dialog-transclusion-contextitem-description": "Prodhuar nga: $1", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "Dëshiron të kthehesh prapa te kërkimi? Ndryshimet e tua do të humbasin dhe kjo nuk mund të zhbëhet.", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "Dëshiron të mbyllësh redaktuesin e stampave? Ndryshimet e tua do të humbasin dhe kjo nuk mund të zhbëhet.", + "visualeditor-dialog-transclusion-collapse-options": "Fshih mundësitë", + "visualeditor-dialog-transclusion-confirmation-discard": "Hidh poshtë redaktimet", + "visualeditor-dialog-transclusion-confirmation-reject": "Vazhdo redaktimin", + "visualeditor-dialog-transclusion-contextitem-description": "Gjeneruar nga: $1", + "visualeditor-dialog-transclusion-contextitem-loading": "Duke ngarkuar...", "visualeditor-dialog-transclusion-expand-options": "Shfaq mundësitë", - "visualeditor-dialog-transclusion-filter-no-match": "Nuk është gjetur asnjë përputhje", - "visualeditor-dialog-transclusion-filter-placeholder": "Gjeni fushën", + "visualeditor-dialog-transclusion-filter-hide-unused": "Fshih të papërdorurat", + "visualeditor-dialog-transclusion-filter-no-match": "Nuk u gjet asnjë përputhje", + "visualeditor-dialog-transclusion-filter-placeholder": "Gjej fushën", + "visualeditor-dialog-transclusion-filter-show-all": "Shfaq të gjitha", "visualeditor-dialog-transclusion-deprecated-parameter": "Fushë e vjetruar", "visualeditor-dialog-transclusion-deprecated-parameter-description": "Fusha është e vjetruar. $1", "visualeditor-dialog-transclusion-loading": "Po ngarkohet…", @@ -174,21 +194,24 @@ "visualeditor-dialog-transclusion-no-template-description": "Gjedhja \"$1\" ende s’ka përshkrim, por mund të ketë pak informacion te [[$2|faqja e gjedhes]].", "visualeditor-dialog-transclusion-param-default": "Parazgjedhje: $1", "visualeditor-dialog-transclusion-param-example-long": "Shembull:$1", - "visualeditor-dialog-transclusion-param-undocumented": "(Parametër i padokumentuar)", + "visualeditor-dialog-transclusion-param-selection-aria-label": "Parametrat në $1", + "visualeditor-dialog-transclusion-param-undocumented": "(parametër i padokumentuar)", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Gjej stampën", "visualeditor-dialog-transclusion-required-parameter": "Fushë e domosdoshme", "visualeditor-dialog-transclusion-required-parameter-description": "Fusha është e domosdoshme.", - "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Kthehuni mbrapsht", - "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Vazhdo sido qoftë", - "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Mungon fushë e domosdoshme|Mungojnë fusha të domosdoshme}}", - "visualeditor-dialog-transclusion-required-parameter-is-blank": "Jeni i sigurt se doni të vazhdoni pa plotësuar {{PLURAL:$2|fushën|fushat}} $1?", + "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Kthehu prapa", + "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Vazhdo gjithsesi", + "visualeditor-dialog-transclusion-required-parameter-dialog-title": "{{PLURAL:$1|Mungon një fushë e|Mungojnë disa fusha të}} domosdoshme", + "visualeditor-dialog-transclusion-required-parameter-is-blank": "A je i sigurt që dëshiron të vazhdosh pa plotësuar {{PLURAL:$2|fushën|fushat}} $1?", "visualeditor-dialog-transclusion-see-template": "Modelet janë për përdorim të gjenerueshëm dhe pa përshkrime. Mund të ketë informacion shtesë për këtë [[$2|faqe modeli]].", "visualeditor-dialog-transclusion-title-insert-template": "Fut një model", "visualeditor-dialog-transclusion-title-insert-known-template": "Fut: $1", "visualeditor-dialog-transclusion-title-edit-known-template": "Redakto: $1", - "visualeditor-dialog-transclusion-title-edit-transclusion": "Përmbajtja e modelit", - "visualeditor-dialog-transclusion-template-search": "Kërkim gjedheje", + "visualeditor-dialog-transclusion-title-edit-transclusion": "Përmbajtja e stampës", + "visualeditor-dialog-transclusion-template-search": "Kërkimi i stampave", "visualeditor-dialog-transclusion-template-search-help": "Gjeni gjedhen që dëshironi të futni duke kërkuar një fjalëkyçe identifikuese. Ka gjasa që gjedhet me përshkrime të punojnë mirë me këtë përpunues (Përpunues Pamor).", - "visualeditor-dialog-transclusion-wikitext": "Tekst wiki", + "visualeditor-dialog-transclusion-wikitext": "Wikitekst", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "Shtyp Ctrl+Del për të fshirë elementin e wikitekstit.", "visualeditor-dialogbutton-media-tooltip": "Imazhe dhe media", "visualeditor-dialogbutton-template-tooltip": "Stampë", "visualeditor-editconflict": "Ndryshimet tuaja s’u ruajtën dot, për shkak të një përplasje përpunimesh. Do të donit ta zgjidhni dorazi përplasjen?", @@ -196,10 +219,10 @@ "visualeditor-editingtabdialog-ok": "Përdor përpunuesin që përdora në përpunimin tim të fundit", "visualeditor-editingtabdialog-title": "Përpunim tabelash", "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|shënim|shënime}}", - "visualeditor-editnotices-tooltip": "Përpunoni shënime", - "visualeditor-editsummary": "Përshkruani ç’ndryshuat", - "visualeditor-editsummary-characters-remaining": "Numri i shenjave të mbetura", - "visualeditor-educationpopup-dismiss": "OK, e mora vesh", + "visualeditor-editnotices-tooltip": "Redakto njoftimet", + "visualeditor-editsummary": "Përshkruaj çfarë ndryshove", + "visualeditor-editsummary-characters-remaining": "Numri i karaktereve të mbetura", + "visualeditor-educationpopup-dismiss": "Në rregull, e kuptova", "visualeditor-expandable-less": "Më pak", "visualeditor-expandable-more": "Më shumë", "visualeditor-feedback-defaultmessage": "URL: $1", @@ -220,6 +243,7 @@ "visualeditor-includes-includeonly-description": "Kur lënda e kësaj faqeje përdoret nga një faqe tjetër, lënda shtesë e mëposhtme do të përfshihet këtu:", "visualeditor-includes-documentation": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Mësoni më tepër mbi ndërpërfshirje të pjesshme]", "visualeditor-languages-tool": "Gjuhë", + "visualeditor-linkcontext-uneditable": "Na vjen keq, por kjo lidhje mund të redaktohet vetëm në modalitetin burimor për momentin.", "visualeditor-linkinspector-button-link-external": "Faqe e jashtme", "visualeditor-linkinspector-button-link-internal": "Kërkoni faqe të brendshme", "visualeditor-linkinspector-convert-link-isbn": "Shndërrojeni në lidhje ISBN", @@ -279,18 +303,22 @@ "visualeditor-mwpredialog-convert": "Lejo stilizim teksti", "visualeditor-mwpredialog-title": "Tekst i thjeshtë i paraformatuar", "visualeditor-mwsignature-tool": "Nënshkrimi juaj", + "visualeditor-preference-visualeditor": "Aktivizo redaktuesin pamor", "visualeditor-preference-newwikitexteditor-enable": "Përdor mënyrën tekst wiki brenda përpunuesit pamor, në vend se të një përpunuesi tjetër tekstesh wiki.", + "visualeditor-preference-newwikitexteditor-help": "Ky ndonjëherë quhet 'redaktuesi i wikitekstit i vitit 2017'.", "visualeditor-preference-tabs": "Mënyrë përpunimi:", "visualeditor-preference-tabs-multi-tab": "Shfaqmi skedat e të dy përpunuesve", "visualeditor-preference-tabs-prefer-ve": "Jepmë përherë përpunuesin pamor, nëse është e mundshme", "visualeditor-preference-tabs-prefer-wt": "Jepmë përherë përpunuesin e burimit", "visualeditor-preference-tabs-remember-last": "Mbaj mend përpunuesin tim të fundit", + "visualeditor-preference-collab-label": "Redaktim bashkëpunues", + "visualeditor-preference-collab-description": "Fto përdorues të tjerë t'i bashkohen seancës tënde të redaktimit në redaktuesin pamor.", "visualeditor-rebase-client-export": "Eksportoje", "visualeditor-rebase-client-export-start": "Eksportoni…", "visualeditor-rebase-client-import": "Importoje", "visualeditor-rebase-client-import-name": "Titull faqeje", "visualeditor-rebase-client-title-help": "Do të jeni në gjendje të shqyrtoni ndryshimet, para ruajtjes.", - "visualeditor-recreate": "Kjo faqe është fshirë, pasi filluat ta përpunoni. Që të rikrijohet, shtypni \"$1\".", + "visualeditor-recreate": "Faqja u fshi pasi fillove të redaktoje. Shtyp \"$1\" për ta rikrijuar atë.", "visualeditor-redirect-description": "Ridrejtim për te $1", "visualeditor-savedialog-identify-anon": "Në vend të kësaj, doni ta ruani këtë faqe si përdorues anonim? Adresa juaj IP do të regjistrohet në historikun e përpunimeve të kësaj faqeje.", "visualeditor-savedialog-identify-user": "Tani jeni i futur si [[User:$1|$1]]. Nëse e ruani këtë përpunim, përpunimi juaj do të përshoqërohet me këtë llogari.", @@ -303,28 +331,28 @@ "visualeditor-savedialog-label-review-good": "Rikthehu te ruajtje formulari", "visualeditor-savedialog-label-save-short": "Ruaje", "visualeditor-savedialog-label-save-short-start": "Ruajeni…", - "visualeditor-savedialog-review-nosummary": "Nuk ka përmbledhje të përpunimit", + "visualeditor-savedialog-review-nosummary": "Nuk ka përmbledhje të redaktimit", "visualeditor-savedialog-review-visual": "Pamor", "visualeditor-savedialog-review-wikitext": "Tekst wiki", "visualeditor-savedialog-title-conflict": "Përplasje", "visualeditor-savedialog-title-preview": "Parashihni ndryshimet tuaja", "visualeditor-savedialog-title-review": "Shqyrtoni ndryshimet tuaja", "visualeditor-savedialog-title-save": "Ruani ndryshimet tuaja", - "visualeditor-section-body-placeholder": "Ndarje e re", - "visualeditor-section-title-placeholder": "Subjekt", - "visualeditor-loaderror-revidconflict": "ID-të e rishikimeve të dhëna nga shërbyesi nuk përputhen (dokument: $1, tejtëdhëna: $2).", + "visualeditor-section-body-placeholder": "Pjesë e re", + "visualeditor-section-title-placeholder": "Titulli", + "visualeditor-loaderror-revidconflict": "ID-të e versioneve të kthyera nga serveri nuk përputhen (dokumenti: $1, metadatat: $2).", "visualeditor-loaderror-wrongmode": "U provua të ngarkohej përpunuesi nën mënyrë të gabuar (lloj të dhënash: \"$1\", mënyrë përpunuesi: \"$2\").", - "visualeditor-settings-tool": "Rregullime faqeje", + "visualeditor-settings-tool": "Cilësimet e faqes", "visualeditor-special-characters-group-other": "Përdorur shpesh", - "visualeditor-templatesused-tool": "Gjedhe të përdorura", + "visualeditor-templatesused-tool": "Stampat e përdorura", "visualeditor-title-error": "Titull i pavlefshëm.", "visualeditor-toload": "Përpunuesi tani do të ngarkohet. Nëse këtë mesazh e shihni ende pas pak sekondash, ju lutemi, [$1 ringarkoni faqen].", "visualeditor-tooltip-non-breaking-space": "Shenjë  ", "visualeditor-version-label": "Version", - "visualeditor-wikitext-progress": "Po shndërrohet tekst wiki", + "visualeditor-wikitext-progress": "Duke konvertuar wikitekstin", "visualeditor-wikitext-warning": "Po përdorni përpunuesin pamor - [[{{MediaWiki:visualeditor-wikitext-warning-link}}|wikitext]] nuk funksionon këtu. Që të kaloni në përpunim burimi kurdo, pa humbur ndryshimet tuaja, klikoni mbi butonin e ndërrimit.", "visualeditor-wikitext-warning-title": "U pikas formatim wiki", - "visualeditor-wikitextconvert-title": "Të shndërrohet formatimi në tekst wiki?", + "visualeditor-wikitextconvert-title": "Dëshiron ta konvertosh formatimin në wikitekst?", "visualeditor-wikitextconvert-message": "Lënda e ngjitur prej jush përmban formatime. Dëshironi ta shndërroni këtë formatim në wikitext?", - "visualeditor-wikitextconvert-convert": "Shndërroje në tekst wiki" + "visualeditor-wikitextconvert-convert": "Shndërro në wikitekst" } diff --git a/i18n/ve-wmf/bn.json b/i18n/ve-wmf/bn.json index cd49fc1758..c12a1de91b 100644 --- a/i18n/ve-wmf/bn.json +++ b/i18n/ve-wmf/bn.json @@ -13,6 +13,7 @@ }, "tag-editcheck-newreference-description": "পাতাটিতে একটি তথ্যসূত্র যোগ হয়েছে", "tag-editcheck-references-activated": "সম্পাদনা পরীক্ষা (তথ্যসূত্র) সক্রিয় করা হয়েছে", + "tag-editcheck-references-shown": "সম্পাদনা পরীক্ষা (তথ্যসূত্র) দেখানো হয়েছে", "tag-visualeditor": "দৃশ্যমান সম্পাদনা", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|দৃশ্যমান সম্পাদনা]] ব্যবহার করে সম্পাদিত", "tag-visualeditor-needcheck": "দৃশ্যমান সম্পাদনা: যাচাই করুন", diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index caadf4ce85..2eded43f50 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -18,6 +18,7 @@ "tag-editcheck-tone-description": "EditCheck detectou un posible problema co ton dalgúns contidos engadidos", "tag-editcheck-tone-shown": "Verificación de modificacións (ton) amosada", "tag-editcheck-tone-shown-description": "EditCheck cre que podería ser necesario axustar o ton dalgúns contidos e mostrou a interface de usuario", + "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Edición feita mediante o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: Comprobar", diff --git a/i18n/ve-wmf/sq.json b/i18n/ve-wmf/sq.json index 3552d44b7c..84260e5b16 100644 --- a/i18n/ve-wmf/sq.json +++ b/i18n/ve-wmf/sq.json @@ -9,14 +9,15 @@ "Xhulianoo" ] }, + "tag-editcheck-newreference-description": "Një referim iu shtua faqes", "tag-visualeditor": "Redaktim pamor", - "tag-visualeditor-description": "Përpunim i bërë duke përdorur [[{{MediaWiki:visualeditor-descriptionpagelink}}|përpunuesin pamor]]", + "tag-visualeditor-description": "Redaktim i bërë duke përdorur [[{{MediaWiki:visualeditor-descriptionpagelink}}|redaktuesin pamor]]", "tag-visualeditor-needcheck": "Përpunim pamor: Kontrollojeni", "tag-visualeditor-needcheck-description": "Përpunim i bërë duke përdorur [[{{MediaWiki:visualeditor-descriptionpagelink}}|përpunuesin pamor]] kur sistemi pikasi tekst wiki sipas gjasash me ndryshime të pasynuara.", "tag-visualeditor-wikitext": "përpunim burimi 2017", "tag-visualeditor-wikitext-description": "Përpunim i bërë duke përdorur përpunues tekste wiki të 2017-s", - "tag-visualeditor-switched": "Përpunim pamor: I kaluar në të", - "tag-visualeditor-switched-description": "Përdoruesi filloi ta përpunojë duke përdorur përpunuesin pamor, mandej kaloi te përpunues burimi.", + "tag-visualeditor-switched": "Redaktim pamor: I ndërruar", + "tag-visualeditor-switched-description": "Përdoruesi filloi të redaktojë duke përdorur redaktuesin pamor, pastaj kaloi te redaktuesi i wikitekstit.", "visualeditor-feedback-link": "Project:VisualEditor/Përshtypje", "visualeditor-feedback-tool": "Lini përshtypjet rreth këtij software-i", "visualeditor-help-label": "Lexoni udhërrëfyesin e përdoruesit", From 884099850834991a93dbe52dc72f80de4f6fc476 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 25 Aug 2025 09:45:01 +0200 Subject: [PATCH 559/730] Localisation updates from https://translatewiki.net. Change-Id: I3a72ce17c7a7a4c1557eddd8cbae2a899e63db44 --- editcheck/i18n/lb.json | 13 +++++++++++++ i18n/ve-mw/bo.json | 2 ++ i18n/ve-mw/mwlanguagevariant/sje.json | 8 ++++++++ i18n/ve-mw/mwlanguagevariant/smn.json | 1 + i18n/ve-mw/pt.json | 3 ++- i18n/ve-mw/sq.json | 4 ++-- i18n/ve-mw/yua.json | 11 ++++++++--- i18n/ve-wmf/ar.json | 1 - i18n/ve-wmf/es.json | 7 +++++++ i18n/ve-wmf/fr.json | 1 - i18n/ve-wmf/gl.json | 1 - i18n/ve-wmf/ia.json | 1 - i18n/ve-wmf/mk.json | 1 - i18n/ve-wmf/nl.json | 1 - i18n/ve-wmf/nqo.json | 5 +++++ i18n/ve-wmf/yua.json | 25 ++++++++++++++----------- 16 files changed, 62 insertions(+), 23 deletions(-) create mode 100644 i18n/ve-mw/mwlanguagevariant/sje.json diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index f2ca547bdd..3e0f18e204 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -6,14 +6,26 @@ }, "editcheck-dialog-action-no": "Nee", "editcheck-dialog-action-yes": "Jo", + "editcheck-dialog-action-decline": "Ofleenen", "editcheck-dialog-action-revise": "Iwwerschaffen", "editcheck-dialog-action-recheck": "Nach eng Kéier iwwerpréiwen", "editcheck-dialog-action-back": "Zréck", + "editcheck-dialog-action-submit": "Ofschécken", + "editcheck-dialog-addref-reject-question": "Firwat setzt Dir keng Referenz derbäi?", + "editcheck-dialog-addref-reject-irrelevant": "Menger Meenung no si Referenzen fir d'Ännerung, déi ech maachen, net relevant", + "editcheck-dialog-addref-reject-common-knowledge": "D'Informatiounen, déi ech derbäisetzen, sinn allgemeng bekannt", + "editcheck-dialog-addref-reject-uncertain": "Ech si mer net sécher, wat fir eng Referenz ech derbäisetze sollt", + "editcheck-dialog-addref-reject-other": "Anerer", + "editcheck-dialog-addref-success-notify": "Merci, datt Dir eng Referenz derbäigesat hutt!", + "editcheck-dialog-addref-title": "Eng Referenz derbäisetzen", + "editcheck-dialog-title": "Virum Verëffentlechen", + "editcheck-copyvio-title": "Agesaten Inhalt", "editcheck-copyvio-prompt": "Hutt Dir dësen Text geschriwwen?", "editcheck-copyvio-action-keep": "Jo, halen", "editcheck-copyvio-action-remove": "Nee, ewechhuelen", "editcheck-copyvio-keep-wrote": "Ech hunn dësen Inhalt geschriwwen an en ass soss néierens publizéiert", "editcheck-copyvio-keep-free": "Dësen Text ass am Domaine public oder steet ënner enger fräier Lizenz", + "editcheck-copyvio-keep-other": "Anerer", "editcheck-copyvio-keep-notify": "Merci, datt Dir Äre Grond gedeelt hutt fir den agepechten Text ze halen", "editcheck-copyvio-remove-notify": "Merci, datt Dir dësen Text ewechgeholl hutt!", "editcheck-tone-title": "Tounfall iwwerschaffen?", @@ -21,6 +33,7 @@ "editcheck-tone-title-acted": "Tounfall iwwerschaffen", "editcheck-tone-reject-appropriate": "Den Tounfall ass passend", "editcheck-tone-reject-uncertain": "Ech weess net genee, wéi ech den Tounfall iwwerschaffe soll", + "editcheck-tone-reject-other": "Anerer", "editcheck-tone-thank": "Merci, datt Dir den Tounfall iwwerschafft hutt!", "editcheck-reject-description": "Aner Editeure géifen et appreciéiere fir gewuer ze ginn, firwat Dir dëse Choix gemaach hutt.", "editcheck-review-title": "Ännerungen nokucken" diff --git a/i18n/ve-mw/bo.json b/i18n/ve-mw/bo.json index 456a02b18d..6239f2c135 100644 --- a/i18n/ve-mw/bo.json +++ b/i18n/ve-mw/bo.json @@ -2,9 +2,11 @@ "@metadata": { "authors": [ "Phurbutsering", + "Tenzin Thoesam", "ཁ་བཏགས་ནག་པོ" ] }, "tooltip-ca-ve-edit": "དྲ་ངོས་དེ་རྩོམ་སྒྲིག་བྱ་བ།", + "visualeditor-ca-editsource-section": "མ་ངོས་ཞུ་དག", "visualeditor-dialog-meta-languages-readonlynote": "འདི་དང་སྐད་ཡིག་གཞན་གྱི་ཝེ་ཁེ་དང་སྦྲེལ་མཐུད་བྱས་ཡོད་པའི་ཤོགངོས་གི་ཐོ་གཞུང། ད་ལྟའི་ཆར་ཡོངས་ཁུངས་ལམ་འམ་ཝེ་ཁེ་གྲངས་མཛོང་ནང་རྩོམ་སྒྲིག་བྱེད་ཆོག།" } diff --git a/i18n/ve-mw/mwlanguagevariant/sje.json b/i18n/ve-mw/mwlanguagevariant/sje.json new file mode 100644 index 0000000000..d9ba649f75 --- /dev/null +++ b/i18n/ve-mw/mwlanguagevariant/sje.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Yupik" + ] + }, + "visualeditor-mwlanguagevariantcontextitem-rule-text-twoway-label": "Täkksta" +} diff --git a/i18n/ve-mw/mwlanguagevariant/smn.json b/i18n/ve-mw/mwlanguagevariant/smn.json index 3b71943951..330a83e092 100644 --- a/i18n/ve-mw/mwlanguagevariant/smn.json +++ b/i18n/ve-mw/mwlanguagevariant/smn.json @@ -8,6 +8,7 @@ "visualeditor-mwlanguagevariant-unknown": "Kielâ variant", "visualeditor-mwlanguagevariantcontextitem-rule-code-label": "Kielâkoodi", "visualeditor-mwlanguagevariantcontextitem-rule-name-label": "Kielâ", + "visualeditor-mwlanguagevariantcontextitem-rule-text-twoway-label": "Tekstâ", "visualeditor-mwlanguagevariantcontextitem-title-name": "Kielâ nommâ", "visualeditor-mwlanguagevariantcontextitem-title-unknown": "Kielâ variant", "visualeditor-mwlanguagevariantinspector-filter-langs-label": "Kielah", diff --git a/i18n/ve-mw/pt.json b/i18n/ve-mw/pt.json index 083aa621c6..e5161236b8 100644 --- a/i18n/ve-mw/pt.json +++ b/i18n/ve-mw/pt.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Albertoleoncio", "Athena in Wonderland", "Cainamarques", "Diniscoelho", @@ -127,7 +128,7 @@ "visualeditor-dialog-meta-languages-label": "Idiomas", "visualeditor-dialog-meta-languages-link-label": "Página ligada", "visualeditor-dialog-meta-languages-name-label": "Idioma", - "visualeditor-dialog-meta-languages-readonlynote": "Esta é uma lista de páginas noutros idiomas que estão interligadas a esta. Por enquanto, só pode ser editada no modo de código ou na Wikidados.", + "visualeditor-dialog-meta-languages-readonlynote": "Esta é uma lista de páginas noutras línguas que estão hiperligadas a esta. Por enquanto, só pode ser editada no modo de código-fonte ou na wiki Wikidata.", "visualeditor-dialog-meta-languages-section": "Idiomas", "visualeditor-dialog-meta-settings-displaytitle": "Mostrar o título", "visualeditor-dialog-meta-settings-displaytitle-help": "Pode substituir o modo como o título desta página é apresentado através da definição de uma etiqueta diferente a ser mostrada.", diff --git a/i18n/ve-mw/sq.json b/i18n/ve-mw/sq.json index 883054c364..023ada1c70 100644 --- a/i18n/ve-mw/sq.json +++ b/i18n/ve-mw/sq.json @@ -263,7 +263,7 @@ "visualeditor-media-title-image": "Figurë", "visualeditor-media-title-video": "Video", "visualeditor-meta-tool": "Mundësi", - "visualeditor-mweditmode-tooltip": "Ndërroni përpunues", + "visualeditor-mweditmode-tooltip": "Ndërro redaktuesin", "visualeditor-mweditmodesource-progress": "Po kalohet në përpunim burimi…", "visualeditor-mweditmodesource-tool-current": "Redaktim burimor", "visualeditor-mweditmodesource-tool-unavailable": "Këtu s’është i mundur përpunimi i burimit", @@ -271,7 +271,7 @@ "visualeditor-mweditmodeve-popup-title": "Kaluat nën përpunim burimi", "visualeditor-mweditmodeve-progress": "Po kalohet në përpunim pamor…", "visualeditor-mweditmodeve-showagain": "Mos e shfaqni më këtë mesazh", - "visualeditor-mweditmodeve-tool-current": "Përpunim pamor", + "visualeditor-mweditmodeve-tool-current": "Redaktim pamor", "visualeditor-mweditmodeve-tool-unavailable": "Këtu s’është i mundur përpunimi pamor", "visualeditor-mweditmodewt-popup-body": "Te përpunimi i burimit mund të riktheheni kurdo, përmes klikimit mbi këtë ikonë.", "visualeditor-mweditmodewt-popup-title": "Keni kaluar nën përpunim pamor", diff --git a/i18n/ve-mw/yua.json b/i18n/ve-mw/yua.json index a32bf38dc8..dfb51a0665 100644 --- a/i18n/ve-mw/yua.json +++ b/i18n/ve-mw/yua.json @@ -2,22 +2,27 @@ "@metadata": { "authors": [ "Juanchuy0", + "Kaambalwiki", "Lorenzoitza", + "Miguelos1976", "Tunichmay", "ValentinaTec", "VicenteCancheM" ] }, - "collabpad-doctitle": "Taak’in: $1", - "collabpad-import-subtitle": "Tojol $1", + "collabpad-doctitle": "CollabPad: $1", + "collabpad-import-subtitle": "Importado de $1", "collabpad": "Plataforma u múul meyaj", "tooltip-ca-ve-edit": "K'ex le waala'", - "tooltip-ca-ve-edit-local": "Edit le linki abas kaambal u tsoolil le kúuchila'", + "tooltip-ca-ve-edit-local": "Editar la página de descripción local", "tooltip-ca-ve-create": "beet a \"pagina\"", "tooltip-ca-ve-create-local": "beet a\"pagina\"u tsoolil le kúuchila'", "tooltip-ca-editsource": "je'el beet \"código fuente\"ti le\"pagina\"'", "tooltip-ca-editsource-local": "je'el beet le \"codigo fuente\" ti' le \"pagina\" tu tsololil kuuchil", "tooltip-ca-createsource": "beet u \"codigo fuente\"ti le\"pagina\"", + "visualeditor-advancedsettings-tool": "Tsolmeyaj tu bin u náachtal", + "visualeditor-annotations-default-end": "Xu'ul le tsolts'íib ti' le jun xóot' p'iis ets'a'ano.", + "visualeditor-annotations-default-start": "U káajbal le p'iis etsa'an o a'alano'", "visualeditor-ca-createlocaldescriptionsource": "A'al tu'ux u taal", "visualeditor-ca-createsource": "A'al tu'ux u taal", "visualeditor-ca-editsource": "k'ex le coodigóo", diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index 10b8f60142..93550d31bd 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -30,7 +30,6 @@ "tag-editcheck-tone-description": "اكتشف EditCheck وجود مشكلة محتملة في نغمة بعض المحتوى المضاف", "tag-editcheck-tone-shown": "تم عرض علامة التحرير (النغمة)", "tag-editcheck-tone-shown-description": "يعتقد EditCheck أنه قد يكون من الضروري إجراء تعديل على النغمة في بعض المحتوى، وقد تم عرض واجهة المستخدم", - "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "تحرير مرئي", "tag-visualeditor-description": "تم التعديل باستخدام [[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", "tag-visualeditor-needcheck": "المحرر المرئي: تحقق", diff --git a/i18n/ve-wmf/es.json b/i18n/ve-wmf/es.json index 9482faec1c..c49ff6b68d 100644 --- a/i18n/ve-wmf/es.json +++ b/i18n/ve-wmf/es.json @@ -15,13 +15,20 @@ "Macofe", "PoLuX124", "Ralgis", + "Teen12", "Thehelpfulone", "Themasterriot", "YoViajo", "아라" ] }, + "tag-editcheck-newcontent-description": "Bix a beel", "tag-editcheck-newreference-description": "Se agregó una referencia a la página.", + "tag-editcheck-references-description": "EditCheeck a wojel waaj je'el u beeyta'al u yaantal Google ti' jump'èel referenciae'", + "tag-editcheck-references-activated": " Verificarta'ab le edicióna'.", + "tag-editcheck-references-activated-description": "EdiChek a wojel waaj je'el u beeyta'al jump'èel referencia waaj tu yesaj u yochel de usuarioa'", + "tag-editcheck-references-shown": "Ku ye'esik waaj máax beet le edicióna'", + "tag-editcheck-tone-description": "EdiChek tu detectartaj jump'èel ba'al ku juum ti' jump'èel ba'al ts'abij.", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Modificación hecha con el [[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual]]", "tag-visualeditor-needcheck": "Edición visual: comprobar", diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index 2c65dfb426..7054519223 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -51,7 +51,6 @@ "tag-editcheck-tone-description": "EditCheck a détecté un problème potentiel avec le ton de certains contenus ajoutés", "tag-editcheck-tone-shown": "Modifier la vérification (tonalité) affichée", "tag-editcheck-tone-shown-description": "EditCheck pense qu'un ajustement du ton de certains contenus aurait pu être nécessaire, et l'interface utilisateur a été affichée", - "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Éditeur visuel", "tag-visualeditor-description": "Modification effectuée avec l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|éditeur visuel]]", "tag-visualeditor-needcheck": "Éditeur visuel : à vérifier", diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index 2eded43f50..caadf4ce85 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -18,7 +18,6 @@ "tag-editcheck-tone-description": "EditCheck detectou un posible problema co ton dalgúns contidos engadidos", "tag-editcheck-tone-shown": "Verificación de modificacións (ton) amosada", "tag-editcheck-tone-shown-description": "EditCheck cre que podería ser necesario axustar o ton dalgúns contidos e mostrou a interface de usuario", - "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Edición feita mediante o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: Comprobar", diff --git a/i18n/ve-wmf/ia.json b/i18n/ve-wmf/ia.json index 8a70a45a70..5cbb89ad06 100644 --- a/i18n/ve-wmf/ia.json +++ b/i18n/ve-wmf/ia.json @@ -14,7 +14,6 @@ "tag-editcheck-tone-description": "EditCheck ha detegite un problema potential con le tono de certe contento addite", "tag-editcheck-tone-shown": "Verification de modification (tono) monstrate", "tag-editcheck-tone-shown-description": "EditCheck pensa que un adjustamento del tono in alcun contento poterea haber essite necessari, e le interfacie de usator ha essite monstrate", - "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Modification visual", "tag-visualeditor-description": "Modification facite con le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: a verificar", diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index d2a9c3ac5d..e406803e37 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -18,7 +18,6 @@ "tag-editcheck-tone-description": "EditCheck пронајде потенцијален проблем со тонот во додадената содржина", "tag-editcheck-tone-shown": "Прикажана проверката на уредувања (тон)", "tag-editcheck-tone-shown-description": "Проверката на уредувања смета дека може да е потребно прилагодување на тонот во некои содржини, и бил прикажан корисничкиот посредник", - "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Нагледно уредување", "tag-visualeditor-description": "Уредување направено со [[{{MediaWiki:visualeditor-descriptionpagelink}}|нагледниот уредник]]", "tag-visualeditor-needcheck": "Нагледен уредник: Проверка", diff --git a/i18n/ve-wmf/nl.json b/i18n/ve-wmf/nl.json index 63477306ec..ab09e0f5d6 100644 --- a/i18n/ve-wmf/nl.json +++ b/i18n/ve-wmf/nl.json @@ -33,7 +33,6 @@ "tag-editcheck-tone-description": "EditCheck heeft een mogelijk probleem ontdekt met de toon van bepaalde toegevoegde inhoud", "tag-editcheck-tone-shown": "Bewerkingscontrole (toon) weergegeven", "tag-editcheck-tone-shown-description": "EditCheck denkt dat een aanpassing van de toon in bepaalde inhoud nodig was geweest, en de gebruikersinterface is weergegeven", - "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", "tag-visualeditor": "Visuele tekstverwerker", "tag-visualeditor-description": "Bewerking gedaan met de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwerker]]", "tag-visualeditor-needcheck": "Visuele tekstverwerker: nakijken", diff --git a/i18n/ve-wmf/nqo.json b/i18n/ve-wmf/nqo.json index b474b311e4..c11a37c83a 100644 --- a/i18n/ve-wmf/nqo.json +++ b/i18n/ve-wmf/nqo.json @@ -9,6 +9,11 @@ "tag-editcheck-references-description": "EditCheck ߦߴߊ߬ ߖߊ߬ߕߋ߬ ߟߊ߫ ߟߋ߬ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߣߌ߲߬ ߘߐ߫", "tag-editcheck-references-activated": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߬ߟߌ (ߦߟߌߡߊߛߙߋ ߟߎ߬) ߓߘߊ߫ ߟߊߞߎߣߎ߲߫", "tag-editcheck-references-activated-description": "EdidCheck ߦߴߊ߬ ߖߌ߰ ߟߊ߫ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫، ߊ߬ ߘߏ߲߬ UI ߓߘߊ߫ ߦߌ߬ߘߊ߬.", + "tag-editcheck-references-shown": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߫ (ߦߟߌߡߊߛߙߋ ߟߎ߫) ߦߌ߬ߘߊ߬", + "tag-editcheck-references-shown-description": "EdidCheck ߦߴߊ߬ ߖߌ߰ ߟߊ߫ ߞߏ߫ ߡߊ߬ߞߏ ߘߌ߫ ߞߍ߫ ߦߟߌߡߊߛߙߋ ߘߏ߫ ߟߊ߫، ߊ߬ ߘߏ߲߬ UI ߓߘߊ߫ ߦߌ߬ߘߊ߬.", + "tag-editcheck-tone-description": "EditCheck ߓߘߊ߫ ߝߙߋߞߋ߫ ߘߐߓߍ߲߬ߕߊ ߘߏ߫ ߟߊߞߏߟߐ߲߫ ߞߣߐߘߐ߫ ߝߙߊ߬ߣߍ߲ ߘߏ߫ ߟߎ߫ ߡߊ߲߬ߞߊ߲ ߘߐ߫", + "tag-editcheck-tone-shown": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߫ (ߡߊ߲߬ߞߊ߲) ߦߌ߬ߘߊ", + "tag-editcheck-tone-shown-description": "EditCheck ߦߴߊ߬ ߓߛߌ߬ߞߌ߫ ߟߊ߫ ߞߏ߫ ߡߊ߬ߞߏ ߦߋ߫ ߟߊ߬ߞߢߊ߬ߟߌ ߟߊ߫ ߡߊ߲߬ߞߊ߲ ߘߐ߫ ߞߣߐߘߐ ߘߏ߫ ߘߐ߫, UI ߘߏ߲߬ ߦߌ߬ߘߊ߬ߣߍ߲߫", "tag-visualeditor": "ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲", "tag-visualeditor-description": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߡߍ߲ ߠߎ߬ ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ [[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߗߏ߯ ߡߊߦߟߍߡߊ߲]] ߘߐ߫", "tag-visualeditor-needcheck": "ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲:ߝߛߍ߬ߝߛߍ߬ߟߌ", diff --git a/i18n/ve-wmf/yua.json b/i18n/ve-wmf/yua.json index c812321e1e..2ea0bbe1a0 100644 --- a/i18n/ve-wmf/yua.json +++ b/i18n/ve-wmf/yua.json @@ -1,17 +1,20 @@ { "@metadata": { "authors": [ + "Chester1", "Coala23", "Cohuoucan", + "Ebenezer", "Gutypc712", "JhonRambo", + "Miguelos1976", "Tunichmay", "ValentinaTec" ] }, - "tag-editcheck-newcontent-description": "EditCheck ku tukultik ts'áab túumben kaambal tu' wáalal u link.", - "tag-editcheck-newreference-description": "junp'eel referencia san t'aabak tia'al le paginao'", - "tag-editcheck-references-description": "EditCheck ku tukultik jump'éel éesajile' je'el u páajtal u k'a'ana'antale'", + "tag-editcheck-newcontent-description": "EditCheck ku tukultik ts'áab túumben kaambal tu' páaginaí", + "tag-editcheck-newreference-description": "junp'eel referencia tsaaba u tia'al le paginao'", + "tag-editcheck-references-description": "EditCheck ku tukultik jump'éel éesajile' je'el u páajtal u k'abeejtale'", "tag-editcheck-references-activated": "paakat edicion T’aab", "tag-editcheck-references-activated-description": "EditCheck ku tukultik junp'éel éesajile' je'el u páajtal u k'a'abéettal, yéetel chikpají le máax meyajtiko'", "tag-editcheck-references-shown": "Editar Check (referencias) ku ye'esik", @@ -26,14 +29,14 @@ "tag-visualeditor-wikitext": "editor de código 2017", "tag-visualeditor-wikitext-description": "Edición beeta'an yéetel le editor wikitexto 2017", "tag-visualeditor-switched": "Edición visual: K'ex", - "tag-visualeditor-switched-description": "Le máax meyajtiko' káaj u editar yéetel le editor visual, ts'o'okole' tu k'exaj u editor wikitexto.", - "visualeditor-feedback-link": "Proyectó: k'eex paakat/ya'alo'ob", - "visualeditor-feedback-tool": "P'aat a tsiikbal yóolal le\"software\"'", - "visualeditor-help-label": "xookle \"guia de Usuario\"", - "visualeditor-welcomedialog-action": "kasej a je'el ts'iibtik", - "visualeditor-welcomedialog-content": "je'el máaxake'je'el u páajtal u je'el ts'íibtike' beyo ku saasiltaj", - "visualeditor-welcomedialog-content-thanks": "Niib óolal a wáantik yóok'ol kaab u kaaxaant láak' ba'alob", + "tag-visualeditor-switched-description": "El usuario comenzó a editar utilizando el editor visual y luego cambió al editor de wikitexto.", + "visualeditor-feedback-link": "Project:Editor visual/Comentarios", + "visualeditor-feedback-tool": "Deja tus comentarios acerca de este software", + "visualeditor-help-label": "Leer la guía de usuario", + "visualeditor-welcomedialog-action": "Empezar a editar", + "visualeditor-welcomedialog-content": "Cualquiera puede editar, y cada mejora ayuda.", + "visualeditor-welcomedialog-content-thanks": "¡Gracias por ayudar al mundo a descubrir más!", "visualeditor-welcomedialog-switch": "K'ex le \"editor de codigo\"'", "visualeditor-welcomedialog-switch-ve": "K'ex ti' le editor visual", - "visualeditor-welcomedialog-title": "{{GENDER:$1| Bienvenido}} ti' $2" + "visualeditor-welcomedialog-title": "{{GENDER:$1|} ti' $2" } From affc6ec9769d99e95b6eafdd9bfcfb3c1b5e7663 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 20 Aug 2025 21:58:16 -0500 Subject: [PATCH 560/730] Edit check: split out the gutter section widget into a proper class Bug: T400932 Change-Id: Iedd055f0e4ea4b96d00cc070053fb2e3e996ffd5 --- .../modules/EditCheckGutterSectionWidget.js | 117 ++++++++++++++++++ .../dialogs/GutterSidebarEditCheckDialog.js | 69 ++--------- editcheck/modules/init.js | 1 + extension.json | 1 + 4 files changed, 126 insertions(+), 62 deletions(-) create mode 100644 editcheck/modules/EditCheckGutterSectionWidget.js diff --git a/editcheck/modules/EditCheckGutterSectionWidget.js b/editcheck/modules/EditCheckGutterSectionWidget.js new file mode 100644 index 0000000000..4c3cbaa8f8 --- /dev/null +++ b/editcheck/modules/EditCheckGutterSectionWidget.js @@ -0,0 +1,117 @@ +/** + * EditCheckGutterSectionWidget + * + * @class + * + * @param {Object} config Configuration options + * @param {mw.editcheck.Controller} config.controller + * @param {mw.editcheck.EditCheckAction[]} config.actions + */ +mw.editcheck.EditCheckGutterSectionWidget = function MWEditCheckGutterSectionWidget( config ) { + this.controller = config.controller; + this.actions = config.actions; + + this.icon = new OO.ui.IconWidget(); + this.iconLabel = new OO.ui.LabelWidget( { + label: this.actions.length.toString(), + invisibleLabel: this.actions.length === 1 + } ); + + this.$element = $( '
' ) + .addClass( 've-ui-editCheck-gutter-action' ) + .append( this.icon.$element, this.iconLabel.$element ) + .on( 'click', this.onClick.bind( this ) ); + + if ( config.rect ) { + this.setPosition( config.rect ); + } +}; + +OO.initClass( mw.editcheck.EditCheckGutterSectionWidget ); + +/* Methods */ + +mw.editcheck.EditCheckGutterSectionWidget.prototype.isFocused = function () { + return this.actions.includes( this.controller.focusedAction ); +}; + +mw.editcheck.EditCheckGutterSectionWidget.prototype.getPrimaryAction = function () { + if ( this.controller.focusedAction && this.actions.includes( this.controller.focusedAction ) ) { + return this.controller.focusedAction; + } + return this.actions[ 0 ]; +}; + +mw.editcheck.EditCheckGutterSectionWidget.prototype.update = function () { + const action = this.getPrimaryAction(); + + this.$element + .removeClass( ( index, classes ) => ( + classes.split( ' ' ).filter( ( cls ) => cls.startsWith( 've-ui-editCheck-gutter-action-' ) ) + ) ) + // The following classes are used here: + // * ve-ui-editCheck-gutter-action-error + // * ve-ui-editCheck-gutter-action-warning + // * ve-ui-editCheck-gutter-action-notice + // * ve-ui-editCheck-gutter-action-success + .addClass( 've-ui-editCheck-gutter-action-' + action.getType() ) + .toggleClass( 've-ui-editCheck-gutter-action-inactive', !this.isFocused() ); + + this.icon.setIcon( mw.editcheck.EditCheckActionWidget.static.iconMap[ action.getType() ] || 'notice' ); + + if ( this.actions.includes( this.controller.focusedAction ) ) { + this.icon.setFlags( this.controller.focusedAction.getType() ); + } else { + this.icon.clearFlags(); + } +}; + +mw.editcheck.EditCheckGutterSectionWidget.prototype.setPosition = function ( rect ) { + this.$element.css( { + top: rect.top + 2, + height: rect.height + } ); + + this.update(); +}; + +mw.editcheck.EditCheckGutterSectionWidget.prototype.onClick = function () { + const action = this.getPrimaryAction(); + this.controller.focusAction( action, true ); + // Should we trigger the popup? By default yes, unless + // we're in the onBeforeSave mode where we can assume + // something else is handling it. + if ( this.controller.inBeforeSave ) { + return; + } + // mid-edit + const surface = this.controller.surface; + const currentWindow = surface.getToolbarDialogs( ve.ui.FixedEditCheckDialog.static.position ).getCurrentWindow(); + if ( !currentWindow || currentWindow.constructor.static.name !== 'fixedEditCheckDialog' ) { + const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); + windowAction.open( + 'fixedEditCheckDialog', + { + controller: this.controller, + inBeforeSave: false, + actions: this.actions, + footer: this.actions.length !== 1, + // just filter out any discarded actions from the allowed set + updateFilter: ( updatedActions, newActions, discardedActions, prevActions ) => prevActions.filter( ( pact ) => !discardedActions.includes( pact ) ) + } + ); + } else if ( this.actions.every( ( sact ) => currentWindow.hasAction( sact ) ) ) { + // Second click: defocus and close + return this.controller.closeDialog(); + } else { + currentWindow.showActions( this.actions, [ action ] ); + currentWindow.footer.toggle( this.actions.length !== 1 ); + } +}; + +mw.editcheck.EditCheckGutterSectionWidget.prototype.teardown = function () { + this.$element.remove(); + + this.controller = null; + this.surface = null; +}; diff --git a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js index 2478073871..0beb82d9a4 100644 --- a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js +++ b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js @@ -75,6 +75,8 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.getTeardownProcess = function ( dat return process.first( () => { this.controller.disconnect( this ); + this.widgets.forEach( ( widget ) => widget.teardown() ); + this.surface = null; this.controller = null; }, this ); @@ -141,7 +143,6 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions const oldWidgets = this.widgets || []; this.widgets = []; sections.forEach( ( section ) => { - const action = section.actions[ 0 ]; let widget; const index = oldWidgets.findIndex( ( owidget ) => owidget.actions.length === section.actions.length && @@ -150,73 +151,17 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.renderActions = function ( actions if ( index !== -1 ) { widget = oldWidgets.splice( index, 1 )[ 0 ]; } else { - const icon = new OO.ui.IconWidget( { - icon: mw.editcheck.EditCheckActionWidget.static.iconMap[ action.getType() ] || 'notice' - } ); - const iconLabel = new OO.ui.LabelWidget( { - label: section.actions.length.toString(), - invisibleLabel: section.actions.length === 1 - } ); - widget = { + widget = new mw.editcheck.EditCheckGutterSectionWidget( { actions: section.actions, - icon: icon, - iconLabel: iconLabel, - $element: $( '
' ) - .addClass( 've-ui-editCheck-gutter-action' ) - // The following classes are used here: - // * ve-ui-editCheck-gutter-action-error - // * ve-ui-editCheck-gutter-action-warning - // * ve-ui-editCheck-gutter-action-notice - // * ve-ui-editCheck-gutter-action-success - .addClass( 've-ui-editCheck-gutter-action-' + action.getType() ) - .append( icon.$element, iconLabel.$element ) - .on( 'click', () => { - // Should we trigger the popup? By default yes, unless - // we're in the onBeforeSave mode where we can assume - // something else is handling it. - if ( !this.inBeforeSave ) { - // mid-edit - const currentWindow = this.surface.getToolbarDialogs( ve.ui.FixedEditCheckDialog.static.position ).getCurrentWindow(); - if ( !currentWindow || currentWindow.constructor.static.name !== 'fixedEditCheckDialog' ) { - const windowAction = ve.ui.actionFactory.create( 'window', this.surface, 'check' ); - windowAction.open( - 'fixedEditCheckDialog', - { - controller: this.controller, - inBeforeSave: false, - actions: section.actions, - footer: section.actions.length !== 1, - // just filter out any discarded actions from the allowed set - updateFilter: ( updatedActions, newActions, discardedActions, prevActions ) => prevActions.filter( ( pact ) => !discardedActions.includes( pact ) ) - } - ); - } else if ( section.actions.every( ( sact ) => currentWindow.hasAction( sact ) ) ) { - // Second click: defocus and close - return this.controller.closeDialog(); - } else { - currentWindow.showActions( section.actions, [ action ] ); - currentWindow.footer.toggle( section.actions.length !== 1 ); - } - } - this.controller.focusAction( action, true ); - } ) - }; + controller: this.controller + } ); this.$body.append( widget.$element ); } - if ( widget.actions.includes( this.controller.focusedAction ) ) { - widget.icon.setFlags( action.getType() ); - } else { - widget.icon.clearFlags(); - } - widget.$element.css( { - top: section.rect.top + 2, - height: section.rect.height - } ).toggleClass( 've-ui-editCheck-gutter-action-inactive', !section.actions.includes( this.controller.focusedAction ) ); - + widget.setPosition( section.rect ); this.widgets.push( widget ); } ); - oldWidgets.forEach( ( widget ) => widget.$element.remove() ); + oldWidgets.forEach( ( widget ) => widget.teardown() ); // surfaceView.$element.after( this.$mobile ); }; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index caf5d4db53..0ff09e029d 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -16,6 +16,7 @@ require( './EditCheckPreSaveToolbarTools.js' ); require( './EditCheckFactory.js' ); require( './EditCheckAction.js' ); require( './EditCheckActionWidget.js' ); +require( './EditCheckGutterSectionWidget.js' ); require( './dialogs/EditCheckDialog.js' ); require( './dialogs/FixedEditCheckDialog.js' ); require( './dialogs/SidebarEditCheckDialog.js' ); diff --git a/extension.json b/extension.json index 32cc659a3a..916a2df4b2 100644 --- a/extension.json +++ b/extension.json @@ -627,6 +627,7 @@ "editcheck/modules/EditCheckFactory.js", "editcheck/modules/EditCheckAction.js", "editcheck/modules/EditCheckActionWidget.js", + "editcheck/modules/EditCheckGutterSectionWidget.js", "editcheck/modules/dialogs/EditCheckDialog.js", "editcheck/modules/dialogs/FixedEditCheckDialog.js", "editcheck/modules/dialogs/SidebarEditCheckDialog.js", From b322bcf23982bb69e7b5e387f8bd8d5898f2bbdc Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 21 Aug 2025 09:14:46 -0500 Subject: [PATCH 561/730] Edit check: pull knowledge of "revising" out of EditCheckAction Bug: T400932 Change-Id: I5564ef52d8a7fdab7100caf5fd3af79897d2ac18 --- editcheck/modules/EditCheckAction.js | 5 ++++- editcheck/modules/editchecks/experimental/ToneCheck.js | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index e8029e34e0..b80fe841c5 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -223,8 +223,11 @@ mw.editcheck.EditCheckAction.prototype.equals = function ( other ) { * @param {boolean} stale */ mw.editcheck.EditCheckAction.prototype.setStale = function ( stale ) { - this.setMode( stale ? 'revising' : '' ); + const previousState = this.isStale(); this.originalText = stale ? null : this.fragments.map( ( fragment ) => fragment.getText() ); + if ( previousState !== this.isStale() ) { + this.emit( 'stale', this.isStale() ); + } }; /** diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 3db988f74d..d95071c68f 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -144,10 +144,17 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { } ); } else if ( choice === 'edit' && surface ) { action.setStale( true ); + action.setMode( 'revising' ); // Once revising has started the user will either make enough of an // edit that this action is discarded, or will `act` again and this // event-handler will be removed above: action.once( 'discard', this.notifySuccess ); + action.once( 'stale', () => { + // Clean up the mode after we're done; any other act or anything + // that can trigger an update should un-stale the action. + action.setMode( '' ); + action.gutterQuickAction = null; + } ); // If in pre-save mode, close the check dialog const closePromise = this.controller.inBeforeSave ? this.controller.closeDialog() : ve.createDeferred().resolve().promise(); return closePromise.then( () => { From 5ab07d6e5c7ba20e8331fb1c0029ef8d34260080 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 22 Aug 2025 10:11:21 -0500 Subject: [PATCH 562/730] Edit check: allow untagging of actions, add helpers on actions for tags Bug: T400932 Change-Id: I08d5cd1e9d16ff3a0e6671257f1b0d7d73320adc --- editcheck/modules/EditCheckAction.js | 33 +++++++++++++++++ editcheck/modules/editchecks/BaseEditCheck.js | 36 +++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index b80fe841c5..537606e446 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -248,3 +248,36 @@ mw.editcheck.EditCheckAction.prototype.isStale = function () { mw.editcheck.EditCheckAction.prototype.discarded = function () { this.emit( 'discard' ); }; + +/** + * Tag this action + * + * @param {string} tag + */ +mw.editcheck.EditCheckAction.prototype.tag = function ( tag ) { + this.check.tag( tag, this ); +}; + +/** + * Untag this action + * + * @param {string} tag + * @return {boolean} Whether anything was untagged + */ +mw.editcheck.EditCheckAction.prototype.untag = function ( tag ) { + return this.check.untag( tag, this ); +}; + +/** + * Is this action tagged? + * + * @param {string} tag + * @return {boolean} + */ +mw.editcheck.EditCheckAction.prototype.isTagged = function ( tag ) { + if ( this.id ) { + return this.check.isTaggedId( tag, this.id ); + } else { + return this.fragments.some( ( fragment ) => this.check.isTaggedRange( tag, fragment.getSelection().getRange() ) ); + } +}; diff --git a/editcheck/modules/editchecks/BaseEditCheck.js b/editcheck/modules/editchecks/BaseEditCheck.js index 2a2f19a633..13586708e3 100644 --- a/editcheck/modules/editchecks/BaseEditCheck.js +++ b/editcheck/modules/editchecks/BaseEditCheck.js @@ -368,6 +368,42 @@ mw.editcheck.BaseEditCheck.prototype.tag = function ( tag, action ) { } }; +/** + * Untag a check action + * + * TODO: This is asymmetrical. Do we want to split this into two functions, or + * unify isTaggedRange/isTaggedId into one function? + * + * @param {string} tag + * @param {mw.editCheck.EditCheckAction} action + * @return {boolean} Whether anything was untagged + */ +mw.editcheck.BaseEditCheck.prototype.untag = function ( tag, action ) { + const name = this.constructor.static.name; + if ( action.id ) { + const taggedIds = this.controller.taggedIds; + if ( taggedIds[ name ] && taggedIds[ name ][ tag ] ) { + taggedIds[ name ][ tag ].delete( action.id ); + return true; + } + } else { + const taggedFragments = this.controller.taggedFragments; + if ( taggedFragments[ name ] && taggedFragments[ name ][ tag ] ) { + action.fragments.forEach( ( fragment ) => { + const selection = fragment.getSelection(); + const index = taggedFragments[ name ][ tag ].findIndex( + ( taggedFragment ) => taggedFragment.getSelection().equals( selection ) + ); + if ( index !== -1 ) { + taggedFragments[ name ][ tag ].splice( index, 1 ); + return true; + } + } ); + } + } + return false; +}; + /** * Check if this type of check has been dismissed covering a specific range * From a40dace1dbffd1b8307a5d801d13e0722ba3b4a0 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 21 Aug 2025 00:25:48 -0500 Subject: [PATCH 563/730] Tone check: when revising in mobile, show a quick-action in the gutter This adds a concept of "pending" tags, which are used to change how the bounding box of a stale selection is drawn. Bug: T400932 Change-Id: Idef38a218ca399508f84c26014e49e239b084359 --- editcheck/modules/EditCheck.less | 25 ++++++ .../modules/EditCheckGutterSectionWidget.js | 86 ++++++++++++++----- editcheck/modules/controller.js | 5 ++ .../editchecks/experimental/ToneCheck.js | 8 ++ 4 files changed, 103 insertions(+), 21 deletions(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index ffcbd00e67..15586ccfd9 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -353,6 +353,19 @@ &-inactive { border-left: 2px solid @border-color-base; } + + &-quickaction { + border-left: 0; + + .oo-ui-buttonElement-button { + background: @background-color-progressive; + margin-top: -6px; + } + + .oo-ui-widget-disabled .oo-ui-buttonElement-button { + background: @background-color-disabled; + } + } } } } @@ -447,6 +460,18 @@ border-top: @triangleSize solid transparent; } } + + &-editCheck-pending .ve-ce-surface-selection-bounding { + border-color: @color-disabled; + + &::before { + border-left-color: @color-disabled; + } + + &::after { + border-right-color: @color-disabled; + } + } } .ve-ce-surface-selection-gutter { diff --git a/editcheck/modules/EditCheckGutterSectionWidget.js b/editcheck/modules/EditCheckGutterSectionWidget.js index 4c3cbaa8f8..66c0465ba4 100644 --- a/editcheck/modules/EditCheckGutterSectionWidget.js +++ b/editcheck/modules/EditCheckGutterSectionWidget.js @@ -17,9 +17,18 @@ mw.editcheck.EditCheckGutterSectionWidget = function MWEditCheckGutterSectionWid invisibleLabel: this.actions.length === 1 } ); + this.actionButton = new OO.ui.ButtonWidget( { + icon: 'check', + flags: [ 'invert' ], + label: 'act', + invisibleLabel: true, + framed: false + } ); + this.actionButton.toggle( false ); + this.$element = $( '
' ) .addClass( 've-ui-editCheck-gutter-action' ) - .append( this.icon.$element, this.iconLabel.$element ) + .append( this.icon.$element, this.iconLabel.$element, this.actionButton.$element ) .on( 'click', this.onClick.bind( this ) ); if ( config.rect ) { @@ -55,14 +64,24 @@ mw.editcheck.EditCheckGutterSectionWidget.prototype.update = function () { // * ve-ui-editCheck-gutter-action-notice // * ve-ui-editCheck-gutter-action-success .addClass( 've-ui-editCheck-gutter-action-' + action.getType() ) - .toggleClass( 've-ui-editCheck-gutter-action-inactive', !this.isFocused() ); - - this.icon.setIcon( mw.editcheck.EditCheckActionWidget.static.iconMap[ action.getType() ] || 'notice' ); - - if ( this.actions.includes( this.controller.focusedAction ) ) { - this.icon.setFlags( this.controller.focusedAction.getType() ); + .toggleClass( 've-ui-editCheck-gutter-action-inactive', !this.isFocused() ) + .toggleClass( 've-ui-editCheck-gutter-action-stale', action.isStale() ); + + if ( action.gutterQuickAction ) { + this.$element.addClass( 've-ui-editCheck-gutter-action-quickaction' ); + this.icon.toggle( false ); + this.iconLabel.toggle( false ); + this.actionButton.toggle( true ); } else { - this.icon.clearFlags(); + this.icon.setIcon( mw.editcheck.EditCheckActionWidget.static.iconMap[ action.getType() ] || 'notice' ); + this.icon.toggle( true ); + this.iconLabel.toggle( true ); + this.actionButton.toggle( false ); + if ( this.actions.includes( this.controller.focusedAction ) ) { + this.icon.setFlags( this.controller.focusedAction.getType() ); + } else { + this.icon.clearFlags(); + } } }; @@ -76,6 +95,9 @@ mw.editcheck.EditCheckGutterSectionWidget.prototype.setPosition = function ( rec }; mw.editcheck.EditCheckGutterSectionWidget.prototype.onClick = function () { + if ( this.acting ) { + return; + } const action = this.getPrimaryAction(); this.controller.focusAction( action, true ); // Should we trigger the popup? By default yes, unless @@ -85,21 +107,27 @@ mw.editcheck.EditCheckGutterSectionWidget.prototype.onClick = function () { return; } // mid-edit - const surface = this.controller.surface; + const controller = this.controller; + const surface = controller.surface; + if ( action.gutterQuickAction ) { + // This is an abridged set of what ve.ui.EditCheckDialog.prototype.onAct does + const promise = action.check.act( action.gutterQuickAction, action, surface ); + this.actionButton.setDisabled( true ); + this.acting = true; + promise.then( () => { + this.actionButton.setDisabled( false ); + this.acting = false; + controller.updatePositionsDebounced(); + if ( controller.getActions().includes( action ) ) { + // The action wasn't removed, so show its dialog again + this.showDialogWithAction( action ); + } + } ); + return; + } const currentWindow = surface.getToolbarDialogs( ve.ui.FixedEditCheckDialog.static.position ).getCurrentWindow(); if ( !currentWindow || currentWindow.constructor.static.name !== 'fixedEditCheckDialog' ) { - const windowAction = ve.ui.actionFactory.create( 'window', surface, 'check' ); - windowAction.open( - 'fixedEditCheckDialog', - { - controller: this.controller, - inBeforeSave: false, - actions: this.actions, - footer: this.actions.length !== 1, - // just filter out any discarded actions from the allowed set - updateFilter: ( updatedActions, newActions, discardedActions, prevActions ) => prevActions.filter( ( pact ) => !discardedActions.includes( pact ) ) - } - ); + this.showDialogWithAction( action ); } else if ( this.actions.every( ( sact ) => currentWindow.hasAction( sact ) ) ) { // Second click: defocus and close return this.controller.closeDialog(); @@ -109,6 +137,22 @@ mw.editcheck.EditCheckGutterSectionWidget.prototype.onClick = function () { } }; +mw.editcheck.EditCheckGutterSectionWidget.prototype.showDialogWithAction = function ( action ) { + const windowAction = ve.ui.actionFactory.create( 'window', this.controller.surface, 'check' ); + windowAction.open( + 'fixedEditCheckDialog', + { + controller: this.controller, + inBeforeSave: false, + actions: this.actions, + footer: this.actions.length !== 1, + // just filter out any discarded actions from the allowed set + updateFilter: ( updatedActions, newActions, discardedActions, prevActions ) => prevActions.filter( ( pact ) => !discardedActions.includes( pact ) ) + } + ); + this.controller.focusAction( action, true ); +}; + mw.editcheck.EditCheckGutterSectionWidget.prototype.teardown = function () { this.$element.remove(); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 9c8f30b0c3..ba29d87837 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -454,6 +454,7 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions if ( this.focusedAction && discardedActions.includes( this.focusedAction ) ) { this.focusedAction = null; } + this.updatePositionsDebounced(); } // Let actions know they've been discarded @@ -723,6 +724,7 @@ Controller.prototype.drawSelections = function () { actions.forEach( ( action ) => { const type = action.getType(); const isActive = action === this.focusedAction; + const isPending = action.isTagged( 'pending' ); action.getHighlightSelections().forEach( ( selection ) => { if ( !isActive && !showGutter ) { // Optimization: When showGutter is false inactive selections currently render nothing @@ -736,6 +738,9 @@ Controller.prototype.drawSelections = function () { // * ve-ce-surface-selection-editCheck-notice // * ve-ce-surface-selection-editCheck-success selectionElements.$selection.addClass( 've-ce-surface-selection-editCheck-' + type ); + if ( isPending ) { + selectionElements.$selection.addClass( 've-ce-surface-selection-editCheck-pending' ); + } } } ); } ); diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index d95071c68f..0f27aa8b7d 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -143,6 +143,7 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); } ); } else if ( choice === 'edit' && surface ) { + action.gutterQuickAction = 'recheck'; action.setStale( true ); action.setMode( 'revising' ); // Once revising has started the user will either make enough of an @@ -188,10 +189,17 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { /* Silently fail if it takes too long */ recheckDeferred.resolve(); }, 3000 ); + + action.tag( 'pending' ); + // Caller requires a Deferred as it then calls '.always()' // eslint-disable-next-line no-jquery/no-when return $.when( recheckDeferred, minimumTimeDeferred ).then( ( result ) => { + action.gutterQuickAction = null; action.setStale( false ); + action.untag( 'pending' ); + + progress.$element.remove(); if ( !result ) { this.notifySuccess(); this.controller.removeAction( 'onBranchNodeChange', action, false ); From 0221712192967ee4f652a8b926927fe82c1596d1 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 26 Aug 2025 09:41:00 +0200 Subject: [PATCH 564/730] Localisation updates from https://translatewiki.net. Change-Id: I86d6888224bae0f3fe8455ff5f62eab98e55238d --- i18n/ve-mw/bo.json | 1 + 1 file changed, 1 insertion(+) diff --git a/i18n/ve-mw/bo.json b/i18n/ve-mw/bo.json index 6239f2c135..45b596cc8c 100644 --- a/i18n/ve-mw/bo.json +++ b/i18n/ve-mw/bo.json @@ -7,6 +7,7 @@ ] }, "tooltip-ca-ve-edit": "དྲ་ངོས་དེ་རྩོམ་སྒྲིག་བྱ་བ།", + "visualeditor-ca-editsource": "མ་ཡིག་ཞུ་དག", "visualeditor-ca-editsource-section": "མ་ངོས་ཞུ་དག", "visualeditor-dialog-meta-languages-readonlynote": "འདི་དང་སྐད་ཡིག་གཞན་གྱི་ཝེ་ཁེ་དང་སྦྲེལ་མཐུད་བྱས་ཡོད་པའི་ཤོགངོས་གི་ཐོ་གཞུང། ད་ལྟའི་ཆར་ཡོངས་ཁུངས་ལམ་འམ་ཝེ་ཁེ་གྲངས་མཛོང་ནང་རྩོམ་སྒྲིག་བྱེད་ཆོག།" } From 5ef92897c9e3482b6d65c772a758a471148d9d76 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 27 Aug 2025 09:24:09 +0200 Subject: [PATCH 565/730] Localisation updates from https://translatewiki.net. Change-Id: I45a213e8a54aae43f202c8ccb3c1e58891fcc2d2 --- editcheck/i18n/nb.json | 12 ++++++++++++ i18n/ve-mw/ps.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/nb.json b/editcheck/i18n/nb.json index aee3190281..a062ba4e29 100644 --- a/editcheck/i18n/nb.json +++ b/editcheck/i18n/nb.json @@ -9,6 +9,7 @@ "editcheck-dialog-action-yes": "Ja", "editcheck-dialog-action-decline": "Avvis", "editcheck-dialog-action-revise": "Endre", + "editcheck-dialog-action-recheck": "Sjekk på nytt", "editcheck-dialog-action-back": "Tilbake", "editcheck-dialog-action-submit": "Send inn", "editcheck-dialog-addref-description": "Hjelp leserne med å forstå hvor denne informasjonen kommer fra ved å legge til en referanse.", @@ -23,6 +24,16 @@ "editcheck-dialog-title": "Før publisering", "editcheck-copyvio-title": "Innhold som er limt inn", "editcheck-copyvio-description": "Generelt må du ikke kopiere tekst fra andre kilder. Det utgjør ofte plagiarisme og et brudd på opphavsrett.", + "editcheck-copyvio-prompt": "Skrev du denne teksten?", + "editcheck-copyvio-action-keep": "Ja, behold den", + "editcheck-copyvio-action-remove": "Nei, fjern den", + "editcheck-copyvio-keep-description": "Andre bidragsytere setter pris på å lære mer om din grun til å beholde denne innlimte teksten.", + "editcheck-copyvio-keep-wrote": "Jeg skrev dette innholdet og det er ikke publisert andre steder", + "editcheck-copyvio-keep-permission": "Jeg har tillatelse til å gjenbruke dette innholdet", + "editcheck-copyvio-keep-free": "Denne teksten er offentlig eiendom eller med en fri lisens", + "editcheck-copyvio-keep-other": "Annet", + "editcheck-copyvio-keep-notify": "Takk for at du delte grunnen din for å beholde den innlimte teksten!", + "editcheck-copyvio-remove-notify": "Takk for at du fjerna denne teksten!", "editcheck-tone-title": "Endre tonen?", "editcheck-tone-description": "Andre brukere endrer ofte ordbruk som dette, ettersom de opplever tonen som ubalansert. [$1 Les mer]", "editcheck-tone-footer": "Identifisert med en [$1 BERT-modell]", @@ -31,6 +42,7 @@ "editcheck-tone-reject-appropriate": "Tonen er passende", "editcheck-tone-reject-uncertain": "Jeg vet ikke hvordan jeg skal endre tonen", "editcheck-tone-reject-other": "Annet", + "editcheck-tone-thank": "Tekk for at du reviderte tonen!", "editcheck-reject-description": "Andre bidragsytere ville satt pris på å lære hvorfor du gjorde dette valget.", "editcheck-review-title": "Gjennomgå endringer", "tag-editcheck-reference-decline-common-knowledge": "Redigeringssjekk (referanser) avvist (allmennkunnskap)", diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index 4ef958c702..dbde0b4794 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -118,7 +118,7 @@ "visualeditor-dialog-meta-settings-toc-default": "د اړتيا په وخت کې", "visualeditor-dialog-meta-settings-toc-disable": "هېڅکله", "visualeditor-dialog-meta-settings-toc-force": "تل", - "visualeditor-dialog-meta-settings-toc-label": "نيوليک ښکاره کول", + "visualeditor-dialog-meta-settings-toc-label": "نيوليک ښودل", "visualeditor-dialog-meta-templatesused-noresults": "هيڅ کينډۍ ونه موندل شوه.", "visualeditor-dialog-meta-title": "خوښنې", "visualeditor-dialog-table-collapsed": "پيل‌ پرځېدلی", From 6cb1060e586037c1287552c313c15c5d8232dd13 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 29 Aug 2025 10:54:02 +0100 Subject: [PATCH 566/730] Restore ext.visualEditor.track module This was merged with ext.visualEditor.core.utils in I5f38a7c12bd. -.core.utils depends on OOUI and itself is loaded by -.desktopArticleTarget.init which meant that we were loading OOUI on every page load (before VE init). Bug: T403127 Change-Id: I8d2860672436cbf4e1d245e45062161babbe887a --- extension.json | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/extension.json b/extension.json index 916a2df4b2..61f864d2fc 100644 --- a/extension.json +++ b/extension.json @@ -366,7 +366,7 @@ "mediawiki.cookie", "mediawiki.api", "ext.visualEditor.supportCheck", - "ext.visualEditor.core.utils", + "ext.visualEditor.track", "ext.visualEditor.progressBarWidget", "ext.visualEditor.tempWikitextEditorWidget" ], @@ -385,7 +385,7 @@ "modules/ve-mw/preinit/ve.init.mw.ArticleTargetSaver.js" ], "dependencies": [ - "ext.visualEditor.core.utils", + "ext.visualEditor.track", "ext.visualEditor.core.utils.parsing", "mediawiki.jqueryMsg", "jquery.textSelection", @@ -617,6 +617,11 @@ ], "group": "visualEditorA" }, + "ext.visualEditor.track": { + "group": "visualEditorA", + "scripts": "modules/ve-mw/ve.track.js", + "dependencies": "ext.visualEditor.ve" + }, "ext.visualEditor.editCheck": { "group": "visualEditorA", "packageFiles": [ @@ -703,11 +708,9 @@ "visualEditor.core.utils" ], "group": "visualEditorA", - "scripts": [ - "modules/ve-mw/ve.track.js" - ], "dependencies": [ "ext.visualEditor.ve", + "ext.visualEditor.track", "oojs-ui" ] }, @@ -765,7 +768,7 @@ "mediawiki.user", "mediawiki.util", "ext.visualEditor.base", - "ext.visualEditor.core.utils", + "ext.visualEditor.track", "ext.visualEditor.targetLoader", "mediawiki.language.names", "jquery.uls.data" From 9b10dcd300917c0afdb1def4d11ab18e589900da Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 1 Sep 2025 09:36:50 +0200 Subject: [PATCH 567/730] Localisation updates from https://translatewiki.net. Change-Id: I047f7c40dfdb2c30224eb13dbc0bc166a57a9647 --- editcheck/i18n/zh-hant.json | 21 +++++ i18n/ve-mw/da.json | 170 ++++++++++++++++++++++++++++++++++-- i18n/ve-mw/fa.json | 3 + i18n/ve-mw/ng.json | 10 --- i18n/ve-mw/sh-latn.json | 2 +- i18n/ve-mw/sq.json | 2 +- i18n/ve-mw/sr-ec.json | 2 +- i18n/ve-wmf/es.json | 13 +-- i18n/ve-wmf/lb.json | 2 +- 9 files changed, 197 insertions(+), 28 deletions(-) delete mode 100644 i18n/ve-mw/ng.json diff --git a/editcheck/i18n/zh-hant.json b/editcheck/i18n/zh-hant.json index 996c45a3af..4a1952b049 100644 --- a/editcheck/i18n/zh-hant.json +++ b/editcheck/i18n/zh-hant.json @@ -10,6 +10,7 @@ "editcheck-dialog-action-yes": "是", "editcheck-dialog-action-decline": "拒絕", "editcheck-dialog-action-revise": "修改", + "editcheck-dialog-action-recheck": "重新檢查", "editcheck-dialog-action-back": "返回", "editcheck-dialog-action-submit": "提交", "editcheck-dialog-addref-description": "新增引註來幫助讀者了解此資訊的出處。", @@ -24,6 +25,26 @@ "editcheck-dialog-title": "發布前", "editcheck-copyvio-title": "貼上內容", "editcheck-copyvio-description": "一般來說,請不要從其他來源複製文字。這樣做通常會構成侵犯著作權和抄襲。", + "editcheck-copyvio-prompt": "您有編寫此段文字嗎?", + "editcheck-copyvio-action-keep": "是的,保留", + "editcheck-copyvio-action-remove": "沒有,移除", + "editcheck-copyvio-keep-description": "其他編者會希望了解更多您保留此段粘貼文字的原因。", + "editcheck-copyvio-keep-wrote": "此段內容由我撰寫,而且沒有在其他地方發布過", + "editcheck-copyvio-keep-permission": "我有權重新使用此內容", + "editcheck-copyvio-keep-free": "此段文字屬於公有領域或自由授權條款", + "editcheck-copyvio-keep-other": "其他", + "editcheck-copyvio-keep-notify": "感謝您分享保留粘貼文字的原因!", + "editcheck-copyvio-remove-notify": "感謝您移除此段文字!", + "editcheck-tone-title": "修改語氣?", + "editcheck-tone-description": "其他使用者經常修改這種措辭,稱其語氣不中立。[$1 了解更多]", + "editcheck-tone-footer": "使用 [$1 BERT 模型]辨識", + "editcheck-tone-title-acted": "修改語氣", + "editcheck-tone-description-acted": "注意那些奉承、貶損、模糊、陳腔濫調,或是支持特定觀點的表達內容。", + "editcheck-tone-reject-appropriate": "語氣恰當", + "editcheck-tone-reject-uncertain": "我不確定如何修改語氣", + "editcheck-tone-reject-other": "其他", + "editcheck-tone-thank": "感謝您修改語氣!", + "editcheck-reject-description": "其他編者會希望了解為何您做出此選擇的原因。", "editcheck-review-title": "審核變更", "tag-editcheck-reference-decline-common-knowledge": "編輯檢查(參考資料)遭拒(常識)", "tag-editcheck-reference-decline-common-knowledge-description": "編輯檢查參考文獻功能因「常識」而被拒絕", diff --git a/i18n/ve-mw/da.json b/i18n/ve-mw/da.json index a16b59587e..10cf7ed1cf 100644 --- a/i18n/ve-mw/da.json +++ b/i18n/ve-mw/da.json @@ -21,6 +21,7 @@ "Sarrus", "Simeondahl", "SimmeD", + "Steenth", "Tehnix", "Weblars" ] @@ -29,9 +30,18 @@ "collabpad-import-subtitle": "Importeret fra $1", "collabpad": "CollabPad", "tooltip-ca-ve-edit": "Redigér denne side", + "tooltip-ca-ve-edit-local": "Rediger den lokale beskrivelsesside", + "tooltip-ca-ve-create": "Opret denne side", + "tooltip-ca-ve-create-local": "Opret den lokale beskrivelsesside", "tooltip-ca-editsource": "Rediger kildekoden for denne side", + "tooltip-ca-editsource-local": "Rediger kildekoden til den lokale beskrivelsesside", "tooltip-ca-createsource": "Opret kildekoden til denne side", + "tooltip-ca-createsource-local": "Opret kildekoden til den lokale beskrivelsesside", "visualeditor-advancedsettings-tool": "Avancerede indstillinger", + "visualeditor-annotations-default-description": "Denne del af siden er del af et kommentarområde.", + "visualeditor-annotations-default-end": "Slut på kommentarområde", + "visualeditor-annotations-default-start": "Starten af kommentarområde", + "visualeditor-annotations-extended-documentation": "Dette kommentarområde er blevet udvidet, fordi det indhold, det indeholdt, ikke var velindlejret. Det anbefales at sikre, at det kommenteret indhold er velindlejret, før det redigeres. Ellers kan et større område end forventet blive kommenteret.", "visualeditor-autosave-modified-prompt-accept": "Fortsæt med at redigere", "visualeditor-autosave-modified-prompt-message": "Denne side er blevet ændret siden du indlæste den. Vil {{GENDER:|du}} fortsætte {{GENDER:|din}} redigering af den gamle version eller påbegynde en ny redigering af den seneste version?", "visualeditor-autosave-modified-prompt-reject": "Start en ny redigering", @@ -46,51 +56,68 @@ "visualeditor-ca-editlocaldescriptionsource": "Rediger kilde for lokal beskrivelse", "visualeditor-ca-editsource": "Rediger kildekode", "visualeditor-ca-editsource-section": "rediger kildetekst", + "visualeditor-ca-editsource-section-hint": "Rediger sektionens kildekode: $1", "visualeditor-categories-tool": "Kategorier", + "visualeditor-changedesc-mwcategory-sortkey-changed": "Sorteringsnøgle ændret fra $1 til $2", + "visualeditor-changedesc-mwcategory-sortkey-set": "Sorteringsnøgle sat til $1", + "visualeditor-changedesc-mwcategory-sortkey-unset": "Sorteringsnøgle fjernet fra $1", + "visualeditor-changedesc-mwlanguagevariant": "Sprogvariantmarkering ændret", "visualeditor-changedesc-mwredirect": "Omdirigeringsmål ændret fra $1 til $2", "visualeditor-changedesc-mwtransclusion": "Ændrede skabelonparametre", "visualeditor-desc": "Visual editor for MediaWiki", "visualeditor-descriptionpagelink": "Project:VisualEditor", + "visualeditor-dialog-extension-abandonedit": "Er du sikker på, at du vil lukke denne dialogboks uden at anvende dine ændringer?", + "visualeditor-dialog-media-alttext-checkbox": "Brug billedteksten som alternativ tekst", "visualeditor-dialog-media-alttext-section": "Alternativ tekst", - "visualeditor-dialog-media-alttext-section-help": "Du kan bruge dette til at skrive en beskrivelse for folk der ikke kan se objektet. Beskrivelsen skal være tilstrækkelig til at de kan forstå meningen og den information, som medieobjektet indeholder. Dette er afgørende for blinde og andre, som bruger skærmlæsersoftware eller browsere, der kun kan vise tekst.", + "visualeditor-dialog-media-alttext-section-help": "Du kan bruge dette til at skrive en beskrivelse for folk der ikke kan se elementet. Beskrivelsen skal være tilstrækkelig til at de kan forstå meningen og den information, som medieobjektet indeholder. Dette er afgørende for blinde og andre, som bruger skærmlæsersoftware eller browsere, der kun kan vise tekst.", "visualeditor-dialog-media-change-image": "Ændr billede", "visualeditor-dialog-media-choose-image": "Brug dette billede", "visualeditor-dialog-media-content-description-link": "(beskrivelsesside)", "visualeditor-dialog-media-content-filename": "Filnavn", "visualeditor-dialog-media-content-section": "Billedtekst", + "visualeditor-dialog-media-content-section-help": "Du kan bruge dette til at vise en etiket, der vises ved siden af elementet for alle læsere. Dette bruges ofte til at forklare, hvorfor elementet er relevant i den kontekst, det vises i. Det skal være kortfattet og informativt.", "visualeditor-dialog-media-goback": "Tilbage", "visualeditor-dialog-media-info-artist": "Lagt op af $1", "visualeditor-dialog-media-info-audiofile": "Lydfil", "visualeditor-dialog-media-info-created": "Oprettet: $1", - "visualeditor-dialog-media-info-meta-artist": "Kunstner: $1", + "visualeditor-dialog-media-info-meta-artist": "Forfatter: $1", "visualeditor-dialog-media-info-moreinfo": "Flere oplysninger", "visualeditor-dialog-media-info-readmore": "Læs mere", "visualeditor-dialog-media-info-uploaded": "Uploadet: $1", "visualeditor-dialog-media-page-advanced": "Avanceret", "visualeditor-dialog-media-page-general": "Generelt", + "visualeditor-dialog-media-position-checkbox": "Ombryd tekst omkring dette element", + "visualeditor-dialog-media-position-checkbox-help": "Du kan få dette medieelement til at vises integreret med sidens tekst i stedet for at flyde. Du bør kun gøre dette sjældent, da det vil afbryde tekstens flow, hvis du fjerner markeringen i dette felt.", "visualeditor-dialog-media-position-section": "Placering", + "visualeditor-dialog-media-position-section-help": "Du kan indstille, hvor dette medieelement skal vises på siden. Dette bruges nogle gange til at opdele en lang række billeder på den ene side af siden.", "visualeditor-dialog-media-save": "Gem", "visualeditor-dialog-media-search-tab-search": "Søg", "visualeditor-dialog-media-search-tab-upload": "Læg op", "visualeditor-dialog-media-size-section": "Billedstørrelse", + "visualeditor-dialog-media-size-section-help": "Du kan indstille, hvor stort medieelementet skal vises på siden. Dette bør næsten altid være den normale størrelse, da en brugerdefineret størrelse vil forstyrre sidens layout for læserne og gøre den inkonsekvent.", "visualeditor-dialog-media-title": "Medieindstillinger", "visualeditor-dialog-media-type-border": "Kant", "visualeditor-dialog-media-type-frame": "Ramme", "visualeditor-dialog-media-type-frameless": "Uden ramme", "visualeditor-dialog-media-type-none": "Grundlæggende", "visualeditor-dialog-media-type-section": "Billedtype", + "visualeditor-dialog-media-type-section-help": "Du kan indstille, hvordan medieelementet vises på siden. Dette bør være miniatureformatet for at være i overensstemmelse med andre sider i næsten alle tilfælde.", + "visualeditor-dialog-media-type-thumb": "Miniaturebillede", + "visualeditor-dialog-media-upload": "Upload", "visualeditor-dialog-meta-advancedsettings-label": "Avancerede indstillinger", "visualeditor-dialog-meta-advancedsettings-section": "Avancerede indstillinger", "visualeditor-dialog-meta-categories-addcategory-label": "Tilføj en kategori til denne side", "visualeditor-dialog-meta-categories-category": "Kategori", "visualeditor-dialog-meta-categories-data-label": "Kategorier", + "visualeditor-dialog-meta-categories-defaultsort-help": "Du kan tilsidesætte sorteringen af denne side, når den vises i en kategori, ved at indstille et andet indeks at sortere med i stedet. Dette bruges ofte til at få sider om personer vist efter efternavn, men navngivet med deres fornavn vist først.", "visualeditor-dialog-meta-categories-defaultsort-label": "Sorter denne side som standard som", "visualeditor-dialog-meta-categories-hidden": "Denne kategori er indstillet til ikke at blive vist på sider hvor den er tilføjet.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Skjulte kategorier", - "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Passende kategorier", + "visualeditor-dialog-meta-categories-input-matchingcategorieslabel": "Matchende kategorier", "visualeditor-dialog-meta-categories-input-movecategorylabel": "Flyt denne kategori her", "visualeditor-dialog-meta-categories-input-newcategorylabel": "Ny kategori", "visualeditor-dialog-meta-categories-input-placeholder": "Tilføj en kategori", + "visualeditor-dialog-meta-categories-missing": "Denne kategori mangler en beskrivelsesside.", "visualeditor-dialog-meta-categories-options": "Valgmuligheder", "visualeditor-dialog-meta-categories-section": "Kategorier", "visualeditor-dialog-meta-categories-sortkey-label": "Sorter denne side hvis den kaldes", @@ -98,50 +125,128 @@ "visualeditor-dialog-meta-languages-label": "Sprog", "visualeditor-dialog-meta-languages-link-label": "Linket side", "visualeditor-dialog-meta-languages-name-label": "Sprog", - "visualeditor-dialog-meta-languages-readonlynote": "Dette er en liste over sider på andre sprog, der er knyttet til denne side. Foreløbig kan den kun redigeres i wikikode-tilstand eller på Wikidata.", + "visualeditor-dialog-meta-languages-readonlynote": "Dette er en liste over sider på andre sprog, der er linket til denne. Indtil videre kan den kun redigeres i kildekodetilstand eller på Wikidata.", "visualeditor-dialog-meta-languages-section": "Sprog", "visualeditor-dialog-meta-settings-displaytitle": "Vist sidetitel", + "visualeditor-dialog-meta-settings-displaytitle-help": "Du kan tilsidesætte, hvordan denne sides titel vises, ved at angive en anden etiket, der skal vises i stedet.", + "visualeditor-dialog-meta-settings-hiddencat-help": "Du kan forhindre denne kategori i at blive vist på listen over kategorier på medlemssider. Dette er nyttigt for kategorier, der er af interesse for redaktører, men ikke for de fleste læsere, f.eks. sider, der har brug for en illustration.", "visualeditor-dialog-meta-settings-hiddencat-label": "Skjult kategori", "visualeditor-dialog-meta-settings-index-default": "Standard", "visualeditor-dialog-meta-settings-index-disable": "Nej", "visualeditor-dialog-meta-settings-index-force": "Ja", + "visualeditor-dialog-meta-settings-index-help": "Du kan bede søgemaskiner til at vise denne side i deres relevante resultater, eller om at ikke gøre det. Denne indstilling påvirker ikke søgning på siden.", "visualeditor-dialog-meta-settings-index-label": "Lad denne side blive indekseret af søgemaskiner", "visualeditor-dialog-meta-settings-label": "Sideindstillinger", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Standard", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Nej", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Ja", + "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Du kan tvinge visning af en ekstra fane udover fanen \"$1\" på denne side, hvilket gør det nemt at tilføje en ny sektion, eller tvinge den til ikke at blive vist, hvis den ellers ville.", "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Vis en fane på denne side til at tilføje et nyt afsnit", + "visualeditor-dialog-meta-settings-nocontentconvert-help": "Du kan forhindre, at denne sides indhold automatisk konverteres til andre skriftsystemer.", + "visualeditor-dialog-meta-settings-nocontentconvert-label": "Konverter ikke indhold mellem sprogvarianter", + "visualeditor-dialog-meta-settings-noeditsection-help": "Du kan forhindre redigeringslinkene i at blive vist ud for hvert afsnit i det usædvanlige tilfælde, hvor det er passende.", "visualeditor-dialog-meta-settings-noeditsection-label": "Deaktiver rediger-links ved siden af hver overskrift på denne side.", + "visualeditor-dialog-meta-settings-nogallery-help": "Du kan forhindre denne kategori i at vise medlemsfiler som et galleri, hvis det er upassende i dette tilfælde.", "visualeditor-dialog-meta-settings-nogallery-label": "Deaktiver galleri", + "visualeditor-dialog-meta-settings-notitleconvert-help": "Du kan forhindre, at denne sides titel automatisk konverteres til andre skriftsystemer.", + "visualeditor-dialog-meta-settings-notitleconvert-label": "Konverter ikke titlen mellem sprogvarianter", + "visualeditor-dialog-meta-settings-redirect-help": "Du kan omdirigere denne side, en side der automatisk fører læserne til en anden side på denne wiki. Dette er nyttigt ved stavefejl og alternative navne eller begreber. Hvis du gør det, vil læserne ikke se indholdet af denne side.", "visualeditor-dialog-meta-settings-redirect-label": "Omdiriger denne side til", "visualeditor-dialog-meta-settings-redirect-placeholder": "Målsiden for omdirigering", + "visualeditor-dialog-meta-settings-redirect-statichelp": "Du kan forhindre, at denne omdirigering opdateres automatisk, når den side, den omdirigerer til, flyttes, i det meget sjældne tilfælde, at dette er nødvendigt.", + "visualeditor-dialog-meta-settings-redirect-staticlabel": "Forhindr denne omdirigering i at blive opdateret, hvis målsiden flyttes.", "visualeditor-dialog-meta-settings-section": "Sideindstillinger", "visualeditor-dialog-meta-settings-toc-default": "Hvis det er nødvendigt", "visualeditor-dialog-meta-settings-toc-disable": "Aldrig", "visualeditor-dialog-meta-settings-toc-force": "Altid", + "visualeditor-dialog-meta-settings-toc-help": "Du kan tvinge en indholdsfortegnelse, der viser hver overskrift på siden, til at blive vist på sider med færre end fire overskrifter, eller tvinge den til slet ikke at blive vist. Som standard vises den, hvis siden har fire eller flere overskrifter.", "visualeditor-dialog-meta-settings-toc-label": "Vis indholdsfortegnelsen", "visualeditor-dialog-meta-templatesused-noresults": "Ingen skabeloner fundet.", "visualeditor-dialog-meta-title": "Indstillinger", + "visualeditor-dialog-table-collapsed": "Sammenklap oprindeligt", + "visualeditor-dialog-table-collapsible": "Sammenklappelig", "visualeditor-dialog-table-sortable": "Sorterbar", + "visualeditor-dialog-table-wikitable": "Stylet (wikitable)", "visualeditor-dialog-template-title": "Skabelon", "visualeditor-dialog-transclusion-action-save": "Gem", + "visualeditor-dialog-transclusion-template-title-nonexistent": "Denne skabelon findes ikke.", + "visualeditor-dialog-transclusion-template-title-modifier": "Skabelondokumentation og [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Glossary#Parameter parameter]-navne (hvis de findes) er ikke tilgængelige, når du redigerer skabeloner, der bruger indlejret syntaks eller modifikatorer, såsom [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Substitution subst].", + "visualeditor-dialog-transclusion-template-widget-aria": "Tryk på mellemrumstasten for at vælge skabelonen.", + "visualeditor-dialog-transclusion-template-widget-aria-selected": "Tryk Ctrl+Del for at slette skabelonen, dens parametre og deres værdier. Tryk Ctrl+Shift+Piletaster for at flytte skabelonen op eller ned.", + "visualeditor-dialog-transclusion-template-widget-aria-selected-single": "Tryk Ctrl+Del for at slette skabelonen med parametre og værdier.", + "visualeditor-dialog-transclusion-add-wikitext": "Tilføj wikitekst", + "visualeditor-dialog-transclusion-add-param-error-alias": "\"$1\" er allerede tilføjet som \"$2\". Tjek venligst mulighederne i sidebjælken. Dette skyldes enten brugen af [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#aliases aliasses] eller [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#label labels].", + "visualeditor-dialog-transclusion-add-param-error-deprecated": "\"$1\" kan ikke tilføjes, fordi parameteren er markeret som [//www.mediawiki.org/wiki/Special:MyLanguage/Help:TemplateData#deprecated forældret].", + "visualeditor-dialog-transclusion-add-param-error-exists-selected": "Parameteren \"$2\" kan ikke tilføjes to gange.", + "visualeditor-dialog-transclusion-add-param-error-exists-unselected": "Parameteren \"$2\" er allerede tilgængelig til brug. Tjek venligst mulighederne i sidebjælken.", + "visualeditor-dialog-transclusion-add-param-error-forbidden-char": "$1 er et forbudt tegn. Fjern det venligst for at tilføje parameteren.", + "visualeditor-dialog-transclusion-add-param-help": "Hvis kendt, indtast [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Adding_undocumented_parameters udokumenterede parameter] navne. Bemærk, at kun parametre, der er kendt af skabelonen, vil have en effekt. Du kan finde oplysninger om eksisterende parametre på [[$1|skabelonens side]].", + "visualeditor-dialog-transclusion-add-param-placeholder": "Parameternavn", + "visualeditor-dialog-transclusion-add-param-save": "Tilføj", "visualeditor-dialog-transclusion-add-template": "Tilføj skabelon", + "visualeditor-dialog-transclusion-add-template-button": "Tilføj skabelon", + "visualeditor-dialog-transclusion-add-template-save": "Tilføj", + "visualeditor-dialog-transclusion-add-undocumented-param": "Tilføj udokumenteret parameter", + "visualeditor-dialog-transclusion-back-confirmation-prompt": "Vil du tilbage til søgningen? Dine ændringer vil gå tabt, og dette kan ikke hentes tilbage igen.", + "visualeditor-dialog-transclusion-close-confirmation-prompt": "Vil du lukke skabeloneditoren? Dine ændringer vil gå tabt, og dette kan ikke fortrydes.", "visualeditor-dialog-transclusion-collapse-options": "Skjul valgmuligheder", + "visualeditor-dialog-transclusion-confirmation-discard": "Kasser redigeringer", + "visualeditor-dialog-transclusion-confirmation-reject": "Fortsæt med at redigere", "visualeditor-dialog-transclusion-contextitem-description": "Genereret af: $1", + "visualeditor-dialog-transclusion-contextitem-loading": "Indlæser...", "visualeditor-dialog-transclusion-expand-options": "Vis valgmuligheder", + "visualeditor-dialog-transclusion-filter-hide-unused": "Skjul ubrugte", + "visualeditor-dialog-transclusion-filter-no-match": "Ingen matchende resultater blev fundet.", + "visualeditor-dialog-transclusion-filter-placeholder": "Find felt", + "visualeditor-dialog-transclusion-filter-show-all": "Vis alle", + "visualeditor-dialog-transclusion-filter-title": "Parametersøgning for $1", + "visualeditor-dialog-transclusion-help-title": "Understøttelse af skabelonredigering", + "visualeditor-dialog-transclusion-help-message": "Skabeloner gør det muligt at formatere indhold. Denne editor viser, hvilke muligheder en skabelon tilbyder, til venstre, og værdier kan derefter tilføjes til disse muligheder til højre.", + "visualeditor-dialog-transclusion-help-page-help": "[//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_templates Hjælp til redigering af skabeloner]", + "visualeditor-dialog-transclusion-help-page-shortcuts": "[//www.mediawiki.org/wiki/special:MyLanguage/VisualEditor/Portal/Keyboard_shortcuts#Template_editor_dialog_shortcuts_and_keyboard_interactions Tastaturgenveje]", + "visualeditor-dialog-transclusion-deprecated-parameter": "Forældet felt", + "visualeditor-dialog-transclusion-deprecated-parameter-description": "Feltet er forældet. $1", "visualeditor-dialog-transclusion-loading": "Indlæser...", + "visualeditor-dialog-transclusion-multipart-message": "Du redigerer i øjeblikket en skabelon og en eller flere dele af [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Editing_multi-part_template_content forbundet indhold] (wikitekst og/eller flere skabeloner).", + "visualeditor-dialog-transclusion-no-template-data-description": "Denne skabelon mangler [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Template_parameters TemplateData], og dens parametre er blevet [//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide#Autogenerated_parameters autogenereret]. Som følge heraf mangler skabelonen og dens parametre beskrivelser. Der kan være yderligere oplysninger på [[$1|skabelonens side]].", + "visualeditor-dialog-transclusion-no-template-description": "Skabelonen \"$1\" har endnu ikke en beskrivelse, men der kan være nogle oplysninger på [[$2|skabelonens side]].", + "visualeditor-dialog-transclusion-no-template-parameters": "Denne skabelon har ingen dokumenterede parametre og er muligvis beregnet til brug uden dem.", "visualeditor-dialog-transclusion-param-default": "Standard: $1", "visualeditor-dialog-transclusion-param-example-long": "Eksempel: $1", + "visualeditor-dialog-transclusion-param-selection-aria-description": "Tryk på mellemrumstasten for at tilføje eller fjerne parametre. Tryk på Enter for at tilføje en parameter og redigere dens værdi med det samme. Når en parameter allerede er valgt, skal du trykke på Enter for at redigere værdien.", + "visualeditor-dialog-transclusion-param-selection-aria-label": "Parametre i $1", + "visualeditor-dialog-transclusion-param-undocumented": "(udokumenteret parameter)", + "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Find skabelon", "visualeditor-dialog-transclusion-required-parameter": "Påkrævet felt", + "visualeditor-dialog-transclusion-required-parameter-description": "Feltet er påkrævet.", "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Gå tilbage", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Fortsæt alligevel", + "visualeditor-dialog-transclusion-required-parameter-dialog-title": "Obligatorisk {{PLURAL:$1|felt|felter}} mangler", + "visualeditor-dialog-transclusion-required-parameter-is-blank": "Er du sikker på, at du vil fortsætte uden at udfylde $1 {{PLURAL:$2|feltet|felterne}}?", + "visualeditor-dialog-transclusion-see-template": "Skabeloner er brugergenererede og mangler muligvis fuldstændige beskrivelser. Der kan være yderligere oplysninger på denne [[$2|skabelonside]].", + "visualeditor-dialog-transclusion-title-insert-template": "Indsæt en skabelon", + "visualeditor-dialog-transclusion-title-insert-known-template": "Indsæt: $1", + "visualeditor-dialog-transclusion-title-edit-known-template": "Rediger: $1", + "visualeditor-dialog-transclusion-title-edit-transclusion": "Skabelonindhold", + "visualeditor-dialog-transclusion-template-search": "Skabelonsøgning", + "visualeditor-dialog-transclusion-template-search-help": "Find den skabelon, du vil indsætte, ved at søge efter et identificerende nøgleord. Skabeloner med beskrivelser fungerer sandsynligvis bedre med den visuelle editor.", + "visualeditor-dialog-transclusion-wikitext": "Wikitekst", + "visualeditor-dialog-transclusion-wikitext-widget-aria": "Tryk på mellemrumstasten for at vælge wikitekst-elementet. Tryk på Enter for at vælge og redigere wikiteksten.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected": "Tryk Ctrl+Del for at slette wikitext-elementet. Tryk Ctrl+Shift+Piletaster for at flytte elementet op eller ned.", + "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "Tryk Ctrl+Del for at slette wikitext-elementet.", "visualeditor-dialogbutton-media-tooltip": "Billeder og medier", "visualeditor-dialogbutton-template-tooltip": "Skabelon", "visualeditor-editconflict": "Dine ændringer kunne ikke gemmes på grund af en redigeringskonflikt. Vil {{GENDER:|du}} løse konflikten manuelt?", + "visualeditor-editingtabdialog-body": "{{SITENAME}} husker nu, hvilken editor du foretrækker. Du kan skifte redigeringstilstand, mens du redigerer, og ændre dine præferencer senere.", + "visualeditor-editingtabdialog-ok": "Brug den editor, jeg brugte i min sidste redigering", + "visualeditor-editingtabdialog-title": "Redigeringsfaner", "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|meddelelse|meddelelser}}", "visualeditor-editnotices-tooltip": "Redigeringsbemærkninger", "visualeditor-editsummary": "Beskriv hvad du har ændret", + "visualeditor-editsummary-characters-remaining": "Antallet af tegn tilbage", "visualeditor-educationpopup-dismiss": "Ok, jeg forstår", + "visualeditor-expandable-less": "Mindre", + "visualeditor-expandable-more": "Mere", "visualeditor-feedback-defaultmessage": "URL: $1", "visualeditor-formatdropdown-format-mw-heading1": "Sidetitel", "visualeditor-formatdropdown-format-mw-heading2": "Overskrift", @@ -149,18 +254,42 @@ "visualeditor-formatdropdown-format-mw-heading4": "Underoverskrift 2", "visualeditor-formatdropdown-format-mw-heading5": "Underoverskrift 3", "visualeditor-formatdropdown-format-mw-heading6": "Underoverskrift 4", + "visualeditor-generating-wikitext-progress": "Generering af wikitekst", + "visualeditor-includes-noinclude-start": "Start på indhold, der er udelukket fra uddrag", + "visualeditor-includes-noinclude-end": "Slut på indhold, der er ekskluderet fra uddrag", + "visualeditor-includes-onlyinclude-start": "Start af indhold tilladt i uddrag", + "visualeditor-includes-onlyinclude-end": "Slut på tilladt indhold i uddrag", + "visualeditor-includes-includeonly": "Indhold kun til uddrag", + "visualeditor-includes-noinclude-description": "Når indhold fra denne side bruges af en anden side, vil indhold herfra indtil den matchende slutmarkør ikke blive inkluderet. Vær forsigtig, når du redigerer indhold uden for disse markører, da andre sider kan bruge det.", + "visualeditor-includes-onlyinclude-description": "Når indhold fra denne side bruges af en anden side, vil kun indholdet herfra indtil den matchende slutmarkør blive inkluderet. Vær forsigtig, når du redigerer indholdet mellem disse markører, da andre sider kan bruge det.", + "visualeditor-includes-includeonly-description": "Når indhold fra denne side bruges af en anden side, vil følgende yderligere indhold blive inkluderet her:", + "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Lær mere om delvis transklusion]", "visualeditor-languages-tool": "Sprog", - "visualeditor-linkinspector-button-link-external": "Ekstern henvisning", + "visualeditor-linkcontext-uneditable": "Beklager, dette link kan kun redigeres i kildetilstand for nu.", + "visualeditor-linkinspector-button-link-external": "Ekstern hjemmeside", "visualeditor-linkinspector-button-link-internal": "Søg interne sider", + "visualeditor-linkinspector-convert-link-isbn": "Konvertér til ISBN-link", + "visualeditor-linkinspector-convert-link-pmid": "Konverter til PMID-link", + "visualeditor-linkinspector-convert-link-rfc": "Konvertér til RFC-link", "visualeditor-linkinspector-educationpopup-text": "Lav links fra vigtige ord til andre wikiartikler eller endda andre websider. Det hjælper læserne med at forstå sammenhængen.", + "visualeditor-linkinspector-educationpopup-title": "Henvisninger", "visualeditor-linkinspector-illegal-title": "Ugyldig sidetitel", + "visualeditor-linkinspector-invalid-blocked": "Brugere på denne wiki har besluttet at blokere links til dette websted. Prøv venligst et andet link.", + "visualeditor-linkinspector-invalid-external": "Indtast en fuld URL, f.eks. https://example.org", "visualeditor-linknodeinspector-add-label": "Tilføj etiket", + "visualeditor-linknodeinspector-title": "Simpelt link", + "visualeditor-magiclinknodeinspector-convert-link": "Konverter til simpelt link", + "visualeditor-magiclinknodeinspector-title-isbn": "ISBN-link", + "visualeditor-magiclinknodeinspector-title-pmid": "PMID-link", + "visualeditor-magiclinknodeinspector-title-rfc": "RFC-link", "visualeditor-media-title-audio": "Lyd", "visualeditor-media-title-image": "Billede", "visualeditor-media-title-video": "Video", "visualeditor-meta-tool": "Indstillinger", "visualeditor-mweditmode-tooltip": "Skift editor", + "visualeditor-mweditmodesource-progress": "Skifter til kilderedigering…", "visualeditor-mweditmodesource-tool-current": "Wikikode", + "visualeditor-mweditmodesource-tool-unavailable": "Kilderedigering er ikke tilgængelig her", "visualeditor-mweditmodeve-popup-body": "Du kan skifte tilbage til visuel redigering når som helst ved at klikke på dette ikon.", "visualeditor-mweditmodeve-popup-title": "Du har skiftet til kilderedigering", "visualeditor-mweditmodeve-progress": "Skifter til visuel redigering...", @@ -189,19 +318,34 @@ "visualeditor-mwgallerydialog-remove-button-label": "Fjern billede", "visualeditor-mwgallerydialog-search-button-label": "Tilføj nyt billede", "visualeditor-mwgallerydialog-show-filename-field-label": "Vis filnavne", + "visualeditor-mwgallerydialog-styles-field-label": "CSS-stile", + "visualeditor-mwgallerydialog-styles-input-placeholder": "CSS-regler, adskilt af semikolon", "visualeditor-mwgallerydialog-title": "Galleri", "visualeditor-mwgallerydialog-widths-field-label": "Billedbredde", "visualeditor-mwgallerydialog-widths-input-placeholder": "Standardbredde: $1 px", + "visualeditor-mwpredialog-convert": "Tillad tekstformatering", + "visualeditor-mwpredialog-title": "Forhåndsformateret ren tekst", "visualeditor-mwsignature-tool": "Din signatur", + "visualeditor-preference-visualeditor": "Aktiver visuel redigering", + "visualeditor-preference-newwikitexteditor-enable": "Brug wikitekst-tilstanden i visuel redigering fremfor en egen wikitekstredigering", + "visualeditor-preference-newwikitexteditor-help": "Dette kaldes undertiden '2017 wikitekstredigering'.", "visualeditor-preference-tabs": "Redigeringstilstand:", "visualeditor-preference-tabs-multi-tab": "Vis mig begge redigeringsfaneblade", + "visualeditor-preference-tabs-prefer-ve": "Giv mig altid den visuelle redigering, hvis det er muligt", + "visualeditor-preference-tabs-prefer-wt": "Giv mig altid kildekode-redigering", + "visualeditor-preference-tabs-remember-last": "Husk min sidst brugte editor", + "visualeditor-preference-collab-label": "Samarbejdsredigering", + "visualeditor-preference-collab-description": "Inviter andre brugere til at deltage i din redigeringssession i den visuelle editor.", "visualeditor-rebase-client-export": "Eksporter", "visualeditor-rebase-client-export-start": "Eksporter...", "visualeditor-rebase-client-import": "Importer", "visualeditor-rebase-client-import-name": "Sidetitel", + "visualeditor-rebase-client-title-help": "Du vil kunne gennemgå ændringerne, før du gemmer.", + "visualeditor-recreate": "Siden er blevet slettet, siden du begyndte at redigere. Tryk på \"$1\" for at genskabe den.", "visualeditor-redirect-description": "Omdiriger til $1", - "visualeditor-savedialog-identify-anon": "Vil du gemme siden som en anonym bruger i stedet? Din IP adresse vil blive registreret i denne sides versionshistorik.", - "visualeditor-savedialog-identify-user": "Du er nu logget på som [[User:$1|$1]]. Din redigering vil blive forbundet med denne konto, hvis du gemmer denne redigering.", + "visualeditor-savedialog-identify-anon": "Du er ikke længere logget ind. Hvis du fortsætter, vil din IP-adresse blive registreret i denne sides redigeringshistorik.", + "visualeditor-savedialog-identify-temp": "Du bruger nu det midlertidige brugernavn $1. Hvis du fortsætter, vil din redigering blive knyttet til dette brugernavn.", + "visualeditor-savedialog-identify-user": "Du er nu logget ind som [[User:$1|$1]]. Hvis du fortsætter, vil din redigering blive knyttet til denne konto.", "visualeditor-savedialog-keyboard-shortcut-submit": "Du kan trykke på $1 for at gemme din redigering.", "visualeditor-savedialog-label-publish-short": "Offentliggør", "visualeditor-savedialog-label-publish-short-start": "Offentliggør...", @@ -215,14 +359,24 @@ "visualeditor-savedialog-review-visual": "Visuelt", "visualeditor-savedialog-review-wikitext": "Wikitekst", "visualeditor-savedialog-title-conflict": "Konflikt", + "visualeditor-savedialog-title-preview": "Forhåndsvis dine ændringer", "visualeditor-savedialog-title-review": "Gennemse dine ændringer", "visualeditor-savedialog-title-save": "Gem dine ændringer", "visualeditor-section-body-placeholder": "Nyt afsnit", + "visualeditor-section-title-placeholder": "Emne", + "visualeditor-loaderror-revidconflict": "Sideversion-ID'erne returneret af serveren stemmer ikke overens (dokument: $1 , metadata: $2 ).", + "visualeditor-loaderror-wrongmode": "Forsøgte at indlæse editoren i forkert tilstand (datatype: \"$1\", editortilstand: \"$2\").", "visualeditor-settings-tool": "Sideindstillinger", "visualeditor-special-characters-group-other": "Ofte brugte", "visualeditor-templatesused-tool": "Brugte skabeloner", "visualeditor-title-error": "Ugyldig titel.", + "visualeditor-toload": "Redigeringsværktøjet indlæses nu. Hvis du stadig ser denne besked efter et par sekunder, skal du venligst [$1 genindlæse siden].", + "visualeditor-tooltip-non-breaking-space": "Hårdt mellemrum", "visualeditor-version-label": "Version", + "visualeditor-wikitext-progress": "Konvertering af wikitekst", "visualeditor-wikitext-warning": "Du bruger visuel redigering - [[{{MediaWiki:visualeditor-wikitext-warning-link}}|wikitext]] virker ikke her. Du kan når som helst skifte til kilderedigering uden at miste dine ændringer, ved at åbne nedfalds-menuen ud for \"{{int:visualeditor-toolbar-savedialog}}\" og vælge \"{{int:visualeditor-mweditmodesource-title}}\".", - "visualeditor-wikitext-warning-title": "Wikitekst-markup opdaget" + "visualeditor-wikitext-warning-title": "Wikitekst-markup opdaget", + "visualeditor-wikitextconvert-title": "Konvertér formatering til wikitekst?", + "visualeditor-wikitextconvert-message": "Du indsatte indhold med rich formatting. Vil du konvertere denne formatering til wikitekst?", + "visualeditor-wikitextconvert-convert": "Konverter til wikitekst" } diff --git a/i18n/ve-mw/fa.json b/i18n/ve-mw/fa.json index cc89e525a4..3e4e01f8bb 100644 --- a/i18n/ve-mw/fa.json +++ b/i18n/ve-mw/fa.json @@ -76,6 +76,7 @@ "visualeditor-changedesc-mwtransclusion": "متغیرهای الگو تغییریافت", "visualeditor-desc": "ویرایشگر دیداری برای مدیاویکی", "visualeditor-descriptionpagelink": "Project:ویرایشگر دیداری", + "visualeditor-dialog-extension-abandonedit": "آیا از بستن این پنجره بدون اعمال تغییرات خود مطمئن هستید؟", "visualeditor-dialog-media-alttext-checkbox": "استفاده از توضیح به‌عنوان متن جایگزین", "visualeditor-dialog-media-alttext-section": "متن جایگزین", "visualeditor-dialog-media-alttext-section-help": "شما می‌توانید از این برای توضیحات متنی که افراد نمی‌توانند آیتم را ببینند استفاده کنید. توضیحات برای آنها برای درک بهتری از رسانه و اهدافش باید کافی باشد. این مورد برای افراد نابینا یا افرادی که از نرم‌افزارهای نمایش‌دهنده فقط-متن استفاده می‌کنند حیاتی است.", @@ -274,6 +275,7 @@ "visualeditor-includes-includeonly-description": "هنگامی که محتوای این صفحه در صفحه‌ای دیگر استفاده شده باشد، محتوای اضافی زیر در اینجا قرار خواهد گرفت:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion دربارهٔ تراگنجانش جزئی بیشتر بدانید]", "visualeditor-languages-tool": "زبان‌ها", + "visualeditor-linkcontext-uneditable": "متأسفیم، این پیوند در حال حاضر تنها در حالت ویرایش متنی قابل ویرایش است.", "visualeditor-linkinspector-button-link-external": "وب‌گاه بیرونی", "visualeditor-linkinspector-button-link-internal": "جستجوی صفحه‌های داخلی", "visualeditor-linkinspector-convert-link-isbn": "تبدیل به پیوند ISBN", @@ -282,6 +284,7 @@ "visualeditor-linkinspector-educationpopup-text": "پیوند دادن کلمات مهم به سایر مقالات ویکی یا سایر وب‌گاه‌ها. این کار باعث می‌شود که خواننده مطلب را بهتر متوجه شود.", "visualeditor-linkinspector-educationpopup-title": "پیوندها", "visualeditor-linkinspector-illegal-title": "عنوان صفحهٔ نامعتبر", + "visualeditor-linkinspector-invalid-blocked": "افراد در این ویکی تصمیم گرفته‌اند که پیوندها به این وبگاه مسدود شوند. لطفاً پیوند دیگری را بیازمایید.", "visualeditor-linkinspector-invalid-external": "یک نشانی اینترنتی کامل را وارد کنید؛ برای مثال: https://example.org", "visualeditor-linknodeinspector-add-label": "افزودن برچسب", "visualeditor-linknodeinspector-title": "پیوند ساده", diff --git a/i18n/ve-mw/ng.json b/i18n/ve-mw/ng.json deleted file mode 100644 index 49f004b204..0000000000 --- a/i18n/ve-mw/ng.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "!!asa,njgh" - ] - }, - "visualeditor-ca-createsource": "Shita okoode", - "visualeditor-ca-editsource": "Lundulula nokoode", - "visualeditor-ca-editsource-section": "lundulula nokoode" -} diff --git a/i18n/ve-mw/sh-latn.json b/i18n/ve-mw/sh-latn.json index 60e6bc1d79..a387b636bf 100644 --- a/i18n/ve-mw/sh-latn.json +++ b/i18n/ve-mw/sh-latn.json @@ -238,7 +238,7 @@ "visualeditor-linkinspector-educationpopup-text": "Povežite važne riječi s drugim člancima ili čak web-stranicama. Ovo pomaže čitaocima da razumiju u kojem se kontekstu koristi termin kojeg povezujete.", "visualeditor-linkinspector-educationpopup-title": "Veze", "visualeditor-linkinspector-illegal-title": "Neispravan naslov stranice", - "visualeditor-linkinspector-invalid-external": "Upišite cijeli URL; npr. https://example.org", + "visualeditor-linkinspector-invalid-external": "Unesite cijeli URL, npr. https://example.org", "visualeditor-linknodeinspector-add-label": "Dodaj oznaku", "visualeditor-linknodeinspector-title": "Jednostavni link", "visualeditor-magiclinknodeinspector-convert-link": "Pretvori u jednostavan link", diff --git a/i18n/ve-mw/sq.json b/i18n/ve-mw/sq.json index 023ada1c70..882bbaa7fb 100644 --- a/i18n/ve-mw/sq.json +++ b/i18n/ve-mw/sq.json @@ -52,7 +52,7 @@ "visualeditor-changedesc-mwcategory-sortkey-set": "Çelësi i renditjes u vendos në $1", "visualeditor-changedesc-mwcategory-sortkey-unset": "Çelësi i renditjes u hoq nga $1", "visualeditor-changedesc-mwlanguagevariant": "Shënimi i variantit të gjuhës ndryshoi", - "visualeditor-changedesc-mwredirect": "Objektivi i ridrejtimit ndryshoi nga $1 në $2", + "visualeditor-changedesc-mwredirect": "Objektivi i ridrejtimit u ndryshua nga $1 te $2", "visualeditor-changedesc-mwtransclusion": "Parametrat e stampës u ndryshuan", "visualeditor-desc": "Redaktues pamor për MediaWiki-n", "visualeditor-descriptionpagelink": "Project:Përpunuesi Pamor", diff --git a/i18n/ve-mw/sr-ec.json b/i18n/ve-mw/sr-ec.json index a1e06b623b..b135fe323c 100644 --- a/i18n/ve-mw/sr-ec.json +++ b/i18n/ve-mw/sr-ec.json @@ -142,7 +142,7 @@ "visualeditor-dialog-meta-settings-redirect-label": "Преусмери страницу на", "visualeditor-dialog-meta-settings-redirect-placeholder": "Одредишна страница", "visualeditor-dialog-meta-settings-redirect-statichelp": "Можете спречити да се ово преусмерење аутоматски ажурира када се страница на коју оно води премести, у врло ретком случају када је то потребно.", - "visualeditor-dialog-meta-settings-redirect-staticlabel": "Спречи ажурирање овог преусмеравања када се одредишна страница премести", + "visualeditor-dialog-meta-settings-redirect-staticlabel": "Статичко преусмерење.", "visualeditor-dialog-meta-settings-section": "Подешавања странице", "visualeditor-dialog-meta-settings-toc-default": "Ако је потребно", "visualeditor-dialog-meta-settings-toc-disable": "Никад", diff --git a/i18n/ve-wmf/es.json b/i18n/ve-wmf/es.json index c49ff6b68d..01c37d2c1f 100644 --- a/i18n/ve-wmf/es.json +++ b/i18n/ve-wmf/es.json @@ -18,17 +18,18 @@ "Teen12", "Thehelpfulone", "Themasterriot", + "Virum Mundi", "YoViajo", "아라" ] }, - "tag-editcheck-newcontent-description": "Bix a beel", + "tag-editcheck-newcontent-description": "EditCheck cree que se ha añadido nuevo contenido a la página", "tag-editcheck-newreference-description": "Se agregó una referencia a la página.", - "tag-editcheck-references-description": "EditCheeck a wojel waaj je'el u beeyta'al u yaantal Google ti' jump'èel referenciae'", - "tag-editcheck-references-activated": " Verificarta'ab le edicióna'.", - "tag-editcheck-references-activated-description": "EdiChek a wojel waaj je'el u beeyta'al jump'èel referencia waaj tu yesaj u yochel de usuarioa'", - "tag-editcheck-references-shown": "Ku ye'esik waaj máax beet le edicióna'", - "tag-editcheck-tone-description": "EdiChek tu detectartaj jump'èel ba'al ku juum ti' jump'èel ba'al ts'abij.", + "tag-editcheck-references-description": "EditCheck cree que podría haber faltado una referencia", + "tag-editcheck-references-activated": "Comprobación de ediciones (referencias) activada", + "tag-editcheck-references-activated-description": "EditCheck cree que una referencia podría ser necesaria, se ha mostrado la interfaz de usuario", + "tag-editcheck-references-shown": "Comprobación de ediciones (referencias) mostrada", + "tag-editcheck-tone-description": "EditCheck ha detectado un posible problema con el tono del contenido añadido", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Modificación hecha con el [[{{MediaWiki:visualeditor-descriptionpagelink}}|Editor visual]]", "tag-visualeditor-needcheck": "Edición visual: comprobar", diff --git a/i18n/ve-wmf/lb.json b/i18n/ve-wmf/lb.json index 7ef5658424..9b5c9db584 100644 --- a/i18n/ve-wmf/lb.json +++ b/i18n/ve-wmf/lb.json @@ -16,7 +16,7 @@ "tag-visualeditor-needcheck": "Visuell änneren: Nokucken", "tag-visualeditor-needcheck-description": "Ännerung déi mam [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editeur]] gemaach gouf a wou de System eventuell net gewollten Ännerunge gemaach huet.", "tag-visualeditor-wikitext": "2017-Quelltext-Ännerung", - "tag-visualeditor-wikitext-description": "Ännerung déi mam Wikitext-Editeur-2017 gemaach gouf", + "tag-visualeditor-wikitext-description": "Ännerung, déi mam Wikitext-Editeur-2017 gemaach gouf", "tag-visualeditor-switched": "Visuell Ännerung: Ëmgeschalt", "tag-visualeditor-switched-description": "De Benotzer huet ugefaang mam visuellen Editeur z'änneren an huet duerno op de Wikitext-Editeur gewiesselt.", "visualeditor-feedback-link": "Project:VisualEditor/Feedback", From 5373d67d1513d711964833971d3453b8f6c70dbb Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 18 Aug 2025 14:09:21 -0500 Subject: [PATCH 568/730] Edit check: set up the tone check a/b test This changes the meaning of the VisualEditorEditCheckABTest config such that it should be the name of a check in the experimental group, which will be enabled on this wiki for users in the test-group. The tone check is treated slightly specially because it's actually loaded outside of the experimental module. Bug: T389231 Bug: T402195 Change-Id: I9c195ff630a18be0a4e84799033f417185a3fcfe --- editcheck/modules/init.js | 20 +++++++++++++++---- extension.json | 2 +- .../preinit/ve.init.mw.ArticleTargetLoader.js | 10 ++++++++-- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 0ff09e029d..c6342e613e 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -28,10 +28,22 @@ require( './editchecks/AddReferenceEditCheck.js' ); if ( mw.editcheck.experimental ) { mw.loader.using( 'ext.visualEditor.editCheck.experimental' ); } else { - // Load Tone check regardless for tagging - require( './editchecks/experimental/ToneCheck.js' ); - // Disable by unregistering - mw.editcheck.editCheckFactory.unregister( mw.editcheck.ToneCheck ); + const abCheck = mw.config.get( 'wgVisualEditorConfig' ).editCheckABTest; + const abGroup = mw.config.get( 'wgVisualEditorConfig' ).editCheckABTestGroup; + + if ( !abCheck || ( abCheck === 'tone' && abGroup === 'control' ) ) { + // Load Tone check regardless for tagging + require( './editchecks/experimental/ToneCheck.js' ); + mw.editcheck.editCheckFactory.unregister( mw.editcheck.ToneCheck ); + } else if ( abCheck && abGroup === 'test' ) { + mw.loader.using( 'ext.visualEditor.editCheck.experimental' ).then( () => { + [ 'tone', 'paste', 'convertReference', 'disambiguation', 'externalLink', 'textMatch' ].forEach( ( name ) => { + if ( name !== abCheck ) { + mw.editcheck.editCheckFactory.unregister( name ); + } + } ); + } ); + } } const isMainNamespace = mw.config.get( 'wgNamespaceNumber' ) === mw.config.get( 'wgNamespaceIds' )[ '' ]; diff --git a/extension.json b/extension.json index 61f864d2fc..8dc536b3fd 100644 --- a/extension.json +++ b/extension.json @@ -147,7 +147,7 @@ }, "VisualEditorEditCheckABTest": { "value": false, - "description": "A/B test Edit Check for all users. A/B bucket status will override VisualEditorEditCheck." + "description": "A/B test Edit Check for all users. A/B bucket status will override VisualEditorEditCheck. Value is a check name to test." }, "VisualEditorUseSingleEditTab": { "value": false diff --git a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js index f959965abf..3e52b84883 100644 --- a/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js +++ b/modules/ve-mw/preinit/ve.init.mw.ArticleTargetLoader.js @@ -36,7 +36,9 @@ modules.push( 'ext.visualEditor.mwwikitext' ); } - // A/B test enrollment for edit check (T384372) + // A/B test enrollment for edit check (T389231) + // Note: this happens here rather than inside editcheck so that the bucket will + // get logged for EditAttemptStep init events if ( conf.editCheck && conf.editCheckABTest ) { let inABTest; if ( mw.user.isAnon() ) { @@ -48,8 +50,12 @@ } else { inABTest = mw.user.getId() % 2 === 1; } + conf.editCheckABTestGroup = inABTest ? 'test' : 'control'; // Communicate the bucket to instrumentation: - mw.config.set( 'wgVisualEditorEditCheckABTestBucket', '2025-03-editcheck-multicheck-reference-' + ( inABTest ? 'test' : 'control' ) ); + mw.config.set( + 'wgVisualEditorEditCheckABTestBucket', + '2025-09-editcheck-' + conf.editCheckABTest + '-' + ( inABTest ? 'test' : 'control' ) + ); } const editCheck = conf.editCheck || !!url.searchParams.get( 'ecenable' ) || !!window.MWVE_FORCE_EDIT_CHECK_ENABLED; From 449a458b098dc6e2cd6ca96d77d58cff2b20f695 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 2 Sep 2025 09:46:04 +0200 Subject: [PATCH 569/730] Localisation updates from https://translatewiki.net. Change-Id: Ib50369bcb7911d189c5cd0c439498bbd460fa5c8 --- editcheck/i18n/uk.json | 1 + 1 file changed, 1 insertion(+) diff --git a/editcheck/i18n/uk.json b/editcheck/i18n/uk.json index 19d8903b95..d26b60678a 100644 --- a/editcheck/i18n/uk.json +++ b/editcheck/i18n/uk.json @@ -23,6 +23,7 @@ "editcheck-dialog-title": "Перед публікацією", "editcheck-copyvio-title": "Вставлений вміст", "editcheck-copyvio-description": "Як правило, не копіюйте текст з інших джерел. Зазвичай це є порушенням авторських прав та плагіатом.", + "editcheck-copyvio-prompt": "Ви самі написали цей текст?", "editcheck-copyvio-action-keep": "Так, залишити це.", "editcheck-copyvio-action-remove": "Ні, прибрати це", "editcheck-copyvio-keep-description": "Іншим редакторам буде цінно дізнатися, чому ви зберігаєте цей вставлений текст.", From 5e95c65155d54497fda62bc08b3026af373be9da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Wed, 27 Aug 2025 15:43:56 +0100 Subject: [PATCH 570/730] Tone check: Thank user for considering tone; rephrases message Bug: T402201 Change-Id: I4d336b12e45b8a1aa6cd59dac7f8b9d9376f88fb --- editcheck/i18n/en.json | 2 +- editcheck/i18n/qqq.json | 2 +- editcheck/modules/editchecks/experimental/ToneCheck.js | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index 5390364ca8..64c2b0ed8b 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -45,7 +45,7 @@ "editcheck-tone-reject-appropriate": "The tone is appropriate", "editcheck-tone-reject-uncertain": "I'm not sure how to revise the tone", "editcheck-tone-reject-other": "Other", - "editcheck-tone-thank": "Thank you for revising the tone!", + "editcheck-tone-thank": "Thank you for considering tone!", "editcheck-reject-description": "Other editors would value learning why you made this choice.", "editcheck-review-title": "Review changes", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (references) declined (common knowledge)", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index 8f01f62188..6434d638bc 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -47,7 +47,7 @@ "editcheck-tone-reject-appropriate": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", "editcheck-tone-reject-uncertain": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", "editcheck-tone-reject-other": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", - "editcheck-tone-thank": "Toast pop up to thank the user for their revisions if they resolve the check after clicking {{msg-mw|editcheck-dialog-action-revise}}", + "editcheck-tone-thank": "Toast pop up to thank the user for considering the tone, whether they dismissed the check or revised the text", "editcheck-reject-description": "Other editors would value learning more about your decision to skip this check.", "editcheck-review-title": "Title shown in the sidebar / drawer while checks are displayed", "tag-editcheck-reference-decline-common-knowledge": "Short description of the editcheck-reference-decline-common-knowledge tag.\n\nTag added when a user declines to add a suggested reference and selects the \"common knowledge\" reason.\n\nSee also:\n* {{msg-mw|editcheck-dialog-addref-reject-common-knowledge}}", diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/experimental/ToneCheck.js index 0f27aa8b7d..6e7c8316ec 100644 --- a/editcheck/modules/editchecks/experimental/ToneCheck.js +++ b/editcheck/modules/editchecks/experimental/ToneCheck.js @@ -2,7 +2,7 @@ mw.editcheck.ToneCheck = function MWToneCheck() { // Parent constructor mw.editcheck.ToneCheck.super.apply( this, arguments ); - this.notifySuccess = () => { + this.showThankToast = () => { mw.notify( ve.msg( 'editcheck-tone-thank' ), { type: 'success' } ); }; }; @@ -120,7 +120,7 @@ mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { }; mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { - action.off( 'discard', this.notifySuccess ); + action.off( 'discard', this.showThankToast ); this.tag( 'interacted', action ); if ( choice === 'dismiss' ) { return action.widget.showFeedback( { @@ -140,6 +140,7 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { ] } ).then( ( reason ) => { this.dismiss( action ); + this.showThankToast(); return ve.createDeferred().resolve( { action: choice, reason: reason } ).promise(); } ); } else if ( choice === 'edit' && surface ) { @@ -149,7 +150,7 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { // Once revising has started the user will either make enough of an // edit that this action is discarded, or will `act` again and this // event-handler will be removed above: - action.once( 'discard', this.notifySuccess ); + action.once( 'discard', this.showThankToast ); action.once( 'stale', () => { // Clean up the mode after we're done; any other act or anything // that can trigger an update should un-stale the action. @@ -201,7 +202,7 @@ mw.editcheck.ToneCheck.prototype.act = function ( choice, action, surface ) { progress.$element.remove(); if ( !result ) { - this.notifySuccess(); + this.showThankToast(); this.controller.removeAction( 'onBranchNodeChange', action, false ); } } ); From 173751ce068c473c34ce57ea86536a417901ffcf Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 19 Aug 2025 15:50:14 -0500 Subject: [PATCH 571/730] Edit check: log to VEFU if a tone check would have been shown if not for the a/b test This turns branch node change into an event on the controller for easier outside observation. Bug: T394952 Change-Id: I50da5bd9368a51a9d0937742e5e7b07ec5a26022 --- editcheck/modules/controller.js | 16 +++++++++++++++- editcheck/modules/init.js | 22 +++++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index ba29d87837..d6e5bd677c 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -107,6 +107,7 @@ Controller.prototype.setup = function () { closing: 'onSidebarDialogsOpeningOrClosing' } ); + this.on( 'branchNodeChange', this.onBranchNodeChange, null, this ); this.on( 'actionsUpdated', this.onActionsUpdated, null, this ); // Run on load (e.g. recovering from auto-save) @@ -368,7 +369,7 @@ Controller.prototype.onSelect = function ( selection ) { } if ( !this.inBeforeSave && this.updateCurrentBranchNodeFromSelection( selection ) ) { - this.updateForListener( 'onBranchNodeChange' ); + this.emit( 'branchNodeChange', this.branchNode ); } if ( OO.ui.isMobile() ) { @@ -437,6 +438,19 @@ Controller.prototype.onDocumentChange = function () { } }; +/** + * Handle changes to the selection moving between branch nodes + */ +Controller.prototype.onBranchNodeChange = function () { + if ( !this.surface ) { + // This is debounced, and could potentially be called after teardown + return; + } + if ( !this.inBeforeSave ) { + this.updateForListener( 'onBranchNodeChange' ); + } +}; + /** * Handler when 'actionsUpdated' fires. * diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index c6342e613e..a9add2bcb0 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -4,6 +4,8 @@ * 2: also load experimental checks */ const ecenable = new URL( location.href ).searchParams.get( 'ecenable' ); +const abCheck = mw.config.get( 'wgVisualEditorConfig' ).editCheckABTest; +const abGroup = mw.config.get( 'wgVisualEditorConfig' ).editCheckABTestGroup; mw.editcheck = { config: require( './config.json' ), @@ -28,9 +30,6 @@ require( './editchecks/AddReferenceEditCheck.js' ); if ( mw.editcheck.experimental ) { mw.loader.using( 'ext.visualEditor.editCheck.experimental' ); } else { - const abCheck = mw.config.get( 'wgVisualEditorConfig' ).editCheckABTest; - const abGroup = mw.config.get( 'wgVisualEditorConfig' ).editCheckABTestGroup; - if ( !abCheck || ( abCheck === 'tone' && abGroup === 'control' ) ) { // Load Tone check regardless for tagging require( './editchecks/experimental/ToneCheck.js' ); @@ -147,5 +146,22 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.forceEnab } const controller = new Controller( target ); controller.setup(); + + // Temporary logging for T394952 + if ( abCheck === 'tone' && abGroup === 'control' ) { + const checkForTone = function ( listener ) { + mw.editcheck.hasFailingToneCheck( controller.surface.getModel() ).then( ( result ) => { + if ( result ) { + ve.track( 'activity.editCheck-tone', { action: 'check-control-' + listener } ); + } + } ); + }; + controller.on( 'branchNodeChange', () => { + checkForTone( 'branchNodeChange' ); + } ); + controller.on( 'onBeforeSave', () => { + checkForTone( 'onBeforeSave' ); + } ); + } } ); } From 1adad302e770907104fb6bfe7678a50af71f4d61 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 3 Sep 2025 09:26:15 +0200 Subject: [PATCH 572/730] Localisation updates from https://translatewiki.net. Change-Id: Iddc3b86d2540950361fbeb4dd57538aba01711bd --- i18n/ve-mw/nb.json | 1 + i18n/ve-wmf/nb.json | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/i18n/ve-mw/nb.json b/i18n/ve-mw/nb.json index db4e8936f1..1f2b41d509 100644 --- a/i18n/ve-mw/nb.json +++ b/i18n/ve-mw/nb.json @@ -261,6 +261,7 @@ "visualeditor-includes-includeonly-description": "Når innhold fra denne siden inkluderes på en annen side vil følgende ekstra innhold inkluderes:", "visualeditor-includes-documentation": "[//www.mediawiki.org/wiki/Special:MyLanguage/Transclusion#Partial_transclusion Lær mer om delvis transklusjon]", "visualeditor-languages-tool": "Språk", + "visualeditor-linkcontext-uneditable": "Beklager, denne lenka kan for tiden kun endres i kildemodus.", "visualeditor-linkinspector-button-link-external": "Ekstern side", "visualeditor-linkinspector-button-link-internal": "Søk i interne sider", "visualeditor-linkinspector-convert-link-isbn": "Konverter til ISBN-lenke", diff --git a/i18n/ve-wmf/nb.json b/i18n/ve-wmf/nb.json index 188fd92b11..618ee0a8e2 100644 --- a/i18n/ve-wmf/nb.json +++ b/i18n/ve-wmf/nb.json @@ -19,6 +19,11 @@ "tag-editcheck-references-description": "EditCheck tror en referanse kan ha vært nødvendig", "tag-editcheck-references-activated": "Redigeringssjekk (referanser) aktivert", "tag-editcheck-references-activated-description": "Redigeringssjekk tror at en referanse kan ha vært nødvendig, og brukergrensesnittet for dette ble vist", + "tag-editcheck-references-shown": "Redigeringssjekk (referanser) vist", + "tag-editcheck-references-shown-description": "Redigeringssjekk tror en referanse kan være nødvendig, og grensesnittet ble vist", + "tag-editcheck-tone-description": "Redigeringssjekk oppdaget et mulig problem med tonen i noe av innholdet som ble lagt til", + "tag-editcheck-tone-shown": "Redigeringssjekk (tone) vist", + "tag-editcheck-tone-shown-description": "Redigeringssjekk tror det kan være nødvendig med endringer i tonen i noe av innholdet som ble lagt til, og grensesnittet ble vist", "tag-visualeditor": "Visuell redigering", "tag-visualeditor-description": "Redigering gjort med [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuell redigering]]", "tag-visualeditor-needcheck": "Visuell redigering: Sjekk", From de6ce657fdafdae8131d70b2e489300c7bb8f365 Mon Sep 17 00:00:00 2001 From: "James D. Forrester" Date: Wed, 3 Sep 2025 21:03:09 -0400 Subject: [PATCH 573/730] Update VE core submodule to master (4f51b5f65) New changes: fdd1a1241 Fix targetting of ellipsis overflow styles in mobile link context 1d7c02c14 DiffElement: Fix order of attribute/annotation diffs on nested nodes bf29aa642 Move InternalList tests from Cite f5f0f86d0 Minor refactoring in ve.dm.InternalList f54985bc5 Add a minimal ve.dm.ReferenceNode class 4f51b5f65 Update OOUI to v0.53.0 Localisation Updates: 3d7a9e798, e2335a5c0, 02a0812ac, 102cd1a4a Added files: - src/dm/nodes/ve.dm.ReferenceNode.js Bug: T302413 Bug: T391521 Bug: T397145 Bug: T401890 Bug: T402392 Change-Id: I9d8b420be19e292c77c0f27dbb428e6503a8178d --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 2824d0c430..4f51b5f654 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 2824d0c4307a9c663ca0710828a0cd9df0351025 +Subproject commit 4f51b5f65479c8bde0ec054c946705aaf1449d47 From 451ae0fed3b7730f46660c61d538ac9419540688 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 4 Sep 2025 09:41:24 +0200 Subject: [PATCH 574/730] Localisation updates from https://translatewiki.net. Change-Id: I151d8bc6c4ebe8533d78897ef8a10e507dc84efb --- editcheck/i18n/az.json | 2 +- editcheck/i18n/fi.json | 2 +- editcheck/i18n/it.json | 1 + editcheck/i18n/lb.json | 2 +- editcheck/i18n/nl.json | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index 371e4e17e4..efac70bf23 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -42,7 +42,7 @@ "editcheck-tone-reject-appropriate": "Ton uyğun gəlir", "editcheck-tone-reject-uncertain": "Tonu necə dəyişdirəcəyimi bilmirəm", "editcheck-tone-reject-other": "Digər", - "editcheck-tone-thank": "Tonu yenidən nəzərdən keçirdiyiniz üçün təşəkkür edirik!", + "editcheck-tone-thank": "Tonu nəzərə aldığınız üçün təşəkkür edirik!", "editcheck-reject-description": "Digər redaktorlar niyə bu seçimi etdiyinizi bilmək istəyəcəklər.", "editcheck-review-title": "Dəyişiklikləri yoxla", "tag-editcheck-reference-decline-common-knowledge": "Redaktə Yoxlanışı (istinadlar) rədd edildi (hamının bildiyi)", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index a0997335b4..715082399e 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -43,7 +43,7 @@ "editcheck-tone-reject-appropriate": "Sävy on sopiva", "editcheck-tone-reject-uncertain": "En ole varma, miten korjata sävyä", "editcheck-tone-reject-other": "Muu", - "editcheck-tone-thank": "Kiitos sävyn korjaamisesta!", + "editcheck-tone-thank": "Kiitos sävyn tarkastamisesta!", "editcheck-reject-description": "Muut muokkaajat arvostaisivat kuulla, miksi teit tämän valinnan.", "editcheck-review-title": "Tarkasta muutokset", "tag-editcheck-reference-decline-common-knowledge": "Muokkaustarkistin (lähteet) hylätty (yleistietoa)", diff --git a/editcheck/i18n/it.json b/editcheck/i18n/it.json index 9ffba5d249..fc62ce1501 100644 --- a/editcheck/i18n/it.json +++ b/editcheck/i18n/it.json @@ -28,6 +28,7 @@ "editcheck-copyvio-keep-other": "Altro", "editcheck-copyvio-remove-notify": "Grazie per aver rimosso questo testo!", "editcheck-tone-reject-other": "Altro", + "editcheck-tone-thank": "Grazie per aver preso in considerazione il tono!", "editcheck-review-title": "Rivedi modifiche", "tag-editcheck-reference-decline-other": "Edit Check (citazioni) rifiutato (altro)" } diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index 3e0f18e204..c80b3c89e7 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -34,7 +34,7 @@ "editcheck-tone-reject-appropriate": "Den Tounfall ass passend", "editcheck-tone-reject-uncertain": "Ech weess net genee, wéi ech den Tounfall iwwerschaffe soll", "editcheck-tone-reject-other": "Anerer", - "editcheck-tone-thank": "Merci, datt Dir den Tounfall iwwerschafft hutt!", + "editcheck-tone-thank": "Merci, datt Dir den Tounfall iwwerpréift hutt!", "editcheck-reject-description": "Aner Editeure géifen et appreciéiere fir gewuer ze ginn, firwat Dir dëse Choix gemaach hutt.", "editcheck-review-title": "Ännerungen nokucken" } diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index 4aa848b867..0d2f7c7659 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -44,7 +44,7 @@ "editcheck-tone-reject-appropriate": "De toon is passend", "editcheck-tone-reject-uncertain": "Ik weet niet goed hoe ik de toon moet aanpassen", "editcheck-tone-reject-other": "Overige", - "editcheck-tone-thank": "Bedankt voor het aanpassen van de toon!", + "editcheck-tone-thank": "Bedankt voor het overwegen van de toon!", "editcheck-reject-description": "Andere redacteuren willen graag weten waarom u deze keuze hebt gemaakt.", "editcheck-review-title": "Wijzigingen controleren", "tag-editcheck-reference-decline-common-knowledge": "Edit Check (referenties) afgewezen (algemene kennis)", From 9ee7264f7098f1b312663cdc09fea7dbc57a2f1d Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 5 Sep 2025 09:38:40 +0200 Subject: [PATCH 575/730] Localisation updates from https://translatewiki.net. Change-Id: Iea0a69b59c02d3e1cc0ee9b29103ce9f53620cd9 --- i18n/ve-wmf/yua.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/i18n/ve-wmf/yua.json b/i18n/ve-wmf/yua.json index 2ea0bbe1a0..d977c47de5 100644 --- a/i18n/ve-wmf/yua.json +++ b/i18n/ve-wmf/yua.json @@ -4,7 +4,9 @@ "Chester1", "Coala23", "Cohuoucan", + "DeBolsillo", "Ebenezer", + "Geom", "Gutypc712", "JhonRambo", "Miguelos1976", @@ -20,7 +22,7 @@ "tag-editcheck-references-shown": "Editar Check (referencias) ku ye'esik", "tag-editcheck-references-shown-description": "EditCheck ku tukultik jump'éel referencia je'el u páajtal u k'a'abéettal, ka le UI bin u ye'esa'al", "tag-editcheck-tone-description": "EditCheck tu yilaj jump'éel talamil yéetel u tono yaan contenido añadido", - "tag-editcheck-tone-shown": "Editar Check (tono) ku ye'esik", + "tag-editcheck-tone-shown": "Editar Check (tono) mostrado", "tag-editcheck-tone-shown-description": "EditCheck ku tukultik jump'éel ajuste ti' le tono ti' yaan contenido je'el u páajtal u sido k'a'abéet, ka le UI bin u ye'esa'al", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Edición beeta'an yéetel le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]].", @@ -38,5 +40,5 @@ "visualeditor-welcomedialog-content-thanks": "¡Gracias por ayudar al mundo a descubrir más!", "visualeditor-welcomedialog-switch": "K'ex le \"editor de codigo\"'", "visualeditor-welcomedialog-switch-ve": "K'ex ti' le editor visual", - "visualeditor-welcomedialog-title": "{{GENDER:$1|} ti' $2" + "visualeditor-welcomedialog-title": "{{GENDER:$1|}} ti' $2" } From ea71d5006786a4f2f5490e5d33c5838c7210377f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Fri, 5 Sep 2025 00:06:10 +0200 Subject: [PATCH 576/730] DesktopArticleTarget: Fix switching editors with changes while editing a section Commit 57d1386b72 changed `!== null` to `!== undefined`. I think that change was unintentional or a mistake. `section` can never be `undefined` at this point, it can only be `'new'` or `null`. Bug: T401043 Change-Id: Ie137bc61a17ea31245a7bc7c8ce772b665c64e94 --- modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js index a403879062..1b9f1f3990 100644 --- a/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js +++ b/modules/ve-mw/preinit/ve.init.mw.DesktopArticleTarget.init.js @@ -1118,7 +1118,7 @@ } else { const link = $( e.target ).closest( 'a' )[ 0 ]; const linkUrl = link && link.href ? new URL( link.href ) : undefined; - if ( section !== undefined ) { + if ( section !== null ) { init.activateVe( mode, linkUrl, section ); } else { // Do not pass `section` to handle switching from section editing in WikiEditor if needed From a65c5f446f7289e2573d41ee4d65d9474123d2bf Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 5 Sep 2025 13:02:13 -0500 Subject: [PATCH 577/730] Update VE core submodule to master (a5bd08c8b) New changes: e687573c7 Respect applyToInsertedContent when pasting bc66684e8 dm.SurfaceFragment: fix updating of insertion annotations 12f2602c9 DiffElement: Fix colors for content inside list spacers a5bd08c8b Move ve.track.js into a separate module Localisation Updates: 97da6f862 Bug: T397518 Bug: T402717 Bug: T403741 Bug: T403745 Change-Id: I7cf16eaa8f858f59301047dbddfce383afe45325 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 4f51b5f654..a5bd08c8bc 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 4f51b5f65479c8bde0ec054c946705aaf1449d47 +Subproject commit a5bd08c8bc2afb1effbfa182d1293e47105db730 From ab01538e75d275980799f2472f50c6236b774b0b Mon Sep 17 00:00:00 2001 From: libraryupgrader Date: Sat, 6 Sep 2025 05:34:44 +0000 Subject: [PATCH 578/730] build: Updating mediawiki/mediawiki-codesniffer to 48.0.0 The following sniffs are failing and were disabled: * MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation Change-Id: I0a88898ef3b2f6e82bc29a1f1adffbabcdc87281 --- .phpcs.xml | 4 +++- composer.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.phpcs.xml b/.phpcs.xml index 304acc8b34..a92a3a2654 100644 --- a/.phpcs.xml +++ b/.phpcs.xml @@ -1,6 +1,8 @@ - + + + 5 diff --git a/composer.json b/composer.json index 5f2fd1cbce..4e9d33d7ef 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "require-dev": { - "mediawiki/mediawiki-codesniffer": "47.0.0", + "mediawiki/mediawiki-codesniffer": "48.0.0", "mediawiki/mediawiki-phan-config": "0.17.0", "mediawiki/minus-x": "1.1.3", "php-parallel-lint/php-console-highlighter": "1.0.0", From 2ad44951e783ecb4444cc363c1923f8a4d4fd094 Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Sat, 6 Sep 2025 23:45:28 +0200 Subject: [PATCH 579/730] Use PHP8 constructor property promotion syntax for dependency injection Simplify the definition for injected services on the constructor. Also use readonly properties for services. Change-Id: If6efaf8f6f01f0ae1abb93186cb8ef9c48aff2e2 --- includes/ApiVisualEditorEdit.php | 22 +++++-------------- includes/BetaPreferenceHooks.php | 6 ++--- includes/Hooks.php | 5 +---- includes/VisualEditorHookRunner.php | 5 +---- includes/VisualEditorParsoidClientFactory.php | 5 +---- 5 files changed, 11 insertions(+), 32 deletions(-) diff --git a/includes/ApiVisualEditorEdit.php b/includes/ApiVisualEditorEdit.php index 7ba70d3aeb..ab97e36e71 100644 --- a/includes/ApiVisualEditorEdit.php +++ b/includes/ApiVisualEditorEdit.php @@ -42,33 +42,23 @@ class ApiVisualEditorEdit extends ApiBase { private const MAX_CACHE_RECENT = 2; private const MAX_CACHE_TTL = 900; - private VisualEditorHookRunner $hookRunner; - private PageEditStash $pageEditStash; - private SkinFactory $skinFactory; - private WikiPageFactory $wikiPageFactory; - private SpecialPageFactory $specialPageFactory; - private VisualEditorParsoidClientFactory $parsoidClientFactory; + private readonly VisualEditorHookRunner $hookRunner; public function __construct( ApiMain $main, string $name, HookContainer $hookContainer, StatsFactory $statsFactory, - PageEditStash $pageEditStash, - SkinFactory $skinFactory, - WikiPageFactory $wikiPageFactory, - SpecialPageFactory $specialPageFactory, - VisualEditorParsoidClientFactory $parsoidClientFactory + private readonly PageEditStash $pageEditStash, + private readonly SkinFactory $skinFactory, + private readonly WikiPageFactory $wikiPageFactory, + private readonly SpecialPageFactory $specialPageFactory, + private readonly VisualEditorParsoidClientFactory $parsoidClientFactory ) { parent::__construct( $main, $name ); $this->setLogger( LoggerFactory::getInstance( 'VisualEditor' ) ); $this->setStatsFactory( $statsFactory ); $this->hookRunner = new VisualEditorHookRunner( $hookContainer ); - $this->pageEditStash = $pageEditStash; - $this->skinFactory = $skinFactory; - $this->wikiPageFactory = $wikiPageFactory; - $this->specialPageFactory = $specialPageFactory; - $this->parsoidClientFactory = $parsoidClientFactory; } /** diff --git a/includes/BetaPreferenceHooks.php b/includes/BetaPreferenceHooks.php index bd40dbefb9..38c20b1ed6 100644 --- a/includes/BetaPreferenceHooks.php +++ b/includes/BetaPreferenceHooks.php @@ -14,14 +14,12 @@ */ class BetaPreferenceHooks implements GetBetaFeaturePreferencesHook { - private Config $coreConfig; - private Config $config; + private readonly Config $config; public function __construct( - Config $coreConfig, + private readonly Config $coreConfig, ConfigFactory $configFactory ) { - $this->coreConfig = $coreConfig; $this->config = $configFactory->makeConfig( 'visualeditor' ); } diff --git a/includes/Hooks.php b/includes/Hooks.php index b8bf569772..1df35ef816 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -115,10 +115,7 @@ class Hooks implements 'visualeditor-switched' ]; - private ExtensionRegistry $extensionRegistry; - - public function __construct( ExtensionRegistry $extensionRegistry ) { - $this->extensionRegistry = $extensionRegistry; + public function __construct( private readonly ExtensionRegistry $extensionRegistry ) { } /** diff --git a/includes/VisualEditorHookRunner.php b/includes/VisualEditorHookRunner.php index 1a3b5634d0..684e621696 100644 --- a/includes/VisualEditorHookRunner.php +++ b/includes/VisualEditorHookRunner.php @@ -23,10 +23,7 @@ class VisualEditorHookRunner implements VisualEditorBeforeEditorHook { - private HookContainer $hookContainer; - - public function __construct( HookContainer $hookContainer ) { - $this->hookContainer = $hookContainer; + public function __construct( private readonly HookContainer $hookContainer ) { } /** @inheritDoc */ diff --git a/includes/VisualEditorParsoidClientFactory.php b/includes/VisualEditorParsoidClientFactory.php index ae8f8f3dbe..3fedc04651 100644 --- a/includes/VisualEditorParsoidClientFactory.php +++ b/includes/VisualEditorParsoidClientFactory.php @@ -16,12 +16,9 @@ class VisualEditorParsoidClientFactory { */ public const SERVICE_NAME = 'VisualEditor.ParsoidClientFactory'; - private PageRestHelperFactory $pageRestHelperFactory; - public function __construct( - PageRestHelperFactory $pageRestHelperFactory + private readonly PageRestHelperFactory $pageRestHelperFactory, ) { - $this->pageRestHelperFactory = $pageRestHelperFactory; } /** From 9a33eef885041a6e4c6fd23f9c3c423ef10fd70b Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 8 Sep 2025 09:32:11 +0200 Subject: [PATCH 580/730] Localisation updates from https://translatewiki.net. Change-Id: I3add775d27b215f7c99c2e785b6376fe8ffa8956 --- editcheck/i18n/he.json | 2 +- editcheck/i18n/ia.json | 2 +- editcheck/i18n/lb.json | 2 +- i18n/ve-mw/api/lb.json | 3 ++- i18n/ve-mw/lb.json | 9 +++++---- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/editcheck/i18n/he.json b/editcheck/i18n/he.json index f4b2e6951b..c95b9d5ec7 100644 --- a/editcheck/i18n/he.json +++ b/editcheck/i18n/he.json @@ -43,7 +43,7 @@ "editcheck-tone-reject-appropriate": "הנימה הזאת הולמת", "editcheck-tone-reject-uncertain": "לא ברור לי איך לתקן את הנימה", "editcheck-tone-reject-other": "אחר", - "editcheck-tone-thank": "תודה שתיקנת את הנימה!", + "editcheck-tone-thank": "תודה שחשבת על הנימה!", "editcheck-reject-description": "עורכים אחרים ישמחו לדעת למה בחרת בזה.", "editcheck-review-title": "סקירת שינויים", "tag-editcheck-reference-decline-common-knowledge": "מערכת בדיקת עריכה (הערות שוליים) – נדחה (ידוע לכול)", diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index 4119099ca1..6c08eb4c8a 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -41,7 +41,7 @@ "editcheck-tone-reject-appropriate": "Le tono es appropriate", "editcheck-tone-reject-uncertain": "Io non es secur como revisar le tono", "editcheck-tone-reject-other": "Altere", - "editcheck-tone-thank": "Gratias pro revisar le tono!", + "editcheck-tone-thank": "Gratias pro considerar le tono!", "editcheck-reject-description": "Altere redactores appreciarea saper proque tu ha optate pro isto.", "editcheck-review-title": "Revider cambiamentos", "tag-editcheck-reference-decline-common-knowledge": "Verification de modification (referentias) declinate (cognoscentia commun)", diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index c80b3c89e7..a27419718e 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -9,7 +9,7 @@ "editcheck-dialog-action-decline": "Ofleenen", "editcheck-dialog-action-revise": "Iwwerschaffen", "editcheck-dialog-action-recheck": "Nach eng Kéier iwwerpréiwen", - "editcheck-dialog-action-back": "Zréck", + "editcheck-dialog-action-back": "Zeréck", "editcheck-dialog-action-submit": "Ofschécken", "editcheck-dialog-addref-reject-question": "Firwat setzt Dir keng Referenz derbäi?", "editcheck-dialog-addref-reject-irrelevant": "Menger Meenung no si Referenzen fir d'Ännerung, déi ech maachen, net relevant", diff --git a/i18n/ve-mw/api/lb.json b/i18n/ve-mw/api/lb.json index e646d2ab1c..057f786f76 100644 --- a/i18n/ve-mw/api/lb.json +++ b/i18n/ve-mw/api/lb.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "GilPe", "Les Meloures", "Robby", "Soued031" @@ -18,6 +19,6 @@ "apihelp-visualeditoredit-param-paction": "Aktioun fir ze maachen.", "apihelp-visualeditoredit-param-page": "D'Säit op där Aktioune gemaach soll ginn.", "apihelp-visualeditoredit-param-sectiontitle": "Titel fir neien Abschnitt.", - "apihelp-visualeditoredit-param-summary": "Resumé änneren.", + "apihelp-visualeditoredit-param-summary": "Resümmee änneren.", "apihelp-visualeditoredit-param-wikitext": "De Wikitext mat deem geschafft gëtt." } diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index b1a7cc5b2e..b9b0d2a219 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -3,6 +3,7 @@ "authors": [ "Autokrator", "Chorobek", + "GilPe", "Les Meloures", "McDutchie", "Robby", @@ -37,7 +38,7 @@ "visualeditor-autosave-not-recovered-title": "D'Restauratioun vun Ärer Ännerung huet net funktionéiert", "visualeditor-autosave-recovered-text": "Är net gespäichert Ännerunge goufen automatesch restauréiert.", "visualeditor-autosave-recovered-title": "Ännerunge restauréiert", - "visualeditor-backbutton-tooltip": "Zréck goen", + "visualeditor-backbutton-tooltip": "Zeréck goen", "visualeditor-ca-createlocaldescriptionsource": "Lokale Beschreiwungsquelltext derbäisetzen", "visualeditor-ca-createsource": "Quell uleeën", "visualeditor-ca-editlocaldescriptionsource": "Lokale Beschreiwungsquelltext änneren", @@ -61,7 +62,7 @@ "visualeditor-dialog-media-content-description-link": "(Beschreiwungssäit)", "visualeditor-dialog-media-content-filename": "Numm vum Fichier", "visualeditor-dialog-media-content-section": "Beschrëftung", - "visualeditor-dialog-media-goback": "Zréck", + "visualeditor-dialog-media-goback": "Zeréck", "visualeditor-dialog-media-info-artist": "Eropgeluede vum $1", "visualeditor-dialog-media-info-audiofile": "Audiofichier", "visualeditor-dialog-media-info-created": "Ugeluecht: $1", @@ -190,7 +191,7 @@ "visualeditor-dialog-transclusion-placeholder-input-placeholder": "Schabloun fannen", "visualeditor-dialog-transclusion-required-parameter": "Obligatorescht Feld", "visualeditor-dialog-transclusion-required-parameter-description": "Feld ass obligatoresch.", - "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Zréck goen", + "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Zeréck goen", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Trotzdeem virufueren", "visualeditor-dialog-transclusion-required-parameter-dialog-title": "Et {{PLURAL:$1|feelt een obligatoresch Feld|feele(n) $1 obligatoresch Felder}}", "visualeditor-dialog-transclusion-required-parameter-is-blank": "Sidd Dir sécher datt Dir virufuere wëllt ouni {{PLURAL:$2|d'Felder}} $1 auszefëllen?", @@ -308,7 +309,7 @@ "visualeditor-savedialog-label-review-good": "Zréck op de Formulaire fir ze späicheren", "visualeditor-savedialog-label-save-short": "Späicheren", "visualeditor-savedialog-label-save-short-start": "Späicheren...", - "visualeditor-savedialog-review-nosummary": "Kee Resumé vun der Ännerung", + "visualeditor-savedialog-review-nosummary": "Kee Resümmee vun der Ännerung", "visualeditor-savedialog-review-visual": "Visuell", "visualeditor-savedialog-review-wikitext": "WikiText", "visualeditor-savedialog-title-conflict": "Konflikt", From ff8e386b19ce89cf4d1c2dea34a04446ae4a9c73 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 8 Sep 2025 10:10:46 -0500 Subject: [PATCH 581/730] Edit check gutter: don't hold on to references to torn down widgets When the entire gutter sidebar is torn down, throw away the references to the widgets as well as tearing them down. Otherwise when the sidebar is recreated we'll have unexpectedly torn down widgets attempting to be used. Bug: T403969 Change-Id: I4b01a5b2815e4085b6d29d74285150e896b26c7e --- editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js | 1 + 1 file changed, 1 insertion(+) diff --git a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js index 0beb82d9a4..ba90e4a40f 100644 --- a/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js +++ b/editcheck/modules/dialogs/GutterSidebarEditCheckDialog.js @@ -76,6 +76,7 @@ ve.ui.GutterSidebarEditCheckDialog.prototype.getTeardownProcess = function ( dat this.controller.disconnect( this ); this.widgets.forEach( ( widget ) => widget.teardown() ); + this.widgets = []; this.surface = null; this.controller = null; From c47490822c0566adc8551572094d7ccc2a241411 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 25 Jul 2025 10:36:52 -0500 Subject: [PATCH 582/730] Edit check: allow setting of default config for all checks Bug: T400506 Change-Id: I426f08add7a3b0fb409ab52ca0cf9dd90e6b531b --- editcheck/modules/EditCheckFactory.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index de0cfb5e6f..bd1f4dcb4d 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -106,7 +106,11 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( controller, listenerName, surfaceModel ) { const actionOrPromiseList = []; this.getNamesByListener( listenerName ).forEach( ( checkName ) => { - const check = this.create( checkName, controller, mw.editcheck.config[ checkName ] ); + const check = this.create( + checkName, + controller, + ve.extendObject( {}, mw.editcheck.config[ '*' ], mw.editcheck.config[ checkName ] ) + ); if ( !check.canBeShown() ) { return; } From b9ec048047a0927fd05b80c80c87eae8a998fa14 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 4 Sep 2025 13:35:39 -0500 Subject: [PATCH 583/730] Edit check: refactor tracking of shown checks Stop needing to individually track each type. Still needs to manually trigger the tagging, because tags require manual setup anyway. Also, we weren't triggering the tone shown tag if you resolved it entirely mid-edit. Bug: T379843 Change-Id: Icd9193acb7086973017353e36617547253293f4a --- editcheck/modules/controller.js | 23 +++++++++++------------ editcheck/modules/init.js | 7 ++++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index d6e5bd677c..59d7682d1c 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -128,8 +128,7 @@ Controller.prototype.setup = function () { this.taggedFragments = {}; this.taggedIds = {}; - mw.editcheck.refCheckShown = false; - mw.editcheck.toneCheckShown = false; + mw.editcheck.checksShown = {}; $( document.documentElement ).removeClass( 've-editcheck-available' ); window.dispatchEvent( new Event( 'resize' ) ); @@ -502,9 +501,7 @@ Controller.prototype.onActionsUpdated = function ( listener, actions, newActions shownPromise = ve.createDeferred().resolve().promise(); } shownPromise.then( () => { - newActions.forEach( ( action ) => { - ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-midedit' } ); - } ); + this.updateShownStats( newActions, 'midedit' ); if ( newActions.length ) { // Check if any new actions are relevant to our current selection: @@ -539,10 +536,6 @@ Controller.prototype.setupPreSaveProcess = function () { return this.updateForListener( 'onBeforeSave' ).then( ( actions ) => { if ( actions.length ) { ve.track( 'stats.mediawiki_editcheck_preSaveChecks_total', 1, { kind: 'Shown' } ); - mw.editcheck.refCheckShown = mw.editcheck.refCheckShown || - actions.some( ( action ) => action.getName() === 'addReference' ); - mw.editcheck.toneCheckShown = mw.editcheck.toneCheckShown || - actions.some( ( action ) => action.getName() === 'tone' ); this.setupToolbar( target ); @@ -560,9 +553,7 @@ Controller.prototype.setupPreSaveProcess = function () { return windowAction.open( 'fixedEditCheckDialog', { inBeforeSave: true, actions: actions, controller: this } ) .then( ( instance ) => { ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); - actions.forEach( ( action ) => { - ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-presave' } ); - } ); + this.updateShownStats( actions, 'presave' ); instance.closed.then( () => {}, () => {} ).then( () => { surface.getView().setReviewMode( false ); this.inBeforeSave = false; @@ -834,6 +825,14 @@ Controller.prototype.updateCurrentBranchNodeFromSelection = function ( selection return false; }; +Controller.prototype.updateShownStats = function ( actions, moment ) { + actions.forEach( ( action ) => { + mw.editcheck.checksShown[ action.getName() ] = true; + + ve.track( 'activity.editCheck-' + action.getName(), { action: 'check-shown-' + moment } ); + } ); +}; + module.exports = { Controller: Controller }; diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index a9add2bcb0..e2ec71ea67 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -10,7 +10,8 @@ const abGroup = mw.config.get( 'wgVisualEditorConfig' ).editCheckABTestGroup; mw.editcheck = { config: require( './config.json' ), forceEnable: !!( ecenable || window.MWVE_FORCE_EDIT_CHECK_ENABLED ), - experimental: !!( mw.config.get( 'wgVisualEditorConfig' ).editCheckExperimental || ecenable === '2' ) + experimental: !!( mw.config.get( 'wgVisualEditorConfig' ).editCheckExperimental || ecenable === '2' ), + checksShown: {} }; require( './utils.js' ); @@ -118,10 +119,10 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { if ( newNodesInDoc ) { tags.push( 'editcheck-newreference' ); } - if ( mw.editcheck.refCheckShown ) { + if ( mw.editcheck.checksShown.addReference ) { tags.push( 'editcheck-references-shown' ); } - if ( mw.editcheck.toneCheckShown ) { + if ( mw.editcheck.checksShown.tone ) { tags.push( 'editcheck-tone-shown' ); } if ( hasFailingToneCheck ) { From 7d49d12def215dbb84f868292e25d9ecb1aec813 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 4 Sep 2025 13:47:05 -0500 Subject: [PATCH 584/730] Paste check: add editcheck-paste-shown tag Bug: T379843 Change-Id: I91c4a8a697903793229330618dcdab8c3a28f575 --- editcheck/modules/init.js | 3 +++ i18n/ve-wmf/en.json | 3 +++ i18n/ve-wmf/qqq.json | 3 +++ includes/Hooks.php | 1 + 4 files changed, 10 insertions(+) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index e2ec71ea67..c2371752be 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -125,6 +125,9 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheckTagging ) { if ( mw.editcheck.checksShown.tone ) { tags.push( 'editcheck-tone-shown' ); } + if ( mw.editcheck.checksShown.paste ) { + tags.push( 'editcheck-paste-shown' ); + } if ( hasFailingToneCheck ) { tags.push( 'editcheck-tone' ); } else if ( hasFailingToneCheck === null ) { diff --git a/i18n/ve-wmf/en.json b/i18n/ve-wmf/en.json index 374cbef8fc..e697b93202 100644 --- a/i18n/ve-wmf/en.json +++ b/i18n/ve-wmf/en.json @@ -33,6 +33,9 @@ "tag-editcheck-tone-shown": "Edit Check (tone) shown", "tag-editcheck-tone-shown-description": "EditCheck thinks an adjustment to the tone in some content might have been needed, and the UI was shown", "tag-editcheck-tone-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Tone_check", + "tag-editcheck-paste-shown": "Edit Check (paste) shown", + "tag-editcheck-paste-shown-description": "EditCheck asked for clarification about content the editor pasted, which was then either removed or affirmed to be permissible", + "tag-editcheck-paste-shown-helppage": "mediawikiwiki:Special:MyLanguage/Help:Edit_check#Paste_check", "tag-visualeditor": "Visual edit", "tag-visualeditor-description": "Edit made using the [[{{MediaWiki:visualeditor-descriptionpagelink}}|visual editor]]", "tag-visualeditor-helppage": "{{MediaWiki:visualeditor-descriptionpagelink}}", diff --git a/i18n/ve-wmf/qqq.json b/i18n/ve-wmf/qqq.json index b70b9378de..d5772edd0f 100644 --- a/i18n/ve-wmf/qqq.json +++ b/i18n/ve-wmf/qqq.json @@ -43,6 +43,9 @@ "tag-editcheck-tone-shown": "Short description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks that added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown-description}}\n{{Related|tag-editcheck-tone-shown-description}}", "tag-editcheck-tone-shown-description": "Long description of the editcheck-tone-shown tag.\n\nTag added when EditCheck thinks added content might need its tone adjusted, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-tone-shown}}\n{{Related|tag-editcheck-tone-shown}}", "tag-editcheck-tone-shown-helppage": "{{notranslate}}\nLink to the tone check section of the EditCheck help page.\n\nUsed in:\n* {{msg-mw|tag-editcheck-tone-shown}}", + "tag-editcheck-paste-shown": "Short description of the editcheck-paste-shown tag.\n\nTag added when EditCheck detected pasted content, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-paste-shown-description}}\n{{Related|tag-editcheck-paste-shown-description}}", + "tag-editcheck-paste-shown-description": "Long description of the editcheck-paste-shown tag.\n\nTag added when EditCheck detected pasted content, and the UI was shown.\n\nSee also:\n* {{msg-mw|Tag-editcheck-paste-shown}}\n{{Related|tag-editcheck-paste-shown}}", + "tag-editcheck-paste-shown-helppage": "{{notranslate}}\nLink to the paste check section of the EditCheck help page.\n\nUsed in:\n* {{msg-mw|tag-editcheck-paste-shown}}", "tag-visualeditor": "Short description of the visualeditor tag. Do not translate the link target, but do translate the words \"Visual edit\".\n\nShown on lists of changes (history, recentchanges, etc.) for each edit made using VisualEditor.\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck}}\n{{Related|Tag-visualeditor}}\n{{Identical|VisualEditor}}", "tag-visualeditor-description": "Long description of the visualeditor tag ({{msg-mw|Tag-visualeditor}}).\n\nShown on [[Special:Tags]].\n\nRefers to {{msg-mw|Visualeditor-descriptionpagelink}}.\n\nSee also:\n* {{msg-mw|Tag-visualeditor-needcheck-description}}\n{{Related|Tag-visualeditor}}", "tag-visualeditor-helppage": "{{notranslate}}\nHelp link for the tag {{msg-mw|tag-visualeditor}}. Uses {{msg-mw|visualeditor-descriptionpagelink}}", diff --git a/includes/Hooks.php b/includes/Hooks.php index 1df35ef816..5096d02381 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -105,6 +105,7 @@ class Hooks implements 'editcheck-newreference', 'editcheck-tone', 'editcheck-tone-shown', + 'editcheck-paste-shown', // No longer in active use: 'editcheck-references-activated', 'editcheck-reference-decline-common-knowledge', From 9f6b6cb189dbf3e9ae34f01630c3eb630bb648aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Dziewo=C5=84ski?= Date: Tue, 9 Sep 2025 01:50:30 +0200 Subject: [PATCH 585/730] Fix new PHPCS exception Follow-up to ab01538e75d275980799f2472f50c6236b774b0b. Change-Id: I4d94b983db279663c5b8e3c15bfd716fc37a10b2 --- .phpcs.xml | 4 +--- .../VisualEditorApiVisualEditorEditPostSaveHook.php | 13 +++++-------- .../VisualEditorApiVisualEditorEditPreSaveHook.php | 13 +++++-------- includes/VisualEditorBeforeEditorHook.php | 13 +++++-------- 4 files changed, 16 insertions(+), 27 deletions(-) diff --git a/.phpcs.xml b/.phpcs.xml index a92a3a2654..304acc8b34 100644 --- a/.phpcs.xml +++ b/.phpcs.xml @@ -1,8 +1,6 @@ - - - + 5 diff --git a/includes/VisualEditorApiVisualEditorEditPostSaveHook.php b/includes/VisualEditorApiVisualEditorEditPostSaveHook.php index b08b213116..e162ff8f84 100644 --- a/includes/VisualEditorApiVisualEditorEditPostSaveHook.php +++ b/includes/VisualEditorApiVisualEditorEditPostSaveHook.php @@ -1,19 +1,16 @@ Date: Mon, 1 Sep 2025 15:27:52 +0100 Subject: [PATCH 586/730] Fix bug where clicking radio in Paste Check breaks surface We don't unbind the keyboard listener on the radio select if it is never blurred, and this causes it to swallow certain keyboard events on the surface. Bug: T402671 Change-Id: I573b5ed29d54867dd7aff67dfa0fc21e28a07c08 --- editcheck/modules/EditCheckActionWidget.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editcheck/modules/EditCheckActionWidget.js b/editcheck/modules/EditCheckActionWidget.js index 798bdb5228..738b49e7eb 100644 --- a/editcheck/modules/EditCheckActionWidget.js +++ b/editcheck/modules/EditCheckActionWidget.js @@ -189,6 +189,9 @@ mw.editcheck.EditCheckActionWidget.prototype.showFeedback = function ( data ) { ve.track( 'activity.editCheck-' + this.name, { action: 'edit-check-feedback-shown' } ); return deferred.promise().always( () => { + // HACK: This causes the answerRadioSelect.onDocumentKeyDownHandler to be unbound + // Otherwise, it'll swallow certain key events (arrow keys, enter, pagedown/up) forever. + answerRadioSelect.$element.blur(); form.$element.remove(); this.feedbackDeferred = null; } ); From 61bf1b8aca739f61936c9a9d9f409111a4545795 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 5 Sep 2025 14:02:35 +0100 Subject: [PATCH 587/730] Only allow specific checks to become stale At the moment, most checks are re-evaluated too quickly and marking them as style just results in flickering. Bug: T401907 Change-Id: I860103485c627e896a77714bda4bd20fe8b89c9d --- editcheck/modules/EditCheckAction.js | 8 +++++--- editcheck/modules/editchecks/AsyncTextCheck.js | 2 ++ editcheck/modules/editchecks/BaseEditCheck.js | 11 +++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/EditCheckAction.js b/editcheck/modules/EditCheckAction.js index 537606e446..8a17086ac5 100644 --- a/editcheck/modules/EditCheckAction.js +++ b/editcheck/modules/EditCheckAction.js @@ -236,9 +236,11 @@ mw.editcheck.EditCheckAction.prototype.setStale = function ( stale ) { * @return {boolean} Whether the text has changed since this action was created */ mw.editcheck.EditCheckAction.prototype.isStale = function () { - return !this.originalText || !OO.compare( - this.originalText, - this.fragments.map( ( fragment ) => fragment.getText() ) + return this.check.canBeStale() && ( + !this.originalText || !OO.compare( + this.originalText, + this.fragments.map( ( fragment ) => fragment.getText() ) + ) ); }; diff --git a/editcheck/modules/editchecks/AsyncTextCheck.js b/editcheck/modules/editchecks/AsyncTextCheck.js index e722942ee2..7be7262137 100644 --- a/editcheck/modules/editchecks/AsyncTextCheck.js +++ b/editcheck/modules/editchecks/AsyncTextCheck.js @@ -37,6 +37,8 @@ OO.inheritClass( mw.editcheck.AsyncTextCheck, mw.editcheck.BaseEditCheck ); mw.editcheck.AsyncTextCheck.static.name = null; +mw.editcheck.AsyncTextCheck.static.canBeStale = true; + /** * This static method gets implemented inside the AsyncTextCheck constructor. It * memoizes the subclass's static method `checkAsync`. diff --git a/editcheck/modules/editchecks/BaseEditCheck.js b/editcheck/modules/editchecks/BaseEditCheck.js index 13586708e3..9e7fafe4d9 100644 --- a/editcheck/modules/editchecks/BaseEditCheck.js +++ b/editcheck/modules/editchecks/BaseEditCheck.js @@ -48,6 +48,8 @@ mw.editcheck.BaseEditCheck.static.title = ve.msg( 'editcheck-review-title' ); mw.editcheck.BaseEditCheck.static.description = ve.msg( 'editcheck-dialog-addref-description' ); +mw.editcheck.BaseEditCheck.static.canBeStale = false; + /* Methods */ /** @@ -59,6 +61,15 @@ mw.editcheck.BaseEditCheck.prototype.getName = function () { return this.constructor.static.name; }; +/** + * Check if the edit check can be stale + * + * @return {boolean} + */ +mw.editcheck.BaseEditCheck.prototype.canBeStale = function () { + return this.constructor.static.canBeStale; +}; + /** * Get actions to show before save * From d53d685a8cc1054e1bfe338571dcf669de4d4a73 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 18 Jul 2025 11:51:04 +0100 Subject: [PATCH 588/730] Use LabelToolGroup for pre-save toolbar Bug: T398698 Depends-On: Ie0ef338d033ce279af7a1388c3d58a93e9266eeb Change-Id: I63af6cb0b91a7266854cb57ce0ae85668fe2fe76 --- editcheck/modules/controller.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 59d7682d1c..5dd9a99760 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -623,12 +623,10 @@ Controller.prototype.setupToolbar = function ( target ) { type: 'bar', include: [ 'editCheckBack' ] }, - // Placeholder toolbar groups - // TODO: Make a proper TitleTool? { name: 'title', - type: 'bar', - include: [] + type: 'label', + label: ve.msg( 'editcheck-dialog-title' ) }, { name: 'save', @@ -638,9 +636,6 @@ Controller.prototype.setupToolbar = function ( target ) { ], surface ); reviewToolbar.items[ 1 ].$element.removeClass( 'oo-ui-toolGroup-empty' ); - reviewToolbar.items[ 1 ].$group.append( - $( '' ).addClass( 've-ui-editCheck-toolbar-title' ).text( ve.msg( 'editcheck-dialog-title' ) ) - ); // Just append the $group of the new toolbar, so we don't have to wire up all the toolbar events. this.$reviewToolbarGroup = reviewToolbar.$group.addClass( 've-ui-editCheck-toolbar-tools' ); toolbar.$group.after( this.$reviewToolbarGroup ); From f2d053ea995344bf2912cd75f419e96afb901ae4 Mon Sep 17 00:00:00 2001 From: "Amir E. Aharoni" Date: Fri, 15 Aug 2025 16:57:12 +0300 Subject: [PATCH 589/730] Change "reload page" to "refresh" in a message Most MediaWiki core and extensions messages use the word "refresh" for this. Change-Id: I49903c14baf89c9b625568f79e1d9e1f75096670 --- i18n/ve-mw/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/ve-mw/en.json b/i18n/ve-mw/en.json index 3f62de61d5..25a2542e7f 100644 --- a/i18n/ve-mw/en.json +++ b/i18n/ve-mw/en.json @@ -376,7 +376,7 @@ "visualeditor-template-tools-definition.json": "null", "visualeditor-templatesused-tool": "Templates used", "visualeditor-title-error": "Invalid title.", - "visualeditor-toload": "The editor will now load. If you still see this message after a few seconds, please [$1 reload the page].", + "visualeditor-toload": "The editor will now load. If you still see this message after a few seconds, please [$1 refresh the page].", "visualeditor-tooltip-non-breaking-space": "Non-breaking space", "visualeditor-version-label": "Version", "visualeditor-wikitext-progress": "Converting wikitext", From 43d3392f7ee88fd8e251a16e5448b9e2cb1a522f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 9 Sep 2025 13:02:45 +0100 Subject: [PATCH 590/730] Correctly turn off alignToTop on mobile scrollActionIntoView has two arguments, not three. Change-Id: Ifaadc235319dbe7842d7f91b7836913bd47e322a --- editcheck/modules/controller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 5dd9a99760..3540caca14 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -420,7 +420,7 @@ Controller.prototype.onPosition = function ( passive ) { this.updatePositionsDebounced(); if ( !passive && this.getActions().length && this.focusedAction && this.surface.getView().reviewMode ) { - this.scrollActionIntoViewDebounced( this.focusedAction, true, !OO.ui.isMobile() ); + this.scrollActionIntoViewDebounced( this.focusedAction, !OO.ui.isMobile() ); } }; From 0fb732d41f413fda867cc15f7bba52ceb094d2fa Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 9 Sep 2025 13:10:57 +0100 Subject: [PATCH 591/730] Manually scroll check into view when entering pre-save This used to work due to the toolbar emitting a position event, but since I33dcb6bbe that event has been passive so it is ignored by EditCheck. Bug: T404069 Change-Id: I3f8cd6d7c85d99d6b7dc162c11ce3282b106e8b2 --- editcheck/modules/controller.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 3540caca14..0cea9f37f8 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -554,6 +554,9 @@ Controller.prototype.setupPreSaveProcess = function () { .then( ( instance ) => { ve.track( 'activity.editCheckDialog', { action: 'window-open-from-check-presave' } ); this.updateShownStats( actions, 'presave' ); + + this.scrollActionIntoViewDebounced( this.focusedAction, true ); + instance.closed.then( () => {}, () => {} ).then( () => { surface.getView().setReviewMode( false ); this.inBeforeSave = false; From 96ef4b961fd32028bc7ff14b9cf64cf762ecdc42 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 10 Sep 2025 09:27:09 +0200 Subject: [PATCH 592/730] Localisation updates from https://translatewiki.net. Change-Id: Ie4b23bcb8aea50d30dd50a5169c44c50db7677cd --- i18n/ve-mw/de.json | 2 +- i18n/ve-wmf/az.json | 2 ++ i18n/ve-wmf/de.json | 2 ++ i18n/ve-wmf/fi.json | 2 ++ i18n/ve-wmf/gl.json | 2 ++ i18n/ve-wmf/he.json | 2 ++ i18n/ve-wmf/mk.json | 3 +++ i18n/ve-wmf/nl.json | 2 ++ i18n/ve-wmf/tr.json | 2 ++ 9 files changed, 18 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/de.json b/i18n/ve-mw/de.json index c80c93516c..cc0dbbda6d 100644 --- a/i18n/ve-mw/de.json +++ b/i18n/ve-mw/de.json @@ -374,7 +374,7 @@ "visualeditor-special-characters-group-other": "Oft verwendet", "visualeditor-templatesused-tool": "Verwendete Vorlagen", "visualeditor-title-error": "Ungültiger Titel.", - "visualeditor-toload": "Der Editor wird jetzt geladen. Wenn du diese Meldung nach einigen Sekunden noch siehst, [$1 lade bitte die Seite] neu.", + "visualeditor-toload": "Der Editor wird jetzt geladen. Wenn diese Meldung nach einigen Sekunden noch siehst, [$1 bitte aktualisiere die Seite].", "visualeditor-tooltip-non-breaking-space": "Nicht umbrechendes Leerzeichen", "visualeditor-version-label": "Version", "visualeditor-wikitext-progress": "Konvertiere Wikitext", diff --git a/i18n/ve-wmf/az.json b/i18n/ve-wmf/az.json index 09c0061b81..f829488238 100644 --- a/i18n/ve-wmf/az.json +++ b/i18n/ve-wmf/az.json @@ -21,6 +21,8 @@ "tag-editcheck-tone-description": "EditCheck əlavə edilən bəzi məzmunun tonunda potensial problem aşkarladı", "tag-editcheck-tone-shown": "Redaktə Yoxlanışı (ton) göstərildi", "tag-editcheck-tone-shown-description": "EditCheck hesab edib ki, bəzi məzmunun tonuna düzəliş lazım ola bilər və buna görə də müvafiq interfeysi göstərib", + "tag-editcheck-paste-shown": "Redaktə Yoxlanışı (yapışdırma) göstərildi", + "tag-editcheck-paste-shown-description": "EditCheck redaktorun yapışdırdığı məzmunla bağlı aydınlıq gətirməsini istədi, sonra həmin məzmun silindi və ya icazəli olduğu təsdiqləndi.", "tag-visualeditor": "Vizual redaktə", "tag-visualeditor-description": "Redaktə [[{{MediaWiki:visualeditor-descriptionpagelink}}|Vizual redaktorun]] köməyi ilə edilib", "tag-visualeditor-needcheck": "Vizual redaktor: Yoxla", diff --git a/i18n/ve-wmf/de.json b/i18n/ve-wmf/de.json index e695235acb..4bbab88e17 100644 --- a/i18n/ve-wmf/de.json +++ b/i18n/ve-wmf/de.json @@ -26,6 +26,8 @@ "tag-editcheck-tone-description": "EditCheck hat ein potenzielles Problem mit dem Tonfall einiger hinzugefügter Inhalte festgestellt", "tag-editcheck-tone-shown": "EditCheck (Tonfall) angezeigt", "tag-editcheck-tone-shown-description": "EditCheck meint, dass eine Anpassung des Tonfalls in einigen Inhalten nötig gewesen wäre, und die Benutzeroberfläche wurde angezeigt", + "tag-editcheck-paste-shown": "Bearbeitungsprüfung (Einfügen) angezeigt", + "tag-editcheck-paste-shown-description": "Die Bearbeitungsprüfung bat um Klarstellung über den Inhalt, den der Benutzer eingefügt hat, der dann entweder entfernt oder als zulässig bestätigt wurde", "tag-visualeditor": "Visuelle Bearbeitung", "tag-visualeditor-description": "Bearbeitungen, die mit dem [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuellen Editor]] ausgeführt wurden.", "tag-visualeditor-needcheck": "Visuelle Bearbeitung: Überprüfung", diff --git a/i18n/ve-wmf/fi.json b/i18n/ve-wmf/fi.json index 9d08e3f617..6b11fe7e7a 100644 --- a/i18n/ve-wmf/fi.json +++ b/i18n/ve-wmf/fi.json @@ -28,6 +28,8 @@ "tag-editcheck-tone-description": "EditCheck havaitsi mahdollisen ongelman lisätyn sisällön sävyssä.", "tag-editcheck-tone-shown": "Muokkaustarkistin (sävy) näytetty", "tag-editcheck-tone-shown-description": "Muokkaustarkistimen mukaan sisällön sävyä olisi ehkä ollut tarpeen kohentaa, ja käyttöliittymä näytettiin", + "tag-editcheck-paste-shown": "Muokkaustarkistin (liittäminen) näytetty", + "tag-editcheck-paste-shown-description": "Muokkaustarkistin kysyi selvennystä muokkaajan liittämästä sisällöstä. Sisältö joko postettiin tai vahvistettiin sallituksi", "tag-visualeditor": "Visuaalinen muokkaus", "tag-visualeditor-description": "Muutos tehtiin [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuaalisella muokkaimella]]", "tag-visualeditor-needcheck": "Visuaalinen muokkaus: Tarkista", diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index caadf4ce85..10881b5c29 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -18,6 +18,8 @@ "tag-editcheck-tone-description": "EditCheck detectou un posible problema co ton dalgúns contidos engadidos", "tag-editcheck-tone-shown": "Verificación de modificacións (ton) amosada", "tag-editcheck-tone-shown-description": "EditCheck cre que podería ser necesario axustar o ton dalgúns contidos e mostrou a interface de usuario", + "tag-editcheck-paste-shown": "Verificación de modificacións (pegar) amosada", + "tag-editcheck-paste-shown-description": "EditCheck solicitou unha aclaración sobre o contido que o editor pegou e que logo foi eliminado ou confirmado como admisible", "tag-visualeditor": "Edición visual", "tag-visualeditor-description": "Edición feita mediante o [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: Comprobar", diff --git a/i18n/ve-wmf/he.json b/i18n/ve-wmf/he.json index 8ac75210ee..aef781e5d2 100644 --- a/i18n/ve-wmf/he.json +++ b/i18n/ve-wmf/he.json @@ -27,6 +27,8 @@ "tag-editcheck-tone-description": "מערכת בדיקת עריכה זיהתה בעיה אפשרית בנימה של תוכן שנוסף", "tag-editcheck-tone-shown": "הוצגה הודעה של בדיקת עריכה (נימה)", "tag-editcheck-tone-shown-description": "מערכת בדיקת עריכה חושבת שאולי היה נחוץ תיקון בנימה של חלק מהתוכן והוצג ממשק המשתמש של זה", + "tag-editcheck-paste-shown": "הוצגהה הודעה של מערכת בדיקת עריכה (הדבקה)", + "tag-editcheck-paste-shown-description": "מערכת בדיקת עריכה בקישה הבהרה על תוכן שהעורך הדביק, שלאחר מכן הוסר או אושר בתור קביל", "tag-visualeditor": "עריכה חזותית", "tag-visualeditor-description": "עריכה שנעשתה באמצעות [[{{MediaWiki:visualeditor-descriptionpagelink}}|העורך החזותי]]", "tag-visualeditor-needcheck": "עריכה חזותית: נא לבדוק", diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index e406803e37..d03447a38f 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -18,6 +18,8 @@ "tag-editcheck-tone-description": "EditCheck пронајде потенцијален проблем со тонот во додадената содржина", "tag-editcheck-tone-shown": "Прикажана проверката на уредувања (тон)", "tag-editcheck-tone-shown-description": "Проверката на уредувања смета дека може да е потребно прилагодување на тонот во некои содржини, и бил прикажан корисничкиот посредник", + "tag-editcheck-paste-shown": "Прикажана проверката на уредувања (прекопирано)", + "tag-editcheck-paste-shown-description": "Проверката на уредувања побарала појаснување за содржината што ја прекопирал уредникот, која потоа е отстранета или потврдена како дозволена", "tag-visualeditor": "Нагледно уредување", "tag-visualeditor-description": "Уредување направено со [[{{MediaWiki:visualeditor-descriptionpagelink}}|нагледниот уредник]]", "tag-visualeditor-needcheck": "Нагледен уредник: Проверка", @@ -29,6 +31,7 @@ "visualeditor-feedback-link": "Project:VisualEditor/Мислења", "visualeditor-feedback-tool": "Дајте мислење за програмов", "visualeditor-help-label": "Прочитајте го корисничкиот водич", + "visualeditor-help-link": "//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide", "visualeditor-welcomedialog-action": "Почнете со уредување", "visualeditor-welcomedialog-content": "Секој може да уредува и секое подобрување е корисно.", "visualeditor-welcomedialog-content-thanks": "Ви благодариме што му помогнавте на светот да осознае повеќе!", diff --git a/i18n/ve-wmf/nl.json b/i18n/ve-wmf/nl.json index ab09e0f5d6..27da14d33f 100644 --- a/i18n/ve-wmf/nl.json +++ b/i18n/ve-wmf/nl.json @@ -33,6 +33,8 @@ "tag-editcheck-tone-description": "EditCheck heeft een mogelijk probleem ontdekt met de toon van bepaalde toegevoegde inhoud", "tag-editcheck-tone-shown": "Bewerkingscontrole (toon) weergegeven", "tag-editcheck-tone-shown-description": "EditCheck denkt dat een aanpassing van de toon in bepaalde inhoud nodig was geweest, en de gebruikersinterface is weergegeven", + "tag-editcheck-paste-shown": "Bewerkingscontrole (plakken) weergegeven", + "tag-editcheck-paste-shown-description": "EditCheck vroeg om opheldering over de inhoud die de editor had geplakt, die vervolgens of werd verwijderd, of als toegestaan werd bevestigd", "tag-visualeditor": "Visuele tekstverwerker", "tag-visualeditor-description": "Bewerking gedaan met de [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuele tekstverwerker]]", "tag-visualeditor-needcheck": "Visuele tekstverwerker: nakijken", diff --git a/i18n/ve-wmf/tr.json b/i18n/ve-wmf/tr.json index ce1a1d40c5..03c318eac6 100644 --- a/i18n/ve-wmf/tr.json +++ b/i18n/ve-wmf/tr.json @@ -32,6 +32,8 @@ "tag-editcheck-tone-description": "EditCheck, eklenen bazı içeriğin tonuyla ilgili olası bir sorun belirledi", "tag-editcheck-tone-shown": "Düzenleme Kontrolü (üslup) gösterildi", "tag-editcheck-tone-shown-description": "DüzenlemeKontrolü, bazı içeriklerdeki üslup ayarlamalarının gerekli olabileceğini ve kullanıcı arayüzünün gösterildiğini düşünüyor", + "tag-editcheck-paste-shown": "Düzenleme Kontrolü (yapıştır) gösterildi", + "tag-editcheck-paste-shown-description": "EditCheck, düzenleyicinin yapıştırdığı ve daha sonra, kaldırılan ya da izin verilebilir olduğu onaylanan içerik hakkında açıklama istedi", "tag-visualeditor": "Görsel düzenleme", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|Görsel düzenleyiciyi]] kullanarak düzenleyin", "tag-visualeditor-needcheck": "Görsel düzenleme: Doğrula", From 26ce545c1fc629601ffb0c061b0545494454c5c3 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 10 Sep 2025 13:24:52 +0100 Subject: [PATCH 593/730] MWExtensionDialog: Load all messages correctly Bug: T404160 Change-Id: Ib9e5cce6f62d5eb64da8d23a75099ea370d366e1 --- extension.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/extension.json b/extension.json index 8dc536b3fd..825a1ea8ff 100644 --- a/extension.json +++ b/extension.json @@ -1206,7 +1206,6 @@ "oojs-ui.styles.icons-accessibility" ], "messages": [ - "visualeditor-dialog-extension-abandonedit", "visualeditor-editingtabdialog-body", "visualeditor-editingtabdialog-ok", "visualeditor-editingtabdialog-title", @@ -1338,6 +1337,9 @@ "visualeditor-dialog-table-collapsible", "visualeditor-dialog-table-sortable", "visualeditor-dialog-table-wikitable", + "visualeditor-dialog-extension-abandonedit", + "mw-widgets-abandonedit-keep", + "mw-widgets-abandonedit-discard", "visualeditor-editnotices-tool", "visualeditor-editnotices-tooltip", "visualeditor-educationpopup-dismiss", From b1d4cbe52151d6c491741bbd4152da2d4f5be7a1 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 10 Sep 2025 13:26:29 +0100 Subject: [PATCH 594/730] Move ooui-dialog-process-continue message to correct module Change-Id: I65d6882b4c1ce4fbe19e8b27d612c69a55848fde --- extension.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension.json b/extension.json index 825a1ea8ff..082ce8a2e2 100644 --- a/extension.json +++ b/extension.json @@ -876,6 +876,7 @@ "visualeditor-mweditmodeve-progress", "visualeditor-pagemenu-tooltip", "visualeditor-recreate", + "ooui-dialog-process-continue", "visualeditor-redirect-description", "visualeditor-savedialog-identify-anon", "visualeditor-savedialog-identify-temp", @@ -1331,7 +1332,6 @@ "oojs-ui.styles.icons-editing-advanced" ], "messages": [ - "ooui-dialog-process-continue", "toc", "visualeditor-dialog-table-collapsed", "visualeditor-dialog-table-collapsible", From 52640423463b3b283cd7f05e810cc3f10536256e Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 10 Sep 2025 15:19:34 +0100 Subject: [PATCH 595/730] Move ToneCheck out of /experimental Also, ToneCheck has been listed in the non-experimental RL module for a while, so we don't need to load .experimental to get it. Change-Id: I4badde52710cf7ef63a4bb983b707a28ecf854a7 --- .../{experimental => }/ToneCheck.js | 0 editcheck/modules/init.js | 27 +++++++++---------- extension.json | 2 +- 3 files changed, 14 insertions(+), 15 deletions(-) rename editcheck/modules/editchecks/{experimental => }/ToneCheck.js (100%) diff --git a/editcheck/modules/editchecks/experimental/ToneCheck.js b/editcheck/modules/editchecks/ToneCheck.js similarity index 100% rename from editcheck/modules/editchecks/experimental/ToneCheck.js rename to editcheck/modules/editchecks/ToneCheck.js diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index c2371752be..330cc67f66 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -14,6 +14,9 @@ mw.editcheck = { checksShown: {} }; +// Checks which are loaded for logging but shouldn't show by default yet +const nonDefaultChecks = new Set(); + require( './utils.js' ); require( './EditCheckPreSaveToolbarTools.js' ); require( './EditCheckFactory.js' ); @@ -27,23 +30,19 @@ require( './dialogs/GutterSidebarEditCheckDialog.js' ); require( './editchecks/BaseEditCheck.js' ); require( './editchecks/AsyncTextCheck.js' ); require( './editchecks/AddReferenceEditCheck.js' ); +require( './editchecks/ToneCheck.js' ); +nonDefaultChecks.add( 'tone' ); if ( mw.editcheck.experimental ) { mw.loader.using( 'ext.visualEditor.editCheck.experimental' ); -} else { - if ( !abCheck || ( abCheck === 'tone' && abGroup === 'control' ) ) { - // Load Tone check regardless for tagging - require( './editchecks/experimental/ToneCheck.js' ); - mw.editcheck.editCheckFactory.unregister( mw.editcheck.ToneCheck ); - } else if ( abCheck && abGroup === 'test' ) { - mw.loader.using( 'ext.visualEditor.editCheck.experimental' ).then( () => { - [ 'tone', 'paste', 'convertReference', 'disambiguation', 'externalLink', 'textMatch' ].forEach( ( name ) => { - if ( name !== abCheck ) { - mw.editcheck.editCheckFactory.unregister( name ); - } - } ); - } ); - } + nonDefaultChecks.clear(); +} +if ( abGroup === 'test' ) { + nonDefaultChecks.delete( abCheck ); +} + +for ( const check of nonDefaultChecks ) { + mw.editcheck.editCheckFactory.unregister( check ); } const isMainNamespace = mw.config.get( 'wgNamespaceNumber' ) === mw.config.get( 'wgNamespaceIds' )[ '' ]; diff --git a/extension.json b/extension.json index 082ce8a2e2..7a2b56802b 100644 --- a/extension.json +++ b/extension.json @@ -640,7 +640,7 @@ "editcheck/modules/editchecks/BaseEditCheck.js", "editcheck/modules/editchecks/AsyncTextCheck.js", "editcheck/modules/editchecks/AddReferenceEditCheck.js", - "editcheck/modules/editchecks/experimental/ToneCheck.js", + "editcheck/modules/editchecks/ToneCheck.js", { "name": "editcheck/modules/config.json", "callback": "\\MediaWiki\\Extension\\VisualEditor\\EditCheck\\ResourceLoaderData::getConfig" From aab489eb459bc72d5744c7eb116cf21e28ed7db5 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 11 Sep 2025 09:50:49 +0200 Subject: [PATCH 596/730] Localisation updates from https://translatewiki.net. Change-Id: I006191d218a77674872301e048342799366d1bc1 --- editcheck/i18n/fr.json | 3 ++- i18n/ve-mw/ar.json | 2 +- i18n/ve-mw/fr.json | 1 + i18n/ve-mw/gl.json | 2 +- i18n/ve-mw/ia.json | 2 +- i18n/ve-mw/it.json | 2 +- i18n/ve-mw/lb.json | 2 +- i18n/ve-mw/nl.json | 2 +- i18n/ve-mw/sr-ec.json | 2 +- i18n/ve-mw/zh-hans.json | 2 +- i18n/ve-wmf/ar.json | 2 ++ i18n/ve-wmf/fr.json | 3 +++ i18n/ve-wmf/ia.json | 2 ++ i18n/ve-wmf/mk.json | 1 - i18n/ve-wmf/ne.json | 1 - 15 files changed, 18 insertions(+), 11 deletions(-) diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index a3d5fff1d3..aa74a1f183 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -2,6 +2,7 @@ "@metadata": { "authors": [ "Derugon", + "Escargot bleu", "Gomoko", "JLTRY", "Mahabarata", @@ -45,7 +46,7 @@ "editcheck-tone-reject-appropriate": "Le ton est approprié", "editcheck-tone-reject-uncertain": "Je ne sais pas comment réviser le ton.", "editcheck-tone-reject-other": "Autre", - "editcheck-tone-thank": "Merci d’avoir révisé le ton !", + "editcheck-tone-thank": "Merci d’avoir réfléchi au ton !", "editcheck-reject-description": "D'autres rédacteurs apprécieront d'apprendre pourquoi vous avez fait ce choix.", "editcheck-review-title": "Relire les modifications", "tag-editcheck-reference-decline-common-knowledge": "Vérification de modification (références) refusée (savoir commun)", diff --git a/i18n/ve-mw/ar.json b/i18n/ve-mw/ar.json index e73b3f1a07..1180f815b4 100644 --- a/i18n/ve-mw/ar.json +++ b/i18n/ve-mw/ar.json @@ -387,7 +387,7 @@ "visualeditor-special-characters-group-other": "مستخدمة عادة", "visualeditor-templatesused-tool": "القوالب المستخدمة", "visualeditor-title-error": "عنوان غير صحيح.", - "visualeditor-toload": "المحرر سيُحمَّل الآن. إذا كنت لا تزال ترى هذه الرسالة بعد بضع ثوان، يرجى [$1 إعادة تحميل الصفحة].", + "visualeditor-toload": "سيتم تحميل المحرر الآن. إذا استمرت هذه الرسالة بالظهور بعد ثوان قليلة، يُرجى [$1 تحديث الصفحة].", "visualeditor-tooltip-non-breaking-space": "مسافة غير منقسمة", "visualeditor-version-label": "نسخة", "visualeditor-wikitext-progress": "جار تحويل نص الويكي", diff --git a/i18n/ve-mw/fr.json b/i18n/ve-mw/fr.json index 36c53fc2d1..f4b3c3058a 100644 --- a/i18n/ve-mw/fr.json +++ b/i18n/ve-mw/fr.json @@ -15,6 +15,7 @@ "Drongou", "Elitre", "Eneelk", + "Escargot bleu", "Gomoko", "Guillom", "Harmonia Amanda", diff --git a/i18n/ve-mw/gl.json b/i18n/ve-mw/gl.json index c52203a31b..9173525f7d 100644 --- a/i18n/ve-mw/gl.json +++ b/i18n/ve-mw/gl.json @@ -361,7 +361,7 @@ "visualeditor-special-characters-group-other": "Usado frecuentemente", "visualeditor-templatesused-tool": "Modelos usados", "visualeditor-title-error": "Título non válido.", - "visualeditor-toload": "O editor estase a cargar nestes momentos. Se aínda ves esta mensaxe tras uns poucos segundos, [$1 recarga a páxina].", + "visualeditor-toload": "O editor estase a cargar nestes momentos. Se aínda ves esta mensaxe tras uns poucos segundos, [$1 actualiza a páxina].", "visualeditor-tooltip-non-breaking-space": "Espazo inseparable", "visualeditor-version-label": "Versión", "visualeditor-wikitext-progress": "Convertendo o texto wiki", diff --git a/i18n/ve-mw/ia.json b/i18n/ve-mw/ia.json index 491b2be913..ea8fd81a19 100644 --- a/i18n/ve-mw/ia.json +++ b/i18n/ve-mw/ia.json @@ -349,7 +349,7 @@ "visualeditor-special-characters-group-other": "Sovente usate", "visualeditor-templatesused-tool": "Patronos usate", "visualeditor-title-error": "Titulo invalide.", - "visualeditor-toload": "Le editor se carga ora. Si tu vide ancora iste message post poc secundas, per favor [$1 recarga le pagina].", + "visualeditor-toload": "Le editor se carga ora. Si tu vide ancora iste message post poc secundas, per favor [$1 refresca le pagina].", "visualeditor-tooltip-non-breaking-space": "Spatio insecabile", "visualeditor-version-label": "Version", "visualeditor-wikitext-progress": "Conversion de wikitexto", diff --git a/i18n/ve-mw/it.json b/i18n/ve-mw/it.json index 6d138d9576..517ee843dc 100644 --- a/i18n/ve-mw/it.json +++ b/i18n/ve-mw/it.json @@ -348,7 +348,7 @@ "visualeditor-special-characters-group-other": "Usato spesso", "visualeditor-templatesused-tool": "Template utilizzati", "visualeditor-title-error": "Titolo non valido.", - "visualeditor-toload": "Verrà caricato l'editor. Se vedi ancora questo messaggio dopo alcuni secondi, [$1 ricarica la pagina].", + "visualeditor-toload": "Verrà caricato l'editor. Se vedi ancora questo messaggio dopo alcuni secondi, [$1 aggiorna la pagina].", "visualeditor-tooltip-non-breaking-space": "Spazio unificatore", "visualeditor-version-label": "Versione", "visualeditor-wikitext-progress": "Conversione wikitesto", diff --git a/i18n/ve-mw/lb.json b/i18n/ve-mw/lb.json index b9b0d2a219..ca922b8686 100644 --- a/i18n/ve-mw/lb.json +++ b/i18n/ve-mw/lb.json @@ -322,7 +322,7 @@ "visualeditor-special-characters-group-other": "Dacks benotzt", "visualeditor-templatesused-tool": "Benotzt Schablounen", "visualeditor-title-error": "Net valabelen Titel.", - "visualeditor-toload": "Den Editeur gëtt elo gelueden. Wann Dir dëse Message no e puer Sekonnen nach gesitt, da [$1 luet d'Säit wgl. nach eng Kéier].", + "visualeditor-toload": "Den Editeur gëtt elo gelueden. Wann Dir dëse Message no e puer Sekonnen nach gesitt, da [$1 luet d'Säit wgl. nei].", "visualeditor-tooltip-non-breaking-space": "Espace ouni Zeilenëmbroch", "visualeditor-version-label": "Versioun", "visualeditor-wikitext-progress": "Wikitext ëmwandelen", diff --git a/i18n/ve-mw/nl.json b/i18n/ve-mw/nl.json index e97894c8ec..c98e179ff3 100644 --- a/i18n/ve-mw/nl.json +++ b/i18n/ve-mw/nl.json @@ -393,7 +393,7 @@ "visualeditor-special-characters-group-other": "Vaak gebruikt", "visualeditor-templatesused-tool": "Gebruikte sjablonen", "visualeditor-title-error": "Ongeldige paginanaam.", - "visualeditor-toload": "De tekstverwerker wordt nu geladen. Als u dit bericht na een paar seconden nog steeds ziet, [$1 herlaad de pagina].", + "visualeditor-toload": "De editor wordt nu geladen. Als u dit bericht na een paar seconden nog ziet, kunt u [$1 de pagina vernieuwen].", "visualeditor-tooltip-non-breaking-space": "harde spatie", "visualeditor-version-label": "Versie", "visualeditor-wikitext-progress": "Wikitekst aan het omzetten", diff --git a/i18n/ve-mw/sr-ec.json b/i18n/ve-mw/sr-ec.json index b135fe323c..0264198859 100644 --- a/i18n/ve-mw/sr-ec.json +++ b/i18n/ve-mw/sr-ec.json @@ -335,7 +335,7 @@ "visualeditor-special-characters-group-other": "Често коришћени", "visualeditor-templatesused-tool": "Коришћени шаблони", "visualeditor-title-error": "Неважећи наслов.", - "visualeditor-toload": "Уређивач ће се сада учитати. Ако и даље видите ову поруку након неколико секунди, [$1 поново учитајте страницу].", + "visualeditor-toload": "Уређивач ће се сада учитати. Ако и даље видите ову поруку након неколико секунди, [$1 освежите страницу].", "visualeditor-tooltip-non-breaking-space": "Непреломни размак", "visualeditor-version-label": "Верзија", "visualeditor-wikitext-progress": "Претварање викитекста", diff --git a/i18n/ve-mw/zh-hans.json b/i18n/ve-mw/zh-hans.json index 5922f4ca00..8f7fcbcd6c 100644 --- a/i18n/ve-mw/zh-hans.json +++ b/i18n/ve-mw/zh-hans.json @@ -402,7 +402,7 @@ "visualeditor-special-characters-group-other": "常用", "visualeditor-templatesused-tool": "使用的模板", "visualeditor-title-error": "无效标题。", - "visualeditor-toload": "现在将加载编辑器。如果您在几秒钟后仍然看见这条消息,请[$1 重新加载]页面。", + "visualeditor-toload": "现在将加载编辑器。如果您在几秒钟后仍然看见这条消息,请[$1 刷新页面]。", "visualeditor-tooltip-non-breaking-space": "不换行空格", "visualeditor-version-label": "版本", "visualeditor-wikitext-progress": "正在转换为wikitext", diff --git a/i18n/ve-wmf/ar.json b/i18n/ve-wmf/ar.json index 93550d31bd..3ed38e179b 100644 --- a/i18n/ve-wmf/ar.json +++ b/i18n/ve-wmf/ar.json @@ -30,6 +30,8 @@ "tag-editcheck-tone-description": "اكتشف EditCheck وجود مشكلة محتملة في نغمة بعض المحتوى المضاف", "tag-editcheck-tone-shown": "تم عرض علامة التحرير (النغمة)", "tag-editcheck-tone-shown-description": "يعتقد EditCheck أنه قد يكون من الضروري إجراء تعديل على النغمة في بعض المحتوى، وقد تم عرض واجهة المستخدم", + "tag-editcheck-paste-shown": "تم عرض تعديل الاختيار (اللصق)", + "tag-editcheck-paste-shown-description": "طلب EditCheck توضيحًا بشأن المحتوى الذي قام المحرر بلصقه، والذي تمت إزالته بعد ذلك أو تأكيد أنه مسموح به", "tag-visualeditor": "تحرير مرئي", "tag-visualeditor-description": "تم التعديل باستخدام [[{{MediaWiki:visualeditor-descriptionpagelink}}|المحرر المرئي]]", "tag-visualeditor-needcheck": "المحرر المرئي: تحقق", diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index 7054519223..6db5d015f9 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -10,6 +10,7 @@ "DavidL", "Dereckson", "Derugon", + "Escargot bleu", "Framafan", "Gomoko", "Guillom", @@ -51,6 +52,8 @@ "tag-editcheck-tone-description": "EditCheck a détecté un problème potentiel avec le ton de certains contenus ajoutés", "tag-editcheck-tone-shown": "Modifier la vérification (tonalité) affichée", "tag-editcheck-tone-shown-description": "EditCheck pense qu'un ajustement du ton de certains contenus aurait pu être nécessaire, et l'interface utilisateur a été affichée", + "tag-editcheck-paste-shown": "Vérification des modifications (copier-coller) affichée", + "tag-editcheck-paste-shown-description": "La vérification des modifications a demandé des éclaircissements sur le contenu collé par l'éditeur, que celui-ci a supprimé ou jugé comme étant autorisé.", "tag-visualeditor": "Éditeur visuel", "tag-visualeditor-description": "Modification effectuée avec l'[[{{MediaWiki:visualeditor-descriptionpagelink}}|éditeur visuel]]", "tag-visualeditor-needcheck": "Éditeur visuel : à vérifier", diff --git a/i18n/ve-wmf/ia.json b/i18n/ve-wmf/ia.json index 5cbb89ad06..cdc4596ae0 100644 --- a/i18n/ve-wmf/ia.json +++ b/i18n/ve-wmf/ia.json @@ -14,6 +14,8 @@ "tag-editcheck-tone-description": "EditCheck ha detegite un problema potential con le tono de certe contento addite", "tag-editcheck-tone-shown": "Verification de modification (tono) monstrate", "tag-editcheck-tone-shown-description": "EditCheck pensa que un adjustamento del tono in alcun contento poterea haber essite necessari, e le interfacie de usator ha essite monstrate", + "tag-editcheck-paste-shown": "Verification de modification (collamento) monstrate", + "tag-editcheck-paste-shown-description": "EditCheck ha demandate un clarification sur contento que le redactor ha collate, le qual ha posteriormente essite o removite o affirmate como admissibile", "tag-visualeditor": "Modification visual", "tag-visualeditor-description": "Modification facite con le [[{{MediaWiki:visualeditor-descriptionpagelink}}|editor visual]]", "tag-visualeditor-needcheck": "Editor visual: a verificar", diff --git a/i18n/ve-wmf/mk.json b/i18n/ve-wmf/mk.json index d03447a38f..292f5616a3 100644 --- a/i18n/ve-wmf/mk.json +++ b/i18n/ve-wmf/mk.json @@ -31,7 +31,6 @@ "visualeditor-feedback-link": "Project:VisualEditor/Мислења", "visualeditor-feedback-tool": "Дајте мислење за програмов", "visualeditor-help-label": "Прочитајте го корисничкиот водич", - "visualeditor-help-link": "//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide", "visualeditor-welcomedialog-action": "Почнете со уредување", "visualeditor-welcomedialog-content": "Секој може да уредува и секое подобрување е корисно.", "visualeditor-welcomedialog-content-thanks": "Ви благодариме што му помогнавте на светот да осознае повеќе!", diff --git a/i18n/ve-wmf/ne.json b/i18n/ve-wmf/ne.json index ad2ccdfeb1..62f6af049a 100644 --- a/i18n/ve-wmf/ne.json +++ b/i18n/ve-wmf/ne.json @@ -24,7 +24,6 @@ "visualeditor-feedback-link": "परियोजना:दृश्य सम्पादक/पृष्ठपोषण", "visualeditor-feedback-tool": "यस सफ्टवेयरवारेका लागि सुझाव छोड्नुहोस्", "visualeditor-help-label": "प्रयोगकर्ता सहयाेगी पढ्नुहोस्", - "visualeditor-help-link": "//www.mediawiki.org/wiki/Special:MyLanguage/Help:VisualEditor/User_guide", "visualeditor-welcomedialog-action": "सम्पादन सुरु गर्नुहोस्", "visualeditor-welcomedialog-content": "जाे कोहीले पनि सम्पादन गर्न सक्दछन्, र हरेक सुधारले मद्दत गर्दछ।", "visualeditor-welcomedialog-content-thanks": "विश्वलाई अधिक पत्ता लगाउन मद्दत गर्नु भएकोमा धन्यवाद!", From 8314498ae162efb1319e013dbfc9e501022548c6 Mon Sep 17 00:00:00 2001 From: Caro Medelius Date: Mon, 25 Aug 2025 12:15:17 -0700 Subject: [PATCH 597/730] Load/save Display title correctly - Adds unwanted new line after saving display title Bug: T402322 Change-Id: I67a54930cf43d87507f47aca06861e8f33467ad3 --- .../metaitems/ve.dm.MWDisplayTitleMetaItem.js | 41 +++++++++++++++---- modules/ve-mw/tests/dm/ve.dm.mwExample.js | 16 ++++++++ 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js b/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js index a0d97960b2..6b8c4a37f1 100644 --- a/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js +++ b/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js @@ -28,12 +28,23 @@ ve.dm.MWDisplayTitleMetaItem.static.name = 'mwDisplayTitle'; ve.dm.MWDisplayTitleMetaItem.static.group = 'mwDisplayTitle'; -ve.dm.MWDisplayTitleMetaItem.static.matchTagNames = [ 'meta' ]; +ve.dm.MWDisplayTitleMetaItem.static.matchTagNames = [ 'span' ]; -ve.dm.MWDisplayTitleMetaItem.static.matchRdfaTypes = [ 'mw:PageProp/displaytitle' ]; +ve.dm.MWDisplayTitleMetaItem.static.matchRdfaTypes = [ 'mw:Transclusion' ]; + +ve.dm.MWDisplayTitleMetaItem.static.matchFunction = function ( domElement ) { + const mwDataJSON = domElement.getAttribute( 'data-mw' ), + mwData = mwDataJSON ? JSON.parse( mwDataJSON ) : {}; + return ve.getProp( mwData, 'parts', '0', 'template', 'target', 'function' ) === 'displaytitle' || + ve.getProp( mwData, 'parts', '0', 'parserfunction', 'target', 'key' ) === 'displaytitle'; +}; ve.dm.MWDisplayTitleMetaItem.static.toDataElement = function ( domElements ) { - const content = domElements[ 0 ].getAttribute( 'content' ); + const mwDataJSON = domElements[ 0 ].getAttribute( 'data-mw' ), + mwData = mwDataJSON ? JSON.parse( mwDataJSON ) : {}; + const wt = ( ve.getProp( mwData, 'parts', '0', 'template', 'target', 'wt' ) || '' ) || + ve.getProp( mwData, 'parts', '0', 'parserfunction', 'params', '1', 'wt' ); + const content = wt.replace( /^DISPLAYTITLE:/i, '' ); return { type: this.name, attributes: { @@ -43,10 +54,26 @@ ve.dm.MWDisplayTitleMetaItem.static.toDataElement = function ( domElements ) { }; ve.dm.MWDisplayTitleMetaItem.static.toDomElements = function ( dataElement, doc ) { - const meta = doc.createElement( 'meta' ); - meta.setAttribute( 'property', 'mw:PageProp/displaytitle' ); - meta.setAttribute( 'content', dataElement.attributes.content ); - return [ meta ]; + + const prefix = 'DISPLAYTITLE', + displayTitle = dataElement.attributes.content, + mwData = { + parts: [ + { + template: { + target: { + wt: prefix + ':' + displayTitle, + function: 'displaytitle' + } + } + } + ] + }; + + const span = doc.createElement( 'span' ); + span.setAttribute( 'typeof', 'mw:Transclusion' ); + span.setAttribute( 'data-mw', JSON.stringify( mwData ) ); + return [ span ]; }; /* Registration */ diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js b/modules/ve-mw/tests/dm/ve.dm.mwExample.js index d92a1ab119..683ec358ea 100644 --- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js +++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js @@ -2190,6 +2190,22 @@ ve.dm.mwExample.domToDataCases = { { type: '/internalList' } ] }, + 'display title': { + body: '', + data: [ + { + type: 'mwDisplayTitle', + attributes: { + content: 'foo' + } + }, + { type: '/mwDisplayTitle' }, + { type: 'paragraph', internal: { generated: 'empty' } }, + { type: '/paragraph' }, + { type: 'internalList' }, + { type: '/internalList' } + ] + }, 'thumb image': { body: ve.dm.mwExample.MWBlockImage.html, data: [ From 48ae19eebbf3ad6acb99c70a082ef83616fb564e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 12 Sep 2025 10:03:01 +0200 Subject: [PATCH 598/730] Localisation updates from https://translatewiki.net. Change-Id: Ie09d1b76fff5d5300d75bf3721ac37f8131a1b45 --- i18n/ve-mw/mg.json | 4 ++++ i18n/ve-mw/ru.json | 2 +- i18n/ve-wmf/mg.json | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/i18n/ve-mw/mg.json b/i18n/ve-mw/mg.json index 8ac401d493..bc8a576d53 100644 --- a/i18n/ve-mw/mg.json +++ b/i18n/ve-mw/mg.json @@ -8,6 +8,10 @@ "tooltip-ca-editsource": "Hanova ny fangon'ity pejy ty", "tooltip-ca-createsource": "Hamorona ny fangon'ity pejy ity", "visualeditor-advancedsettings-tool": "Safidy mandroso kokoa", + "visualeditor-annotations-extended-documentation": "Nohalavaina ity elanelana fanamarihana ity satria tsy voapetraka tsara ny votoaty nofefeny. Soso-kevitra ny hanamarinana fa voapetraka tsara ny votoaty voamarika alohan'ny hanovana azy; raha tsy izany, mety ho lehibe kokoa noho ny nampoizina ny elanelana voamarika.", + "visualeditor-autosave-modified-prompt-accept": "Hanohy ny fanovana", + "visualeditor-autosave-modified-prompt-message": "Nisy nanova ity pejy ity hatramin'ny nampidinanao azy farany. Tianao ve ny hanohy ny fanovanao tamin'ny kinova taloha, sa hanomboka fanovana vaovao amin'ny kinova farany indrindra?{{GENDER:}}", + "visualeditor-autosave-modified-prompt-reject": "Hanomboka fanovana vaovao", "visualeditor-ca-createlocaldescriptionsource": "Hanampy loharanom-pamaritana an-toerana", "visualeditor-ca-createsource": "Hamorona ny fango", "visualeditor-ca-editsource": "Hanova ny fango", diff --git a/i18n/ve-mw/ru.json b/i18n/ve-mw/ru.json index 51c450fdb8..638bbec65f 100644 --- a/i18n/ve-mw/ru.json +++ b/i18n/ve-mw/ru.json @@ -408,7 +408,7 @@ "visualeditor-special-characters-group-other": "Часто используемые", "visualeditor-templatesused-tool": "Использованные шаблоны", "visualeditor-title-error": "Ошибочное название.", - "visualeditor-toload": "Редактор сейчас загрузится. Если через несколько секунд вы будете по-прежнему видеть это сообщение, пожалуйста, [$1 перезагрузите страницу].", + "visualeditor-toload": "Редактор сейчас загрузится. Если через несколько секунд вы будете по-прежнему видеть это сообщение, [$1 обновите страницу].", "visualeditor-tooltip-non-breaking-space": "Неразрывный пробел", "visualeditor-version-label": "Версия", "visualeditor-wikitext-progress": "Преобразование вики-текста", diff --git a/i18n/ve-wmf/mg.json b/i18n/ve-wmf/mg.json index 97b503f9d3..721b44011a 100644 --- a/i18n/ve-wmf/mg.json +++ b/i18n/ve-wmf/mg.json @@ -4,6 +4,18 @@ "Jagwar" ] }, + "tag-editcheck-newcontent-description": "EditCheck dia mihevitra fa misy votoatiny vaovao nampiana tamin'ilay pejy", + "tag-editcheck-newreference-description": "Nisy tsiahy nampiana tamin'ilay pejy", + "tag-editcheck-references-description": "EditCheck dia mihevitra fa mety nisy tsiahy nampiana tamin'ilay pejy", + "tag-editcheck-references-activated": "Miasa ny mpanamarina fiovana (tsiahy)", + "tag-editcheck-references-activated-description": "Mihevitra ny EditCheck fa mety nilaina ny tsiahy, ary naseho ny UI", + "tag-editcheck-references-shown": "EditCheck (tsiahy) misehoS", + "tag-editcheck-references-shown-description": "EditCheck dia mihevitra fa mety ilaina ny fanondroana, ary naseho ny UI", + "tag-editcheck-tone-description": "Nahatsikaritra olana mety hitranga amin'ny fomba fitenin'ny votoaty nampiana sasany i EditCheck.", + "tag-editcheck-tone-shown": "Edit Check (fomba fiteny) naseho", + "tag-editcheck-tone-shown-description": "EditCheck dia mihevitra fa ny mety ilaina ny fanitsiana ny fomba fitenin'ny votoatiny ato, ary naseho ny UI.", + "tag-editcheck-paste-shown": "Edit Check (fandikana-fametahana) naseho", + "tag-editcheck-paste-shown-description": "EditCheck dia nangataka fanazavana be kokoa momba ny votoatiny napetaka, izay mety na nesorina na nohamafisina fa azo ekena", "tag-visualeditor": "Hanova araka ny hitan'ny maso", "tag-visualeditor-description": "Fanovana natao tamin'ny alalan'i [[{{MediaWiki:visualeditor-descriptionpagelink}}|mpanova ara-maso]]", "tag-visualeditor-needcheck": "mpanova ara-maso: tokony homarinina", From e19213c571ea94f9b818ca9b53cdb789884bb9a0 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 8 Sep 2025 16:01:47 +0100 Subject: [PATCH 599/730] Remove grey background from mobile EditCheck Bug: T403971 Change-Id: I7d4ec4d90bc3b732a3908d3d6dea5c3c3b7de03c --- editcheck/modules/EditCheck.less | 1 - 1 file changed, 1 deletion(-) diff --git a/editcheck/modules/EditCheck.less b/editcheck/modules/EditCheck.less index 15586ccfd9..b9025b37f9 100644 --- a/editcheck/modules/EditCheck.less +++ b/editcheck/modules/EditCheck.less @@ -245,7 +245,6 @@ .mw-mf & { top: auto; // See: .ve-ui-mobileContext, which this is closely mimicking - background-color: @background-color-interactive-subtle; /* Match toolbar border & shadow */ border-top: @border-subtle; box-shadow: 0 -1px 1px 0 rgba( 0, 0, 0, 0.1 ); From 7d8711538e2af6196544003324e1f571c9d43aae Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 12 Sep 2025 16:34:52 -0500 Subject: [PATCH 600/730] Fix DISPLAYTITLE adding extraneous whitespace It missing the about attribute noticeably changed how Parsoid treated it for whitespace purposes. Then with that, it needs to have a newline included in parts when it's first added to the page. Bug: T402322 Change-Id: I8d911607ff07d851314d238e38bd27f850a23504 --- .../ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js | 9 +++++++-- modules/ve-mw/tests/dm/ve.dm.mwExample.js | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js b/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js index 6b8c4a37f1..c42d1c3430 100644 --- a/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js +++ b/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js @@ -43,7 +43,7 @@ ve.dm.MWDisplayTitleMetaItem.static.toDataElement = function ( domElements ) { const mwDataJSON = domElements[ 0 ].getAttribute( 'data-mw' ), mwData = mwDataJSON ? JSON.parse( mwDataJSON ) : {}; const wt = ( ve.getProp( mwData, 'parts', '0', 'template', 'target', 'wt' ) || '' ) || - ve.getProp( mwData, 'parts', '0', 'parserfunction', 'params', '1', 'wt' ); + ve.getProp( mwData, 'parts', '0', 'parserfunction', 'params', '1', 'wt' ); const content = wt.replace( /^DISPLAYTITLE:/i, '' ); return { type: this.name, @@ -54,7 +54,6 @@ ve.dm.MWDisplayTitleMetaItem.static.toDataElement = function ( domElements ) { }; ve.dm.MWDisplayTitleMetaItem.static.toDomElements = function ( dataElement, doc ) { - const prefix = 'DISPLAYTITLE', displayTitle = dataElement.attributes.content, mwData = { @@ -70,9 +69,15 @@ ve.dm.MWDisplayTitleMetaItem.static.toDomElements = function ( dataElement, doc ] }; + if ( !dataElement.originalDomElementsHash ) { + // If this is a new addition to the page, we need to enforce a newline: + mwData.parts.push( '\n' ); + } + const span = doc.createElement( 'span' ); span.setAttribute( 'typeof', 'mw:Transclusion' ); span.setAttribute( 'data-mw', JSON.stringify( mwData ) ); + span.setAttribute( 'about', '#mwt-ve-' + Math.floor( 1000000000 * Math.random() ) ); return [ span ]; }; diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js b/modules/ve-mw/tests/dm/ve.dm.mwExample.js index 683ec358ea..dfe6005656 100644 --- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js +++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js @@ -2191,7 +2191,9 @@ ve.dm.mwExample.domToDataCases = { ] }, 'display title': { - body: '', + body: '', + fromDataBody: '', + normalizedBody: '', data: [ { type: 'mwDisplayTitle', From 24f2b3b08311c0f46a88b37610ff093f90624eeb Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 15 Sep 2025 09:45:38 +0200 Subject: [PATCH 601/730] Localisation updates from https://translatewiki.net. Change-Id: Ibc1f9043332d3544f0b6de038f33c37bd51cb338 --- editcheck/i18n/nb.json | 2 +- editcheck/i18n/ps.json | 2 +- i18n/ve-mw/ary.json | 1 + i18n/ve-mw/ce.json | 2 +- i18n/ve-mw/de.json | 78 ++++++++++++++++++++-------------------- i18n/ve-mw/mfa.json | 3 +- i18n/ve-mw/ppl.json | 2 ++ i18n/ve-mw/shn.json | 2 +- i18n/ve-mw/te.json | 2 +- i18n/ve-mw/tr.json | 2 +- i18n/ve-wmf/be.json | 2 +- i18n/ve-wmf/ce.json | 4 +++ i18n/ve-wmf/dag.json | 3 +- i18n/ve-wmf/de.json | 2 +- i18n/ve-wmf/fr.json | 2 +- i18n/ve-wmf/gur.json | 3 +- i18n/ve-wmf/ig.json | 2 +- i18n/ve-wmf/ksh.json | 2 +- i18n/ve-wmf/mg.json | 2 +- i18n/ve-wmf/mos.json | 2 +- i18n/ve-wmf/nb.json | 2 ++ i18n/ve-wmf/nqo.json | 2 ++ i18n/ve-wmf/tg-cyrl.json | 2 +- i18n/ve-wmf/vi.json | 2 +- 24 files changed, 69 insertions(+), 59 deletions(-) diff --git a/editcheck/i18n/nb.json b/editcheck/i18n/nb.json index a062ba4e29..af4de19a8b 100644 --- a/editcheck/i18n/nb.json +++ b/editcheck/i18n/nb.json @@ -42,7 +42,7 @@ "editcheck-tone-reject-appropriate": "Tonen er passende", "editcheck-tone-reject-uncertain": "Jeg vet ikke hvordan jeg skal endre tonen", "editcheck-tone-reject-other": "Annet", - "editcheck-tone-thank": "Tekk for at du reviderte tonen!", + "editcheck-tone-thank": "Takk for at du reviderte tonen!", "editcheck-reject-description": "Andre bidragsytere ville satt pris på å lære hvorfor du gjorde dette valget.", "editcheck-review-title": "Gjennomgå endringer", "tag-editcheck-reference-decline-common-knowledge": "Redigeringssjekk (referanser) avvist (allmennkunnskap)", diff --git a/editcheck/i18n/ps.json b/editcheck/i18n/ps.json index 40e6f381b6..33506cea03 100644 --- a/editcheck/i18n/ps.json +++ b/editcheck/i18n/ps.json @@ -10,6 +10,6 @@ "editcheck-copyvio-action-remove": "نه، لرې يې کړه", "editcheck-tone-reject-uncertain": "زه ډاډه نه يم چې څنگه وينگ کره کړم", "editcheck-tone-reject-other": "نور", - "editcheck-tone-thank": "د وينگ بياکتنې لپاره مننه!", + "editcheck-tone-thank": "د وينگ په پام‌ کې نيولو لپاره مننه!", "editcheck-reject-description": "نور سمونگر به دې ته ارزښت ورکړي چې ولې تاسو دا خوښ کړی." } diff --git a/i18n/ve-mw/ary.json b/i18n/ve-mw/ary.json index b60679dcdf..09f40df6a2 100644 --- a/i18n/ve-mw/ary.json +++ b/i18n/ve-mw/ary.json @@ -21,6 +21,7 @@ "visualeditor-dialog-media-choose-image": "خدّم هاد التصويرة", "visualeditor-dialog-transclusion-no-template-description": "لموضيل \"$1\" ماعندوش شرح، والاكين يمكن تلقا معلومات عليه ف [[$2|صّفحة ديالو]].", "visualeditor-dialogbutton-media-tooltip": "تصاور ؤ فيشيات", + "visualeditor-editsummary": "وصف داكشي لي بدّلتيه", "visualeditor-mweditmodeve-popup-body": "تقدر ترجع مرة خرة ل التبدال ب الشوفان ف أي وقت يلا كليكيتي على هاد لإيكون.", "visualeditor-mweditmodeve-tool-current": "التبدال ب الشوفان", "visualeditor-mweditmodeve-tool-unavailable": "التبدال ب الشوفان مامتوفّرش هنا", diff --git a/i18n/ve-mw/ce.json b/i18n/ve-mw/ce.json index 9903864c0a..c881c3275b 100644 --- a/i18n/ve-mw/ce.json +++ b/i18n/ve-mw/ce.json @@ -350,7 +350,7 @@ "visualeditor-special-characters-group-other": "Дукха лелораш", "visualeditor-templatesused-tool": "Лелина кепаш", "visualeditor-title-error": "ГӀалате цӀе.", - "visualeditor-toload": "Массийта секунд йаьлча а хӀара хаам гуш хилахь, дехар до, [$1 агӀо йухасхьайелла]", + "visualeditor-toload": "Редактор кеста схьайоьллур йу. Нагахь масех секунд йаьлча а хьуна хӀара хаам гуш белахь, [$1 карлайаккха агӀо].", "visualeditor-tooltip-non-breaking-space": "Хаддаза кӀайдарг", "visualeditor-version-label": "Верси", "visualeditor-wikitext-progress": "Вики-текст хийцар", diff --git a/i18n/ve-mw/de.json b/i18n/ve-mw/de.json index cc0dbbda6d..a055f18d36 100644 --- a/i18n/ve-mw/de.json +++ b/i18n/ve-mw/de.json @@ -47,12 +47,12 @@ "visualeditor-annotations-default-start": "Beginn des mit einem Kommentar versehenen Bereichs", "visualeditor-annotations-extended-documentation": "Dieser mit einem Kommentar versehenen Bereich wurde erweitert, weil der darin enthaltene Inhalt nicht gut verschachtelt war. Es wird empfohlen, sicherzustellen, dass der kommentierte Inhalt korrekt verschachtelt ist, bevor er bearbeitet wird; andernfalls könnte ein größerer Bereich als erwartet kommentiert werden.", "visualeditor-autosave-modified-prompt-accept": "Bearbeitung fortsetzen", - "visualeditor-autosave-modified-prompt-message": "Diese Seite wurde bearbeitet, seit du sie das letzte Mal geladen hast. Möchtest {{GENDER:|du}} die Bearbeitung der alten Version fortsetzen oder die aktuelle Version bearbeiten?", + "visualeditor-autosave-modified-prompt-message": "Diese Seite wurde bearbeitet, seit {{#FORMAL:du|Sie}} sie das letzte {{#FORMAL:Mal|mal}} geladen {{#FORMAL:hast|haben}}. {{#FORMAL:Möchtest|Möchten}} {{GENDER:|{{#FORMAL:du|Sie}}}} die Bearbeitung der alten Version fortsetzen oder die aktuelle Version bearbeiten?", "visualeditor-autosave-modified-prompt-reject": "Aktuelle Version bearbeiten", - "visualeditor-autosave-modified-prompt-title": "{{GENDER:|Deine}} Bearbeitung wiederherstellen?", - "visualeditor-autosave-not-recovered-text": "Deine ungespeicherten Änderungen konnten nicht wiederhergestellt werden.", - "visualeditor-autosave-not-recovered-title": "Die Wiederherstellung deiner Änderungen ist fehlgeschlagen", - "visualeditor-autosave-recovered-text": "Deine ungespeicherten Änderungen wurden automatisch wiederhergestellt.", + "visualeditor-autosave-modified-prompt-title": "{{GENDER:|{{#FORMAL:Deine|Ihre}}}} Bearbeitung wiederherstellen?", + "visualeditor-autosave-not-recovered-text": "{{#FORMAL:Deine|Ihre}} ungespeicherten Änderungen konnten nicht wiederhergestellt werden.", + "visualeditor-autosave-not-recovered-title": "Die Wiederherstellung {{#FORMAL:deiner|Ihrer}} Änderungen ist fehlgeschlagen", + "visualeditor-autosave-recovered-text": "{{#FORMAL:Deine|Ihre}} ungespeicherten Änderungen wurden automatisch wiederhergestellt.", "visualeditor-autosave-recovered-title": "Änderungen wiederhergestellt", "visualeditor-backbutton-tooltip": "Zurück gehen", "visualeditor-ca-createlocaldescriptionsource": "Lokalen Beschreibungsquelltext hinzufügen", @@ -73,13 +73,13 @@ "visualeditor-dialog-extension-abandonedit": "Möchtest du diesen Dialog wirklich schließen, ohne deine Änderungen zu übernehmen?", "visualeditor-dialog-media-alttext-checkbox": "Die Bildunterschrift als Alternativtext verwenden", "visualeditor-dialog-media-alttext-section": "Alternativtext", - "visualeditor-dialog-media-alttext-section-help": "Du kannst dies verwenden, um eine Textbeschreibung für Menschen zu schreiben, die das Element nicht sehen können. Die Beschreibung sollte geeignet sein, um den Zweck und die Angaben des Medienelements verstehen zu können. Dies ist wichtig für blinde Benutzer und andere Menschen, die Screenreader-Software oder Nur-Text-Browser verwenden.", + "visualeditor-dialog-media-alttext-section-help": "{{#FORMAL:Du kannst|Sie können}} dies verwenden, um eine Textbeschreibung für Menschen zu schreiben, die das Element nicht sehen können. Die Beschreibung sollte geeignet sein, um den Zweck und die Angaben des Medienelements verstehen zu können. Dies ist wichtig für blinde Benutzer und andere Menschen, die Screenreader-Software oder Nur-Text-Browser verwenden.", "visualeditor-dialog-media-change-image": "Bild ändern", "visualeditor-dialog-media-choose-image": "Dieses Bild weiterverwenden", "visualeditor-dialog-media-content-description-link": "(Beschreibungsseite)", "visualeditor-dialog-media-content-filename": "Dateiname", "visualeditor-dialog-media-content-section": "Beschriftung", - "visualeditor-dialog-media-content-section-help": "Du kannst dies verwenden, um eine Bezeichnung anzuzeigen, die neben dem Element für alle Leser angezeigt wird. Dies wird oft verwendet, um zu erklären, warum das Element für den Kontext relevant ist, in dem es angezeigt wird. Sie sollte knapp und informativ sein.", + "visualeditor-dialog-media-content-section-help": "{{#FORMAL:Du kannst|Sie können}} dies verwenden, um eine Bezeichnung anzuzeigen, die neben dem Element für alle Leser angezeigt wird. Dies wird oft verwendet, um zu erklären, warum das Element für den Kontext relevant ist, in dem es angezeigt wird. Sie sollte knapp und informativ sein.", "visualeditor-dialog-media-goback": "Zurück", "visualeditor-dialog-media-info-artist": "Hochgeladen von $1", "visualeditor-dialog-media-info-audiofile": "Audiodatei", @@ -91,21 +91,21 @@ "visualeditor-dialog-media-page-advanced": "Erweitert", "visualeditor-dialog-media-page-general": "Allgemein", "visualeditor-dialog-media-position-checkbox": "Text um dieses Objekt umbrechen", - "visualeditor-dialog-media-position-checkbox-help": "Du kannst dieses Medienelement in der Zeile mit dem Seitentext anstatt umgebend erscheinen lassen. Du solltest dies nur selten tun, da es den Textfluss aufbricht, falls du die Markierung dieses Kästchens aufhebst.", + "visualeditor-dialog-media-position-checkbox-help": "{{#FORMAL:Du kannst|Sie können}} dieses Medienelement in der Zeile mit dem Seitentext anstatt umgebend erscheinen lassen. {{#FORMAL:Du solltest|Sie sollten}} dies nur selten tun, da es den Textfluss aufbricht, {{#FORMAL:falls du|wenn Sie}} die Markierung dieses Kästchens {{#FORMAL:aufhebst|aufheben}}.", "visualeditor-dialog-media-position-section": "Position", - "visualeditor-dialog-media-position-section-help": "Du kannst festlegen, wo dieses Medienelement auf der Seite erscheinen soll. Dies wird manchmal verwendet, um eine lange Zeile von Bildern auf einer Seite umzubrechen.", + "visualeditor-dialog-media-position-section-help": "{{#FORMAL:Du kannst|Sie können}} festlegen, wo dieses Medienelement auf der Seite erscheinen soll. Dies wird manchmal verwendet, um eine lange Zeile von Bildern auf einer Seite umzubrechen.", "visualeditor-dialog-media-save": "Speichern", "visualeditor-dialog-media-search-tab-search": "Suchen", "visualeditor-dialog-media-search-tab-upload": "Hochladen", "visualeditor-dialog-media-size-section": "Bildgröße", - "visualeditor-dialog-media-size-section-help": "Du kannst festlegen, wie groß das Medienelement auf der Seite erscheinen soll. Dies sollte fast immer die normale Größe sein, da eine benutzerdefinierte Größe die Seitengestaltung für Leser beeinflusst und sie inkonsistent macht.", + "visualeditor-dialog-media-size-section-help": "{{#FORMAL:Du kannst|Sie können}} festlegen, wie groß das Medienelement auf der Seite erscheinen soll. Dies sollte fast immer die normale Größe sein, da eine benutzerdefinierte Größe die Seitengestaltung für Leser beeinflusst und sie inkonsistent macht.", "visualeditor-dialog-media-title": "Medieneinstellungen", "visualeditor-dialog-media-type-border": "Umrandung", "visualeditor-dialog-media-type-frame": "Rahmen", "visualeditor-dialog-media-type-frameless": "Rahmenlos", "visualeditor-dialog-media-type-none": "Einfach", "visualeditor-dialog-media-type-section": "Bildtyp", - "visualeditor-dialog-media-type-section-help": "Du kannst festlegen, wie das Medienelement auf der Seite erscheinen soll. Dies sollte das Vorschaubildformat sein, um mit anderen Seiten in fast allen Fällen konsistent zu sein.", + "visualeditor-dialog-media-type-section-help": "{{#FORMAL:Du kannst|Sie können}} festlegen, wie das Medienelement auf der Seite erscheinen soll. Dies sollte das Vorschaubildformat sein, um mit anderen Seiten in fast allen Fällen konsistent zu sein.", "visualeditor-dialog-media-type-thumb": "Vorschaubild", "visualeditor-dialog-media-upload": "Hochladen", "visualeditor-dialog-meta-advancedsettings-label": "Erweiterte Einstellungen", @@ -113,7 +113,7 @@ "visualeditor-dialog-meta-categories-addcategory-label": "Eine Kategorie zu dieser Seite hinzufügen", "visualeditor-dialog-meta-categories-category": "Kategorie", "visualeditor-dialog-meta-categories-data-label": "Kategorien", - "visualeditor-dialog-meta-categories-defaultsort-help": "Um eine Seite innerhalb einer Kategorie anders als nach dem Anfangsbuchstaben (Sortierindex) zu sortieren, kannst du hier einen anderen Index festlegen. Damit überschreibst du den Standard. Das wird meist verwendet, wenn Seiten über Personen nach ihrem Nachnamen sortiert werden sollen, obwohl der Artikel mit dem Vornamen beginnt.", + "visualeditor-dialog-meta-categories-defaultsort-help": "Um eine Seite innerhalb einer Kategorie anders als nach dem Anfangsbuchstaben (Sortierindex) zu sortieren, {{#FORMAL:kannst du|können Sie}} hier einen anderen Index festlegen. Damit {{#FORMAL:überschreibst du|überschreiben Sie}} den Standard. Das wird meist verwendet, wenn Seiten über Personen nach ihrem Nachnamen sortiert werden sollen, obwohl der Artikel mit dem Vornamen beginnt.", "visualeditor-dialog-meta-categories-defaultsort-label": "Diese Seite standardmäßig sortieren als", "visualeditor-dialog-meta-categories-hidden": "Diese Kategorie wird nicht auf Seiten angezeigt, auf denen sie hinzugefügt wurde.", "visualeditor-dialog-meta-categories-input-hiddencategorieslabel": "Versteckte Kategorien", @@ -132,32 +132,32 @@ "visualeditor-dialog-meta-languages-readonlynote": "Dies ist eine Liste von Seiten in anderen Sprachen, die auf dieser Seite verlinkt sind. Sie kann derzeit nur im Quelltextmodus oder auf Wikidata bearbeitet werden.", "visualeditor-dialog-meta-languages-section": "Sprachen", "visualeditor-dialog-meta-settings-displaytitle": "Anzeigetitel", - "visualeditor-dialog-meta-settings-displaytitle-help": "Du kannst durch eine andere Bezeichnung überschreiben, wie der Titel dieser Seite angezeigt wird.", - "visualeditor-dialog-meta-settings-hiddencat-help": "Du kannst verhindern, dass diese Kategorie in der Kategorieliste auf Mitgliedsseiten angezeigt wird. Dies ist nützlich für Kategorien, die für Autoren interessant sind, jedoch nicht für die meisten Leser, wie z. B. Seiten, die eine Illustration erfordern.", + "visualeditor-dialog-meta-settings-displaytitle-help": "{{#FORMAL:Du kannst|Sie können}} durch eine andere Bezeichnung überschreiben, wie der Titel dieser Seite angezeigt wird.", + "visualeditor-dialog-meta-settings-hiddencat-help": "{{#FORMAL:Du kannst|Sie können}} verhindern, dass diese Kategorie in der Kategorieliste auf Mitgliedsseiten angezeigt wird. Dies ist nützlich für Kategorien, die für Autoren interessant sind, jedoch nicht für die meisten Leser, wie z. B. Seiten, die eine Illustration erfordern.", "visualeditor-dialog-meta-settings-hiddencat-label": "Versteckte Kategorie", "visualeditor-dialog-meta-settings-index-default": "Standard", "visualeditor-dialog-meta-settings-index-disable": "Nein", "visualeditor-dialog-meta-settings-index-force": "Ja", - "visualeditor-dialog-meta-settings-index-help": "Du kannst Suchmaschinen zwingen, diese Seite in ihren relevanten Ergebnissen aufzulisten oder nicht. Diese Option beeinflusst nicht die Suche in der Website.", + "visualeditor-dialog-meta-settings-index-help": "{{#FORMAL:Du kannst|Sie können}} Suchmaschinen zwingen, diese Seite in ihren relevanten Ergebnissen aufzulisten oder nicht. Diese Option beeinflusst nicht die Suche in der Website.", "visualeditor-dialog-meta-settings-index-label": "Diese Seite von Suchmaschinen indexieren lassen", "visualeditor-dialog-meta-settings-label": "Seiteneinstellungen", "visualeditor-dialog-meta-settings-newsectioneditlink-default": "Standard", "visualeditor-dialog-meta-settings-newsectioneditlink-disable": "Nein", "visualeditor-dialog-meta-settings-newsectioneditlink-force": "Ja", - "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Du kannst die Anzeige einer zusätzlichen Registerkarte neben der Registerkarte „$1“ auf dieser Seite zum einfachen Hinzufügen eines neuen Abschnitts erzwingen oder die Anzeige unterdrücken.", + "visualeditor-dialog-meta-settings-newsectioneditlink-help": "{{#FORMAL:Du kannst|Sie können}} die Anzeige einer zusätzlichen Registerkarte neben der Registerkarte „$1“ auf dieser Seite zum einfachen Hinzufügen eines neuen Abschnitts erzwingen oder die Anzeige unterdrücken.", "visualeditor-dialog-meta-settings-newsectioneditlink-label": "Eine Registerkarte auf dieser Seite zum Hinzufügen eines neuen Abschnitts anzeigen", - "visualeditor-dialog-meta-settings-nocontentconvert-help": "Du kannst verhindern, dass die Inhalte dieser Seite automatisch in andere Schriften konvertiert werden.", + "visualeditor-dialog-meta-settings-nocontentconvert-help": "{{#FORMAL:Du kannst|Sie können}} verhindern, dass die Inhalte dieser Seite automatisch in andere Schriften konvertiert werden.", "visualeditor-dialog-meta-settings-nocontentconvert-label": "Inhalt zwischen den Sprachvarianten nicht konvertieren", - "visualeditor-dialog-meta-settings-noeditsection-help": "Du kannst verhindern, dass die Bearbeitungslinks neben jedem Abschnitt erscheinen in dem ungewöhnlichen Fall, wo es angebracht ist.", + "visualeditor-dialog-meta-settings-noeditsection-help": "{{#FORMAL:Du kannst|Sie können}} verhindern, dass die Bearbeitungslinks neben jedem Abschnitt erscheinen in dem ungewöhnlichen Fall, wo es angebracht ist.", "visualeditor-dialog-meta-settings-noeditsection-label": "Die Bearbeiten-Links neben den Seitenüberschriften ausblenden.", - "visualeditor-dialog-meta-settings-nogallery-help": "Du kannst verhindern, dass diese Kategorie Mitgliedsdateien als Galerie anzeigt, falls dies unangebracht ist.", + "visualeditor-dialog-meta-settings-nogallery-help": "{{#FORMAL:Du kannst|Sie können}} verhindern, dass diese Kategorie Mitgliedsdateien als Galerie anzeigt, falls dies unangebracht ist.", "visualeditor-dialog-meta-settings-nogallery-label": "Galerie deaktivieren", - "visualeditor-dialog-meta-settings-notitleconvert-help": "Du kannst verhindern, dass der Titel dieser Seite automatisch in andere Schriften umgewandelt wird.", + "visualeditor-dialog-meta-settings-notitleconvert-help": "{{#FORMAL:Du kannst|Sie können}} verhindern, dass der Titel dieser Seite automatisch in andere Schriften umgewandelt wird.", "visualeditor-dialog-meta-settings-notitleconvert-label": "Titel zwischen den Sprachvarianten nicht konvertieren", - "visualeditor-dialog-meta-settings-redirect-help": "Du kannst diese Seite in eine Weiterleitung verwandeln, einer Seite, die andere Leser automatisch auf eine andere Seite auf diesem Wiki führt. Dies ist nützlich für Fehlschreibungen und alternative Namen oder Konzepte. Falls du dich dazu entschließt, sehen Leser nicht die Inhalte dieser Seite.", + "visualeditor-dialog-meta-settings-redirect-help": "{{#FORMAL:Du kannst|Sie können}} diese Seite in eine Weiterleitung verwandeln, einer Seite, die andere Leser automatisch auf eine andere Seite auf diesem Wiki führt. Dies ist nützlich für Fehlschreibungen und alternative Namen oder Konzepte. Falls {{#FORMAL:du dich|Sie sich}} dazu {{#FORMAL:entschließt|entschließen}}, sehen Leser nicht die Inhalte dieser Seite.", "visualeditor-dialog-meta-settings-redirect-label": "Diese Seite weiterleiten nach", "visualeditor-dialog-meta-settings-redirect-placeholder": "Zielseite für die Weiterleitung", - "visualeditor-dialog-meta-settings-redirect-statichelp": "Du kannst verhindern, dass diese Weiterleitung bei Verschiebung der Zielseite automatisch aktualisiert wird. In sehr seltenen Fällen ist dies erforderlich.", + "visualeditor-dialog-meta-settings-redirect-statichelp": "{{#FORMAL:Du kannst|Sie können}} verhindern, dass diese Weiterleitung bei Verschiebung der Zielseite automatisch aktualisiert wird. In sehr seltenen Fällen ist dies erforderlich.", "visualeditor-dialog-meta-settings-redirect-staticlabel": "Diese Weiterleitung nicht aktualisieren, wenn die Zielseite verschoben wird.", "visualeditor-dialog-meta-settings-section": "Seiteneinstellungen", "visualeditor-dialog-meta-settings-toc-default": "Falls nötig", @@ -226,7 +226,7 @@ "visualeditor-dialog-transclusion-required-parameter-dialog-cancel": "Zurück gehen", "visualeditor-dialog-transclusion-required-parameter-dialog-ok": "Trotzdem fortfahren", "visualeditor-dialog-transclusion-required-parameter-dialog-title": "Es {{PLURAL:$1|fehlt ein erforderlicher Parameter|fehlen erforderliche Parameter}}", - "visualeditor-dialog-transclusion-required-parameter-is-blank": "Bist du sicher, dass du ohne das Ausfüllen {{PLURAL:$2|des Parameters|der $1 Parameter}} fortfahren möchtest?", + "visualeditor-dialog-transclusion-required-parameter-is-blank": "{{#FORMAL:Bist du|Sind Sie sich}} sicher, dass {{#FORMAL:du|Sie}} ohne das Ausfüllen {{PLURAL:$2|des Parameters|der $1 Parameter}} fortfahren {{#FORMAL:möchtest|möchten}}?", "visualeditor-dialog-transclusion-see-template": "Die Vorlagen werden von den Benutzern erstellt und können unvollständige Beschreibungen enthalten. Möglicherweise gibt es zusätzliche Informationen auf der [[$2|Vorlagenseite]].", "visualeditor-dialog-transclusion-title-insert-template": "Eine Vorlage einfügen", "visualeditor-dialog-transclusion-title-insert-known-template": "Einfügen: $1", @@ -240,13 +240,13 @@ "visualeditor-dialog-transclusion-wikitext-widget-aria-selected-single": "Drücke Strg+Entf, um das Wikitext-Element zu löschen.", "visualeditor-dialogbutton-media-tooltip": "Bilder und Medien", "visualeditor-dialogbutton-template-tooltip": "Vorlage", - "visualeditor-editconflict": "Deine Änderungen konnten aufgrund eines Bearbeitungskonflikts nicht gespeichert werden. Willst {{GENDER:|du}} den Konflikt manuell beheben?", - "visualeditor-editingtabdialog-body": "{{SITENAME}} merkt sich jetzt, welchen Editor du bevorzugst. Du kannst zwischen Bearbeitungsmodi wechseln und deine Einstellung später ändern.", + "visualeditor-editconflict": "{{#FORMAL:Deine|Ihre}} Änderungen konnten aufgrund eines Bearbeitungskonflikts nicht gespeichert werden. {{#FORMAL:Willst|Wollen}} {{GENDER:|{{#FORMAL:du|Sie}}}} den Konflikt manuell beheben?", + "visualeditor-editingtabdialog-body": "{{SITENAME}} merkt sich jetzt, welchen Editor {{#FORMAL:du bevorzugst|Sie bevorzugen}}. {{#FORMAL:Du kannst|Sie können}} zwischen Bearbeitungsmodi wechseln und {{#FORMAL:deine|Ihre}} Einstellung später ändern.", "visualeditor-editingtabdialog-ok": "Den Editor verwenden, den ich bei meiner letzten Bearbeitung verwendet habe.", "visualeditor-editingtabdialog-title": "Bearbeitungs-Registerkarten", "visualeditor-editnotices-tool": "{{PLURAL:$1|Eine Notiz|$1 Notizen}}", "visualeditor-editnotices-tooltip": "Bearbeitungshinweise", - "visualeditor-editsummary": "Bitte erläutere kurz deine Änderungen", + "visualeditor-editsummary": "Bitte {{#FORMAL:erläutere|erläutern Sie}} kurz {{#FORMAL:deine|Ihre}} Änderungen", "visualeditor-editsummary-characters-remaining": "Die verbleibende Anzahl der Zeichen", "visualeditor-educationpopup-dismiss": "Okay, verstanden.", "visualeditor-expandable-less": "Weniger", @@ -294,14 +294,14 @@ "visualeditor-mweditmodesource-progress": "Wechsle zur Quelltextbearbeitung …", "visualeditor-mweditmodesource-tool-current": "Quelltextbearbeitung", "visualeditor-mweditmodesource-tool-unavailable": "Quelltextbearbeitung ist hier nicht verfügbar", - "visualeditor-mweditmodeve-popup-body": "Du kannst jederzeit zur visuellen Bearbeitung zurückkehren, indem du auf dieses Symbol klickst.", - "visualeditor-mweditmodeve-popup-title": "Du hast zum Quelltext-Editor gewechselt", + "visualeditor-mweditmodeve-popup-body": "{{#FORMAL:Du kannst|Sie können}} jederzeit zur visuellen Bearbeitung zurückkehren, indem {{#FORMAL:du|Sie}} auf dieses Symbol {{#FORMAL:klickst|klicken}}.", + "visualeditor-mweditmodeve-popup-title": "{{#FORMAL:Du hast|Sie haben}} zum Quelltext-Editor gewechselt", "visualeditor-mweditmodeve-progress": "Wechsle zur visuellen Bearbeitung …", "visualeditor-mweditmodeve-showagain": "Diese Nachricht nicht mehr anzeigen", "visualeditor-mweditmodeve-tool-current": "Visuelle Bearbeitung", "visualeditor-mweditmodeve-tool-unavailable": "Visuelles Bearbeiten ist hier nicht verfügbar", - "visualeditor-mweditmodewt-popup-body": "Du kannst jederzeit zur Quelltextbearbeitung zurückkehren, indem du dieses Symbol anklickst.", - "visualeditor-mweditmodewt-popup-title": "Du hast zur visuellen Bearbeitung gewechselt", + "visualeditor-mweditmodewt-popup-body": "{{#FORMAL:Du kannst|Sie können}} jederzeit zur Quelltextbearbeitung zurückkehren, indem {{#FORMAL:du|Sie}} dieses Symbol {{#FORMAL:anklickst|anklicken}}.", + "visualeditor-mweditmodewt-popup-title": "{{#FORMAL:Du hast|Sie haben}} zur visuellen Bearbeitung gewechselt", "visualeditor-mwgallerycontext-description": "$1 {{PLURAL:$1|Bild|Bilder}}", "visualeditor-mwgallerydialog-caption-field-label": "Galerieüberschrift", "visualeditor-mwgallerydialog-card-images": "Bilder", @@ -329,7 +329,7 @@ "visualeditor-mwgallerydialog-widths-input-placeholder": "Standardbreite: $1 Pixel", "visualeditor-mwpredialog-convert": "Textgestaltung erlauben", "visualeditor-mwpredialog-title": "Vorformatierter Klartext", - "visualeditor-mwsignature-tool": "Deine Unterschrift", + "visualeditor-mwsignature-tool": "{{#FORMAL:Deine|Ihre}} Unterschrift", "visualeditor-preference-visualeditor": "Visuellen Editor aktivieren", "visualeditor-preference-newwikitexteditor-enable": "Wikitextmodus innerhalb des visuellen Editors anstelle eines anderen Wikitexteditors verwenden", "visualeditor-preference-newwikitexteditor-help": "Dies wird manchmal als „Wikitext-Editor von 2017“ bezeichnet.", @@ -345,17 +345,17 @@ "visualeditor-rebase-client-import": "Importieren", "visualeditor-rebase-client-import-name": "Seitentitel", "visualeditor-rebase-client-title-help": "Du kannst die Änderungen vor dem Speichern überprüfen.", - "visualeditor-recreate": "Die Seite wurde gelöscht, nachdem du mit der Bearbeitung angefangen hast. Wähle „$1“, um sie neu zu erstellen.", + "visualeditor-recreate": "Die Seite wurde gelöscht, nachdem {{#FORMAL:du|Sie}} mit der Bearbeitung angefangen {{#FORMAL:hast|haben}}. {{#FORMAL:Wähle|Wählen Sie}} „$1“, um sie neu zu erstellen.", "visualeditor-redirect-description": "Weiterleitung auf $1", - "visualeditor-savedialog-identify-anon": "Du bist nicht mehr angemeldet. Wenn du fortfährst, wird deine IP-Adresse in der Versionsgeschichte dieser Seite erfasst .", + "visualeditor-savedialog-identify-anon": "{{#FORMAL:Du bist|Sie sind}} nicht mehr angemeldet. Wenn {{#FORMAL:du fortfährst|Sie fortfahren}}, wird {{#FORMAL:deine|Ihre}} IP-Adresse in der Versionsgeschichte dieser Seite erfasst .", "visualeditor-savedialog-identify-temp": "Du verwendest jetzt den temporären Benutzernamen $1. Wenn du fortfährst, wird deine Bearbeitung mit diesem Benutzernamen verknüpft.", - "visualeditor-savedialog-identify-user": "Du bist jetzt als [[User:$1|$1]] angemeldet. Wenn du fortfährst, wird deine Bearbeitung mit diesem Konto verknüpft.", - "visualeditor-savedialog-keyboard-shortcut-submit": "Du kannst $1 drücken, um deine Bearbeitung zu speichern.", + "visualeditor-savedialog-identify-user": "{{#FORMAL:Du bist|Sie sind}} jetzt als [[User:$1|$1]] angemeldet. Wenn {{#FORMAL:du fortfährst|Sie fortfahren}}, wird {{#FORMAL:deine|Ihre}} Bearbeitung mit diesem Konto verknüpft.", + "visualeditor-savedialog-keyboard-shortcut-submit": "{{#FORMAL:Du kannst|Sie können}} $1 drücken, um {{#FORMAL:deine|Ihre}} Bearbeitung zu speichern.", "visualeditor-savedialog-label-publish-short": "Veröffentlichen", "visualeditor-savedialog-label-publish-short-start": "Veröffentlichen …", "visualeditor-savedialog-label-resolve-conflict": "Konflikt lösen", "visualeditor-savedialog-label-resume-editing": "Bearbeitung fortsetzen", - "visualeditor-savedialog-label-review": "Überprüfe deine Änderungen", + "visualeditor-savedialog-label-review": "{{#FORMAL:Überprüfe deine|Überprüfen Sie Ihre}} Änderungen", "visualeditor-savedialog-label-review-good": "Zurück zum Speicherformular", "visualeditor-savedialog-label-save-short": "Speichern", "visualeditor-savedialog-label-save-short-start": "Speichern …", @@ -363,7 +363,7 @@ "visualeditor-savedialog-review-visual": "Visuell", "visualeditor-savedialog-review-wikitext": "Wikitext", "visualeditor-savedialog-title-conflict": "Konflikt", - "visualeditor-savedialog-title-preview": "Eine Vorschau deiner Änderungen anzeigen", + "visualeditor-savedialog-title-preview": "Eine Vorschau {{#FORMAL:deiner|Ihrer}} Änderungen anzeigen", "visualeditor-savedialog-title-review": "Änderungen überprüfen", "visualeditor-savedialog-title-save": "Änderungen speichern", "visualeditor-section-body-placeholder": "Neuer Abschnitt", @@ -374,11 +374,11 @@ "visualeditor-special-characters-group-other": "Oft verwendet", "visualeditor-templatesused-tool": "Verwendete Vorlagen", "visualeditor-title-error": "Ungültiger Titel.", - "visualeditor-toload": "Der Editor wird jetzt geladen. Wenn diese Meldung nach einigen Sekunden noch siehst, [$1 bitte aktualisiere die Seite].", + "visualeditor-toload": "Der Editor wird jetzt geladen. Wenn {{#FORMAL:du|Sie}} diese Meldung nach einigen Sekunden noch {{#FORMAL:siehst|sehen}}, [$1 bitte {{#FORMAL:aktualisiere|aktualisieren Sie}} die Seite].", "visualeditor-tooltip-non-breaking-space": "Nicht umbrechendes Leerzeichen", "visualeditor-version-label": "Version", "visualeditor-wikitext-progress": "Konvertiere Wikitext", - "visualeditor-wikitext-warning": "Du benutzt den visuellen Editor. [[{{MediaWiki:visualeditor-wikitext-warning-link}}|Wikitext]] funktioniert hier nicht. Um jederzeit ohne Verlust deiner Änderungen zur Quelltextbearbeitung zurückzukehren, klicke auf den Wechseln-Button.", + "visualeditor-wikitext-warning": "{{#FORMAL:Du benutzt|Sie benutzen}} den visuellen Editor. [[{{MediaWiki:visualeditor-wikitext-warning-link}}|Wikitext]] funktioniert hier nicht. Um jederzeit ohne Verlust deiner Änderungen zur Quelltextbearbeitung zurückzukehren, {{#FORMAL:klicke|klicken Sie}} auf den Wechseln-Button.", "visualeditor-wikitext-warning-title": "Wikitext entdeckt", "visualeditor-wikitextconvert-title": "Formatierung in Wikitext konvertieren?", "visualeditor-wikitextconvert-message": "Du hast formatierte Inhalte eingefügt. Möchtest du diese Formatierung in Wikitext umwandeln?", diff --git a/i18n/ve-mw/mfa.json b/i18n/ve-mw/mfa.json index 1f10f70e6b..7cf2bffa68 100644 --- a/i18n/ve-mw/mfa.json +++ b/i18n/ve-mw/mfa.json @@ -1,11 +1,12 @@ { "@metadata": { "authors": [ + "EmpAhmadK", "Lam Takuma", "Mirlim" ] }, - "visualeditor-ca-createlocaldescriptionsource": "Wak sumbo ttere hok stepak", + "visualeditor-ca-createlocaldescriptionsource": "Wak sumbo tterae hok stepak", "visualeditor-ca-createsource": "Buwak sumbo", "visualeditor-ca-editsource": "Suténg sumbo", "visualeditor-ca-editsource-section": "suténg sumbo" diff --git a/i18n/ve-mw/ppl.json b/i18n/ve-mw/ppl.json index 59832629e2..59e60ac7b3 100644 --- a/i18n/ve-mw/ppl.json +++ b/i18n/ve-mw/ppl.json @@ -2,9 +2,11 @@ "@metadata": { "authors": [ "Canjura", + "Jose Antonio Guillen Landaverde", "TimumachtikanNawat" ] }, + "visualeditor-ca-createlocaldescriptionsource": "Takutunchin ka ijtik ne wiki", "visualeditor-ca-editsource": "Shikpata ne tajkwilulchin", "visualeditor-ca-editsource-section": "Shikpata ne tajkwilulchin" } diff --git a/i18n/ve-mw/shn.json b/i18n/ve-mw/shn.json index 163b4a83a0..a200c96e3d 100644 --- a/i18n/ve-mw/shn.json +++ b/i18n/ve-mw/shn.json @@ -16,7 +16,7 @@ "visualeditor-dialog-meta-categories-input-movecategorylabel": "ၶၢႆႉပိူင်ထၢၼ်ႈၸူးတီႈၼႆႈ", "visualeditor-dialog-meta-categories-input-placeholder": "ထႅမ်သႂ်ႇ ပိူင်ထၢၼ်ႈ", "visualeditor-editsummary": "သပ်းလႅင်း ၸိူဝ်းၸဝ်ႈၵဝ်ႇ လႅၵ်ႈလၢႆႈမႃး", - "visualeditor-linkinspector-educationpopup-title": "လိင်ႉ", + "visualeditor-linkinspector-educationpopup-title": "လိင်ႉၶ်", "visualeditor-mweditmodeve-popup-body": "ၼဵၵ်းတီႈၼိူဝ် ဢၢႆႇၵွၼ်ႇၼႆႉသေၵေႃႈ ၸဝ်ႈၵဝ်ႇ ၸၢင်ႈလၢႆႈၸူးလႆႈၶိုၼ်း လွင်ႈမႄးထတ်း တႃႁၼ်ယူႇ ၵူႈၶၢဝ်း။", "visualeditor-mweditmodeve-progress": "တိုၵ်ႉလၢႆႈၸူး လွင်ႈမႄးထတ်း တႃႁၼ်...", "visualeditor-mweditmodeve-tool-unavailable": "လွင်ႈမႄးထတ်း တႃႁၼ် ဢမ်ႇၸႂ်ႉလႆႈ တီႈၼႆႈ", diff --git a/i18n/ve-mw/te.json b/i18n/ve-mw/te.json index 3061aebbfe..14b5134e6d 100644 --- a/i18n/ve-mw/te.json +++ b/i18n/ve-mw/te.json @@ -296,7 +296,7 @@ "visualeditor-special-characters-group-other": "తరచూ వాడేవి", "visualeditor-templatesused-tool": "వాడిన మూసలు", "visualeditor-title-error": "చెల్లని శీర్షిక.", - "visualeditor-toload": "ఇప్పుడు ఎడిటరు లోడవుతుంది. కొన్ని సెకండ్ల తరువాత కూడా ఈ సందేశం కనబడుతూంటే, [$1 పేజీని మళ్ళీ లోడు చెయ్యండి].", + "visualeditor-toload": "ఇప్పుడు ఎడిటరు లోడవుతుంది. కొన్ని సెకండ్ల తరువాత కూడా ఈ సందేశం కనబడుతూంటే, [$1 పేజీని రిఫ్రెష్ చెయ్యండి].", "visualeditor-version-label": "సంచిక", "visualeditor-wikitext-progress": "వికీ టెక్స్ట్‌ను మారుస్తున్నాం", "visualeditor-wikitext-warning": "మీరు విజువల్ ఎడిటర్‌ని ఉపయోగిస్తున్నారు - ఇక్కడ [[{{MediaWiki:visualeditor-wikitext-warning-link}}|వికీటెక్స్ట్]] పని చేయదు. మీరు చేసిన మార్పులను కోల్పోకుండా మూలపాఠ్య సవరణకు మారాలంటే, స్విచ్ బొత్తాంపై నొక్కండి.", diff --git a/i18n/ve-mw/tr.json b/i18n/ve-mw/tr.json index 46193bc658..9156d8649c 100644 --- a/i18n/ve-mw/tr.json +++ b/i18n/ve-mw/tr.json @@ -387,7 +387,7 @@ "visualeditor-special-characters-group-other": "Sık kullanılan", "visualeditor-templatesused-tool": "Kullanılan şablonlar", "visualeditor-title-error": "Geçersiz başlık.", - "visualeditor-toload": "Editör şimdi yüklenecek. Birkaç saniye sonra bu mesajı görmeye devam ediyorsanız, lütfen [$1 sayfayı yeniden yükleyin].", + "visualeditor-toload": "Düzenleyici şimdi yüklenecek. Birkaç saniye sonra bu iletiyi görmeye devam ederseniz, lütfen [$1 sayfayı yenileyin].", "visualeditor-tooltip-non-breaking-space": "Kırılmaz alan", "visualeditor-version-label": "Sürüm", "visualeditor-wikitext-progress": "Vikimetin dönüştürülüyor", diff --git a/i18n/ve-wmf/be.json b/i18n/ve-wmf/be.json index c92d688ccd..9cffd67bf6 100644 --- a/i18n/ve-wmf/be.json +++ b/i18n/ve-wmf/be.json @@ -26,5 +26,5 @@ "visualeditor-welcomedialog-content-thanks": "Дзякуй, што дапамагаеце свету даведацца больш!", "visualeditor-welcomedialog-switch": "Пераключыць на рэдактар зыходнага кода", "visualeditor-welcomedialog-switch-ve": "Пераключыць на візуальны рэдактар", - "visualeditor-welcomedialog-title": "{{GENDER:$1|Вітаем}} у {{grammar:родны|$2}}" + "visualeditor-welcomedialog-title": "{{GENDER:$1|Вітаем}} у {{GRAMMAR:месны|$2}}" } diff --git a/i18n/ve-wmf/ce.json b/i18n/ve-wmf/ce.json index 747675c6ec..bbdbc051d5 100644 --- a/i18n/ve-wmf/ce.json +++ b/i18n/ve-wmf/ce.json @@ -11,7 +11,11 @@ "tag-editcheck-references-activated-description": "EditCheck-на хетарехь, хьажоргаш оьшуш хила тарло, ткъа UI гайтина", "tag-editcheck-references-shown": "Хийцамаш таллар гуш ду (хьажоргаш)", "tag-editcheck-references-shown-description": "EditCheck-на хетарехь, хьажоргаш оьшуш хила тарло, ткъа UI гайтина", + "tag-editcheck-tone-description": "EditCheck-о гучудаьккхина цхьаболчу тӀетоьхначу чулацаман тонца хила тарлуш йолу проблема", "tag-editcheck-tone-shown": "Гойтуш хийцаран таллам (tone)", + "tag-editcheck-tone-shown-description": "EditCheck-на хетарехь, цхьайолчу материалехь тон нисйан оьшуш хила тарло, ткъа UI гайтина", + "tag-editcheck-paste-shown": "Хийцамаш таллар гойту (йукъадиллар)", + "tag-editcheck-paste-shown-description": "EditCheck-о дехна редакторо дӀатоьхначу чулацамах лаьцна къастам бар, цул тӀаьхьа иза дӀабаьккхира, йа мегаш хилар тӀечӀагӀдира", "tag-visualeditor": "БӀаьран редактор", "tag-visualeditor-description": "[[{{MediaWiki:visualeditor-descriptionpagelink}}|БӀаьран редакторца]] дина нисдарш", "tag-visualeditor-needcheck": "БӀаьран редактор: талла", diff --git a/i18n/ve-wmf/dag.json b/i18n/ve-wmf/dag.json index 8d5dce9bfe..1c7e3418ac 100644 --- a/i18n/ve-wmf/dag.json +++ b/i18n/ve-wmf/dag.json @@ -26,6 +26,5 @@ "visualeditor-welcomedialog-content": "Sokam ni tooi mali niŋ, ka toontibo kam sɔŋda", "visualeditor-welcomedialog-content-thanks": "A kpaŋ amaŋa ni a ni che ka dunia zaa tooi baŋ yɛla pam maa", "visualeditor-welcomedialog-switch": "Taɣi chaŋ edita shee", - "visualeditor-welcomedialog-switch-ve": "Taɣi chaŋ lihibu edita shee", - "visualeditor-welcomedialog-title": "{{GENDER:$1|Welcome}} to $2" + "visualeditor-welcomedialog-switch-ve": "Taɣi chaŋ lihibu edita shee" } diff --git a/i18n/ve-wmf/de.json b/i18n/ve-wmf/de.json index 4bbab88e17..733965dc66 100644 --- a/i18n/ve-wmf/de.json +++ b/i18n/ve-wmf/de.json @@ -41,7 +41,7 @@ "visualeditor-help-label": "Lies das Benutzerhandbuch", "visualeditor-welcomedialog-action": "Jetzt bearbeiten", "visualeditor-welcomedialog-content": "Jeder kann hier mitarbeiten und Artikel verbessern.", - "visualeditor-welcomedialog-content-thanks": "Damit hilfst du, das menschliche Wissen allen zugänglich zu machen!", + "visualeditor-welcomedialog-content-thanks": "Damit {{#FORMAL:hilfst du|helfen Sie}}, das menschliche Wissen allen zugänglich zu machen!", "visualeditor-welcomedialog-switch": "Zum Quelltext-Editor", "visualeditor-welcomedialog-switch-ve": "Zum visuellen Editor wechseln", "visualeditor-welcomedialog-title": "{{GENDER:$1|Willkommen}} bei $2" diff --git a/i18n/ve-wmf/fr.json b/i18n/ve-wmf/fr.json index 6db5d015f9..ff7a0325f3 100644 --- a/i18n/ve-wmf/fr.json +++ b/i18n/ve-wmf/fr.json @@ -70,5 +70,5 @@ "visualeditor-welcomedialog-content-thanks": "Merci pour votre aide afin que le monde fasse plus de découvertes !", "visualeditor-welcomedialog-switch": "Basculer vers l’éditeur de wikicode", "visualeditor-welcomedialog-switch-ve": "Basculer vers l’éditeur visuel", - "visualeditor-welcomedialog-title": "{{GENDER:$1|}}Bienvenue sur $2" + "visualeditor-welcomedialog-title": "{{GENDER:$1|Bienvenue}} sur $2" } diff --git a/i18n/ve-wmf/gur.json b/i18n/ve-wmf/gur.json index 3220f4d0e4..870ebd0130 100644 --- a/i18n/ve-wmf/gur.json +++ b/i18n/ve-wmf/gur.json @@ -25,6 +25,5 @@ "visualeditor-welcomedialog-content": "Nɛrewoo ta'am leregɛ, sugerɛ woo ta'am suŋɛ", "visualeditor-welcomedialog-content-thanks": "N pu'use ya la fum n suŋɛ duniya la ti ka nyɛ zo'e zo'e!", "visualeditor-welcomedialog-switch": "Lebɛ leregere la puan", - "visualeditor-welcomedialog-switch-ve": "Lebɛ bisega leregere", - "visualeditor-welcomedialog-title": "{{GENDER:$1|Welcome}} to $2" + "visualeditor-welcomedialog-switch-ve": "Lebɛ bisega leregere" } diff --git a/i18n/ve-wmf/ig.json b/i18n/ve-wmf/ig.json index cd11f5d462..9522ff6fc3 100644 --- a/i18n/ve-wmf/ig.json +++ b/i18n/ve-wmf/ig.json @@ -29,5 +29,5 @@ "visualeditor-welcomedialog-content-thanks": "Daalụ maka inyere ụwa aka ịmatakwu!", "visualeditor-welcomedialog-switch": "Banye na ndezi ebe osi", "visualeditor-welcomedialog-switch-ve": "Gbanwee gaa na ndezi anya na-ele", - "visualeditor-welcomedialog-title": "{{Gender: $1|Nnọọ}}, na $2!" + "visualeditor-welcomedialog-title": "{{GENDER:$1|Nnọọ}}, na $2!" } diff --git a/i18n/ve-wmf/ksh.json b/i18n/ve-wmf/ksh.json index 0c02374dab..c34dacd3ca 100644 --- a/i18n/ve-wmf/ksh.json +++ b/i18n/ve-wmf/ksh.json @@ -18,5 +18,5 @@ "visualeditor-welcomedialog-content-thanks": "Mer danke doför, dat de Wält mih erusfenge kann!", "visualeditor-welcomedialog-switch": "Ömschallde op Wikkitäx", "visualeditor-welcomedialog-switch-ve": "Op der VisualEditor ömschallde", - "visualeditor-welcomedialog-title": "Wellkumme {{ucfirst:{{GRAMMAR:em|{{ucfirst:$2}}}}}}{{GENDER:$1|}}" + "visualeditor-welcomedialog-title": "{{GENDER:$1|Wellkumme}} {{GRAMMAR:em|$2}}" } diff --git a/i18n/ve-wmf/mg.json b/i18n/ve-wmf/mg.json index 721b44011a..4d254fa529 100644 --- a/i18n/ve-wmf/mg.json +++ b/i18n/ve-wmf/mg.json @@ -32,5 +32,5 @@ "visualeditor-welcomedialog-content-thanks": "Misaotra anao manampy an'izao tontolo izao hahita zava-baovao be kokoa!", "visualeditor-welcomedialog-switch": "Hivadika amin'ny mpanova fango", "visualeditor-welcomedialog-switch-ve": "Hivadika amin'ny mpanova ara-maso", - "visualeditor-welcomedialog-title": "{{GENDER:$1|}}Tonga soa eto amin'i $2" + "visualeditor-welcomedialog-title": "{{GENDER:$1|Tonga soa}} eto amin'i $2" } diff --git a/i18n/ve-wmf/mos.json b/i18n/ve-wmf/mos.json index 7d472f2f31..bac823e0d4 100644 --- a/i18n/ve-wmf/mos.json +++ b/i18n/ve-wmf/mos.json @@ -25,5 +25,5 @@ "visualeditor-welcomedialog-content-thanks": "Y barka fo sẽn song tɩ duni fãa bãng wʋsga", "visualeditor-welcomedialog-switch": "Lébsé n kêng zii tékɩ", "visualeditor-welcomedialog-switch-ve": "Lébsé n kêng geese n tékɩ", - "visualeditor-welcomedialog-title": "{{sɩg-roogo:$1|waoongo}} tɩ $2" + "visualeditor-welcomedialog-title": "{{GENDER:$1|Waoongo}} tɩ $2" } diff --git a/i18n/ve-wmf/nb.json b/i18n/ve-wmf/nb.json index 618ee0a8e2..4647da91c8 100644 --- a/i18n/ve-wmf/nb.json +++ b/i18n/ve-wmf/nb.json @@ -24,6 +24,8 @@ "tag-editcheck-tone-description": "Redigeringssjekk oppdaget et mulig problem med tonen i noe av innholdet som ble lagt til", "tag-editcheck-tone-shown": "Redigeringssjekk (tone) vist", "tag-editcheck-tone-shown-description": "Redigeringssjekk tror det kan være nødvendig med endringer i tonen i noe av innholdet som ble lagt til, og grensesnittet ble vist", + "tag-editcheck-paste-shown": "Redigeringssjekk (innliming) vist", + "tag-editcheck-paste-shown-description": "Redigeringssjekk ba om klargjøring om innhold bidragsyteren limte inn, som dermed ble fjernet eller bekreftet som greit.", "tag-visualeditor": "Visuell redigering", "tag-visualeditor-description": "Redigering gjort med [[{{MediaWiki:visualeditor-descriptionpagelink}}|visuell redigering]]", "tag-visualeditor-needcheck": "Visuell redigering: Sjekk", diff --git a/i18n/ve-wmf/nqo.json b/i18n/ve-wmf/nqo.json index c11a37c83a..5f8515384d 100644 --- a/i18n/ve-wmf/nqo.json +++ b/i18n/ve-wmf/nqo.json @@ -14,6 +14,8 @@ "tag-editcheck-tone-description": "EditCheck ߓߘߊ߫ ߝߙߋߞߋ߫ ߘߐߓߍ߲߬ߕߊ ߘߏ߫ ߟߊߞߏߟߐ߲߫ ߞߣߐߘߐ߫ ߝߙߊ߬ߣߍ߲ ߘߏ߫ ߟߎ߫ ߡߊ߲߬ߞߊ߲ ߘߐ߫", "tag-editcheck-tone-shown": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߫ (ߡߊ߲߬ߞߊ߲) ߦߌ߬ߘߊ", "tag-editcheck-tone-shown-description": "EditCheck ߦߴߊ߬ ߓߛߌ߬ߞߌ߫ ߟߊ߫ ߞߏ߫ ߡߊ߬ߞߏ ߦߋ߫ ߟߊ߬ߞߢߊ߬ߟߌ ߟߊ߫ ߡߊ߲߬ߞߊ߲ ߘߐ߫ ߞߣߐߘߐ ߘߏ߫ ߘߐ߫, UI ߘߏ߲߬ ߦߌ߬ߘߊ߬ߣߍ߲߫", + "tag-editcheck-paste-shown": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߫ (ߣߙߊߟߌ) ߦߌ߬ߘߊ", + "tag-editcheck-paste-shown-description": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߝߛߍ߬ߝߛߍ߬ߟߌ ߓߘߊ߫ ߢߌ߬ߣߌ߲߬ߞߊ߬ߟߌ ߞߍ߫ ߞߣߐߘߐ߫ ߟߛߊߣߌ߲ߧߊߞߏ ߡߊ߬߸ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߊ ߣߊ߬ ߡߍ߲ ߣߙߊ߫ ߟߊ߫߸ ߡߍ߲ ߖߏ߰ߛߌ߬ߣߍ߲߫ ߦߋ߫ ߞߍ߫ ߟߴߏ߬ ߘߐ߫ ߥߟߊ߫ ߞߵߊ߬ ߡߊߛߐ߬ߛߐ߬ ߞߴߊ߬ ߕߍ߫ ߘߌ߬ߢߍ߬ߒ߬ߡߊ߬ߕߊ߫ ߘߌ߫.", "tag-visualeditor": "ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲", "tag-visualeditor-description": "ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߡߍ߲ ߠߎ߬ ߛߌ߲ߘߌߣߍ߲߫ ߦߋ߫ [[{{MediaWiki:visualeditor-descriptionpagelink}}|ߦߋߗߏ߯ ߡߊߦߟߍߡߊ߲]] ߘߐ߫", "tag-visualeditor-needcheck": "ߦߋߢߊ ߡߊߦߟߍ߬ߡߊ߲:ߝߛߍ߬ߝߛߍ߬ߟߌ", diff --git a/i18n/ve-wmf/tg-cyrl.json b/i18n/ve-wmf/tg-cyrl.json index 129eacc2b5..4d32444d6c 100644 --- a/i18n/ve-wmf/tg-cyrl.json +++ b/i18n/ve-wmf/tg-cyrl.json @@ -6,5 +6,5 @@ ] }, "tag-visualeditor": "Вироиши визуалӣ", - "visualeditor-welcomedialog-title": "Хуш омадед ба Википедиа" + "visualeditor-welcomedialog-title": "{{GENDER:$1|Хуш омадед}} ба $1" } diff --git a/i18n/ve-wmf/vi.json b/i18n/ve-wmf/vi.json index 46c9fe1fe2..89c31c8647 100644 --- a/i18n/ve-wmf/vi.json +++ b/i18n/ve-wmf/vi.json @@ -39,5 +39,5 @@ "visualeditor-welcomedialog-content-thanks": "Xin cảm ơn bạn muốn giúp người ta khám phá và tìm hiểu!", "visualeditor-welcomedialog-switch": "Chuyển sang trình soạn thảo mã nguồn", "visualeditor-welcomedialog-switch-ve": "Chuyển sang trình soạn thảo trực quan", - "visualeditor-welcomedialog-title": "{{GENDER:$1}}Hoan nghênh bạn đã đến $2" + "visualeditor-welcomedialog-title": "{{GENDER:$1|Chào mừng bạn}} đến với $2" } From 0907a7ca23bef56d438d6e7360d3646ac652cebe Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Thu, 4 Sep 2025 12:04:54 +0100 Subject: [PATCH 602/730] Update PasteCheck copy Bug: T400518 Change-Id: I57f65f2acd4508e6617dff4b30e93f52f06a766d --- editcheck/i18n/en.json | 3 ++- editcheck/i18n/qqq.json | 5 +++-- .../editchecks/experimental/ImportCopyvioEditCheck.js | 5 +++++ extension.json | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index 64c2b0ed8b..b9d6905540 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -24,7 +24,8 @@ "editcheck-dialog-addref-title": "Add a citation", "editcheck-dialog-title": "Before publishing", "editcheck-copyvio-title": "Pasted content", - "editcheck-copyvio-description": "As a general rule, do not copy text from other sources. Doing so usually constitutes both a copyright violation and plagiarism.", + "editcheck-copyvio-description": "Please avoid copying text from other sources, even if rephrased or cited. This could be considered [$1 copyright violation or plagiarism] and may result in your content being removed or your account being blocked.", + "editcheck-copyvio-descriptionlink": "//foundation.wikimedia.org/wiki/Special:MyLanguage/Resolution:Licensing_policy#Resolution", "editcheck-copyvio-prompt": "Did you write this text?", "editcheck-copyvio-action-keep": "Yes, keep it", "editcheck-copyvio-action-remove": "No, remove it", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index 6434d638bc..39daf62f6e 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -27,6 +27,7 @@ "editcheck-dialog-title": "Title shown in the toolbar while the user is in the add a citation workflow.", "editcheck-copyvio-title": "Title of pasted content / copyvio check", "editcheck-copyvio-description": "Description of pasted content / copyvio check", + "editcheck-copyvio-descriptionlink": "{{notranslate}}\nLink to the tone check model card, shown as part of {{msg-mw|editcheck-tone-footer}}", "editcheck-copyvio-prompt": "Prompt shown before pasted content / copyvio check questions, asking whether to keep or remove the content", "editcheck-copyvio-action-keep": "Label for the keep option when asking users if they want to act on the pasted content check", "editcheck-copyvio-action-remove": "Label for the remove option when asking users if they want to act on the pasted content check", @@ -39,9 +40,9 @@ "editcheck-copyvio-remove-notify": "Notification message shown after pasted content is removed", "editcheck-tone-title": "Title of tone check", "editcheck-tone-description": "Help text explaining the tone check", - "editcheck-tone-descriptionlink": "{{notranslate}}\nLink to learn more about the tone check, shown as part of {{msg-mw|editcheck-tone-description}}", + "editcheck-tone-descriptionlink": "{{notranslate}}\nLink to learn more about paste check, shown as part of {{msg-mw|editcheck-tone-description}", "editcheck-tone-footer": "Footer explaining the tone check model", - "editcheck-tone-footerlink": "{{notranslate}}\nLink to the tone check model card, shown as part of {{msg-mw|editcheck-tone-footer}}", + "editcheck-tone-footerlink": "{{notranslate}}\nLink to learn more about the tone check model, shown as part of {{msg-mw|editcheck-tone-footer}}", "editcheck-tone-title-acted": "Title of tone check after it has been acted on", "editcheck-tone-description-acted": "Help text explaining the tone check after it has been acted on. \"Look out\" here means \"Be aware of\" or \"Be careful of\".", "editcheck-tone-reject-appropriate": "Answer option for tone check in response to {{msg-mw|editcheck-reject-description}}", diff --git a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js index 4e10ef3e43..d81288fbf3 100644 --- a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js +++ b/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js @@ -48,6 +48,11 @@ mw.editcheck.ImportCopyvioEditCheck.prototype.onDocumentChange = function ( surf const fragments = pastesById[ id ].map( ( range ) => surfaceModel.getLinearFragment( range ) ); return new mw.editcheck.EditCheckAction( { fragments: fragments, + // eslint-disable-next-line no-jquery/no-append-html + message: $( '' ).append( ve.htmlMsg( 'editcheck-copyvio-description', ve.msg( 'editcheck-copyvio-descriptionlink' ) ) ) + .find( 'a' ).attr( 'target', '_blank' ).on( 'click', () => { + ve.track( 'activity.editCheck-' + this.getName(), { action: 'click-learn-more' } ); + } ).end(), id: id, check: this } ); diff --git a/extension.json b/extension.json index 7a2b56802b..1f599cced5 100644 --- a/extension.json +++ b/extension.json @@ -674,6 +674,7 @@ "editcheck-dialog-title", "editcheck-copyvio-title", "editcheck-copyvio-description", + "editcheck-copyvio-descriptionlink", "editcheck-copyvio-prompt", "editcheck-copyvio-action-keep", "editcheck-copyvio-action-remove", From bfa91a6acb618b441da2edc46cbf138855702044 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 15 Sep 2025 18:28:37 +0100 Subject: [PATCH 603/730] Update VE core submodule to master (70eee46f0) New changes: 9c6fc6dfb ve.dm.SurfaceFragment: Document and surface can't be null 70eee46f0 ce.ClipboardHandler: emit a ce.Surface#paste event afterPaste Localisation Updates: 3a5526a6e, 8b9679bb9 Bug: T402460 Change-Id: I6d239a788f0c5de1221282d3a4303171a027b508 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index a5bd08c8bc..70eee46f0e 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit a5bd08c8bc2afb1effbfa182d1293e47105db730 +Subproject commit 70eee46f0eb1d0254f91070ab899c1a0d19d434a From de2fd85ff1c01a3b1f8cf184ec6d8e87bcb02728 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 10 Sep 2025 11:32:42 -0500 Subject: [PATCH 604/730] Paste check: rename for consistency Bug: T402460 Change-Id: I41308ac70d8c7d94cdd446905c51c3519abc2634 --- ...mportCopyvioEditCheck.js => PasteCheck.js} | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename editcheck/modules/editchecks/experimental/{ImportCopyvioEditCheck.js => PasteCheck.js} (71%) diff --git a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js b/editcheck/modules/editchecks/experimental/PasteCheck.js similarity index 71% rename from editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js rename to editcheck/modules/editchecks/experimental/PasteCheck.js index d81288fbf3..a790b29aac 100644 --- a/editcheck/modules/editchecks/experimental/ImportCopyvioEditCheck.js +++ b/editcheck/modules/editchecks/experimental/PasteCheck.js @@ -1,23 +1,23 @@ -mw.editcheck.ImportCopyvioEditCheck = function MWImportCopyvioEditCheck() { +mw.editcheck.PasteCheck = function MWPasteCheck() { // Parent constructor - mw.editcheck.ImportCopyvioEditCheck.super.apply( this, arguments ); + mw.editcheck.PasteCheck.super.apply( this, arguments ); }; -OO.inheritClass( mw.editcheck.ImportCopyvioEditCheck, mw.editcheck.BaseEditCheck ); +OO.inheritClass( mw.editcheck.PasteCheck, mw.editcheck.BaseEditCheck ); -mw.editcheck.ImportCopyvioEditCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.BaseEditCheck.static.defaultConfig, { +mw.editcheck.PasteCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.BaseEditCheck.static.defaultConfig, { minimumCharacters: 50 } ); -mw.editcheck.ImportCopyvioEditCheck.static.title = ve.msg( 'editcheck-copyvio-title' ); +mw.editcheck.PasteCheck.static.title = ve.msg( 'editcheck-copyvio-title' ); -mw.editcheck.ImportCopyvioEditCheck.static.description = ve.msg( 'editcheck-copyvio-description' ); +mw.editcheck.PasteCheck.static.description = ve.msg( 'editcheck-copyvio-description' ); -mw.editcheck.ImportCopyvioEditCheck.static.prompt = ve.msg( 'editcheck-copyvio-prompt' ); +mw.editcheck.PasteCheck.static.prompt = ve.msg( 'editcheck-copyvio-prompt' ); -mw.editcheck.ImportCopyvioEditCheck.static.name = 'paste'; +mw.editcheck.PasteCheck.static.name = 'paste'; -mw.editcheck.ImportCopyvioEditCheck.static.choices = [ +mw.editcheck.PasteCheck.static.choices = [ { action: 'keep', label: ve.msg( 'editcheck-copyvio-action-keep' ) @@ -28,7 +28,7 @@ mw.editcheck.ImportCopyvioEditCheck.static.choices = [ } ]; -mw.editcheck.ImportCopyvioEditCheck.prototype.onDocumentChange = function ( surfaceModel ) { +mw.editcheck.PasteCheck.prototype.onDocumentChange = function ( surfaceModel ) { const pastesById = {}; surfaceModel.documentModel.documentNode.getAnnotationRanges().forEach( ( annRange ) => { const annotation = annRange.annotation; @@ -59,7 +59,7 @@ mw.editcheck.ImportCopyvioEditCheck.prototype.onDocumentChange = function ( surf } ); }; -mw.editcheck.ImportCopyvioEditCheck.prototype.act = function ( choice, action, surface ) { +mw.editcheck.PasteCheck.prototype.act = function ( choice, action, surface ) { switch ( choice ) { case 'keep': return action.widget.showFeedback( { @@ -94,4 +94,4 @@ mw.editcheck.ImportCopyvioEditCheck.prototype.act = function ( choice, action, s } }; -mw.editcheck.editCheckFactory.register( mw.editcheck.ImportCopyvioEditCheck ); +mw.editcheck.editCheckFactory.register( mw.editcheck.PasteCheck ); From a84f627a4b67eff628d4eefc5d4e6277f4dde178 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 15 Sep 2025 18:03:08 -0500 Subject: [PATCH 605/730] Edit check dialog: reset currentOffset when reusing the dialog Follow-up to 0fb732d41f413fda867cc15f7bba52ceb094d2fa Bug: T404661 Depends-On: I484e26d7abbc6f93222ee9bfa90757e0a134b183 Change-Id: Ic3a35a8f6df3f00e2031a82021ca3d7e2e69c969 --- editcheck/modules/dialogs/EditCheckDialog.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index d34fb52182..b7ebba574f 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -289,6 +289,10 @@ ve.ui.EditCheckDialog.prototype.getSetupProcess = function ( data, process ) { this.surface = data.surface; this.updateFilter = data.updateFilter; + // Reset currentOffset so that reusing the dialog multiple times in a + // session won't produce unexpected behavior. (T404661) + this.currentOffset = null; + this.singleAction = this.inBeforeSave || OO.ui.isMobile(); this.closeButton.toggle( OO.ui.isMobile() ); From 326f71dee4a1c1ec47824710943403c2ce867646 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 9 Sep 2025 18:27:29 -0500 Subject: [PATCH 606/730] Paste check: log when a paste check would have been shown if enabled This moves paste out of the experimental group so it can have its config checked. Bug: T402460 Depends-On: Ib4841e9ce810360c127e102ef66f4509b644adc0 Change-Id: If67495e9fca6902aa6a3b5352f7f724d88f82301 --- .../editchecks/{experimental => }/PasteCheck.js | 0 editcheck/modules/init.js | 15 +++++++++++++++ extension.json | 1 + 3 files changed, 16 insertions(+) rename editcheck/modules/editchecks/{experimental => }/PasteCheck.js (100%) diff --git a/editcheck/modules/editchecks/experimental/PasteCheck.js b/editcheck/modules/editchecks/PasteCheck.js similarity index 100% rename from editcheck/modules/editchecks/experimental/PasteCheck.js rename to editcheck/modules/editchecks/PasteCheck.js diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 330cc67f66..3b326611ef 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -31,7 +31,10 @@ require( './editchecks/BaseEditCheck.js' ); require( './editchecks/AsyncTextCheck.js' ); require( './editchecks/AddReferenceEditCheck.js' ); require( './editchecks/ToneCheck.js' ); +require( './editchecks/PasteCheck.js' ); + nonDefaultChecks.add( 'tone' ); +nonDefaultChecks.add( 'paste' ); if ( mw.editcheck.experimental ) { mw.loader.using( 'ext.visualEditor.editCheck.experimental' ); @@ -166,5 +169,17 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.forceEnab checkForTone( 'onBeforeSave' ); } ); } + // Temporary logging for T402460 + if ( nonDefaultChecks.has( 'paste' ) ) { + target.on( 'surfaceReady', () => { + target.getSurface().getView().on( 'paste', ( data ) => { + // Check might not be registered so we can't use the factory. + const check = new mw.editcheck.PasteCheck( null, mw.editcheck.config.paste ); + if ( check.canBeShown() && !data.source && data.fragment.getSelection().getCoveringRange().getLength() >= check.config.minimumCharacters ) { + ve.track( 'activity.editCheck-paste', { action: 'relevant-paste' } ); + } + } ); + } ); + } } ); } diff --git a/extension.json b/extension.json index 1f599cced5..742af8d57c 100644 --- a/extension.json +++ b/extension.json @@ -641,6 +641,7 @@ "editcheck/modules/editchecks/AsyncTextCheck.js", "editcheck/modules/editchecks/AddReferenceEditCheck.js", "editcheck/modules/editchecks/ToneCheck.js", + "editcheck/modules/editchecks/PasteCheck.js", { "name": "editcheck/modules/config.json", "callback": "\\MediaWiki\\Extension\\VisualEditor\\EditCheck\\ResourceLoaderData::getConfig" From 5ef5946d42960501c91583a80132c11d566a2e01 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 16 Sep 2025 09:31:05 +0200 Subject: [PATCH 607/730] Localisation updates from https://translatewiki.net. Change-Id: I714f2270d24d93f66f6eb1677756722db46e8065 --- editcheck/i18n/de.json | 2 +- i18n/ve-mw/got.json | 4 ++-- i18n/ve-mw/ppl.json | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index cf91b420fc..bf8883563a 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -22,7 +22,7 @@ "editcheck-dialog-addref-title": "Einen Beleg hinzufügen", "editcheck-dialog-title": "Vor der Veröffentlichung", "editcheck-copyvio-title": "Eingefügter Inhalt", - "editcheck-copyvio-description": "Kopiere in der Regel keinen Text aus anderen Quellen. Dies stellt in der Regel sowohl eine Verletzung des Urheberrechts als auch ein Plagiat dar.", + "editcheck-copyvio-description": "Bitte vermeide das Kopieren von Texten aus anderen Quellen, auch wenn diese umformuliert oder zitiert werden. Dies könnte als [$1 Urheberrechtsverletzung oder Plagiat] angesehen werden und zur Entfernung deiner Inhalte oder zur Sperrung deines Kontos führen.", "editcheck-copyvio-prompt": "Hast du diesen Text geschrieben?", "editcheck-copyvio-action-keep": "Ja, behalten.", "editcheck-copyvio-action-remove": "Nein, entfernen.", diff --git a/i18n/ve-mw/got.json b/i18n/ve-mw/got.json index c4b3ae3cd1..3f0bbea97a 100644 --- a/i18n/ve-mw/got.json +++ b/i18n/ve-mw/got.json @@ -7,7 +7,7 @@ "tooltip-ca-ve-edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "visualeditor-ca-createlocaldescriptionsource": "𐌰𐌽𐌰𐌰𐌹𐌰𐌿𐌺 𐍃𐍄𐌰𐌳𐌴𐌹𐌽𐌰𐌹𐌶𐍉𐍃 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌰𐌹𐍃 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", "visualeditor-ca-createsource": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", - "visualeditor-ca-editsource": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", - "visualeditor-ca-editsource-section": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", + "visualeditor-ca-editsource": "𐌱𐍂𐌿𐌽𐌽𐌰𐌽 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽", + "visualeditor-ca-editsource-section": "𐌱𐍂𐌿𐌽𐌽𐌰𐌽 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽", "visualeditor-descriptionpagelink": "Project:𐌼𐌰𐌽𐌻𐌴𐌹𐌺𐌾𐌰-𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐍉" } diff --git a/i18n/ve-mw/ppl.json b/i18n/ve-mw/ppl.json index 59e60ac7b3..54bcbe7cdf 100644 --- a/i18n/ve-mw/ppl.json +++ b/i18n/ve-mw/ppl.json @@ -3,10 +3,12 @@ "authors": [ "Canjura", "Jose Antonio Guillen Landaverde", + "Taty Flores de Constante", "TimumachtikanNawat" ] }, "visualeditor-ca-createlocaldescriptionsource": "Takutunchin ka ijtik ne wiki", + "visualeditor-ca-createsource": "Shikinchiwa itajtachiska tajkwilulchichin", "visualeditor-ca-editsource": "Shikpata ne tajkwilulchin", "visualeditor-ca-editsource-section": "Shikpata ne tajkwilulchin" } From 88673d6ec771cca031ee3772471eb1852a539616 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 16 Sep 2025 11:46:54 -0500 Subject: [PATCH 608/730] The save shortcut should switch panels rather than immediately saving Change-Id: Ia4ef1d2a380c2642c019973e36a36bc6685788df --- .../ve-mw/init/targets/ve.init.mw.ArticleTarget.js | 4 +++- modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js | 12 ++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js index 937f6bf258..7084973c74 100644 --- a/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js +++ b/modules/ve-mw/init/targets/ve.init.mw.ArticleTarget.js @@ -1961,7 +1961,9 @@ ve.init.mw.ArticleTarget.prototype.showSaveDialog = function ( action, checkboxN const currentWindow = this.getSurface().getDialogs().getCurrentWindow(); if ( currentWindow && currentWindow.constructor.static.name === 'mwSave' && ( action === 'save' || action === null ) ) { // The current window is the save dialog, and we've gotten here via - // the save action. Trigger a save. We're doing this here instead of + // the save action. Trigger a save action on the dialog, which will + // either switch to the save panel or immediately save depending on + // the currently active panel. We're doing this here instead of // relying on an accesskey on the save button, because that has some // cross-browser issues that makes it not work in Firefox. currentWindow.executeAction( 'save' ); diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js index 40ee6f1f93..f3c28abba4 100644 --- a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js +++ b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js @@ -905,10 +905,14 @@ ve.ui.MWSaveDialog.prototype.getActionProcess = function ( action ) { if ( action === 'save' ) { return new OO.ui.Process( () => { - const saveDeferred = ve.createDeferred(); - this.clearMessage( 'keyboard-shortcut-submit' ); - this.emit( 'save', saveDeferred ); - return saveDeferred.promise(); + if ( this.panels.getCurrentItem() !== this.savePanel ) { + this.swapPanel( 'save' ); + } else { + const saveDeferred = ve.createDeferred(); + this.clearMessage( 'keyboard-shortcut-submit' ); + this.emit( 'save', saveDeferred ); + return saveDeferred.promise(); + } } ); } if ( action === 'review' || action === 'preview' || action === 'resolve' ) { From cff24fc182461d9a47bab8ed7964d8a32cd84489 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 16 Sep 2025 16:04:46 -0500 Subject: [PATCH 609/730] Wikitext link annotation inspector: check that initialAnnotation exists When creating a brand new link and immediately switching to "external", no initialAnnotation will be present. Bug: T404741 Change-Id: I91acc8b0701acb7d27165bc2ab0d2e0a9cf8cf00 --- .../ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js index eecb7cef04..2715f13a69 100644 --- a/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js +++ b/modules/ve-mw/ui/inspectors/ve.ui.MWWikitextLinkAnnotationInspector.js @@ -304,7 +304,7 @@ ve.ui.MWWikitextLinkAnnotationInspector.prototype.getTeardownProcess = function fragment.insertContent( '[[' + prefix + targetText + labelText + ']]' ); } else if ( annotation instanceof ve.dm.MWExternalLinkAnnotation ) { - if ( this.initialAnnotation.element.type === 'link/mwMagic' ) { + if ( this.initialAnnotation && this.initialAnnotation.element.type === 'link/mwMagic' ) { fragment.insertContent( annotation.element.attributes.href ); } else { let labelText = ''; From 757fde0142751d832e1b2b20e81003ad7eedea65 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Wed, 17 Sep 2025 09:28:52 +0200 Subject: [PATCH 610/730] Localisation updates from https://translatewiki.net. Change-Id: I8f8820d594a53eb24ccc414e31a8ef032db8e16d --- editcheck/i18n/ar.json | 2 +- editcheck/i18n/az.json | 2 +- editcheck/i18n/fi.json | 2 +- editcheck/i18n/mk.json | 4 ++-- editcheck/i18n/nb.json | 2 +- editcheck/i18n/nl.json | 2 +- i18n/ve-mw/br.json | 16 +++++++++++++++- i18n/ve-mw/got.json | 4 ++-- i18n/ve-mw/ps.json | 2 +- i18n/ve-wmf/oc.json | 6 +++++- 10 files changed, 30 insertions(+), 12 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index c5138285b4..65bb42a318 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -24,7 +24,7 @@ "editcheck-dialog-addref-title": "إضافة استشهاد", "editcheck-dialog-title": "قبل النشر", "editcheck-copyvio-title": "محتوى ملصوق", - "editcheck-copyvio-description": "كقاعدة عامة، لا تنسخ نصًا من مصادر أخرى. عادة، يُشكل هذا انتهاكًا لحقوق الطبع والنشر وسرقة أدبية.", + "editcheck-copyvio-description": "يرجى تجنب نسخ النصوص من مصادر أخرى، حتى لو أُعيدت صياغتها أو استُشهد بها. قد يُعدّ هذا [$1 انتهاكًا لحقوق الطبع والنشر أو انتحالًا]، وقد يؤدي إلى إزالة محتواك أو حظر حسابك.", "editcheck-copyvio-prompt": "هل كتبت هذا النص؟", "editcheck-copyvio-action-keep": "نعم، احتفظ به", "editcheck-copyvio-action-remove": "لا، أزله", diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index efac70bf23..71de41d0fa 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -23,7 +23,7 @@ "editcheck-dialog-addref-title": "İstinad əlavə et", "editcheck-dialog-title": "Yayımlamadan əvvəl", "editcheck-copyvio-title": "Yapışdırılmış məzmun", - "editcheck-copyvio-description": "Bir qayda olaraq, mətni digər mənbələrdən olduğu kimi kopyalamayın. Bunu etmək adətən həm müəllif hüquqlarının pozulması, həm də plagiat sayılır.", + "editcheck-copyvio-description": "Zəhmət olmasa, mətni başqa mənbələrdən kopiyalamaqdan çəkinin, hətta cümlələr sıfırdan yazılsa və ya istinad edilsə belə. Bu [$1 müəllif hüquqları pozuntusu və ya plagiat] hesab edilə bilər və məzmununuzun silinməsi və ya hesabınızın bloklanması ilə nəticələnə bilər.", "editcheck-copyvio-prompt": "Bu mətni siz özünüz yazmısınız?", "editcheck-copyvio-action-keep": "Bəli, saxla", "editcheck-copyvio-action-remove": "Xeyr, sil", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index 715082399e..d6c78e12bf 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -24,7 +24,7 @@ "editcheck-dialog-addref-title": "Lisää lähdeviite", "editcheck-dialog-title": "Ennen julkaisemista", "editcheck-copyvio-title": "Liitetty sisältö", - "editcheck-copyvio-description": "Tekstin kopiointi muista lähteistä on pääsääntöisesti kiellettyä. Se on usein sekä tekijänoikeusrikkomus että plagiarismia.", + "editcheck-copyvio-description": "Vältä tekstin kopiointia muista lähteistä, vaikka muotoilisit sen uudelleen tai lisäisit lähdeviitteen. Kopiointia pidetään [$1 tekijänoikeusrikkomuksena tai plagiarismia], ja se voi johtaa lisäämäsi sisällön poistamiseen tai tunnuksesi estoon.", "editcheck-copyvio-prompt": "Kirjoititko tämän tekstin itse?", "editcheck-copyvio-action-keep": "Kyllä, säilytä", "editcheck-copyvio-action-remove": "Ei, poista", diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index c406f2e95a..e2b168d266 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -22,7 +22,7 @@ "editcheck-dialog-addref-title": "Додај навод", "editcheck-dialog-title": "Пред да објавите", "editcheck-copyvio-title": "Налепена содржина", - "editcheck-copyvio-description": "По општо правило, не копирајте текст од други извори. Копирањето на текст претставува кршење на авторски права и плагијат.", + "editcheck-copyvio-description": "Избегнувајте да копирате текстови од други извори, дури и ако се пресрочени или цитирани. Ова може да се смета за [$1 авторскоправен прекршок или плагијат] и може да доведе до остранување на вашата содржина или блокирање на вашата сметка.", "editcheck-copyvio-prompt": "Дали вие го имате напишано текстов?", "editcheck-copyvio-action-keep": "Да, задржи", "editcheck-copyvio-action-remove": "Не, отстрани", @@ -41,7 +41,7 @@ "editcheck-tone-reject-appropriate": "Тонот е соодветен.", "editcheck-tone-reject-uncertain": "Не знам како да го преработам тонот", "editcheck-tone-reject-other": "Друго", - "editcheck-tone-thank": "Ви благодариме што го преработивте тонот!", + "editcheck-tone-thank": "Ви благодариме што обративте внимание на тонот!", "editcheck-reject-description": "Другите корисници би ценеле да дознаат зошто го направивте овој избор.", "editcheck-review-title": "Прегледај промени", "tag-editcheck-reference-decline-common-knowledge": "Проверката на уредувањето (наводи) е одбиена (општопознато)", diff --git a/editcheck/i18n/nb.json b/editcheck/i18n/nb.json index af4de19a8b..147c4f48c8 100644 --- a/editcheck/i18n/nb.json +++ b/editcheck/i18n/nb.json @@ -23,7 +23,7 @@ "editcheck-dialog-addref-title": "Legg til en referanse", "editcheck-dialog-title": "Før publisering", "editcheck-copyvio-title": "Innhold som er limt inn", - "editcheck-copyvio-description": "Generelt må du ikke kopiere tekst fra andre kilder. Det utgjør ofte plagiarisme og et brudd på opphavsrett.", + "editcheck-copyvio-description": "Unngå å kopiere tekst fra andre kilder, selv om du parafraserer eller siterer den. Dette kan anses som [$1 opphavsrettsbrudd eller plagiat], og kan føre til at innholdet blir fjernet eller kontoen din blir blokkert.", "editcheck-copyvio-prompt": "Skrev du denne teksten?", "editcheck-copyvio-action-keep": "Ja, behold den", "editcheck-copyvio-action-remove": "Nei, fjern den", diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index 0d2f7c7659..c91c078aac 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -25,7 +25,7 @@ "editcheck-dialog-addref-title": "Referentie toevoegen", "editcheck-dialog-title": "Voordat u dit publiceert", "editcheck-copyvio-title": "Geplakte inhoud", - "editcheck-copyvio-description": "Over het algemeen geldt: kopieer geen tekst van andere bronnen. Dit is meestal een schending van het auteursrecht en ook plagiaat.", + "editcheck-copyvio-description": "Kopieer geen tekst van andere bronnen, ook niet door de tekst te herformuleren of te citeren. Dit kan worden beschouwd als [$1 schending van het auteursrecht of plagiaat] en kan ertoe leiden dat uw tekst wordt verwijderd of uw account wordt geblokkeerd.", "editcheck-copyvio-prompt": "Hebt u deze tekst geschreven?", "editcheck-copyvio-action-keep": "Ja, behouden", "editcheck-copyvio-action-remove": "Nee, verwijderen", diff --git a/i18n/ve-mw/br.json b/i18n/ve-mw/br.json index e6e75a6540..63eaef6d61 100644 --- a/i18n/ve-mw/br.json +++ b/i18n/ve-mw/br.json @@ -49,6 +49,7 @@ "visualeditor-changedesc-mwtransclusion": "Arventennoù patrom kemmet", "visualeditor-desc": "Gwelaozer evit MediaWiki", "visualeditor-descriptionpagelink": "Project:Gwelaozer", + "visualeditor-dialog-extension-abandonedit": "Ha sur oc'h e fell deoc'h serriñ ar prenestr-mañ hep lakaat ho kemmoù da dalvezout ?", "visualeditor-dialog-media-alttext-checkbox": "Ober gant an alc’hwez evel an destenn all", "visualeditor-dialog-media-alttext-section": "Testenn all", "visualeditor-dialog-media-alttext-section-help": "Gant se e c’hallit aozañ un deskrivadur destenn evit ar re ne c’hallont ket gwelout an elfenn. A-walc’h e tlefe bezañ an deskrivadur evit lakaat anezho da gompren ar pal hag an titouroù roet gant an elfenn media. A-bouez eo evit an implijerien zall ha re all a ra gant meziantoù lennerien skramm pe merdeerioù testenn hepken.", @@ -137,6 +138,7 @@ "visualeditor-dialog-template-title": "Patrom", "visualeditor-dialog-transclusion-action-save": "Enrollañ", "visualeditor-dialog-transclusion-template-title-nonexistent": "N’eus ket eus ar patrom-mañ.", + "visualeditor-dialog-transclusion-template-widget-aria": "Pouezit war Esaouenn evit dibab ar patrom.", "visualeditor-dialog-transclusion-add-wikitext": "Ouzhpennañ wikitestenn", "visualeditor-dialog-transclusion-add-param-error-exists-selected": "N'haller ket ouzhpennañ div arventenn \"$2\".", "visualeditor-dialog-transclusion-add-param-placeholder": "Anv an arventenn", @@ -174,9 +176,14 @@ "visualeditor-dialog-transclusion-wikitext": "Wikitestenn", "visualeditor-dialogbutton-media-tooltip": "Skeudennoù ha mediaoù", "visualeditor-dialogbutton-template-tooltip": "Patrom", + "visualeditor-editconflict": "N’eo ket bet posupl enrollañ ho kemmoù abalamour d'un tabut kemmañ. Ha fellout a ra {{GENDER:|deoc’h}} diskoulmañ an tabut dre zorn ?", + "visualeditor-editingtabdialog-body": "{{SITENAME}} a zalc'h soñj bremañ pe aozer a gavit gwellañ. Gallout a rit cheñch mod kemmañ pa vezit o kemmañ, ha cheñch ho penndibab diwezhatoc'h.", + "visualeditor-editingtabdialog-ok": "Ober gant an embanner am eus implijet e-kerzh ma c'hemm diwezhañ", + "visualeditor-editingtabdialog-title": "Ivinelloù kemmañ", "visualeditor-editnotices-tool": "$1 {{PLURAL:$1|c'hemenn|kemenn}}", "visualeditor-editnotices-tooltip": "Kemennoù aozañ", "visualeditor-editsummary": "Deskrivit ar pezh hoc'h eus cheñchet", + "visualeditor-editsummary-characters-remaining": "An niver a arouezennoù a chom", "visualeditor-educationpopup-dismiss": "Mat eo, deomp dezhi", "visualeditor-expandable-less": "Nebeutoc'h", "visualeditor-expandable-more": "Muioc'h", @@ -246,6 +253,8 @@ "visualeditor-preference-tabs-prefer-ve": "Ober gant ar gwelaozer atav ma c’heller", "visualeditor-preference-tabs-prefer-wt": "Ober gant an aozer mammenn atav", "visualeditor-preference-tabs-remember-last": "Derc'hel soñj eus ma aozer diwezhañ", + "visualeditor-preference-collab-label": "Kemmañ-kenlabour", + "visualeditor-preference-collab-description": "Pediñ implijerien all da gemer perzh en ho talc'h kemmañ er gwelaozer.", "visualeditor-rebase-client-export": "Ezporzhiañ", "visualeditor-rebase-client-export-start": "Ezporzhiañ...", "visualeditor-rebase-client-import": "Enporzhiañ", @@ -254,6 +263,7 @@ "visualeditor-recreate": "Diverket eo bet ar bajen-mañ goude m’ho peus kroget kemmañ anezhi. Pouezit war \"$1$ evit adkrouiñ anezhi.", "visualeditor-redirect-description": "Adkas war-zu $1", "visualeditor-savedialog-identify-anon": "N’oc’h ket kevreet ken. Ma kendalc’hit e vo enrollet ho chomlec’h IP en istor kemmoù ar bajenn-mañ.", + "visualeditor-savedialog-identify-temp": "Emaoc’h oc’h ober gant an anv implijer berrbad $1 . Ma kendalc'hit e vo liammet ho kemm ouzh an anv implijer-mañ.", "visualeditor-savedialog-identify-user": "Kevreet oc’h bremañ evel [[User:$1|$1]]. Ma kendalc’hit e vo liammet ho kemmoù ouzh ar gont-mañ.", "visualeditor-savedialog-keyboard-shortcut-submit": "Gallout a rit klikañ war $1 evit enrollañ ho kemmoù.", "visualeditor-savedialog-label-publish-short": "Embann", @@ -273,15 +283,19 @@ "visualeditor-savedialog-title-save": "Enrollañ ho kemmoù", "visualeditor-section-body-placeholder": "Rann nevez", "visualeditor-section-title-placeholder": "Danvez", + "visualeditor-loaderror-revidconflict": "N'eo ket heñvel an IDoù stumm degaset gant ar servijer (teul : $1, metaroadennoù : $2).", + "visualeditor-loaderror-wrongmode": "Klasket eo bet kargañ an aozer en un doare fall (seurt roadennoù : \"$1\", mod embanner : \"$2\").", "visualeditor-settings-tool": "Arventennoù ar bajenn", "visualeditor-special-characters-group-other": "Implijet alies", "visualeditor-templatesused-tool": "Patromoù implijet", "visualeditor-title-error": "Titl fall.", - "visualeditor-toload": "Emañ ar Gwelaozer o vont da gargañ. Ma welit c'hoazh ar gemennadenn-mañ a-benn un nebeut eilennoù, [$1 kargit ar bajenn en-dro].", + "visualeditor-toload": "Emañ ar gwelaozer o vont da gargañ. Ma welit c'hoazh ar gemennadenn-mañ a-benn un nebeut eilennoù, [$1 freskait ar bajenn].", + "visualeditor-tooltip-non-breaking-space": "Esaouenn zidroc’hadus", "visualeditor-version-label": "Stumm", "visualeditor-wikitext-progress": "O treuzkemm wikitestenn", "visualeditor-wikitext-warning": "Emaoc’h oc’h implijout ar gwelaozer - ne c’heller ket ober gant [[{{MediaWiki:visualeditor-wikitext-warning-link}}|wikitext]] amañ. Evit mont d’an aozer mammenn pa garit hep koll kemmoù, klikit war Mammenn.", "visualeditor-wikitext-warning-title": "Balizennoù wikitestenn kavet", + "visualeditor-wikitextconvert-title": "Treuzkemm ar furmad e wikitestenn ?", "visualeditor-wikitextconvert-message": "Peget ho peus endalc’had pinvidik e furmad. Ha fellout a re deoc’h treuzkemm ar furmadiñ da wikitestenn?", "visualeditor-wikitextconvert-convert": "Treuzkemm da wikitestenn" } diff --git a/i18n/ve-mw/got.json b/i18n/ve-mw/got.json index 3f0bbea97a..c1bc72337a 100644 --- a/i18n/ve-mw/got.json +++ b/i18n/ve-mw/got.json @@ -5,8 +5,8 @@ ] }, "tooltip-ca-ve-edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", - "visualeditor-ca-createlocaldescriptionsource": "𐌰𐌽𐌰𐌰𐌹𐌰𐌿𐌺 𐍃𐍄𐌰𐌳𐌴𐌹𐌽𐌰𐌹𐌶𐍉𐍃 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌰𐌹𐍃 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", - "visualeditor-ca-createsource": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌱𐍂𐌿𐌽𐌽𐌰𐌽", + "visualeditor-ca-createlocaldescriptionsource": "𐍃𐍄𐌰𐌳𐌴𐌹𐌽𐌰𐌹𐌶𐍉𐍃 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌰𐌹𐍃 𐌱𐍂𐌿𐌽𐌽𐌰𐌽 𐌰𐌽𐌰𐌰𐌿𐌺𐌰𐌽", + "visualeditor-ca-createsource": "𐌱𐍂𐌿𐌽𐌽𐌰𐌽 𐍃𐌺𐌰𐍀𐌾𐌰𐌽", "visualeditor-ca-editsource": "𐌱𐍂𐌿𐌽𐌽𐌰𐌽 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽", "visualeditor-ca-editsource-section": "𐌱𐍂𐌿𐌽𐌽𐌰𐌽 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽", "visualeditor-descriptionpagelink": "Project:𐌼𐌰𐌽𐌻𐌴𐌹𐌺𐌾𐌰-𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐍉" diff --git a/i18n/ve-mw/ps.json b/i18n/ve-mw/ps.json index dbde0b4794..4fee70eddf 100644 --- a/i18n/ve-mw/ps.json +++ b/i18n/ve-mw/ps.json @@ -97,7 +97,7 @@ "visualeditor-dialog-meta-languages-label": "ژبې", "visualeditor-dialog-meta-languages-link-label": "تړلی مخ", "visualeditor-dialog-meta-languages-name-label": "ژبه", - "visualeditor-dialog-meta-languages-readonlynote": "دا د دې مخ سره د نورو ژبو د مخونو د تړنو يو لړليک دی. د اوس لپاره، دا مخ يوازې د سرچينې سمولو په بڼه او د ويکيډاټا له مخې د سمولو وړ دی.", + "visualeditor-dialog-meta-languages-readonlynote": "دا د دې مخ سره د نورو ژبو د مخونو د تړنو يو لړليک دی. د اوس لپاره، دا مخ يوازې د سرچينې سمولو په بڼه او د ويکي‌اومتوک له مخې د سمولو وړ دی.", "visualeditor-dialog-meta-languages-section": "ژبې", "visualeditor-dialog-meta-settings-displaytitle": "ښکارېدونکی سرليک", "visualeditor-dialog-meta-settings-hiddencat-label": "پټې وېشنيزې", diff --git a/i18n/ve-wmf/oc.json b/i18n/ve-wmf/oc.json index e2bd82804f..fa668f917a 100644 --- a/i18n/ve-wmf/oc.json +++ b/i18n/ve-wmf/oc.json @@ -2,7 +2,8 @@ "@metadata": { "authors": [ "Cedric31", - "Jfblanc" + "Jfblanc", + "Lhanars" ] }, "tag-visualeditor": "Editor visual", @@ -13,5 +14,8 @@ "visualeditor-feedback-link": "Project:VisualEditor/Feedback", "visualeditor-feedback-tool": "Daissar un comentari sus l'Editor Visual", "visualeditor-help-label": "Legir lo manual de l'utilizaire", + "visualeditor-welcomedialog-content": "Totòm pòt editar, e cada melhorament es util.", + "visualeditor-welcomedialog-content-thanks": "Mercé per ajudar lo mond a descobrir totjorn mai!", + "visualeditor-welcomedialog-switch": "Cambia a l'editor de còdi", "visualeditor-welcomedialog-switch-ve": "Bascular cap a l’editor visual" } From 8e50a1873d7cc963d596aa2f067932f07da16727 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 4 Sep 2025 12:46:36 -0500 Subject: [PATCH 611/730] Edit check: add a config that explicitly turns a check on or off Bug: T403768 Change-Id: Icd58bb23121a5f7915baf246e4f65343d0ae4e7d --- editcheck/modules/editchecks/BaseEditCheck.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/editcheck/modules/editchecks/BaseEditCheck.js b/editcheck/modules/editchecks/BaseEditCheck.js index 9e7fafe4d9..87ffb66c0b 100644 --- a/editcheck/modules/editchecks/BaseEditCheck.js +++ b/editcheck/modules/editchecks/BaseEditCheck.js @@ -38,6 +38,7 @@ mw.editcheck.BaseEditCheck.static.choices = [ ]; mw.editcheck.BaseEditCheck.static.defaultConfig = { + enabled: true, account: false, // 'loggedin', 'loggedout', anything non-truthy means allow either maximumEditcount: 100, ignoreSections: [], @@ -155,6 +156,9 @@ mw.editcheck.BaseEditCheck.prototype.canBeShown = function () { if ( mw.editcheck.forceEnable ) { return true; } + if ( !this.config.enabled ) { + return false; + } // account status: // loggedin, loggedout, or any-other-value meaning 'both' // we'll count temporary users as "logged out" by using isNamed here From b94206a99278aa435a0f136a24a6dd4b4566a399 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 16 Sep 2025 14:29:56 +0100 Subject: [PATCH 612/730] Update copy for paste check decline Bug: T400518 Change-Id: I3d22d8b5f37b1234f44542aa647b44ca02c1d1f5 --- editcheck/i18n/en.json | 5 ++--- editcheck/i18n/qqq.json | 1 - editcheck/modules/editchecks/PasteCheck.js | 3 +-- extension.json | 1 - 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/editcheck/i18n/en.json b/editcheck/i18n/en.json index b9d6905540..b7f98fc520 100644 --- a/editcheck/i18n/en.json +++ b/editcheck/i18n/en.json @@ -29,11 +29,10 @@ "editcheck-copyvio-prompt": "Did you write this text?", "editcheck-copyvio-action-keep": "Yes, keep it", "editcheck-copyvio-action-remove": "No, remove it", - "editcheck-copyvio-keep-description": "Other editors would value learning more about your reason to keep this pasted text.", + "editcheck-copyvio-keep-description": "Please help other editors of this article understand your reason to keep the pasted text.", "editcheck-copyvio-keep-wrote": "I wrote this content and it's not published elsewhere", "editcheck-copyvio-keep-permission": "I have permission to reuse this content", - "editcheck-copyvio-keep-free": "This text is in the public domain or freely licensed", - "editcheck-copyvio-keep-other": "Other", + "editcheck-copyvio-keep-other": "None of the above applies", "editcheck-copyvio-keep-notify": "Thank you for sharing your reason to keep the pasted text!", "editcheck-copyvio-remove-notify": "Thank you for removing this text!", "editcheck-tone-title": "Revise Tone?", diff --git a/editcheck/i18n/qqq.json b/editcheck/i18n/qqq.json index 39daf62f6e..59f5e08151 100644 --- a/editcheck/i18n/qqq.json +++ b/editcheck/i18n/qqq.json @@ -34,7 +34,6 @@ "editcheck-copyvio-keep-description": "Heading for form question asking why the user wants to keep pasted content", "editcheck-copyvio-keep-wrote": "Answer option for pasted content check in response to {{msg-mw|editcheck-copyvio-keep-description}}", "editcheck-copyvio-keep-permission": "Answer option for pasted content check in response to {{msg-mw|editcheck-copyvio-keep-description}}", - "editcheck-copyvio-keep-free": "Answer option for pasted content check in response to {{msg-mw|editcheck-copyvio-keep-description}}", "editcheck-copyvio-keep-other": "Answer option for pasted content check in response to {{msg-mw|editcheck-copyvio-keep-description}}", "editcheck-copyvio-keep-notify": "Notification message shown after pasted content is kept", "editcheck-copyvio-remove-notify": "Notification message shown after pasted content is removed", diff --git a/editcheck/modules/editchecks/PasteCheck.js b/editcheck/modules/editchecks/PasteCheck.js index a790b29aac..627bd27b09 100644 --- a/editcheck/modules/editchecks/PasteCheck.js +++ b/editcheck/modules/editchecks/PasteCheck.js @@ -64,13 +64,12 @@ mw.editcheck.PasteCheck.prototype.act = function ( choice, action, surface ) { case 'keep': return action.widget.showFeedback( { description: ve.msg( 'editcheck-copyvio-keep-description' ), - choices: [ 'wrote', 'permission', 'free', 'other' ].map( + choices: [ 'wrote', 'permission', 'other' ].map( ( key ) => ( { data: key, // Messages that can be used here: // * editcheck-copyvio-keep-wrote // * editcheck-copyvio-keep-permission - // * editcheck-copyvio-keep-free // * editcheck-copyvio-keep-other label: ve.msg( 'editcheck-copyvio-keep-' + key ) } ) ) diff --git a/extension.json b/extension.json index 742af8d57c..1fc26b43b6 100644 --- a/extension.json +++ b/extension.json @@ -682,7 +682,6 @@ "editcheck-copyvio-keep-description", "editcheck-copyvio-keep-wrote", "editcheck-copyvio-keep-permission", - "editcheck-copyvio-keep-free", "editcheck-copyvio-keep-other", "editcheck-copyvio-keep-notify", "editcheck-copyvio-remove-notify", From 9c7b3b9df0c5addb71cef7075ef9bc8b272a2b18 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 17 Sep 2025 14:55:51 +0100 Subject: [PATCH 613/730] Load TemplateData message conditionally Bug: T404790 Change-Id: I85706b7c9d4700d70c8486b138fe0741cd0a6d48 --- extension.json | 11 +++++++-- includes/VisualEditorDataModule.php | 37 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/extension.json b/extension.json index 1fc26b43b6..8bbef89282 100644 --- a/extension.json +++ b/extension.json @@ -1761,7 +1761,6 @@ "messages": [ "quotation-marks", "redirectedfrom", - "templatedata-doc-subpage", "visualeditor-changedesc-mwtransclusion", "visualeditor-dialog-template-title", "visualeditor-dialog-transclusion-action-save", @@ -1834,7 +1833,15 @@ "visualeditor-expandable-less", "visualeditor-expandable-more", "visualeditor-template-sandbox-subpage" - ] + ], + "factory": "MediaWiki\\Extension\\VisualEditor\\VisualEditorDataModule::addOptional", + "optional": { + "TemplateData": { + "messages": [ + "templatedata-doc-subpage" + ] + } + } }, "treeDiffer": { "scripts": [ diff --git a/includes/VisualEditorDataModule.php b/includes/VisualEditorDataModule.php index 3a2831bc4d..f75012e610 100644 --- a/includes/VisualEditorDataModule.php +++ b/includes/VisualEditorDataModule.php @@ -10,8 +10,11 @@ namespace MediaWiki\Extension\VisualEditor; +use MediaWiki\Registration\ExtensionRegistry; use MediaWiki\ResourceLoader\Context as ResourceLoaderContext; +use MediaWiki\ResourceLoader\FileModule; use MediaWiki\ResourceLoader\Module as ResourceLoaderModule; +use MediaWiki\ResourceLoader\Module; use MediaWiki\Title\Title; class VisualEditorDataModule extends ResourceLoaderModule { @@ -123,4 +126,38 @@ public function getDependencies( ?ResourceLoaderContext $context = null ) { 'ext.visualEditor.mediawiki', ]; } + + /** + * Add optional array values to a ResourceLoader module definition depending on loaded extensions. + * + * "factory": "MediaWiki\\Extension\\VisualEditor\\VisualEditorDataModule::addOptional" + * "optional": { + * "MyExtension": { + * "dependencies": [ ... ], + * "messages": [ ... ], + * "packageFiles": [ ... ], + * ... + * } + * } + */ + public static function addOptional( array $info ): Module { + $extensionRegistry = ExtensionRegistry::getInstance(); + + if ( isset( $info['optional'] ) ) { + foreach ( $info['optional'] as $ext => $extOptions ) { + if ( $extensionRegistry->isLoaded( $ext ) ) { + foreach ( $extOptions as $key => $values ) { + if ( !isset( $info[$key] ) ) { + $info[$key] = []; + } + // TODO: Support non-array properties + $info[$key] = array_merge( $info[$key], (array)$values ); + } + } + } + } + + $class = $info['class'] ?? FileModule::class; + return new $class( $info ); + } } From 58850440cd8789536edc3b3d253a0d662fd8d92e Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Wed, 17 Sep 2025 21:49:20 +0200 Subject: [PATCH 614/730] Fix casing of hook handler onRecentChange_save Also remove unused suppression of LowerCamelFunctionsName (T273482) Change-Id: Icfac9ea32692f7f3377023c7db5d717b7742acc6 --- editcheck/includes/Hooks.php | 3 --- includes/Hooks.php | 5 +---- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/editcheck/includes/Hooks.php b/editcheck/includes/Hooks.php index 08460ccf94..b6caeaa659 100644 --- a/editcheck/includes/Hooks.php +++ b/editcheck/includes/Hooks.php @@ -14,9 +14,6 @@ use MediaWiki\ResourceLoader\Hook\ResourceLoaderRegisterModulesHook; use MediaWiki\ResourceLoader\ResourceLoader; -/** - * @phpcs:disable MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName - */ class Hooks implements ResourceLoaderRegisterModulesHook { diff --git a/includes/Hooks.php b/includes/Hooks.php index 5096d02381..0d8a99f65b 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -57,9 +57,6 @@ use OOUI\ButtonWidget; use TextSlotDiffRenderer; -/** - * @phpcs:disable MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName - */ class Hooks implements TextSlotDiffRendererTablePrefixHook, BeforeInitializeHook, @@ -795,7 +792,7 @@ public function onEditPage__showEditForm_fields( $editPage, $output ) { * * @param RecentChange $rc The new RC entry. */ - public function onRecentChange_Save( $rc ) { + public function onRecentChange_save( $rc ) { $request = RequestContext::getMain()->getRequest(); if ( $request->getBool( 'veswitched' ) && $rc->getAttribute( 'rc_this_oldid' ) ) { $rc->addTags( 'visualeditor-switched' ); From 78f36262b1fbacf5223179b573ab12ad330d05c9 Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 18 Sep 2025 10:10:34 +0200 Subject: [PATCH 615/730] Localisation updates from https://translatewiki.net. Change-Id: Ifa8ee4b1c808ab7654c6bcc58f3f4f41b8eb8dc1 --- editcheck/i18n/ar.json | 1 - editcheck/i18n/az.json | 1 - editcheck/i18n/de.json | 5 ++--- editcheck/i18n/fa.json | 1 - editcheck/i18n/fi.json | 1 - editcheck/i18n/fr.json | 1 - editcheck/i18n/gl.json | 1 - editcheck/i18n/he.json | 1 - editcheck/i18n/ia.json | 1 - editcheck/i18n/it.json | 1 - editcheck/i18n/lb.json | 1 - editcheck/i18n/lij.json | 1 - editcheck/i18n/mk.json | 1 - editcheck/i18n/nb.json | 1 - editcheck/i18n/nl.json | 1 - editcheck/i18n/sr-ec.json | 1 - editcheck/i18n/uk.json | 1 - editcheck/i18n/yue-hant.json | 1 - editcheck/i18n/zh-hans.json | 1 - editcheck/i18n/zh-hant.json | 1 - i18n/ve-wmf/br.json | 2 ++ 21 files changed, 4 insertions(+), 22 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index 65bb42a318..c32cd5443f 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -31,7 +31,6 @@ "editcheck-copyvio-keep-description": "يقدر المحررون الآخرون معرفة المزيد عن سبب احتفاظك بهذا النص الملصق.", "editcheck-copyvio-keep-wrote": "لقد كتبت هذا المحتوى ولم يتم نشره في أي مكان آخر", "editcheck-copyvio-keep-permission": "لدي الإذن لإعادة استخدام هذا المحتوى", - "editcheck-copyvio-keep-free": "هذا النص في النطاق العام أو يحمل رخصة حرة", "editcheck-copyvio-keep-other": "آخر", "editcheck-copyvio-keep-notify": "شكرًا لك على مشاركة سببك للاحتفاظ بالنص الملصق!", "editcheck-copyvio-remove-notify": "شكرًا لك على إزالة هذا النص!", diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index 71de41d0fa..d343250db2 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -30,7 +30,6 @@ "editcheck-copyvio-keep-description": "Digər redaktorlar bu yapışdırılmış mətni saxlamaq səbəbiniz haqqında daha çox öyrənmək istəyə bilərlər.", "editcheck-copyvio-keep-wrote": "Bu məzmunu mən özüm yazmışam və başqa bir yerdə dərc olunmayıb", "editcheck-copyvio-keep-permission": "Bu məzmunu təkrar istifadə etmək icazəm var", - "editcheck-copyvio-keep-free": "Bu mətn ictimai mülkiyyətdədir və ya azad lisenziyalıdır", "editcheck-copyvio-keep-other": "Digər", "editcheck-copyvio-keep-notify": "Yapışdırılmış mətni saxlamaq səbəbinizi paylaşdığınız üçün təşəkkür edirik!", "editcheck-copyvio-remove-notify": "Bu mətni sildiyiniz üçün təşəkkür edirik!", diff --git a/editcheck/i18n/de.json b/editcheck/i18n/de.json index bf8883563a..93906804cc 100644 --- a/editcheck/i18n/de.json +++ b/editcheck/i18n/de.json @@ -26,11 +26,10 @@ "editcheck-copyvio-prompt": "Hast du diesen Text geschrieben?", "editcheck-copyvio-action-keep": "Ja, behalten.", "editcheck-copyvio-action-remove": "Nein, entfernen.", - "editcheck-copyvio-keep-description": "Andere Redakteure würden gerne mehr über deine Gründe für die Beibehaltung dieses eingefügten Textes erfahren.", + "editcheck-copyvio-keep-description": "Bitte hilf anderen Benutzern dieses Artikels, deinen Grund zu verstehen, den eingefügten Text beizubehalten.", "editcheck-copyvio-keep-wrote": "Ich habe diesen Inhalt geschrieben und er ist nirgendwo anders veröffentlicht", "editcheck-copyvio-keep-permission": "Ich habe die Erlaubnis, diesen Inhalt weiterzuverwenden.", - "editcheck-copyvio-keep-free": "Dieser Text ist gemeinfrei oder steht unter freier Lizenz.", - "editcheck-copyvio-keep-other": "Andere", + "editcheck-copyvio-keep-other": "Keines der oben genannten trifft zu", "editcheck-copyvio-keep-notify": "Danke, dass du uns deinen Grund für die Beibehaltung des eingefügten Textes genannt hast!", "editcheck-copyvio-remove-notify": "Danke, dass du diesen Text entfernt hast!", "editcheck-tone-title": "Tonfall überarbeiten?", diff --git a/editcheck/i18n/fa.json b/editcheck/i18n/fa.json index 855a370ec3..f4340ac86e 100644 --- a/editcheck/i18n/fa.json +++ b/editcheck/i18n/fa.json @@ -24,7 +24,6 @@ "editcheck-copyvio-keep-description": "برای سایر ویرایشگران مهم است که دربارهٔ دلیل شما برای نگه داشتن این متن چسبانده‌شده بیشتر بدانند.", "editcheck-copyvio-keep-wrote": "خودم این متن را نوشته‌ام و جای دیگری منتشر نشده است", "editcheck-copyvio-keep-permission": "من اجازهٔ استفادهٔ مجدد از این محتوا را دارم", - "editcheck-copyvio-keep-free": "این متن تحت مالکیت عمومی قرار دارد یا دارای اجازه‌نامهٔ آزاد است", "editcheck-copyvio-keep-other": "سایر", "editcheck-copyvio-keep-notify": "از این که دلیل نگه داشتن متن چسبانده‌شده را به اشتراک گذاشتید ممنونیم!", "editcheck-copyvio-remove-notify": "از این که این متن را حذف کردید ممنونیم!", diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index d6c78e12bf..a3c74bbcc2 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -31,7 +31,6 @@ "editcheck-copyvio-keep-description": "Muut muokkaajat arvostaisivat kuulla, mistä syystä säilytit tämän liitetyn sisällön.", "editcheck-copyvio-keep-wrote": "Kirjoitin tämän sisällön, eikä sitä ole julkaistu muualla", "editcheck-copyvio-keep-permission": "Minulla on lupa uudelleenkäyttää tätä sisältöä", - "editcheck-copyvio-keep-free": "Tämä teksti on vapaasti lisensoitu tai se on public domainissa", "editcheck-copyvio-keep-other": "Muu syy", "editcheck-copyvio-keep-notify": "Kiitos, kun kerroit syysi liitetyn tekstin säilyttämiseksi!", "editcheck-copyvio-remove-notify": "Kiitos tämän tekstin poistamisesta!", diff --git a/editcheck/i18n/fr.json b/editcheck/i18n/fr.json index aa74a1f183..e016b7a05f 100644 --- a/editcheck/i18n/fr.json +++ b/editcheck/i18n/fr.json @@ -34,7 +34,6 @@ "editcheck-copyvio-keep-description": "D'autres rédacteurs apprécieront d'en savoir plus sur votre raison de conserver ce texte collé.", "editcheck-copyvio-keep-wrote": "J'ai écrit ce contenu et il n'est pas publié ailleurs", "editcheck-copyvio-keep-permission": "J'ai la permission de réutiliser ce contenu", - "editcheck-copyvio-keep-free": "Ce texte est dans le domaine public ou sous licence libre", "editcheck-copyvio-keep-other": "Autre", "editcheck-copyvio-keep-notify": "Merci d'avoir partagé votre raison de conserver le texte collé !", "editcheck-copyvio-remove-notify": "Merci d’avoir enlevé ce texte !", diff --git a/editcheck/i18n/gl.json b/editcheck/i18n/gl.json index b532bf1007..68c6c6c7bd 100644 --- a/editcheck/i18n/gl.json +++ b/editcheck/i18n/gl.json @@ -29,7 +29,6 @@ "editcheck-copyvio-keep-description": "Outros editores apreciarán saber o motivo polo que conservaches este texto pegado.", "editcheck-copyvio-keep-wrote": "Escribín este contido e non está publicado en ningures", "editcheck-copyvio-keep-permission": "Teño permiso para reutilizar este contido", - "editcheck-copyvio-keep-free": "Este texto é de dominio público ou ten unha licenza libre", "editcheck-copyvio-keep-other": "Outro", "editcheck-copyvio-keep-notify": "Grazas por compartires o motivo polo que conservaches o texto pegado!", "editcheck-copyvio-remove-notify": "Grazas por eliminares este texto!", diff --git a/editcheck/i18n/he.json b/editcheck/i18n/he.json index c95b9d5ec7..4be85a3a26 100644 --- a/editcheck/i18n/he.json +++ b/editcheck/i18n/he.json @@ -31,7 +31,6 @@ "editcheck-copyvio-keep-description": "עורכים אחרים ישמחו לדעות עוד על הסיבה שלך להשארת הטקסט המודבק הזה.", "editcheck-copyvio-keep-wrote": "כתבתי את התוכן הזה והוא לא פורסם במקום אחר", "editcheck-copyvio-keep-permission": "יש לי אישור לשימוש חוזר בתוכן הזה", - "editcheck-copyvio-keep-free": "הטקסט הזה נמצא בנחלת הכלל או מתפרסם לפי תנאי ברישיון חופשי", "editcheck-copyvio-keep-other": "אחר", "editcheck-copyvio-keep-notify": "תודה ששיתפת את הסיבה שלך להשארת הטקסט המודבק!", "editcheck-copyvio-remove-notify": "תודה שהסרת את הטקסט הזה!", diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index 6c08eb4c8a..cc84b37629 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -29,7 +29,6 @@ "editcheck-copyvio-keep-description": "Altere redactores volerea cognoscer tu ration pro conservar iste texto collate.", "editcheck-copyvio-keep-wrote": "Io ha scribite iste contento e illo non ha essite publicate alterubi", "editcheck-copyvio-keep-permission": "Io ha le permission de reusar iste contento", - "editcheck-copyvio-keep-free": "Iste texto es in le dominio public o sub licentia libere", "editcheck-copyvio-keep-other": "Altere", "editcheck-copyvio-keep-notify": "Gratias pro indicar tu ration pro conservar le texto collate!", "editcheck-copyvio-remove-notify": "Gratias pro remover iste texto!", diff --git a/editcheck/i18n/it.json b/editcheck/i18n/it.json index fc62ce1501..9c32891baf 100644 --- a/editcheck/i18n/it.json +++ b/editcheck/i18n/it.json @@ -24,7 +24,6 @@ "editcheck-copyvio-action-remove": "No, rimuovilo", "editcheck-copyvio-keep-wrote": "Io ho scritto questo contenuto e non è pubblicato altrove", "editcheck-copyvio-keep-permission": "Ho il permesso di riutilizzare questo contenuto", - "editcheck-copyvio-keep-free": "Questo testo è nel pubblico dominio o concesso in licenza libera", "editcheck-copyvio-keep-other": "Altro", "editcheck-copyvio-remove-notify": "Grazie per aver rimosso questo testo!", "editcheck-tone-reject-other": "Altro", diff --git a/editcheck/i18n/lb.json b/editcheck/i18n/lb.json index a27419718e..f3dc2749df 100644 --- a/editcheck/i18n/lb.json +++ b/editcheck/i18n/lb.json @@ -24,7 +24,6 @@ "editcheck-copyvio-action-keep": "Jo, halen", "editcheck-copyvio-action-remove": "Nee, ewechhuelen", "editcheck-copyvio-keep-wrote": "Ech hunn dësen Inhalt geschriwwen an en ass soss néierens publizéiert", - "editcheck-copyvio-keep-free": "Dësen Text ass am Domaine public oder steet ënner enger fräier Lizenz", "editcheck-copyvio-keep-other": "Anerer", "editcheck-copyvio-keep-notify": "Merci, datt Dir Äre Grond gedeelt hutt fir den agepechten Text ze halen", "editcheck-copyvio-remove-notify": "Merci, datt Dir dësen Text ewechgeholl hutt!", diff --git a/editcheck/i18n/lij.json b/editcheck/i18n/lij.json index 9106b79236..b22001fa7d 100644 --- a/editcheck/i18n/lij.json +++ b/editcheck/i18n/lij.json @@ -28,7 +28,6 @@ "editcheck-copyvio-keep-description": "Di âtri editoî poriéivan aprexâ de savéine de ciù in scê tò raxoìn pe conservâ sto tèsto copiòu chi.", "editcheck-copyvio-keep-wrote": "Mi ò scrîto sto contegnûo chi e no l'é pubricòu da de âtre pàrte", "editcheck-copyvio-keep-permission": "Mi ò o permìsso pe dêuviâ tórna sto contegnûo chi", - "editcheck-copyvio-keep-free": "Sto tèsto chi o l'é into pùbrico domìnio ò o l'é concèsso in licénsa lìbera", "editcheck-copyvio-keep-other": "Âtro", "editcheck-copyvio-keep-notify": "Gràçie p'avéi sconpartîo a tò raxón pe tegnî o tèsto incolòu!", "editcheck-copyvio-remove-notify": "Gràçie p'avéi levòu sto tèsto chi!", diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index e2b168d266..0191c4a167 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -29,7 +29,6 @@ "editcheck-copyvio-keep-description": "Другите уредници би целене да дознаат повеќе за причината зошто го задржувате овој прекопиран текст.", "editcheck-copyvio-keep-wrote": "Јас ја напишав оваа соржина, и истата не е објавена на друго место", "editcheck-copyvio-keep-permission": "Имам дозвола тука да ја користам оваа содржина", - "editcheck-copyvio-keep-free": "Овој текст е во јавна сопственост или под слободна лиценца", "editcheck-copyvio-keep-other": "Друго", "editcheck-copyvio-keep-notify": "Ви благодариме што ја споделивте причината за задржување на прекопираниот текст.", "editcheck-copyvio-remove-notify": "Ви благодариме што го отстранивте овој текст!", diff --git a/editcheck/i18n/nb.json b/editcheck/i18n/nb.json index 147c4f48c8..bd4bc9659e 100644 --- a/editcheck/i18n/nb.json +++ b/editcheck/i18n/nb.json @@ -30,7 +30,6 @@ "editcheck-copyvio-keep-description": "Andre bidragsytere setter pris på å lære mer om din grun til å beholde denne innlimte teksten.", "editcheck-copyvio-keep-wrote": "Jeg skrev dette innholdet og det er ikke publisert andre steder", "editcheck-copyvio-keep-permission": "Jeg har tillatelse til å gjenbruke dette innholdet", - "editcheck-copyvio-keep-free": "Denne teksten er offentlig eiendom eller med en fri lisens", "editcheck-copyvio-keep-other": "Annet", "editcheck-copyvio-keep-notify": "Takk for at du delte grunnen din for å beholde den innlimte teksten!", "editcheck-copyvio-remove-notify": "Takk for at du fjerna denne teksten!", diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index c91c078aac..ff5187d09c 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -32,7 +32,6 @@ "editcheck-copyvio-keep-description": "Andere redacteuren willen graag weten waarom u deze geplakte tekst behoudt.", "editcheck-copyvio-keep-wrote": "Ik heb dit geschreven en het is nergens anders gepubliceerd", "editcheck-copyvio-keep-permission": "Ik heb toestemming om dit te hergebruiken", - "editcheck-copyvio-keep-free": "Deze tekst is vrij van auteursrechten of beschikbaar onder een vrije licentie", "editcheck-copyvio-keep-other": "Anders", "editcheck-copyvio-keep-notify": "Bedankt dat u uw reden voor het behouden van de geplakte tekst hebt aangegeven.", "editcheck-copyvio-remove-notify": "Bedankt voor het verwijderen van deze tekst.", diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index 47dc3b10dc..f5bd39d7df 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -24,7 +24,6 @@ "editcheck-copyvio-description": "Опште правило је да се не копира текст из других извора. Копирање текста је кршење ауторских права и плагијат.", "editcheck-copyvio-action-keep": "Да, задржи", "editcheck-copyvio-action-remove": "Не, уклони", - "editcheck-copyvio-keep-free": "Овај текст је у јавном власништву или под слободном лиценцом", "editcheck-copyvio-keep-other": "Друго", "editcheck-tone-reject-appropriate": "Тон је примеран", "editcheck-tone-reject-uncertain": "Не знам како да ревидирам тон", diff --git a/editcheck/i18n/uk.json b/editcheck/i18n/uk.json index d26b60678a..f7f79845e8 100644 --- a/editcheck/i18n/uk.json +++ b/editcheck/i18n/uk.json @@ -29,7 +29,6 @@ "editcheck-copyvio-keep-description": "Іншим редакторам буде цінно дізнатися, чому ви зберігаєте цей вставлений текст.", "editcheck-copyvio-keep-wrote": "Цей контент написано мною, і це ще ніде не опубліковано", "editcheck-copyvio-keep-permission": "Я маю дозвіл на повторне використання цього контенту", - "editcheck-copyvio-keep-free": "Цей текст є суспільним надбанням або вільноліцензований", "editcheck-copyvio-keep-other": "Інше", "editcheck-copyvio-keep-notify": "Дякуємо вам, що поділилися своєю причиною, чому ви зберігаєте вставлений текст!", "editcheck-copyvio-remove-notify": "Дякуємо, що прибрали цей текст!", diff --git a/editcheck/i18n/yue-hant.json b/editcheck/i18n/yue-hant.json index d516c8a5fa..67347f38e8 100644 --- a/editcheck/i18n/yue-hant.json +++ b/editcheck/i18n/yue-hant.json @@ -30,7 +30,6 @@ "editcheck-copyvio-keep-description": "其他編者想知點解你貼呢堆字。", "editcheck-copyvio-keep-wrote": "呢啲內容係我自己寫,冇喺其他地方發佈過", "editcheck-copyvio-keep-permission": "我獲授權去重用呢啲內容", - "editcheck-copyvio-keep-free": "呢啲內容係喺公家領域或者自由版權", "editcheck-copyvio-keep-other": "其他", "editcheck-copyvio-keep-notify": "多謝你解釋點解你貼呢堆字!", "editcheck-copyvio-remove-notify": "多謝你剷走呢堆字!", diff --git a/editcheck/i18n/zh-hans.json b/editcheck/i18n/zh-hans.json index 67f5c56d7a..ce1bc910f3 100644 --- a/editcheck/i18n/zh-hans.json +++ b/editcheck/i18n/zh-hans.json @@ -33,7 +33,6 @@ "editcheck-copyvio-keep-description": "其他编者会希望了解您保留此段粘贴文本的原因。", "editcheck-copyvio-keep-wrote": "此内容由我撰写,且没有在其他地方发布过", "editcheck-copyvio-keep-permission": "我有权再使用此内容", - "editcheck-copyvio-keep-free": "此段文本属于公共领域或具有自由许可", "editcheck-copyvio-keep-other": "其他", "editcheck-copyvio-keep-notify": "感谢您分享保留粘贴文本的原因!", "editcheck-copyvio-remove-notify": "感谢您删除此段文本!", diff --git a/editcheck/i18n/zh-hant.json b/editcheck/i18n/zh-hant.json index 4a1952b049..0facdd5d89 100644 --- a/editcheck/i18n/zh-hant.json +++ b/editcheck/i18n/zh-hant.json @@ -31,7 +31,6 @@ "editcheck-copyvio-keep-description": "其他編者會希望了解更多您保留此段粘貼文字的原因。", "editcheck-copyvio-keep-wrote": "此段內容由我撰寫,而且沒有在其他地方發布過", "editcheck-copyvio-keep-permission": "我有權重新使用此內容", - "editcheck-copyvio-keep-free": "此段文字屬於公有領域或自由授權條款", "editcheck-copyvio-keep-other": "其他", "editcheck-copyvio-keep-notify": "感謝您分享保留粘貼文字的原因!", "editcheck-copyvio-remove-notify": "感謝您移除此段文字!", diff --git a/i18n/ve-wmf/br.json b/i18n/ve-wmf/br.json index 6bcc348f55..43147e50fe 100644 --- a/i18n/ve-wmf/br.json +++ b/i18n/ve-wmf/br.json @@ -19,6 +19,8 @@ "tag-editcheck-tone-description": "EditCheck en deus dinoet e c'hallfe bezañ ur gudenn gant ton endalc'hadoù ouzhpennet zo", "tag-editcheck-tone-shown": "Edit Check (ton) diskouezet", "tag-editcheck-tone-shown-description": "Hervez EditCheck ez eus ezhomm da gemmañ an ton en endalc'hadoù zo, ha diskouezet eo bet an etrefas implijer", + "tag-editcheck-paste-shown": "Edit Check (pegañ) diskouezet", + "tag-editcheck-paste-shown-description": "EditCheck en deus goulennet ouzh an aozer displegañ an endalc'had peget gantañ, a zo bet tennet pe kadarnaet evel aotreet", "tag-visualeditor": "Gwelaozer", "tag-visualeditor-description": "Kemm graet gant ar [[{{MediaWiki:visualeditor-descriptionpagelink}}|gwelaozer]]", "tag-visualeditor-needcheck": "Gwelaozer: Da wiriañ", From bb54c1e8ab4507421fb418404b0c340b49f5e32a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Fri, 19 Sep 2025 10:14:14 +0200 Subject: [PATCH 616/730] Localisation updates from https://translatewiki.net. Change-Id: Ieb08132b4f12612802f7892371868edb85173cf6 --- editcheck/i18n/az.json | 4 +-- editcheck/i18n/cs.json | 12 ++++++++- editcheck/i18n/eu.json | 54 ++++++++++++++++++++++++++++++++++++++ editcheck/i18n/fi.json | 4 +-- editcheck/i18n/ia.json | 6 ++--- editcheck/i18n/nl.json | 4 +-- editcheck/i18n/vi.json | 19 +++++++++++--- i18n/ve-mw/de-formal.json | 50 ----------------------------------- i18n/ve-wmf/de-formal.json | 8 ------ 9 files changed, 90 insertions(+), 71 deletions(-) create mode 100644 editcheck/i18n/eu.json delete mode 100644 i18n/ve-mw/de-formal.json delete mode 100644 i18n/ve-wmf/de-formal.json diff --git a/editcheck/i18n/az.json b/editcheck/i18n/az.json index d343250db2..44e74285cc 100644 --- a/editcheck/i18n/az.json +++ b/editcheck/i18n/az.json @@ -27,10 +27,10 @@ "editcheck-copyvio-prompt": "Bu mətni siz özünüz yazmısınız?", "editcheck-copyvio-action-keep": "Bəli, saxla", "editcheck-copyvio-action-remove": "Xeyr, sil", - "editcheck-copyvio-keep-description": "Digər redaktorlar bu yapışdırılmış mətni saxlamaq səbəbiniz haqqında daha çox öyrənmək istəyə bilərlər.", + "editcheck-copyvio-keep-description": "Zəhmət olmasa, bu məqalənin digər redaktorlarına yapışdırılmış mətni saxlamağınızın səbəbini anlamağa kömək edin.", "editcheck-copyvio-keep-wrote": "Bu məzmunu mən özüm yazmışam və başqa bir yerdə dərc olunmayıb", "editcheck-copyvio-keep-permission": "Bu məzmunu təkrar istifadə etmək icazəm var", - "editcheck-copyvio-keep-other": "Digər", + "editcheck-copyvio-keep-other": "Yuxarıda göstərilənlərin heç biri aid deyil", "editcheck-copyvio-keep-notify": "Yapışdırılmış mətni saxlamaq səbəbinizi paylaşdığınız üçün təşəkkür edirik!", "editcheck-copyvio-remove-notify": "Bu mətni sildiyiniz üçün təşəkkür edirik!", "editcheck-tone-title": "Tona yenidən baxılsın?", diff --git a/editcheck/i18n/cs.json b/editcheck/i18n/cs.json index 44b6c5095d..dfe6930e4f 100644 --- a/editcheck/i18n/cs.json +++ b/editcheck/i18n/cs.json @@ -2,11 +2,17 @@ "@metadata": { "authors": [ "Martin Urbanec", - "Matěj Suchánek" + "Matěj Suchánek", + "WikipedistaOndra" ] }, "editcheck-dialog-action-no": "Ne", "editcheck-dialog-action-yes": "Ano", + "editcheck-dialog-action-decline": "Zamítnout", + "editcheck-dialog-action-revise": "Revidovat", + "editcheck-dialog-action-recheck": "Znovu zkontrolovat", + "editcheck-dialog-action-back": "Zpět", + "editcheck-dialog-action-submit": "Odeslat", "editcheck-dialog-addref-description": "Pomozte čtenářům pochopit, odkud vámi přidaná informace pochází tím, že přidáte referenci.", "editcheck-dialog-addref-reject-question": "Z jakého důvodu nepřidáváte žádnou referenci?", "editcheck-dialog-addref-reject-description": "Ostatní wikipedisté by rádi věděli více o tom, proč jste se {{GENDER:|rozhodl|rozhodla|rozhodl(a)}} nepřidat žádnou referenci.", @@ -17,6 +23,10 @@ "editcheck-dialog-addref-success-notify": "Děkujeme za přidání reference!", "editcheck-dialog-addref-title": "Přidat referenci", "editcheck-dialog-title": "Před zveřejněním", + "editcheck-copyvio-title": "Vložený obsah", + "editcheck-copyvio-prompt": "Napsal jste tento text?", + "editcheck-copyvio-action-keep": "Ano, ponechat", + "editcheck-copyvio-action-remove": "Ne, odstranit", "tag-editcheck-reference-decline-common-knowledge": "Kontrola editace (reference) odmítnuta (všeobecné znalosti)", "tag-editcheck-reference-decline-common-knowledge-description": "Kontrola editace (reference) odmítnuta jako všeobecná znalost", "tag-editcheck-reference-decline-irrelevant": "Kontrola editace (reference) odmítnuta (irelevantní)", diff --git a/editcheck/i18n/eu.json b/editcheck/i18n/eu.json new file mode 100644 index 0000000000..ea91a9998c --- /dev/null +++ b/editcheck/i18n/eu.json @@ -0,0 +1,54 @@ +{ + "@metadata": { + "authors": [ + "Theklan" + ] + }, + "editcheck-dialog-action-no": "Ez", + "editcheck-dialog-action-yes": "Bai", + "editcheck-dialog-action-decline": "Ukatu", + "editcheck-dialog-action-revise": "Berrikusi", + "editcheck-dialog-action-recheck": "Berriro egiaztatu", + "editcheck-dialog-action-back": "Atzera", + "editcheck-dialog-action-submit": "Bidali", + "editcheck-dialog-addref-description": "Lagundu irakurleei ulertzen nondik datorren informazio hau erreferentzia bat gehituz.", + "editcheck-dialog-addref-reject-question": "Zergatik ez duzu erreferentzia bat gehitzen?", + "editcheck-dialog-addref-reject-description": "Beste editore batzuek jakin nahiko dute zergatik ez duzun erreferentzia bat jartzeko beharrik ikusi.", + "editcheck-dialog-addref-reject-irrelevant": "Ez dut uste erreferentziak beharrezkoak direla egin dudan aldaketan", + "editcheck-dialog-addref-reject-common-knowledge": "Gehitu dudan informazioa oso ezaguna da", + "editcheck-dialog-addref-reject-uncertain": "Ez nago ziur zein erreferentzia gehitu", + "editcheck-dialog-addref-reject-other": "Bestelakoa", + "editcheck-dialog-addref-success-notify": "Eskerrik asko erreferentzia bat gehitzeagatik!", + "editcheck-dialog-addref-title": "Erreferentzia gehitu", + "editcheck-dialog-title": "Argitaratu aurretik", + "editcheck-copyvio-title": "Itsatsitako edukia", + "editcheck-copyvio-description": "Mesedez, ez kopiatu zuzenean testua beste iturri batzuetatik, birformulatuta edo aipatuta ere. Hau [$1 copyright urraketa edo plagiotzat har daiteke] eta zure edukia kentzea edo zure kontua blokeatzea ekar dezake.", + "editcheck-copyvio-prompt": "Testua zuk idatzi al duzu?", + "editcheck-copyvio-action-keep": "Bai, gorde ezazu", + "editcheck-copyvio-action-remove": "Ez, ezabatu ezazu", + "editcheck-copyvio-keep-description": "Mesedez, lagundu artikulu honen beste editoreei itsatsitako testua mantentzeko arrazoia ulertzen.", + "editcheck-copyvio-keep-wrote": "Edukia nik idatzi dut eta ez dago beste inon argitaratuta", + "editcheck-copyvio-keep-permission": "Eduki hau berrerabiltzeko baimena dut", + "editcheck-copyvio-keep-other": "Goikoetatik bat ere ez", + "editcheck-copyvio-keep-notify": "Eskerrik asko itsatsitako testua mantentzeko arrazoia partekatzeagatik!", + "editcheck-copyvio-remove-notify": "Eskerrik asko testu hau kentzeagatik!", + "editcheck-tone-title": "Tonua berrikusi?", + "editcheck-tone-description": "Beste editore batzuek maiz begiratzen dute erabilitako hitz hauetako batzuk, eta esango dute tonua ez dela neutrala. [$1 Gehiago ikasi]", + "editcheck-tone-footer": "[$1 BERT eredua] erabiliz identifikatua", + "editcheck-tone-title-acted": "Tonua Berrikusten", + "editcheck-tone-description-acted": "Bilatu lausengarriak, gutxiesgarriak, lausoak, klixeak edo ikuspuntu jakin bat babesten duten adierazpenak.", + "editcheck-tone-reject-appropriate": "Tonua egokia da", + "editcheck-tone-reject-uncertain": "Ez dakit ondo nola berrikusi tonua", + "editcheck-tone-reject-other": "Bestelakoa", + "editcheck-tone-thank": "Eskerrik asko tonua kontuan hartzeagatik!", + "editcheck-reject-description": "Beste wikilari batzuek jakin nahiko dute zergatik egin duzun aukera hau.", + "editcheck-review-title": "Aldaketak ikusi", + "tag-editcheck-reference-decline-common-knowledge": "Edit Check (erreferentziak) ukatua (ezagutza orokorra)", + "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck erreferentzia ukatu da ezagutza orokorra delako", + "tag-editcheck-reference-decline-irrelevant": "Edit Check (erreferentziak) ukatua (garrantzirik gabekoa)", + "tag-editcheck-reference-decline-irrelevant-description": "EditChek erreferentzia ukatu da garrantzirik gabekoa delako", + "tag-editcheck-reference-decline-other": "Edit Check (erreferentziak) ukatua (beste bat)", + "tag-editcheck-reference-decline-other-description": "EditCheck erreferentzia ukatu da zerrendan ez zegoen arrazoi baten ondorioz", + "tag-editcheck-reference-decline-uncertain": "EditChek (erreferentziak) ukatua (ez dago ziur)", + "tag-editcheck-reference-decline-uncertain-description": "EditChek erreferentzia ukatu da ez dagoelako ziur" +} diff --git a/editcheck/i18n/fi.json b/editcheck/i18n/fi.json index a3c74bbcc2..f7e7df78ff 100644 --- a/editcheck/i18n/fi.json +++ b/editcheck/i18n/fi.json @@ -28,10 +28,10 @@ "editcheck-copyvio-prompt": "Kirjoititko tämän tekstin itse?", "editcheck-copyvio-action-keep": "Kyllä, säilytä", "editcheck-copyvio-action-remove": "Ei, poista", - "editcheck-copyvio-keep-description": "Muut muokkaajat arvostaisivat kuulla, mistä syystä säilytit tämän liitetyn sisällön.", + "editcheck-copyvio-keep-description": "Auta tämän artikkelin muita muokkaajia ymmärtämään, mistä syystä säilytit tämän liitetyn sisällön.", "editcheck-copyvio-keep-wrote": "Kirjoitin tämän sisällön, eikä sitä ole julkaistu muualla", "editcheck-copyvio-keep-permission": "Minulla on lupa uudelleenkäyttää tätä sisältöä", - "editcheck-copyvio-keep-other": "Muu syy", + "editcheck-copyvio-keep-other": "Ei mikään yllä mainituista", "editcheck-copyvio-keep-notify": "Kiitos, kun kerroit syysi liitetyn tekstin säilyttämiseksi!", "editcheck-copyvio-remove-notify": "Kiitos tämän tekstin poistamisesta!", "editcheck-tone-title": "Korjaa sävyä?", diff --git a/editcheck/i18n/ia.json b/editcheck/i18n/ia.json index cc84b37629..2bca71d8ed 100644 --- a/editcheck/i18n/ia.json +++ b/editcheck/i18n/ia.json @@ -22,14 +22,14 @@ "editcheck-dialog-addref-title": "Adder un citation", "editcheck-dialog-title": "Ante de publicar", "editcheck-copyvio-title": "Contento collate", - "editcheck-copyvio-description": "Como regula general, non copia contento de altere fontes. Isto es generalmente un violation del derecto de autor e un plagiato.", + "editcheck-copyvio-description": "Evita copiar texto de altere fontes, mesmo si tu lo reformula o cita. Isto pote esser considerate como un [$1 violation del derecto de autor o un plagiato] e pote resultar in le elimination de tu contento o le blocada de tu conto.", "editcheck-copyvio-prompt": "Ha tu scribite iste texto?", "editcheck-copyvio-action-keep": "Si, mantener", "editcheck-copyvio-action-remove": "No, remover", - "editcheck-copyvio-keep-description": "Altere redactores volerea cognoscer tu ration pro conservar iste texto collate.", + "editcheck-copyvio-keep-description": "Adjuta altere redactores de iste articulo a cognoscer tu ration pro conservar iste texto collate.", "editcheck-copyvio-keep-wrote": "Io ha scribite iste contento e illo non ha essite publicate alterubi", "editcheck-copyvio-keep-permission": "Io ha le permission de reusar iste contento", - "editcheck-copyvio-keep-other": "Altere", + "editcheck-copyvio-keep-other": "Necun option supra es applicabile", "editcheck-copyvio-keep-notify": "Gratias pro indicar tu ration pro conservar le texto collate!", "editcheck-copyvio-remove-notify": "Gratias pro remover iste texto!", "editcheck-tone-title": "Revisar le tono?", diff --git a/editcheck/i18n/nl.json b/editcheck/i18n/nl.json index ff5187d09c..1bf336459c 100644 --- a/editcheck/i18n/nl.json +++ b/editcheck/i18n/nl.json @@ -29,10 +29,10 @@ "editcheck-copyvio-prompt": "Hebt u deze tekst geschreven?", "editcheck-copyvio-action-keep": "Ja, behouden", "editcheck-copyvio-action-remove": "Nee, verwijderen", - "editcheck-copyvio-keep-description": "Andere redacteuren willen graag weten waarom u deze geplakte tekst behoudt.", + "editcheck-copyvio-keep-description": "Help andere redacteuren van dit artikel te begrijpen waarom u de geplakte tekst behoudt.", "editcheck-copyvio-keep-wrote": "Ik heb dit geschreven en het is nergens anders gepubliceerd", "editcheck-copyvio-keep-permission": "Ik heb toestemming om dit te hergebruiken", - "editcheck-copyvio-keep-other": "Anders", + "editcheck-copyvio-keep-other": "Geen van bovenstaande is van toepassing", "editcheck-copyvio-keep-notify": "Bedankt dat u uw reden voor het behouden van de geplakte tekst hebt aangegeven.", "editcheck-copyvio-remove-notify": "Bedankt voor het verwijderen van deze tekst.", "editcheck-tone-title": "Toon wijzigen?", diff --git a/editcheck/i18n/vi.json b/editcheck/i18n/vi.json index 0528876eb1..a2ec449041 100644 --- a/editcheck/i18n/vi.json +++ b/editcheck/i18n/vi.json @@ -2,13 +2,16 @@ "@metadata": { "authors": [ "Bluetpp", - "NgocAnMaster" + "NgocAnMaster", + "Như Gây Mê", + "Nvdtn19" ] }, "editcheck-dialog-action-no": "Không", "editcheck-dialog-action-yes": "Có", "editcheck-dialog-action-decline": "Từ chối", "editcheck-dialog-action-revise": "Xem lại", + "editcheck-dialog-action-recheck": "Kiểm tra lại", "editcheck-dialog-action-back": "Quay lại", "editcheck-dialog-action-submit": "Xác nhận", "editcheck-dialog-addref-description": "Giúp người đọc hiểu thông tin này đến từ đâu bằng cách thêm trích dẫn.", @@ -22,15 +25,25 @@ "editcheck-dialog-addref-title": "Thêm chú thích", "editcheck-dialog-title": "Trước khi xuất bản", "editcheck-copyvio-title": "Nội dung được dán", - "editcheck-copyvio-description": "Nguyên tắc chung là đừng sao chép văn bản từ các nguồn khác. Làm như vậy thường sẽ đồng thời cấu thành hành vi vi phạm bản quyền và đạo văn.", + "editcheck-copyvio-description": "Vui lòng tránh sao chép văn bản từ các nguồn khác, ngay cả khi đã diễn đạt lại hoặc trích dẫn. Hành động này có thể bị coi là [$1 vi phạm bản quyền hoặc đạo văn] và có thể dẫn đến việc nội dung của bạn bị xóa hoặc tài khoản của bạn bị cấm.", + "editcheck-copyvio-prompt": "Bạn có viết văn bản này không?", + "editcheck-copyvio-action-keep": "Có, hãy giữ nó", + "editcheck-copyvio-action-remove": "Không, hãy xoá nó", + "editcheck-copyvio-keep-description": "Vui lòng giúp những biên tập viên khác của bài viết này hiểu rõ lý do bạn giữ lại văn bản đã dán.", + "editcheck-copyvio-keep-wrote": "Tôi đã viết nội dung này và nó chưa được xuất bản ở nơi khác", + "editcheck-copyvio-keep-permission": "Tôi được phép sử dụng lại nội dung này", + "editcheck-copyvio-keep-other": "Không có điều nào ở trên áp dụng", + "editcheck-copyvio-keep-notify": "Cảm ơn bạn đã chia sẻ lý do giữ lại văn bản đã dán!", + "editcheck-copyvio-remove-notify": "Cảm ơn bạn đã xóa văn bản này!", "editcheck-tone-title": "Sửa lại giọng điệu?", "editcheck-tone-description": "Những thành viên khác thường sửa lại cách diễn đạt này vì cho rằng giọng điệu không được cân bằng lắm. [$1 Tìm hiểu thêm]", "editcheck-tone-footer": "Được xác định sử dụng [$1 mô hình BERT]", "editcheck-tone-title-acted": "Sửa lại giọng điệu", - "editcheck-tone-description-acted": "Hãy cẩn thận với các đoạn có biểu hiện tâng bốc, coi thường, mơ hồ, sáo rỗng hoặc tán thành một quan điểm cụ thể.", + "editcheck-tone-description-acted": "Hãy cẩn thận với các đoạn có biểu hiện tăng bốc, coi thường, mơ hồ, sáo rỗng hoặc tán thành một quan điểm cụ thể.", "editcheck-tone-reject-appropriate": "Giọng điệu này phù hợp", "editcheck-tone-reject-uncertain": "Tôi không biết cách sửa lại giọng điệu thế nào", "editcheck-tone-reject-other": "Khác", + "editcheck-tone-thank": "Cảm ơn bạn đã cân nhắc đến ngữ điệu!", "editcheck-reject-description": "Các biên tập viên khác sẽ đánh giá cao việc tìm hiểu lý do tại sao bạn đưa ra lựa chọn này.", "editcheck-review-title": "Xem lại thay đổi", "tag-editcheck-reference-decline-common-knowledge": "Kiểm tra Sửa đổi (nguồn tham khảo) bị từ chối (kiến thức chung)", diff --git a/i18n/ve-mw/de-formal.json b/i18n/ve-mw/de-formal.json deleted file mode 100644 index d2e278d1b1..0000000000 --- a/i18n/ve-mw/de-formal.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Hwboehm", - "Kghbln", - "Se4598", - "Zabe" - ] - }, - "visualeditor-autosave-modified-prompt-message": "Diese Seite wurde bearbeitet, seit Sie sie das letzte mal geladen haben. Möchten {{GENDER:|Sie}} die Bearbeitung der alten Version fortsetzen oder die aktuelle Version bearbeiten?", - "visualeditor-autosave-modified-prompt-title": "{{GENDER:|Ihre}} Bearbeitung wiederherstellen?", - "visualeditor-autosave-not-recovered-text": "Ihre ungespeicherten Änderungen konnten nicht wiederhergestellt werden.", - "visualeditor-autosave-not-recovered-title": "Die Wiederherstellung Ihrer Änderungen ist fehlgeschlagen", - "visualeditor-autosave-recovered-text": "Ihre ungespeicherten Änderungen wurden automatisch wiederhergestellt.", - "visualeditor-ca-editsource-section": "Quelltext bearbeiten", - "visualeditor-dialog-media-alttext-section-help": "Sie können dies verwenden, um eine Textbeschreibung für Menschen zu schreiben, die das Element nicht sehen können. Die Beschreibung sollte genug für sie zum Verstehen des Zwecks und der Information sein, die vom Medienelement gegeben wird. Dies ist wichtig für blinde Benutzer und andere Menschen, die Screenreader-Software oder Nur-Text-Browser verwenden.", - "visualeditor-dialog-media-content-section-help": "Sie können dies verwenden, um eine Bezeichnung anzuzeigen, die neben dem Element für alle Leser angezeigt wird. Dies wird oft verwendet, um zu erklären, warum das Element für den Kontext relevant ist, in dem es angezeigt wird. Sie sollte knapp und informativ sein.", - "visualeditor-dialog-media-position-checkbox-help": "Sie können dieses Medienelement in der Zeile mit dem Seitentext anstatt umgebend erscheinen lassen. Sie sollten dies nur selten tun, da es den Textfluss aufbricht, wenn Sie die Markierung dieses Kästchens aufheben.", - "visualeditor-dialog-media-position-section-help": "Sie können festlegen, wo dieses Medienelement auf der Seite erscheinen soll. Dies wird manchmal verwendet, um eine lange Zeile von Bildern auf einer Seite umzubrechen.", - "visualeditor-dialog-media-size-section-help": "Sie können festlegen, wie groß das Medienelement auf der Seite erscheinen soll. Dies sollte fast immer die normale Größe sein, da eine benutzerdefinierte Größe die Seitengestaltung für Leser beeinflusst und sie inkonsistent macht.", - "visualeditor-dialog-media-type-section-help": "Sie können festlegen, wie das Medienelement auf der Seite erscheinen soll. Dies sollte das Vorschaubildformat sein, um mit anderen Seiten in fast allen Fällen konsistent zu sein.", - "visualeditor-dialog-meta-categories-defaultsort-help": "Sie können überschreiben, wie diese Seite innerhalb einer Kategorie sortiert wird durch Festlegen eines anderen zu sortierenden Indexes. Dies wird oft verwendet, um Seiten über Personen bei ihrem Nachnamen anzuzeigen, jedoch wird der Vorname zuerst angezeigt.", - "visualeditor-dialog-meta-settings-displaytitle-help": "Sie können durch eine andere Bezeichnung überschreiben, wie der Titel dieser Seite angezeigt wird.", - "visualeditor-dialog-meta-settings-hiddencat-help": "Sie können verhindern, dass diese Kategorie in der Kategorieliste auf Mitgliedsseiten angezeigt wird. Dies ist nützlich für Kategorien, die für Autoren interessant sind, jedoch nicht für die meisten Leser, wie z. B. Seiten, die eine Illustration erfordern.", - "visualeditor-dialog-meta-settings-index-help": "Sie können Suchmaschinen zwingen, diese Seite in ihren relevanten Ergebnissen aufzulisten oder nicht. Diese Option beeinflusst nicht die Suche in der Website.", - "visualeditor-dialog-meta-settings-newsectioneditlink-help": "Sie können die Anzeige einer zusätzlichen Registerkarte neben der Registerkarte „$1“ auf dieser Seite zum einfachen Hinzufügen eines neuen Abschnitts erzwingen oder die Anzeige unterdrücken.", - "visualeditor-dialog-meta-settings-nocontentconvert-help": "Sie können verhindern, dass die Inhalte dieser Seite automatisch in andere Schriften konvertiert werden.", - "visualeditor-dialog-meta-settings-noeditsection-help": "Sie können verhindern, dass die Bearbeitungslinks neben jedem Abschnitt erscheinen in dem ungewöhnlichen Fall, wo es angebracht ist.", - "visualeditor-dialog-meta-settings-nogallery-help": "Sie können verhindern, dass diese Kategorie Mitgliedsdateien als Galerie anzeigt, falls dies unangebracht ist.", - "visualeditor-dialog-meta-settings-notitleconvert-help": "Sie können verhindern, dass der Titel dieser Seite automatisch in andere Schriften umgewandelt wird.", - "visualeditor-dialog-meta-settings-redirect-help": "Sie können diese Seite in eine Weiterleitung verwandeln, einer Seite, die andere Leser automatisch auf eine andere Seite auf diesem Wiki führt. Dies ist nützlich für Fehlschreibungen und alternative Namen oder Konzepte. Falls Sie sich dazu entschließen, sehen Leser nicht die Inhalte dieser Seite.", - "visualeditor-dialog-meta-settings-redirect-statichelp": "Sie können verhindern, dass diese Weiterleitung bei Verschiebung der Zielseite automatisch aktualisiert wird. In sehr seltenen Fällen ist dies erforderlich.", - "visualeditor-dialog-transclusion-required-parameter-is-blank": "Sind Sie sich sicher, dass Sie ohne das Ausfüllen {{PLURAL:$2|des Feldes|der $1 Felder}} fortfahren möchten?", - "visualeditor-editconflict": "Ihre Änderungen konnten aufgrund eines Bearbeitungskonflikts nicht gespeichert werden. Wollen {{GENDER:|Sie}} den Konflikt manuell beheben?", - "visualeditor-editingtabdialog-body": "{{SITENAME}} merkt sich jetzt, welchen Editor Sie bevorzugen. Sie können zwischen Bearbeitungsmodi wechseln und Ihre Einstellung später ändern.", - "visualeditor-editsummary": "Beschreiben Sie, was Sie geändert haben.", - "visualeditor-mweditmodeve-popup-body": "Sie können jederzeit zur visuellen Bearbeitung zurückkehren, indem Sie auf dieses Symbol klicken.", - "visualeditor-mweditmodeve-popup-title": "Sie haben zum Quelltext-Editor gewechselt", - "visualeditor-mweditmodewt-popup-body": "Sie können jederzeit zur Quelltextbearbeitung zurückkehren, indem Sie dieses Symbol anklicken.", - "visualeditor-mweditmodewt-popup-title": "Sie haben zur visuellen Bearbeitung gewechselt", - "visualeditor-mwsignature-tool": "Ihre Unterschrift", - "visualeditor-recreate": "Die Seite wurde gelöscht, nachdem Sie zum Bearbeiten angefangen haben. Wählen Sie „$1“, um sie neu zu erstellen.", - "visualeditor-savedialog-identify-anon": "Wollen Sie stattdessen diese Seite als anonymer Benutzer speichern? Ihre IP-Adresse wird in der Versionsgeschichte dieser Seite aufgezeichnet.", - "visualeditor-savedialog-identify-user": "Sie sind jetzt als [[User:$1|$1]] angemeldet. Wenn Sie speichern, wird Ihre Bearbeitung diesem Benutzerkonto zugeordnet.", - "visualeditor-savedialog-keyboard-shortcut-submit": "Sie können $1 drücken, um Ihre Bearbeitung zu speichern.", - "visualeditor-savedialog-label-review": "Überprüfen Sie Ihre Änderungen", - "visualeditor-savedialog-title-preview": "Eine Vorschau Ihrer Änderungen anzeigen", - "visualeditor-toload": "Der Editor wird jetzt geladen. Wenn Sie diese Meldung nach einigen Sekunden noch sehen, [$1 laden Sie bitte die Seite] neu.", - "visualeditor-wikitext-warning": "Sie benutzen den visuellen Editor. [[{{MediaWiki:visualeditor-wikitext-warning-link}}|Wikitext]] funktioniert hier nicht. Um jederzeit ohne Verlust deiner Änderungen zur Quelltextbearbeitung zurückzukehren, klicken Sie auf den Wechseln-Button." -} diff --git a/i18n/ve-wmf/de-formal.json b/i18n/ve-wmf/de-formal.json deleted file mode 100644 index a616341049..0000000000 --- a/i18n/ve-wmf/de-formal.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Hwboehm" - ] - }, - "visualeditor-welcomedialog-content-thanks": "Damit helfen Sie, das menschliche Wissen allen zugänglich zu machen!" -} From d1c08a9b47e9c9becc66b3730300dfb6ce628313 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Fri, 19 Sep 2025 13:06:15 +0100 Subject: [PATCH 617/730] Update VE core submodule to master (cfd45f5a8) New changes: 62f35dbaa TinyVE: Add tinyve.dm.converter 9f13cefce TinyVE: Add tinyve.dm.Node 588ffe449 TinyVE: Add tinyve.dm.BranchNode 46eacfcd2 TinyVE: Add tinyve.dm.ContentBranchNode fea58bf81 TinyVE: Add tinyve.dm.Document 0b7b1a632 TinyVE: Add tinyve.dm.Transaction f92213544 TinyVE: Add tinyve.dm.Surface 9c289ad13 TinyVE: Add tinyve.ce.Node 6262d83c6 TinyVE: Add tinyve.ce.BranchNode b0349cf6f TinyVE: Add tinyve.ce.ContentBranchNode e4fc0ec8e TinyVE: Add tinyve.ce.Document and tinyve.ce.Surface ee1083ce5 WindowAction: Only call executeAction if a window is already open 71aad5a2d ve.ce.LinearSelection: Don't pre-cache focusedNode cfd45f5a8 SelectionManager: Bring in viewport clipping logic from FindAndReplaceDialog Added files: - tinyve/tinyve.ce.BranchNode.js - tinyve/tinyve.ce.ContentBranchNode.js - tinyve/tinyve.ce.Document.js - tinyve/tinyve.ce.Node.js - tinyve/tinyve.ce.Surface.js - tinyve/tinyve.dm.BranchNode.js - tinyve/tinyve.dm.ContentBranchNode.js - tinyve/tinyve.dm.Document.js - tinyve/tinyve.dm.Node.js - tinyve/tinyve.dm.Surface.js - tinyve/tinyve.dm.Transaction.js - tinyve/tinyve.dm.converter.js - tinyve/tinyve.js Bug: T398201 Bug: T404710 Bug: T404860 Change-Id: I7c0868021129cfd05b4bf177cb0d6eb12939f333 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 70eee46f0e..cfd45f5a88 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 70eee46f0eb1d0254f91070ab899c1a0d19d434a +Subproject commit cfd45f5a88d17258c01dfe98f2e05481f59470ae From dee5f0f9aad87aa78eaaea002172a639b59e3f0a Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Mon, 22 Sep 2025 09:35:35 +0200 Subject: [PATCH 618/730] Localisation updates from https://translatewiki.net. Change-Id: I1df59c2e8de8a846edce911e56172cb241d2621d --- editcheck/i18n/ar.json | 7 ++++--- editcheck/i18n/gl.json | 6 +++--- editcheck/i18n/mk.json | 4 ++-- editcheck/i18n/pl.json | 18 +++++++++++++++++- editcheck/i18n/sr-ec.json | 2 +- editcheck/i18n/zh-hans.json | 10 +++++++--- editcheck/i18n/zh-hant.json | 9 +++++---- i18n/ve-mw/ryu.json | 7 ++++--- i18n/ve-mw/zh-hant.json | 3 ++- i18n/ve-wmf/be.json | 3 ++- i18n/ve-wmf/gl.json | 3 ++- i18n/ve-wmf/ps.json | 1 + 12 files changed, 50 insertions(+), 23 deletions(-) diff --git a/editcheck/i18n/ar.json b/editcheck/i18n/ar.json index c32cd5443f..c9dd456f16 100644 --- a/editcheck/i18n/ar.json +++ b/editcheck/i18n/ar.json @@ -3,6 +3,7 @@ "authors": [ "Dyolf77 (WMF)", "Meno25", + "Mohammed Qays", "محمد أحمد عبد الفتاح" ] }, @@ -14,7 +15,7 @@ "editcheck-dialog-action-back": "رجوع", "editcheck-dialog-action-submit": "إرسال", "editcheck-dialog-addref-description": "ساعدوا القراء على فهم مصدر هذه المعلومات عن طريق إضافة استشهاد.", - "editcheck-dialog-addref-reject-question": "لماذا لن تضيفوا استشهادًا؟", + "editcheck-dialog-addref-reject-question": "لماذا لا تُضيف استشهادًا؟", "editcheck-dialog-addref-reject-description": "سيقدر المحرّرون الآخرون معرفة المزيد عن قرارك بتجاوز الاستشهاد.", "editcheck-dialog-addref-reject-irrelevant": "لا أعتقد أن الاستشهادات ضروريّة للتعديل الذي أقوم به", "editcheck-dialog-addref-reject-common-knowledge": "المعلومات التي أقوم بإضافتها معروفة على نطاق واسع", @@ -28,10 +29,10 @@ "editcheck-copyvio-prompt": "هل كتبت هذا النص؟", "editcheck-copyvio-action-keep": "نعم، احتفظ به", "editcheck-copyvio-action-remove": "لا، أزله", - "editcheck-copyvio-keep-description": "يقدر المحررون الآخرون معرفة المزيد عن سبب احتفاظك بهذا النص الملصق.", + "editcheck-copyvio-keep-description": "من فضلك ساعد المحررين الآخرين في فهم سبب احتفاظك بالنص الملصق.", "editcheck-copyvio-keep-wrote": "لقد كتبت هذا المحتوى ولم يتم نشره في أي مكان آخر", "editcheck-copyvio-keep-permission": "لدي الإذن لإعادة استخدام هذا المحتوى", - "editcheck-copyvio-keep-other": "آخر", + "editcheck-copyvio-keep-other": "لا ينطبق أي مما سبق", "editcheck-copyvio-keep-notify": "شكرًا لك على مشاركة سببك للاحتفاظ بالنص الملصق!", "editcheck-copyvio-remove-notify": "شكرًا لك على إزالة هذا النص!", "editcheck-tone-title": "إعادة النظر في الأسلوب؟", diff --git a/editcheck/i18n/gl.json b/editcheck/i18n/gl.json index 68c6c6c7bd..faa2c54be8 100644 --- a/editcheck/i18n/gl.json +++ b/editcheck/i18n/gl.json @@ -22,14 +22,14 @@ "editcheck-dialog-addref-title": "Engadir unha cita", "editcheck-dialog-title": "Antes de publicares", "editcheck-copyvio-title": "Contido pegado", - "editcheck-copyvio-description": "Como regra xeral, non copies texto doutras fontes. Facelo adoita constituír un plaxio e unha violación dos dereitos de autoría.", + "editcheck-copyvio-description": "Evita copiar textos doutras fontes, mesmo se as reformulas ou citas. Isto adoita considerarse [$1 unha violación dos dereitos de autoría ou un plaxio] e pode resultar na eliminación do contido ou no bloqueo da túa conta.", "editcheck-copyvio-prompt": "Escribiches ti este texto?", "editcheck-copyvio-action-keep": "Si, mantelo", "editcheck-copyvio-action-remove": "Non, eliminalo", - "editcheck-copyvio-keep-description": "Outros editores apreciarán saber o motivo polo que conservaches este texto pegado.", + "editcheck-copyvio-keep-description": "Axuda a que outros editores do artigo comprendan o motivo para conservar o texto pegado.", "editcheck-copyvio-keep-wrote": "Escribín este contido e non está publicado en ningures", "editcheck-copyvio-keep-permission": "Teño permiso para reutilizar este contido", - "editcheck-copyvio-keep-other": "Outro", + "editcheck-copyvio-keep-other": "Non se aplica nada do anterior", "editcheck-copyvio-keep-notify": "Grazas por compartires o motivo polo que conservaches o texto pegado!", "editcheck-copyvio-remove-notify": "Grazas por eliminares este texto!", "editcheck-tone-title": "Revisar o ton?", diff --git a/editcheck/i18n/mk.json b/editcheck/i18n/mk.json index 0191c4a167..86648db35d 100644 --- a/editcheck/i18n/mk.json +++ b/editcheck/i18n/mk.json @@ -26,10 +26,10 @@ "editcheck-copyvio-prompt": "Дали вие го имате напишано текстов?", "editcheck-copyvio-action-keep": "Да, задржи", "editcheck-copyvio-action-remove": "Не, отстрани", - "editcheck-copyvio-keep-description": "Другите уредници би целене да дознаат повеќе за причината зошто го задржувате овој прекопиран текст.", + "editcheck-copyvio-keep-description": "Помогнете им на другите уредници на статијава да разберат зошто го задржувате овој прекопиран текст.", "editcheck-copyvio-keep-wrote": "Јас ја напишав оваа соржина, и истата не е објавена на друго место", "editcheck-copyvio-keep-permission": "Имам дозвола тука да ја користам оваа содржина", - "editcheck-copyvio-keep-other": "Друго", + "editcheck-copyvio-keep-other": "Ниедно од горенаведените", "editcheck-copyvio-keep-notify": "Ви благодариме што ја споделивте причината за задржување на прекопираниот текст.", "editcheck-copyvio-remove-notify": "Ви благодариме што го отстранивте овој текст!", "editcheck-tone-title": "Да се преработи тонот?", diff --git a/editcheck/i18n/pl.json b/editcheck/i18n/pl.json index 88a0588e14..d2081291b5 100644 --- a/editcheck/i18n/pl.json +++ b/editcheck/i18n/pl.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "IOIOI", "Msz2001", "Rail", "Tufor2", @@ -9,7 +10,10 @@ }, "editcheck-dialog-action-no": "Nie", "editcheck-dialog-action-yes": "Tak", + "editcheck-dialog-action-decline": "Odrzuć", "editcheck-dialog-action-recheck": "Sprawdź ponownie", + "editcheck-dialog-action-back": "Cofnij", + "editcheck-dialog-action-submit": "Wyślij", "editcheck-dialog-addref-description": "Pomóż czytelnikom, dodając przypis, mówiący skąd pochodzą te informacje.", "editcheck-dialog-addref-reject-question": "Dlaczego nie dodajesz przypisu?", "editcheck-dialog-addref-reject-description": "Inni edytorzy docenią informację o tym, dlaczego decydujesz się nie dodawać przypisu.", @@ -21,7 +25,19 @@ "editcheck-dialog-addref-title": "Dodaj przypis", "editcheck-dialog-title": "Przed publikacją", "editcheck-copyvio-title": "Wklejona zawartość", - "editcheck-copyvio-description": "Co do zasady, nie kopiuj treści z innych źródeł. Takie działania stanowią zarówno naruszenie praw autorskich, jak i plagiat.", + "editcheck-copyvio-description": "Prosimy unikać kopiowania tekstu z innych źródeł, nawet jeśli jest przeformułowany lub cytowany. Może to zostać uznane za [$1 naruszenie praw autorskich lub plagiat] i może skutkować usunięciem treści lub zablokowaniem konta.", + "editcheck-copyvio-prompt": "Czy to Ty napisałe(a)ś ten tekst?", + "editcheck-copyvio-action-keep": "Tak, zachowaj to", + "editcheck-copyvio-action-remove": "Nie, usuń to", + "editcheck-copyvio-keep-description": "Pomóż innym redaktorom tego artykułu zrozumieć, dlaczego chcesz zachować wklejony tekst.", + "editcheck-copyvio-keep-wrote": "Napisałem tę treść i nie jest ona nigdzie indziej publikowana", + "editcheck-copyvio-keep-permission": "Mam pozwolenie na ponowne wykorzystanie tej treści", + "editcheck-copyvio-keep-other": "Żadne z powyższych nie ma zastosowania", + "editcheck-copyvio-keep-notify": "Dziękujemy za podanie powodu, dla którego zachowałeś wklejony tekst!", + "editcheck-copyvio-remove-notify": "Dziękujemy za usunięcie tego tekstu!", + "editcheck-tone-description-acted": "Zwróć uwagę na wyrażenia pochlebne, lekceważące, niejasne, banalne lub popierające określony punkt widzenia.", + "editcheck-reject-description": "Inni redaktorzy chcieliby dowiedzieć się, dlaczego dokonałeś takiego wyboru.", + "editcheck-review-title": "Przejrzyj zmiany", "tag-editcheck-reference-decline-common-knowledge": "Automatyczny pomocnik (przypisy): odrzucono (wiedza powszechna)", "tag-editcheck-reference-decline-common-knowledge-description": "Automatyczny pomocnik: użytkownik odrzucił sugestię dodania przypisu, ponieważ uznał informację za wiedzę powszechną", "tag-editcheck-reference-decline-irrelevant": "Automatyczny pomocnik (przypisy): odrzucono (nieistotne)", diff --git a/editcheck/i18n/sr-ec.json b/editcheck/i18n/sr-ec.json index f5bd39d7df..2bd1a8ee20 100644 --- a/editcheck/i18n/sr-ec.json +++ b/editcheck/i18n/sr-ec.json @@ -21,7 +21,7 @@ "editcheck-dialog-addref-title": "Додавање референце", "editcheck-dialog-title": "Пре објављивања", "editcheck-copyvio-title": "Налепљен садржај", - "editcheck-copyvio-description": "Опште правило је да се не копира текст из других извора. Копирање текста је кршење ауторских права и плагијат.", + "editcheck-copyvio-description": "Опште правило је да се не копира текст из других извора. Копирање туђих текстова је [$1 кршење ауторских права и плагијат]. И такође може довести до уклањања садржаја и блокаде.", "editcheck-copyvio-action-keep": "Да, задржи", "editcheck-copyvio-action-remove": "Не, уклони", "editcheck-copyvio-keep-other": "Друго", diff --git a/editcheck/i18n/zh-hans.json b/editcheck/i18n/zh-hans.json index ce1bc910f3..427e51fcee 100644 --- a/editcheck/i18n/zh-hans.json +++ b/editcheck/i18n/zh-hans.json @@ -7,6 +7,7 @@ "LittlePaw365", "Peterxy12", "SCP-2000", + "人间百态", "星海" ] }, @@ -14,6 +15,7 @@ "editcheck-dialog-action-yes": "是", "editcheck-dialog-action-decline": "拒绝", "editcheck-dialog-action-revise": "修订", + "editcheck-dialog-action-recheck": "重新检查", "editcheck-dialog-action-back": "返回", "editcheck-dialog-action-submit": "提交", "editcheck-dialog-addref-description": "添加引证来帮助读者了解此信息的出处。", @@ -27,13 +29,14 @@ "editcheck-dialog-addref-title": "添加引证", "editcheck-dialog-title": "发布前", "editcheck-copyvio-title": "粘贴的内容", - "editcheck-copyvio-description": "一般来说,不要从其他来源复制文本。这样做通常既构成侵犯版权,也构成抄袭。", + "editcheck-copyvio-description": "请避免从其他来源复制文字。即使经改写或注明出处也一样。此举可能被视为[$1 版权侵权或剽窃行为],致使您的内容遭移除或账号被封禁。", + "editcheck-copyvio-prompt": "您有编纂此段文字吗?", "editcheck-copyvio-action-keep": "是,保留", "editcheck-copyvio-action-remove": "否,删除", - "editcheck-copyvio-keep-description": "其他编者会希望了解您保留此段粘贴文本的原因。", + "editcheck-copyvio-keep-description": "请帮助本条目的其他编者了解您保留粘贴文本的原因。", "editcheck-copyvio-keep-wrote": "此内容由我撰写,且没有在其他地方发布过", "editcheck-copyvio-keep-permission": "我有权再使用此内容", - "editcheck-copyvio-keep-other": "其他", + "editcheck-copyvio-keep-other": "以上均不适用", "editcheck-copyvio-keep-notify": "感谢您分享保留粘贴文本的原因!", "editcheck-copyvio-remove-notify": "感谢您删除此段文本!", "editcheck-tone-title": "修改语气?", @@ -44,6 +47,7 @@ "editcheck-tone-reject-appropriate": "语气恰当", "editcheck-tone-reject-uncertain": "我不知道该如何修改语气", "editcheck-tone-reject-other": "其他", + "editcheck-tone-thank": "感谢您留意语气!", "editcheck-reject-description": "其他编者会希望了解您做出此选择的原因。", "editcheck-review-title": "查看更改", "tag-editcheck-reference-decline-common-knowledge": "拒绝(参考资料)编辑检查(常识)", diff --git a/editcheck/i18n/zh-hant.json b/editcheck/i18n/zh-hant.json index 0facdd5d89..36aff69c7e 100644 --- a/editcheck/i18n/zh-hant.json +++ b/editcheck/i18n/zh-hant.json @@ -3,6 +3,7 @@ "authors": [ "Cookai1205", "Kly", + "LowensteinYang", "SCP-2000" ] }, @@ -24,14 +25,14 @@ "editcheck-dialog-addref-title": "新增引註", "editcheck-dialog-title": "發布前", "editcheck-copyvio-title": "貼上內容", - "editcheck-copyvio-description": "一般來說,請不要從其他來源複製文字。這樣做通常會構成侵犯著作權和抄襲。", + "editcheck-copyvio-description": "請避免從其他來源複製文字。即使經改寫或註明出處亦然。此舉可能被視為[$1 版權侵權或剽竊行為],導致您的內容遭移除或帳號被封鎖。", "editcheck-copyvio-prompt": "您有編寫此段文字嗎?", "editcheck-copyvio-action-keep": "是的,保留", "editcheck-copyvio-action-remove": "沒有,移除", - "editcheck-copyvio-keep-description": "其他編者會希望了解更多您保留此段粘貼文字的原因。", + "editcheck-copyvio-keep-description": "請協助該條目的其他編輯者理解您保留所貼文字的理由。", "editcheck-copyvio-keep-wrote": "此段內容由我撰寫,而且沒有在其他地方發布過", "editcheck-copyvio-keep-permission": "我有權重新使用此內容", - "editcheck-copyvio-keep-other": "其他", + "editcheck-copyvio-keep-other": "以上皆不適用", "editcheck-copyvio-keep-notify": "感謝您分享保留粘貼文字的原因!", "editcheck-copyvio-remove-notify": "感謝您移除此段文字!", "editcheck-tone-title": "修改語氣?", @@ -42,7 +43,7 @@ "editcheck-tone-reject-appropriate": "語氣恰當", "editcheck-tone-reject-uncertain": "我不確定如何修改語氣", "editcheck-tone-reject-other": "其他", - "editcheck-tone-thank": "感謝您修改語氣!", + "editcheck-tone-thank": "感謝您留意語氣!", "editcheck-reject-description": "其他編者會希望了解為何您做出此選擇的原因。", "editcheck-review-title": "審核變更", "tag-editcheck-reference-decline-common-knowledge": "編輯檢查(參考資料)遭拒(常識)", diff --git a/i18n/ve-mw/ryu.json b/i18n/ve-mw/ryu.json index b2d9ca3db7..c1231bbc79 100644 --- a/i18n/ve-mw/ryu.json +++ b/i18n/ve-mw/ryu.json @@ -1,12 +1,13 @@ { "@metadata": { "authors": [ - "ChoiChong" + "ChoiChong", + "さきじょーぐー" ] }, "visualeditor-ca-createlocaldescriptionsource": "ローカルぬ解説ちゅくゆん", "visualeditor-ca-createsource": "ソースちゅくゆん", - "visualeditor-ca-editsource": "ソース直すん", - "visualeditor-ca-editsource-section": "ソース直すん", + "visualeditor-ca-editsource": "ソース編集すん", + "visualeditor-ca-editsource-section": "ソース編集すん", "visualeditor-descriptionpagelink": "Project:ビジュアルエディター" } diff --git a/i18n/ve-mw/zh-hant.json b/i18n/ve-mw/zh-hant.json index f660b86f46..43919210d6 100644 --- a/i18n/ve-mw/zh-hant.json +++ b/i18n/ve-mw/zh-hant.json @@ -25,6 +25,7 @@ "Lakejason0", "Liflon", "Liuxinyu970226", + "LowensteinYang", "LuciferianThomas", "Luuva", "Qiyue2001", @@ -391,7 +392,7 @@ "visualeditor-special-characters-group-other": "經常使用", "visualeditor-templatesused-tool": "使用的模板", "visualeditor-title-error": "無效標題。", - "visualeditor-toload": "現在將載入編輯器,若您再幾秒過後仍看到此訊息,請[$1 重新載入頁面]。", + "visualeditor-toload": "編輯器即將載入,若您再幾秒過後仍看到此訊息,請[$1 刷新頁面]。", "visualeditor-tooltip-non-breaking-space": "不換行空格", "visualeditor-version-label": "版本", "visualeditor-wikitext-progress": "wikitext 轉換中", diff --git a/i18n/ve-wmf/be.json b/i18n/ve-wmf/be.json index 9cffd67bf6..1f63f2025c 100644 --- a/i18n/ve-wmf/be.json +++ b/i18n/ve-wmf/be.json @@ -5,6 +5,7 @@ "Chadyka", "Maksim L.", "No Sleep till Krupki", + "Plaga med", "Vlad5250", "ZlyiLev", "Чаховіч Уладзіслаў" @@ -22,7 +23,7 @@ "visualeditor-feedback-tool": "Пакінуць водгук пра гэтае праграмнае забеспячэнне", "visualeditor-help-label": "Чытаць кіраўніцтва карыстальніка", "visualeditor-welcomedialog-action": "Пачаць рэдагаванне", - "visualeditor-welcomedialog-content": "Правіць можа кожны, і кожнае паляпшэнне ў дапамогу.", + "visualeditor-welcomedialog-content": "Правіць можа кожны і кожная, любое паляпшэнне будзе карысным.", "visualeditor-welcomedialog-content-thanks": "Дзякуй, што дапамагаеце свету даведацца больш!", "visualeditor-welcomedialog-switch": "Пераключыць на рэдактар зыходнага кода", "visualeditor-welcomedialog-switch-ve": "Пераключыць на візуальны рэдактар", diff --git a/i18n/ve-wmf/gl.json b/i18n/ve-wmf/gl.json index 10881b5c29..544de2e396 100644 --- a/i18n/ve-wmf/gl.json +++ b/i18n/ve-wmf/gl.json @@ -5,6 +5,7 @@ "Elisardojm", "Kscanne", "Toliño", + "Xosecalvo", "아라" ] }, @@ -32,7 +33,7 @@ "visualeditor-feedback-tool": "Deixa un comentario sobre este programa", "visualeditor-help-label": "Ler a guía de usuario", "visualeditor-welcomedialog-action": "Comezar a editar", - "visualeditor-welcomedialog-content": "Calquera persoa pode editar, e todas as melloras axudan.", + "visualeditor-welcomedialog-content": "Calquera persoa pode editar e todas as melloras axudan.", "visualeditor-welcomedialog-content-thanks": "Grazas por axudar á xente a descubrir e aprender cousas novas!", "visualeditor-welcomedialog-switch": "Cambiar ao editor de código", "visualeditor-welcomedialog-switch-ve": "Cambiar ao editor visual", diff --git a/i18n/ve-wmf/ps.json b/i18n/ve-wmf/ps.json index 041571e19d..f4fbadea4f 100644 --- a/i18n/ve-wmf/ps.json +++ b/i18n/ve-wmf/ps.json @@ -15,6 +15,7 @@ "tag-editcheck-tone-description": "سمون‌سم‌کتنې د ورگډې‌شوې منځپانگې په وينگ کې پټ‌ځواکې ستونزه وموندله.", "tag-editcheck-tone-shown": "سمون‌کتنه (غږبڼه) ښودل", "tag-editcheck-tone-shown-description": "سمون‌کتنه فکر کوي چې شايد ځينو منځپانگو کې د غږبڼې سمون ته اړتيا وه، او UI ښودل شوی", + "tag-editcheck-paste-shown": "سمون‌کتنه (لېښل) ښودل‌شوې", "tag-visualeditor": "ليدنيز سمون", "tag-visualeditor-description": "دا سمون د [[{{MediaWiki:visualeditor-descriptionpagelink}}|ليدنيز سمونگر]] په مرسته شوی", "tag-visualeditor-needcheck": "ليدنيز سمون: کره کتنه", From d925cad308c9d2da6225a5bbbe2459d8b8bceffc Mon Sep 17 00:00:00 2001 From: David Lynch Date: Fri, 19 Sep 2025 11:16:16 -0500 Subject: [PATCH 619/730] Tone check: optimize finding modified ranges We don't need to separately fetch all the modified content ranges and scan them for dismissed / interacted ranges, *then* intersect them with the modified node's ranges. Because all later actions that trigger dismissal / interaction will apply to the node-range directly, we can just check the node range directly without having to check nodes*ranges. Change-Id: I0c4115fc5482a730c55c59813c14717a628d0b67 --- .../modules/editchecks/AsyncTextCheck.js | 24 +++++++------------ 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/editcheck/modules/editchecks/AsyncTextCheck.js b/editcheck/modules/editchecks/AsyncTextCheck.js index 7be7262137..dd7809be56 100644 --- a/editcheck/modules/editchecks/AsyncTextCheck.js +++ b/editcheck/modules/editchecks/AsyncTextCheck.js @@ -76,28 +76,20 @@ mw.editcheck.AsyncTextCheck.prototype.handleListener = function ( listener, surf if ( selection instanceof ve.dm.LinearSelection && listener !== 'onBeforeSave' ) { // TODO currentBranchNode = surfaceModel.getDocument().getBranchNodeFromOffset( selection.getRange().to ); } - let modifiedContentRanges = this.getModifiedContentRanges( documentModel ); - if ( listener !== 'onCheckAll' ) { - // mw.editcheck.hasAddedContentFailingToneCheck wants to check for any violations, even dismissed ones. - // Used for tagging. - modifiedContentRanges = modifiedContentRanges.filter( ( range ) => !this.isDismissedRange( range ) ); - } - - if ( listener === 'onBeforeSave' ) { - modifiedContentRanges = modifiedContentRanges.filter( ( range ) => !this.isTaggedRange( 'interacted', range ) ); - } const actionPromises = []; this.getModifiedContentBranchNodes( documentModel ).forEach( ( node ) => { const nodeFragment = new ve.dm.SurfaceFragment( surfaceModel, new ve.dm.LinearSelection( node.getRange() ) ); - const fragments = modifiedContentRanges - .filter( ( range ) => node.getRange().containsRange( range ) ) - .map( ( range ) => surfaceModel.getLinearFragment( range ) ); - - /* All fragments have been dismissed */ - if ( !fragments.length ) { + const range = node.getRange(); + if ( + ( listener === 'onBeforeSave' && this.isTaggedRange( 'interacted', range ) ) || + // mw.editcheck.hasAddedContentFailingToneCheck wants to check for any violations, even dismissed ones. + // Used for tagging. + ( listener !== 'onCheckAll' && this.isDismissedRange( range ) ) + ) { return; } + actionPromises.push( this.checkText( documentModel.data.getText( true, node.getRange() ) ).then( ( outcome ) => { if ( !outcome ) { return null; From 9a1096a5ad82dbce59fd41cd4d08f12811ee125e Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Tue, 23 Sep 2025 09:32:05 +0200 Subject: [PATCH 620/730] Localisation updates from https://translatewiki.net. Change-Id: Ifa44814d2c8a1e49ab227409714b5dfbc24463ed --- editcheck/i18n/id.json | 54 ++++++++++++++++++++++++++++++++++++++++++ editcheck/i18n/it.json | 2 +- editcheck/i18n/nb.json | 4 ++-- editcheck/i18n/uk.json | 8 +++---- i18n/ve-mw/uk.json | 2 +- i18n/ve-mw/xon.json | 10 ++++++++ i18n/ve-mw/yua.json | 24 ++++++++++++++++++- 7 files changed, 95 insertions(+), 9 deletions(-) create mode 100644 editcheck/i18n/id.json create mode 100644 i18n/ve-mw/xon.json diff --git a/editcheck/i18n/id.json b/editcheck/i18n/id.json new file mode 100644 index 0000000000..446c8a4f4e --- /dev/null +++ b/editcheck/i18n/id.json @@ -0,0 +1,54 @@ +{ + "@metadata": { + "authors": [ + "NikolasKHF" + ] + }, + "editcheck-dialog-action-no": "Tidak", + "editcheck-dialog-action-yes": "Ya", + "editcheck-dialog-action-decline": "Tolak", + "editcheck-dialog-action-revise": "Revisi", + "editcheck-dialog-action-recheck": "Periksa ulang", + "editcheck-dialog-action-back": "Kembali", + "editcheck-dialog-action-submit": "Kirim", + "editcheck-dialog-addref-description": "Bantu pembaca memahami dari mana informasi ini datang dengan menambahkan sebuah kutipan.", + "editcheck-dialog-addref-reject-question": "Mengapa Anda tidak menambahkan kutipan?", + "editcheck-dialog-addref-reject-description": "Penyunting lain akan senang mempelajari keputusan Anda untuk tidak menambahkan kutipan.", + "editcheck-dialog-addref-reject-irrelevant": "Saya rasa kutipan tidak relevan pada perubahan yang saya buat", + "editcheck-dialog-addref-reject-common-knowledge": "Informasi yang saya tambahkan diketahui secara luas", + "editcheck-dialog-addref-reject-uncertain": "Saya tidak yakin kutipan apa yang harus saya tambahkan", + "editcheck-dialog-addref-reject-other": "Lainnya", + "editcheck-dialog-addref-success-notify": "Terima kasih sudah menambahkan kutipan!", + "editcheck-dialog-addref-title": "Tambahkan kutipan", + "editcheck-dialog-title": "Sebelum diterbitkan", + "editcheck-copyvio-title": "Konten yang ditempel", + "editcheck-copyvio-description": "Mohon hindari menyalin teks dari sumber lain, bahkan jika Anda meparafrasekan atau mengutipnya. Ini dapat dianggap sebagai [$1 pelanggaran hak cipta atau plagiarisme] dan dapat membuat konten Anda dihapus atau akun Anda diblokir.", + "editcheck-copyvio-prompt": "Apakah Anda menulis teks ini?", + "editcheck-copyvio-action-keep": "Ya, simpan", + "editcheck-copyvio-action-remove": "Tidak, hapus", + "editcheck-copyvio-keep-description": "Mohon bantu penyunting lain pada artikel ini memahami alasan Anda menyimpan teks yang ditempel.", + "editcheck-copyvio-keep-wrote": "Saya menulis konten ini dan teks ini tidak dipublikasikan di tempat lain", + "editcheck-copyvio-keep-permission": "Saya memiliki izin untuk menggunakan kembali konten ini", + "editcheck-copyvio-keep-other": "Tidak satu pun yang di atas berlaku", + "editcheck-copyvio-keep-notify": "Terima kasih telah membagikan alasan Anda menyimpan teks yang ditempel!", + "editcheck-copyvio-remove-notify": "Terima kasih telah menghapus teks ini!", + "editcheck-tone-title": "Revisi gaya penulisan?", + "editcheck-tone-description": "Pengguna lain sering merevisi bentuk kalimat seperti ini, dengan menyatakan bahwa gaya penulisan yang tidak seimbang. [$1 Pelajari lebih lanjut]", + "editcheck-tone-footer": "Identifikasikan menggunakan [$1 Model BERT]", + "editcheck-tone-title-acted": "Merevisi Gaya Penulisan", + "editcheck-tone-description-acted": "Perhatikan ekspresi yang bersifat memuji, mengejek, tidak jelas, klise, atau mendukung sudut pandang tertentu.", + "editcheck-tone-reject-appropriate": "Gaya penulisan ini sesuai", + "editcheck-tone-reject-uncertain": "Saya tidak yakin cara merevisi gaya penulisan ini", + "editcheck-tone-reject-other": "Lainnya", + "editcheck-tone-thank": "Terima kasih sudah mempertimbangkan gaya penulisan!", + "editcheck-reject-description": "Penyunting lain akan senang mempelajari mengapa Anda memilih pilihan ini.", + "editcheck-review-title": "Tinjau perubahan", + "tag-editcheck-reference-decline-common-knowledge": "Pemeriksaan Suntingan (referensi) ditolak (pengetahuan umum)", + "tag-editcheck-reference-decline-common-knowledge-description": "EditCheck referensi ditolak karena merupakan pengetahuan umum", + "tag-editcheck-reference-decline-irrelevant": "Pemeriksaan Suntingan (referensi) ditolak (tidak relevan)", + "tag-editcheck-reference-decline-irrelevant-description": "EditCheck referensi ditolak karena tidak relevan", + "tag-editcheck-reference-decline-other": "Pemeriksaan Suntingan (referensi) ditolak (lainnya)", + "tag-editcheck-reference-decline-other-description": "EditCheck referensi ditolak untuk alasan yang tidak tercantum", + "tag-editcheck-reference-decline-uncertain": "Pemeriksaan Suntingan (referensi) ditolak (tidak pasti)", + "tag-editcheck-reference-decline-uncertain-description": "EditCheck referensi ditolak karena tidak pasti" +} diff --git a/editcheck/i18n/it.json b/editcheck/i18n/it.json index 9c32891baf..19e9fd549b 100644 --- a/editcheck/i18n/it.json +++ b/editcheck/i18n/it.json @@ -24,7 +24,7 @@ "editcheck-copyvio-action-remove": "No, rimuovilo", "editcheck-copyvio-keep-wrote": "Io ho scritto questo contenuto e non è pubblicato altrove", "editcheck-copyvio-keep-permission": "Ho il permesso di riutilizzare questo contenuto", - "editcheck-copyvio-keep-other": "Altro", + "editcheck-copyvio-keep-other": "Non si applica nessuna delle precedenti", "editcheck-copyvio-remove-notify": "Grazie per aver rimosso questo testo!", "editcheck-tone-reject-other": "Altro", "editcheck-tone-thank": "Grazie per aver preso in considerazione il tono!", diff --git a/editcheck/i18n/nb.json b/editcheck/i18n/nb.json index bd4bc9659e..ebc648496e 100644 --- a/editcheck/i18n/nb.json +++ b/editcheck/i18n/nb.json @@ -27,10 +27,10 @@ "editcheck-copyvio-prompt": "Skrev du denne teksten?", "editcheck-copyvio-action-keep": "Ja, behold den", "editcheck-copyvio-action-remove": "Nei, fjern den", - "editcheck-copyvio-keep-description": "Andre bidragsytere setter pris på å lære mer om din grun til å beholde denne innlimte teksten.", + "editcheck-copyvio-keep-description": "La andre bidragsytere forstå grunnen til at du beholder den innlimte teksten.", "editcheck-copyvio-keep-wrote": "Jeg skrev dette innholdet og det er ikke publisert andre steder", "editcheck-copyvio-keep-permission": "Jeg har tillatelse til å gjenbruke dette innholdet", - "editcheck-copyvio-keep-other": "Annet", + "editcheck-copyvio-keep-other": "Ingen av de ovennevnte årsakene gjelder", "editcheck-copyvio-keep-notify": "Takk for at du delte grunnen din for å beholde den innlimte teksten!", "editcheck-copyvio-remove-notify": "Takk for at du fjerna denne teksten!", "editcheck-tone-title": "Endre tonen?", diff --git a/editcheck/i18n/uk.json b/editcheck/i18n/uk.json index f7f79845e8..ed6dde5447 100644 --- a/editcheck/i18n/uk.json +++ b/editcheck/i18n/uk.json @@ -22,14 +22,14 @@ "editcheck-dialog-addref-title": "Додати джерело", "editcheck-dialog-title": "Перед публікацією", "editcheck-copyvio-title": "Вставлений вміст", - "editcheck-copyvio-description": "Як правило, не копіюйте текст з інших джерел. Зазвичай це є порушенням авторських прав та плагіатом.", + "editcheck-copyvio-description": "Будь ласка, не копіюйте текст з інших джерел, навіть якщо ви його переклали чи поставили примітку. Це може вважатися [$1 порушенням авторських прав чи плагіатом] і в результаті доданий вами текст можуть вилучити, а ваш обліковий запис — заблокувати.", "editcheck-copyvio-prompt": "Ви самі написали цей текст?", "editcheck-copyvio-action-keep": "Так, залишити це.", "editcheck-copyvio-action-remove": "Ні, прибрати це", - "editcheck-copyvio-keep-description": "Іншим редакторам буде цінно дізнатися, чому ви зберігаєте цей вставлений текст.", + "editcheck-copyvio-keep-description": "Будь ласка, допоможіть іншим редакторам цієї статті зрозуміти причину, чому ви зберігаєте вставлений текст.", "editcheck-copyvio-keep-wrote": "Цей контент написано мною, і це ще ніде не опубліковано", "editcheck-copyvio-keep-permission": "Я маю дозвіл на повторне використання цього контенту", - "editcheck-copyvio-keep-other": "Інше", + "editcheck-copyvio-keep-other": "Жодне з перерахованого не підходить", "editcheck-copyvio-keep-notify": "Дякуємо вам, що поділилися своєю причиною, чому ви зберігаєте вставлений текст!", "editcheck-copyvio-remove-notify": "Дякуємо, що прибрали цей текст!", "editcheck-tone-title": "Переглянути тон?", @@ -40,7 +40,7 @@ "editcheck-tone-reject-appropriate": "Тон відповідний", "editcheck-tone-reject-uncertain": "Я не знаю, як змінити тон", "editcheck-tone-reject-other": "Інше", - "editcheck-tone-thank": "Дякуємо, що скоригували тон!", + "editcheck-tone-thank": "Дякуємо, що врахували тон!", "editcheck-reject-description": "Іншим редакторам буде цінно дізнатися, чому ви зробили такий вибір.", "editcheck-review-title": "Переглянути зміни", "tag-editcheck-reference-decline-common-knowledge": "Підказку додати посилання відхилено через загальновідомість", diff --git a/i18n/ve-mw/uk.json b/i18n/ve-mw/uk.json index 3dd27c0f46..ea19b41076 100644 --- a/i18n/ve-mw/uk.json +++ b/i18n/ve-mw/uk.json @@ -373,7 +373,7 @@ "visualeditor-special-characters-group-other": "Часто використовуване", "visualeditor-templatesused-tool": "Використані шаблони", "visualeditor-title-error": "Недійсна назва.", - "visualeditor-toload": "Зараз завантажиться редактор. Якщо через кілька секунд Ви все ще бачитимете це повідомлення, будь ласка, [$1 перезавантажте сторінку].", + "visualeditor-toload": "Зараз завантажиться редактор. Якщо через кілька секунд ви все ще бачитимете це повідомлення, будь ласка, [$1 оновіть сторінку].", "visualeditor-tooltip-non-breaking-space": "Нерозривний пробіл", "visualeditor-version-label": "Версія", "visualeditor-wikitext-progress": "Перетворення вікі-тексту", diff --git a/i18n/ve-mw/xon.json b/i18n/ve-mw/xon.json new file mode 100644 index 0000000000..05f26d99ba --- /dev/null +++ b/i18n/ve-mw/xon.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Abdul Fatawu 352", + "Andani Inusah" + ] + }, + "visualeditor-ca-editsource": "Taŋi kpɛɛli", + "visualeditor-ca-editsource-section": "Bɔri kɔntir”" +} diff --git a/i18n/ve-mw/yua.json b/i18n/ve-mw/yua.json index dfb51a0665..ea944f30d9 100644 --- a/i18n/ve-mw/yua.json +++ b/i18n/ve-mw/yua.json @@ -1,8 +1,12 @@ { "@metadata": { "authors": [ + "Azul25", + "Cohuoucan", + "Elsa Flores", "Juanchuy0", "Kaambalwiki", + "Kuxtal", "Lorenzoitza", "Miguelos1976", "Tunichmay", @@ -20,11 +24,29 @@ "tooltip-ca-editsource": "je'el beet \"código fuente\"ti le\"pagina\"'", "tooltip-ca-editsource-local": "je'el beet le \"codigo fuente\" ti' le \"pagina\" tu tsololil kuuchil", "tooltip-ca-createsource": "beet u \"codigo fuente\"ti le\"pagina\"", + "tooltip-ca-createsource-local": "Béet u código fuente ti' u \"pagina\" kaambal u tsóolil le kúuchila'", "visualeditor-advancedsettings-tool": "Tsolmeyaj tu bin u náachtal", + "visualeditor-annotations-default-description": "ti' le jumxóot' táan ju'un je'ela' ku béeytal a tsolts'íibtik a meyaj", "visualeditor-annotations-default-end": "Xu'ul le tsolts'íib ti' le jun xóot' p'iis ets'a'ano.", "visualeditor-annotations-default-start": "U káajbal le p'iis etsa'an o a'alano'", + "visualeditor-annotations-extended-documentation": "Le rango anotacióno'obo' ts'o'ok u nojochtal tuméen le ts'íibo'obo' ku taasiko' ma' bin ma'alob anidado'. Ku ya'ala'al ti' teeche' ka wi'il wa le contenidos ts'íibtano'ob tu beelil anidado táanil a ts'íibtik, wa ma'i je'el u páajta'al u ts'íibta'al' jump'éel rango asab nojoch ti' le ku tuukultalo'.", + "visualeditor-autosave-modified-prompt-accept": " je'el béet", + "visualeditor-autosave-modified-prompt-message": "le ju'una' k'e'ex u ts'o'ok u téen ka ta béetaj u kuuch a meyaj {{GENDER:|Teech}} u je'el {{GENDER:|teech}} je'el béet ti' le' úuchben versión, wa a káajsik jump´éel túumben edición ti' le ts'o'ok versióno'", + "visualeditor-autosave-modified-prompt-reject": "káas jump'éel túumben edición", + "visualeditor-autosave-modified-prompt-title": "tak a je'el béetik {{GENDER:a}} edición", + "visualeditor-autosave-not-recovered-text": "ma' pajchajal u ta'akajal le k'ex meyaj ta beetajo'.", + "visualeditor-autosave-not-recovered-title": "ma' béeychajak u ta'akal le k'eex meyajo'", + "visualeditor-autosave-recovered-text": "suunaj tu jum le k'eex meyaj ma tu ta'akubaje'", + "visualeditor-autosave-recovered-title": "le k'eexo'ts'ok u je'el k'aamal", + "visualeditor-backbutton-tooltip": "suut", "visualeditor-ca-createlocaldescriptionsource": "A'al tu'ux u taal", "visualeditor-ca-createsource": "A'al tu'ux u taal", + "visualeditor-ca-editlocaldescriptionsource": "je'el beet le coodigoi' u tsolil le kuuchilo'", "visualeditor-ca-editsource": "k'ex le coodigóo", - "visualeditor-ca-editsource-section": "k'ex le koodigo'" + "visualeditor-ca-editsource-section": "k'ex le koodigo'", + "visualeditor-ca-editsource-section-hint": "jeel beet u coodigoi' u poolil buuj:$1", + "visualeditor-categories-tool": "u tsolil múuch'ilo'ob", + "visualeditor-changedesc-mwcategory-sortkey-changed": "le u k'alil tsolilo' k'expaj ti $1 tak $2", + "visualeditor-changedesc-mwcategory-sortkey-set": "u k'aalil le tsolilo' ts'o'ok u ya'alal. $1", + "visualeditor-changedesc-mwcategory-sortkey-unset": "le' u k'alil u ordenacioono' $1 ts'o'ok u cha'abal" } From 97695cfae5e9f9c828f9e56ada60a12991e62fb7 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Tue, 23 Sep 2025 09:45:35 +0100 Subject: [PATCH 621/730] Update VE core submodule to master (3911ba7ce) New changes: ca2c834d1 ve.BranchNode: Use Array loop methods 47e6a6cb6 SelectionManager: Update documentation of redrawSelections 6dce753de SelectionManager: Re-order constructor and methods 6c1f8866a SelectionManager: Rename selection stores bf0393d1a SelectionManager: Use Maps cff8114e3 SelectionManager: Create classes for SelectionGroup and SelectionElements 3911ba7ce SelectionManager: Draw selections in batches using requestIdleCallback Change-Id: Ief40acfaf989e0f5c0785785779d9120cf025a51 --- editcheck/modules/controller.js | 4 +++- lib/ve | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index 0cea9f37f8..e671165cab 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -733,7 +733,9 @@ Controller.prototype.drawSelections = function () { // Optimization: When showGutter is false inactive selections currently render nothing return; } - const selectionElements = surfaceView.getSelectionManager().getCachedSelection( isActive ? 'editCheck-active' : 'editCheck-inactive', selection, isActive ? activeOptions : inactiveOptions ); + const selectionElements = surfaceView.getSelectionManager().getCachedSelectionElements( + isActive ? 'editCheck-active' : 'editCheck-inactive', selection, isActive ? activeOptions : inactiveOptions + ); if ( selectionElements ) { // The following classes are used here: // * ve-ce-surface-selection-editCheck-error diff --git a/lib/ve b/lib/ve index cfd45f5a88..3911ba7ce0 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit cfd45f5a88d17258c01dfe98f2e05481f59470ae +Subproject commit 3911ba7ce0dd8f211a7a75ab58c69a8a9b6a5e2c From 5d265a9994a18fae0ef0bba22da7d0bba6e35a51 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 18 Sep 2025 18:10:07 -0500 Subject: [PATCH 622/730] Tone check: don't error when rate limited Whole different response structure when we get an error, so use getProp to safeguard against this. Change-Id: I2ffad1579efe6a8ce299e9d3b8ea546ee65c06a8 --- editcheck/modules/editchecks/ToneCheck.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/editchecks/ToneCheck.js b/editcheck/modules/editchecks/ToneCheck.js index 6e7c8316ec..9133780cce 100644 --- a/editcheck/modules/editchecks/ToneCheck.js +++ b/editcheck/modules/editchecks/ToneCheck.js @@ -73,9 +73,10 @@ mw.editcheck.ToneCheck.prototype.canBeShown = function ( ...args ) { }; mw.editcheck.ToneCheck.prototype.afterMemoized = function ( data ) { - const outcome = data && data.predictions[ 0 ].prediction === true && - data.predictions[ 0 ].probability >= this.config.predictionThreshold; - return !!outcome; + return !!( + ve.getProp( data, 'predictions', 0, 'prediction' ) && + ve.getProp( data, 'predictions', 0, 'probability' ) >= this.config.predictionThreshold + ); }; mw.editcheck.ToneCheck.prototype.newAction = function ( fragment, outcome ) { From e8c5d318a6090a1647abcfa1c065a73913b950a2 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Mon, 15 Sep 2025 18:10:52 -0500 Subject: [PATCH 623/730] Edit check dialog: in showActions check that currentOffset isn't null The previous check was for truthiness, and so it was doing unexpected things when currentOffset was (validly!) 0. Change-Id: Ic24027afaa1f29cd3a4609b1d3dfad3b00477c60 --- editcheck/modules/dialogs/EditCheckDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editcheck/modules/dialogs/EditCheckDialog.js b/editcheck/modules/dialogs/EditCheckDialog.js index b7ebba574f..92e0eced5f 100644 --- a/editcheck/modules/dialogs/EditCheckDialog.js +++ b/editcheck/modules/dialogs/EditCheckDialog.js @@ -134,7 +134,7 @@ ve.ui.EditCheckDialog.prototype.onActionsUpdated = function ( listener, actions, */ ve.ui.EditCheckDialog.prototype.showActions = function ( actions, newActions, lastActionRejected ) { let currentAction; - if ( this.currentActions && this.currentOffset && actions.includes( this.currentActions[ this.currentOffset ] ) ) { + if ( this.currentActions && this.currentOffset !== null && actions.includes( this.currentActions[ this.currentOffset ] ) ) { currentAction = this.currentActions[ this.currentOffset ]; } this.currentActions = actions; From a0c7fcbba03c33343bbb7cc257e6429d85b44a1c Mon Sep 17 00:00:00 2001 From: Reedy Date: Mon, 22 Sep 2025 08:12:35 +0100 Subject: [PATCH 624/730] Add foreign-resouces.cdx.json Bug: T363589 Change-Id: Iff05edc20fe08b01bb3332941fcc0d2603ee94b5 --- lib/foreign-resources.cdx.json | 288 +++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100644 lib/foreign-resources.cdx.json diff --git a/lib/foreign-resources.cdx.json b/lib/foreign-resources.cdx.json new file mode 100644 index 0000000000..099b36af23 --- /dev/null +++ b/lib/foreign-resources.cdx.json @@ -0,0 +1,288 @@ +{ + "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.6", + "serialNumber": "urn:uuid:bda6e0a4-167c-4d6a-afcc-da695c943a8b", + "version": 1, + "components": [ + { + "type": "library", + "name": "Color Picker", + "version": "1.3.5", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "authors": [ + { + "name": "Taufik Nurrohman and other contributors" + } + ], + "externalReferences": [ + { + "url": "https://tovic.github.io/color-picker", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "Diff Match and Patch", + "version": "—", + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ], + "authors": [ + { + "name": "Google" + }, + { + "name": "Inc." + } + ], + "externalReferences": [ + { + "url": "https://code.google.com/p/google-diff-match-patch/", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "DOMPurify", + "version": "2.4.4", + "licenses": [ + { + "expression": "MPL-2.0 OR Apache-2.0" + } + ], + "authors": [ + { + "name": "Mario Heiderich and other contributors" + } + ], + "externalReferences": [ + { + "url": "https://github.com/cure53/DOMPurify", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "jsdifflib", + "version": 1, + "licenses": [ + { + "license": { + "id": "BSD-3-Clause" + } + } + ], + "authors": [ + { + "name": "Snowtide Informatics Systems" + }, + { + "name": "Inc." + } + ], + "externalReferences": [ + { + "url": "http://snowtide.com/jsdifflib", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "PapaParse", + "version": "5.3.2", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "authors": [ + { + "name": "Matthew Holt and other contributors" + } + ], + "externalReferences": [ + { + "url": "http://papaparse.com", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "RangeFix", + "version": "0.2.10", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "authors": [ + { + "name": "Ed Sanders and other contributors" + } + ], + "externalReferences": [ + { + "url": "https://github.com/edg2s/rangefix", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "socket.io-client", + "version": "4.4.0", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "authors": [ + { + "name": "Guillermo Rauch and other contributors" + } + ], + "externalReferences": [ + { + "url": "https://github.com/socketio/socket.io-client", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "spark-md5", + "version": "3.0.0", + "licenses": [ + { + "expression": "WTFPL OR MIT" + } + ], + "authors": [ + { + "name": "André Cruz" + } + ], + "externalReferences": [ + { + "url": "https://github.com/satazor/js-spark-md5", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "Tree Differ", + "version": "1.0.2", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "authors": [ + { + "name": "Thalia Chan" + } + ], + "externalReferences": [ + { + "url": "https://github.com/tchanders/treeDiffer.js", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "UnicodeJS", + "version": "15.0.0", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "authors": [ + { + "name": "Ed Sanders" + }, + { + "name": "David Chan and other contributors" + } + ], + "externalReferences": [ + { + "url": "https://gerrit.wikimedia.org/g/unicodejs", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "Universal Language Selector data", + "version": "—", + "licenses": [ + { + "expression": "MIT OR GPL-2.0+" + } + ], + "authors": [ + { + "name": "Wikimedia Language Engineering Team and other contributors" + } + ], + "externalReferences": [ + { + "url": "https://github.com/wikimedia/jquery.uls", + "type": "website" + } + ] + }, + { + "type": "library", + "name": "VisualEditor", + "version": "Development branch", + "licenses": [ + { + "license": { + "id": "MIT" + } + } + ], + "authors": [ + { + "name": "VisualEditor Team and other contributors" + } + ], + "externalReferences": [ + { + "url": "https://www.mediawiki.org/wiki/VisualEditor", + "type": "website" + } + ] + } + ] +} \ No newline at end of file From 9c539f524c66b6424ffa4d25e5e58d11f2017e76 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 23 Sep 2025 20:18:03 -0500 Subject: [PATCH 625/730] Update VE core submodule to master (ad0ed6d09) New changes: ef47a3288 SelectionManager: fix ReferenceError in Safari 07e15dce7 Create ve.ce.SurfaceSynchronizer 5be3e0b83 ve.ce.SelectionManager: Create API for changing SelectionGroup options ad0ed6d09 ve.ce.SelectionManager: Fix rendering of cursors Added files: - src/ce/styles/ve.ce.SurfaceSynchronizer.less - src/ce/ve.ce.SurfaceSynchronizer.js Change-Id: I1a2a62aa9fde8d400896b614bb43617f82fc7829 --- lib/ve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ve b/lib/ve index 3911ba7ce0..ad0ed6d093 160000 --- a/lib/ve +++ b/lib/ve @@ -1 +1 @@ -Subproject commit 3911ba7ce0dd8f211a7a75ab58c69a8a9b6a5e2c +Subproject commit ad0ed6d093d582628efa5c4a6c61120c91dc3f9f From eea710020eb23d99966ab891aa2b0fac31228bdd Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 23 Sep 2025 11:03:48 -0500 Subject: [PATCH 626/730] Edit check: update some check-creation for config changes Create a new factory method that handles combining the various configs for us so we don't need to duplicate it. Several places creating checks for tagging/instrumentation purposes need to have an override to force-enable checks disabled by config. Bug: T404914 Bug: T402992 Bug: T403768 Change-Id: I87172333ec9d492cdd1c4dec683f2a7e425db5c6 --- editcheck/modules/EditCheckFactory.js | 36 +++++++++++++++++++++++---- editcheck/modules/controller.js | 2 +- editcheck/modules/init.js | 6 ++--- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/editcheck/modules/EditCheckFactory.js b/editcheck/modules/EditCheckFactory.js index bd1f4dcb4d..fbd1bae0e4 100644 --- a/editcheck/modules/EditCheckFactory.js +++ b/editcheck/modules/EditCheckFactory.js @@ -106,11 +106,7 @@ mw.editcheck.EditCheckFactory.prototype.getNamesByListener = function ( listener mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( controller, listenerName, surfaceModel ) { const actionOrPromiseList = []; this.getNamesByListener( listenerName ).forEach( ( checkName ) => { - const check = this.create( - checkName, - controller, - ve.extendObject( {}, mw.editcheck.config[ '*' ], mw.editcheck.config[ checkName ] ) - ); + const check = this.create( checkName, controller ); if ( !check.canBeShown() ) { return; } @@ -134,4 +130,34 @@ mw.editcheck.EditCheckFactory.prototype.createAllByListener = function ( control } ); }; +/** + * Create a check + * + * This generates the configuration to pass to the check from the various overrides. + * + * @param {string} checkName + * @param {mw.editcheck.Controller} controller + * @param {Object} [extraConfig={}] extra configuration to apply + * @return {mw.editcheck.BaseEditCheck} + */ +mw.editcheck.EditCheckFactory.prototype.create = function ( checkName, controller, extraConfig = {} ) { + return this.constructor.super.prototype.create.call( + this, + checkName, + controller, + this.buildConfig( checkName, extraConfig ) + ); +}; + +/** + * Build the config for a check + * + * @param {string} checkName + * @param {Object} [extraConfig={}] extra configuration to apply + * @return {Object} + */ +mw.editcheck.EditCheckFactory.prototype.buildConfig = function ( checkName, extraConfig ) { + return ve.extendObject( {}, mw.editcheck.config[ '*' ], mw.editcheck.config[ checkName ], extraConfig ); +}; + mw.editcheck.editCheckFactory = new mw.editcheck.EditCheckFactory(); diff --git a/editcheck/modules/controller.js b/editcheck/modules/controller.js index e671165cab..efb5a8b010 100644 --- a/editcheck/modules/controller.js +++ b/editcheck/modules/controller.js @@ -180,7 +180,7 @@ Controller.prototype.editChecksArePossible = function () { return [ 'onBeforeSave', 'onDocumentChange' ].some( ( listener ) => mw.editcheck.editCheckFactory.getNamesByListener( listener ).some( ( checkName ) => { - const check = mw.editcheck.editCheckFactory.create( checkName, this, mw.editcheck.config[ checkName ] ); + const check = mw.editcheck.editCheckFactory.create( checkName, this ); return check.canBeShown(); } ) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index 3b326611ef..a668236b35 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -66,13 +66,13 @@ mw.editcheck.hasAddedContentNeedingReference = function ( documentModel, include return false; } // TODO: This should be factored out into a static method so we don't have to construct a dummy check - const check = mw.editcheck.editCheckFactory.create( 'addReference', null, mw.editcheck.config.addReference ); + const check = mw.editcheck.editCheckFactory.create( 'addReference', null, { enabled: true } ); return check.findAddedContent( documentModel, includeReferencedContent ).length > 0; }; mw.editcheck.hasFailingToneCheck = function ( surfaceModel ) { // Check might not be registered so we can't use the factory. - const check = new mw.editcheck.ToneCheck( null, mw.editcheck.config.tone ); + const check = new mw.editcheck.ToneCheck( null, mw.editcheck.editCheckFactory.buildConfig( 'tone', { enabled: true } ) ); // Run actual check eligibility before calling API if ( !check.canBeShown() ) { return ve.createDeferred().resolve( false ).promise(); @@ -174,7 +174,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.forceEnab target.on( 'surfaceReady', () => { target.getSurface().getView().on( 'paste', ( data ) => { // Check might not be registered so we can't use the factory. - const check = new mw.editcheck.PasteCheck( null, mw.editcheck.config.paste ); + const check = new mw.editcheck.PasteCheck( null, mw.editcheck.editCheckFactory.buildConfig( 'paste', { enabled: true } ) ); if ( check.canBeShown() && !data.source && data.fragment.getSelection().getCoveringRange().getLength() >= check.config.minimumCharacters ) { ve.track( 'activity.editCheck-paste', { action: 'relevant-paste' } ); } From 0bf41a34dea10ea982c3f32fd0d7703ef6e77feb Mon Sep 17 00:00:00 2001 From: David Lynch Date: Tue, 23 Sep 2025 10:21:38 -0500 Subject: [PATCH 627/730] Paste check: set up for the A/B test Paste is disabled by default but can be enabled on any wiki via the JSON config. A/B test enrollment overrides the default *and* JSON config to force-enable/disable the check. Bug: T404914 Bug: T402992 Change-Id: Idede345c6908c9fd92743bc696fa0270c248eb23 --- editcheck/modules/editchecks/PasteCheck.js | 1 + editcheck/modules/init.js | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/editcheck/modules/editchecks/PasteCheck.js b/editcheck/modules/editchecks/PasteCheck.js index 627bd27b09..5e2837adcd 100644 --- a/editcheck/modules/editchecks/PasteCheck.js +++ b/editcheck/modules/editchecks/PasteCheck.js @@ -6,6 +6,7 @@ mw.editcheck.PasteCheck = function MWPasteCheck() { OO.inheritClass( mw.editcheck.PasteCheck, mw.editcheck.BaseEditCheck ); mw.editcheck.PasteCheck.static.defaultConfig = ve.extendObject( {}, mw.editcheck.BaseEditCheck.static.defaultConfig, { + enabled: false, minimumCharacters: 50 } ); diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index a668236b35..e81cd6c333 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -34,7 +34,6 @@ require( './editchecks/ToneCheck.js' ); require( './editchecks/PasteCheck.js' ); nonDefaultChecks.add( 'tone' ); -nonDefaultChecks.add( 'paste' ); if ( mw.editcheck.experimental ) { mw.loader.using( 'ext.visualEditor.editCheck.experimental' ); @@ -48,6 +47,11 @@ for ( const check of nonDefaultChecks ) { mw.editcheck.editCheckFactory.unregister( check ); } +if ( abCheck === 'paste' ) { + // In the a/b test, force-enable/disable the check + mw.editcheck.config.paste = ve.extendObject( mw.editcheck.config.paste || {}, { enabled: abGroup === 'test' } ); +} + const isMainNamespace = mw.config.get( 'wgNamespaceNumber' ) === mw.config.get( 'wgNamespaceIds' )[ '' ]; // Helper functions for ve.init.mw.ArticleTarget save-tagging, keep logic @@ -173,8 +177,7 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.forceEnab if ( nonDefaultChecks.has( 'paste' ) ) { target.on( 'surfaceReady', () => { target.getSurface().getView().on( 'paste', ( data ) => { - // Check might not be registered so we can't use the factory. - const check = new mw.editcheck.PasteCheck( null, mw.editcheck.editCheckFactory.buildConfig( 'paste', { enabled: true } ) ); + const check = mw.editcheck.editCheckFactory.create( 'paste', null, { enabled: true } ); if ( check.canBeShown() && !data.source && data.fragment.getSelection().getCoveringRange().getLength() >= check.config.minimumCharacters ) { ve.track( 'activity.editCheck-paste', { action: 'relevant-paste' } ); } From 9b5d26dfd48fb4956f018031cb925c9f8db52c8d Mon Sep 17 00:00:00 2001 From: Caro Medelius Date: Tue, 23 Sep 2025 15:00:27 -0700 Subject: [PATCH 628/730] Display title fix Make display title metaitem use localized version of magic word. Bug: T405408 Change-Id: Ifa2b4a9872f6467fe5c4238acb4bbebfd1e229a1 --- includes/Hooks.php | 4 ++++ modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js | 7 +++++-- modules/ve-mw/tests/dm/ve.dm.mwExample.js | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/includes/Hooks.php b/includes/Hooks.php index 0d8a99f65b..e9f2e47e9b 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -1150,6 +1150,9 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf // presence or absence of a trailing colon in the message makes no difference. $defaultSortPrefix = preg_replace( '/:$/', '', $defaultSortPrefix ); + $displayTitlePrefix = $services->getMagicWordFactory()->get( 'displaytitle' )->getSynonym( 0 ); + $displayTitlePrefix = preg_replace( '/:$/', '', $displayTitlePrefix ); + $vars['wgVisualEditorConfig'] = [ 'usePageImages' => $this->extensionRegistry->isLoaded( 'PageImages' ), 'usePageDescriptions' => $this->extensionRegistry->isLoaded( 'WikibaseClient' ), @@ -1191,6 +1194,7 @@ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $conf 'transclusionDialogNewSidebar' => true, 'cirrusSearchLookup' => $this->extensionRegistry->isLoaded( 'CirrusSearch' ), 'defaultSortPrefix' => $defaultSortPrefix, + 'displayTitlePrefix' => $displayTitlePrefix, ]; // This can be removed and the module added in TemplateData's extension.json diff --git a/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js b/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js index c42d1c3430..2f628e869e 100644 --- a/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js +++ b/modules/ve-mw/dm/metaitems/ve.dm.MWDisplayTitleMetaItem.js @@ -44,17 +44,20 @@ ve.dm.MWDisplayTitleMetaItem.static.toDataElement = function ( domElements ) { mwData = mwDataJSON ? JSON.parse( mwDataJSON ) : {}; const wt = ( ve.getProp( mwData, 'parts', '0', 'template', 'target', 'wt' ) || '' ) || ve.getProp( mwData, 'parts', '0', 'parserfunction', 'params', '1', 'wt' ); - const content = wt.replace( /^DISPLAYTITLE:/i, '' ); + const localizedPrefix = wt.split( ':' )[ 0 ]; + const content = wt.slice( localizedPrefix.length + 1 ); return { type: this.name, attributes: { + localizedPrefix: localizedPrefix, content: content } }; }; ve.dm.MWDisplayTitleMetaItem.static.toDomElements = function ( dataElement, doc ) { - const prefix = 'DISPLAYTITLE', + const prefix = dataElement.attributes.localizedPrefix || + mw.config.get( 'wgVisualEditorConfig' ).displayTitlePrefix, displayTitle = dataElement.attributes.content, mwData = { parts: [ diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js b/modules/ve-mw/tests/dm/ve.dm.mwExample.js index dfe6005656..afc96483b0 100644 --- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js +++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js @@ -2198,7 +2198,8 @@ ve.dm.mwExample.domToDataCases = { { type: 'mwDisplayTitle', attributes: { - content: 'foo' + content: 'foo', + localizedPrefix: 'DISPLAYTITLE' } }, { type: '/mwDisplayTitle' }, From 58c94cb8ad3364e03f8f7206896ffb1e7ed9641f Mon Sep 17 00:00:00 2001 From: David Lynch Date: Wed, 24 Sep 2025 11:46:36 -0500 Subject: [PATCH 629/730] Paste check: logging shouldn't check nonDefaultChecks any more Paste check is now always outside of non-default checks, because it's disabled by config. Follow-up to 0bf41a34dea10ea982c3f32fd0d7703ef6e77feb. Bug: T404914 Change-Id: I79c6141c5a679662313bb0c0a8cc438ff677a3e6 --- editcheck/modules/init.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/editcheck/modules/init.js b/editcheck/modules/init.js index e81cd6c333..0dde54b36e 100644 --- a/editcheck/modules/init.js +++ b/editcheck/modules/init.js @@ -174,15 +174,18 @@ if ( mw.config.get( 'wgVisualEditorConfig' ).editCheck || mw.editcheck.forceEnab } ); } // Temporary logging for T402460 - if ( nonDefaultChecks.has( 'paste' ) ) { - target.on( 'surfaceReady', () => { - target.getSurface().getView().on( 'paste', ( data ) => { + target.on( 'surfaceReady', () => { + target.getSurface().getView().on( 'paste', ( data ) => { + // Only run when the check is disabled: + const defaults = mw.editcheck.editCheckFactory.buildConfig( 'paste' ); + if ( !defaults.enabled ) { + // Now only run when the rest of the check's config means it would have applied if not disabled: const check = mw.editcheck.editCheckFactory.create( 'paste', null, { enabled: true } ); if ( check.canBeShown() && !data.source && data.fragment.getSelection().getCoveringRange().getLength() >= check.config.minimumCharacters ) { ve.track( 'activity.editCheck-paste', { action: 'relevant-paste' } ); } - } ); + } } ); - } + } ); } ); } From 318028efcf5d40a0c93be70a317b5eb7a36243db Mon Sep 17 00:00:00 2001 From: Translation updater bot Date: Thu, 25 Sep 2025 09:58:25 +0200 Subject: [PATCH 630/730] Localisation updates from https://translatewiki.net. Change-Id: I1dd6e321783bf51121960630e049524413edf287 --- editcheck/i18n/hy.json | 12 +++++++++++- editcheck/i18n/lv.json | 6 ++++++ editcheck/i18n/ru.json | 4 ++++ i18n/ve-mw/kg.json | 1 + 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/editcheck/i18n/hy.json b/editcheck/i18n/hy.json index 4ec5f62729..80ec0fe6d0 100644 --- a/editcheck/i18n/hy.json +++ b/editcheck/i18n/hy.json @@ -7,5 +7,15 @@ }, "editcheck-dialog-action-no": "Ոչ", "editcheck-dialog-action-yes": "Այո", - "editcheck-copyvio-keep-other": "Այլ" + "editcheck-dialog-action-decline": "Մերժել", + "editcheck-dialog-action-revise": "Վերանայել", + "editcheck-dialog-action-recheck": "Վերստուգել", + "editcheck-dialog-action-back": "Հետ", + "editcheck-dialog-action-submit": "Ուղարկել", + "editcheck-dialog-addref-reject-other": "Այլ", + "editcheck-dialog-addref-success-notify": "Շնորհակալություն մեջբերում ավելացնելու համար", + "editcheck-dialog-addref-title": "Ավելացնել մեջբերում", + "editcheck-dialog-title": "Հրապարակումից առաջ", + "editcheck-copyvio-keep-other": "Վերը նշվածներից ոչ մեկը չի վերաբերում", + "editcheck-tone-reject-other": "Այլ" } diff --git a/editcheck/i18n/lv.json b/editcheck/i18n/lv.json index bd4f2a05d8..f09e18f9bf 100644 --- a/editcheck/i18n/lv.json +++ b/editcheck/i18n/lv.json @@ -6,6 +6,9 @@ }, "editcheck-dialog-action-no": "Nē", "editcheck-dialog-action-yes": "Jā", + "editcheck-dialog-action-recheck": "Pārbaudīt vēlreiz", + "editcheck-dialog-action-back": "Atpakaļ", + "editcheck-dialog-action-submit": "Iesniegt", "editcheck-dialog-addref-description": "Palīdzi lasītājiem saprast, no kurienes nāk šī informācija, pievienojot atsauci.", "editcheck-dialog-addref-reject-question": "Kāpēc tu nepievienoji atsauci?", "editcheck-dialog-addref-reject-description": "Citi redaktori vēlētos uzzināt vairāk par tavu lēmumu noraidīt atsauci.", @@ -17,5 +20,8 @@ "editcheck-dialog-addref-title": "Pievienot atsauci", "editcheck-dialog-title": "Pirms publicēšanas", "editcheck-copyvio-title": "Iekopētais saturs", + "editcheck-copyvio-prompt": "Vai tu uzrakstīji šo tekstu?", + "editcheck-copyvio-action-keep": "Jā, paturēt to", + "editcheck-copyvio-action-remove": "Nē, noņemt to", "editcheck-review-title": "Pārskatīt izmaiņas" } diff --git a/editcheck/i18n/ru.json b/editcheck/i18n/ru.json index 0d6288cf51..02747f6650 100644 --- a/editcheck/i18n/ru.json +++ b/editcheck/i18n/ru.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Kareyac", "Okras", "Stjn" ] @@ -18,6 +19,9 @@ "editcheck-dialog-addref-success-notify": "Спасибо за добавление источника!", "editcheck-dialog-addref-title": "Добавить источник", "editcheck-dialog-title": "До публикации", + "editcheck-copyvio-action-keep": "Да, сохранить", + "editcheck-copyvio-action-remove": "Нет, удалить", + "editcheck-tone-reject-other": "Другое", "tag-editcheck-reference-decline-common-knowledge": "Проверка правок (источники) отклонена (общеизвестно)", "tag-editcheck-reference-decline-irrelevant": "Проверка правок (источники) отклонена (неуместно)", "tag-editcheck-reference-decline-other": "Проверка правок (источники) отклонена (другое)", diff --git a/i18n/ve-mw/kg.json b/i18n/ve-mw/kg.json index ceea150e09..de8f444c0e 100644 --- a/i18n/ve-mw/kg.json +++ b/i18n/ve-mw/kg.json @@ -5,6 +5,7 @@ "Cgmbo" ] }, + "visualeditor-ca-createsource": "Create source", "visualeditor-ca-editsource": "Soba kisina", "visualeditor-ca-editsource-section": "edit source" } From 9fce0e7d68e55ca54907deba86d18c3a59c96dd7 Mon Sep 17 00:00:00 2001 From: David Lynch Date: Thu, 11 Sep 2025 09:35:23 -0500 Subject: [PATCH 631/730] Add a sequence for #redirect Bug: T403894 Change-Id: I00d42842ba32491ba034bc5458f24c933207ab39 --- modules/ve-mw/ui/ve.ui.MWSequenceRegistry.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/ve-mw/ui/ve.ui.MWSequenceRegistry.js b/modules/ve-mw/ui/ve.ui.MWSequenceRegistry.js index 7148814d50..3fe98babd9 100644 --- a/modules/ve-mw/ui/ve.ui.MWSequenceRegistry.js +++ b/modules/ve-mw/ui/ve.ui.MWSequenceRegistry.js @@ -40,6 +40,10 @@ ve.ui.sequenceRegistry.register( ve.ui.sequenceRegistry.register( new ve.ui.Sequence( 'wikitextComment', 'comment', '