From 94ca9bc3a06f080f9c0c7e489cb570fb9e4ebfd8 Mon Sep 17 00:00:00 2001
From: xjm <xjm@65776.no-reply.drupal.org>
Date: Sun, 21 Jun 2020 14:15:29 -0500
Subject: [PATCH] Issue #2972224 by alexpott, longwave, jungle, sja112, xjm,
 dww, daffie, kiamlaluno, dawehner, quietone, Lendude: Add .cspell.json to
 automate spellchecking in Drupal core

---
 core/.cspell.json                             |   48 +
 core/lib/Drupal/Component/Utility/Random.php  |    2 +
 .../Drupal/Core/Language/LanguageManager.php  |    4 +
 .../lib/Drupal/Core/Locale/CountryManager.php |    2 +
 core/misc/cspell/dictionary.txt               | 2262 +++++++++++++++++
 .../dblog/tests/src/Functional/DbLogTest.php  |    1 +
 .../tests/src/Functional/DownloadTest.php     |    1 +
 .../src/Functional/FileManagedTestBase.php    |    1 +
 .../src/Functional/FileTokenReplaceTest.php   |    1 +
 .../src/Kernel/FileManagedUnitTestBase.php    |    1 +
 .../file/tests/src/Kernel/SaveDataTest.php    |    1 +
 .../tests/src/Kernel/FilterKernelTest.php     |    4 +
 .../src/Plugin/migrate/process/FieldLink.php  |    1 +
 ...ternalProtocolsConstraintValidatorTest.php |    1 +
 .../LocaleConfigTranslationImportTest.php     |    1 +
 .../Functional/LocaleImportFunctionalTest.php |    2 +
 .../LocaleNonInteractiveInstallTest.php       |    1 +
 .../tests/src/Functional/LocaleUpdateTest.php |   12 +
 .../tests/src/Unit/LocaleLookupTest.php       |    4 +
 .../CKEditorIntegrationTest.php               |    6 +
 .../FunctionalJavascript/TranslationsTest.php |    6 +
 .../tests/src/Kernel/SummaryLengthTest.php    |    1 +
 .../tests/src/Functional/PathAliasTest.php    |    2 +
 .../ResourceResponseSubscriberTest.php        |    1 +
 .../Functional/SearchNodeDiacriticsTest.php   |    2 +
 .../Functional/SearchNodePunctuationTest.php  |    1 +
 .../tests/src/Kernel/SearchExcerptTest.php    |    2 +
 .../menu_test/menu_test.links.menu.yml        |    1 +
 .../modules/menu_test/menu_test.routing.yml   |    1 +
 .../src/Functional/Menu/MenuRouterTest.php    |    1 +
 .../Functional/System/RetrieveFileTest.php    |    1 +
 .../UpdatePathTestBaseFilledTest.php          |    2 +
 .../text/tests/src/Kernel/TextSummaryTest.php |    2 +
 .../d6/MigrateUserProfileValuesTest.php       |    2 +
 .../tests/src/Kernel/UserValidationTest.php   |    2 +
 .../src/Kernel/Handler/FieldKernelTest.php    |    2 +
 core/package.json                             |    6 +-
 .../UmamiMultilingualInstallTest.php          |    1 +
 .../Installer/InstallerTranslationTest.php    |    2 +
 .../Core/Cache/CacheCollectorTest.php         |    1 +
 .../KernelTests/Core/Command/DbDumpTest.php   |    2 +
 .../Core/Config/ConfigFileContentTest.php     |    2 +
 .../KernelTests/Core/File/FileTestBase.php    |    1 +
 .../Core/Routing/RouteProviderTest.php        |    2 +
 .../Component/Gettext/PoStreamWriterTest.php  |    2 +
 .../Component/Serialization/YamlPeclTest.php  |    2 +
 .../Serialization/YamlSymfonyTest.php         |    2 +
 .../PhpTransliterationTest.php                |    5 +
 .../Tests/Component/Utility/HtmlTest.php      |    4 +
 .../Tests/Component/Utility/UnicodeTest.php   |    8 +
 .../ActiveLinkResponseFilterTest.php          |    2 +
 .../Tests/Core/Form/SubformStateTest.php      |    1 +
 .../Tests/Core/Routing/RoutingFixtures.php    |    4 +
 .../Tests/Core/Template/AttributeTest.php     |    2 +
 .../PhpTransliterationTest.php                |    2 +
 core/yarn.lock                                |  386 ++-
 56 files changed, 2815 insertions(+), 7 deletions(-)
 create mode 100644 core/.cspell.json
 create mode 100644 core/misc/cspell/dictionary.txt

diff --git a/core/.cspell.json b/core/.cspell.json
new file mode 100644
index 000000000000..262287439710
--- /dev/null
+++ b/core/.cspell.json
@@ -0,0 +1,48 @@
+{
+    "version": "0.1",
+    "language": "en-US",
+    "allowCompoundWords": false,
+    "ignorePaths": [
+      "assets/vendor/**",
+      "lib/Drupal/Component/Diff/**",
+      "lib/Drupal/Component/Transliteration/data/**",
+      "lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php",
+      "modules/**/Migrate*Test.php",
+      "modules/color/preview.html",
+      "modules/color/tests/modules/color_test/themes/color_test_theme/color/preview.html",
+      "modules/migrate_drupal/tests/fixtures/drupal6.php",
+      "modules/migrate_drupal/tests/fixtures/drupal7.php",
+      "modules/search/tests/UnicodeTest.txt",
+      "modules/system/tests/logo.svgz",
+      "node_modules/*",
+      "profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/**/*",
+      "themes/bartik/color/preview.html",
+      "COPYRIGHT.txt",
+      "MAINTAINERS.txt",
+      "package.json",
+      "yarn.lock",
+      "misc/cspell/dictionary.txt"
+    ],
+    "ignoreRegExpList": [
+      "^msgstr .*",
+      "!!binary .*",
+      "%[0-9][0-9A-F]"
+    ],
+    "dictionaries": ["drupal","companies", "fonts", "html", "php", "softwareTerms"],
+    "dictionaryDefinitions": [
+      { "name": "drupal", "path": "./misc/cspell/dictionary.txt"}
+    ],
+    "flagWords": [
+      "hte"
+    ],
+    "overrides": [
+      {
+        "filename": "**/{*.engine,*.inc,*.install,*.module,*.profile,*.theme}",
+        "languageId": "php"
+      },
+      {
+        "filename": "**/scripts/{*.php.txt, *.sh}",
+        "languageId": "php"
+      }
+    ]
+}
diff --git a/core/lib/Drupal/Component/Utility/Random.php b/core/lib/Drupal/Component/Utility/Random.php
index 6c2f9056e590..22c971c41384 100644
--- a/core/lib/Drupal/Component/Utility/Random.php
+++ b/core/lib/Drupal/Component/Utility/Random.php
@@ -192,6 +192,7 @@ public function object($size = 4) {
    *   Nonsense latin words which form sentence(s).
    */
   public function sentences($min_word_count, $capitalize = FALSE) {
+    // cSpell:disable
     $dictionary = ["abbas", "abdo", "abico", "abigo", "abluo", "accumsan",
       "acsi", "ad", "adipiscing", "aliquam", "aliquip", "amet", "antehabeo",
       "appellatio", "aptent", "at", "augue", "autem", "bene", "blandit",
@@ -223,6 +224,7 @@ public function sentences($min_word_count, $capitalize = FALSE) {
       "virtus", "voco", "volutpat", "vulpes", "vulputate", "wisi", "ymo",
       "zelus",
     ];
+    // cSpell:enable
     $dictionary_flipped = array_flip($dictionary);
     $greeking = '';
 
diff --git a/core/lib/Drupal/Core/Language/LanguageManager.php b/core/lib/Drupal/Core/Language/LanguageManager.php
index c0177df11412..eb5295cdbe57 100644
--- a/core/lib/Drupal/Core/Language/LanguageManager.php
+++ b/core/lib/Drupal/Core/Language/LanguageManager.php
@@ -229,6 +229,7 @@ public static function getStandardLanguageList() {
     // The "Left-to-right marker" comments and the enclosed UTF-8 markers are to
     // make otherwise strange looking PHP syntax natural (to not be displayed in
     // right to left). See https://www.drupal.org/node/128866#comment-528929.
+    // cSpell:disable
     return [
       'af' => ['Afrikaans', 'Afrikaans'],
       'am' => ['Amharic', 'አማርኛ'],
@@ -326,6 +327,7 @@ public static function getStandardLanguageList() {
       'zh-hans' => ['Chinese, Simplified', '简体中文'],
       'zh-hant' => ['Chinese, Traditional', '繁體中文'],
     ];
+    // cSpell:enable
   }
 
   /**
@@ -340,6 +342,7 @@ public static function getStandardLanguageList() {
    *   names as values.
    */
   public static function getUnitedNationsLanguageList() {
+    // cSpell:disable
     return [
       'ar' => ['Arabic', /* Left-to-right marker "‭" */ 'العربية', LanguageInterface::DIRECTION_RTL],
       'zh-hans' => ['Chinese, Simplified', '简体中文'],
@@ -348,6 +351,7 @@ public static function getUnitedNationsLanguageList() {
       'ru' => ['Russian', 'Русский'],
       'es' => ['Spanish', 'Español'],
     ];
+    // cSpell:enable
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Locale/CountryManager.php b/core/lib/Drupal/Core/Locale/CountryManager.php
index b2f094c37a74..b5b01acfe0de 100644
--- a/core/lib/Drupal/Core/Locale/CountryManager.php
+++ b/core/lib/Drupal/Core/Locale/CountryManager.php
@@ -37,6 +37,7 @@ public function __construct(ModuleHandlerInterface $module_handler) {
    *   An array of country code => country name pairs.
    */
   public static function getStandardList() {
+    // cSpell:disable
     $countries = [
       'AC' => t('Ascension Island'),
       'AD' => t('Andorra'),
@@ -297,6 +298,7 @@ public static function getStandardList() {
       'ZM' => t('Zambia'),
       'ZW' => t('Zimbabwe'),
     ];
+    // cSpell:enable
 
     // Sort the list.
     natcasesort($countries);
diff --git a/core/misc/cspell/dictionary.txt b/core/misc/cspell/dictionary.txt
new file mode 100644
index 000000000000..eaba7a36cc54
--- /dev/null
+++ b/core/misc/cspell/dictionary.txt
@@ -0,0 +1,2262 @@
+a'foo
+abantu
+abbrfilter
+abcdefg
+abcdefghijklmno
+abcdefghijklmnopqrstuvwxyz
+abempty
+abiword
+absolutezero
+accesslog
+accum
+actionid
+adamson
+adbin
+addedline
+addtogroup
+admin's
+adminforms
+adminlabel
+adnum
+adrelid
+adsense
+adsrc
+aewesome
+aflopend
+afterbegin
+afterclose
+aftercreate
+afterend
+ahah
+ahughes
+aimez
+ajaxcallback
+ajaxify
+ajaxing
+akiko
+aliasable
+aliquet
+alle
+allowtransparency
+allwords
+alows
+alphadecimal
+alterjs
+alternatif
+amet
+amphibius
+ampm
+and's
+anded
+andif
+annot
+annotationwithconstants
+annots
+anonyme
+anonymize
+anothermodule
+anotherwordenglish
+anotherwordgerman
+antilop
+anyall
+api's
+apng
+apos
+appers
+applix
+aptain
+archiver
+archivers
+arctor
+argaven
+arity's
+arrakis
+arrayx
+arrowrefresh
+arrowreturn
+arrowreturnthick
+arrowstop
+arrowthick
+arrowthickstop
+arrr
+ascript
+asdf
+asdrsad
+assertable
+assertsame
+asssert
+asterix
+asubject
+atomentry
+atomfeed
+atomrendererfeed
+atsign
+attibute
+attisdropped
+attname
+attnum
+attrdef
+attrelid
+attributename
+attrlist
+attrval
+attrvals
+atttypid
+atttypmod
+auditable
+autcomplete
+auth's
+authless
+authmap
+authz
+autocompletefocus
+autocompleteresponses
+autocompletesearch
+autocompleteselect
+autocompleting
+autocreate
+autocreated
+autocreation
+autodetect
+autodiscovered
+autoescape
+autoescaped
+autoescaping
+autofilling
+autofix
+autofloat
+autogenerate
+autogenerator
+autoincrement
+autoincrementing
+autoindex
+autoloadable
+autoloaded
+autoloader
+autoloaders
+autoloading
+autop
+autoplay
+autoreply
+autosave
+autosubmit
+autowire
+autowired
+autowiring
+availble
+backend's
+backlink
+backlinks
+backport
+backreferences
+backtraces
+bakeware
+bangpow
+barbar
+barbaz
+barchart
+barfoo
+barmm
+baro
+barqux
+bartik
+bartik's
+basefield
+basepath
+baseroot
+basestrings
+basetheme
+basicpage
+basicstyles
+bazbaz
+bazinga
+bazqux
+bazs
+beatle
+becalled
+beforeclose
+beforecreate
+beforeend
+behat
+bergmann
+berne
+bgblue
+bgcolor
+bgred
+bgsound
+biblio
+bigpipe
+bigserial
+bikeshed
+bikesheds
+bing
+bistromathic
+bitmask
+bkmgtpezy
+bkslshv
+blackhat
+blist
+blockarticles
+blockbasic
+blockcontent
+blocknodebundle
+blockpromoted
+blockquotes
+blockrecipe
+blocktest
+blogapi
+bloggy
+blorf
+blub
+bnode
+bodyformat
+bodyless
+bodyvalue
+boing
+bomofo
+bonacieux
+boskoop
+boskop
+bovigo
+breezer
+brion
+brotli
+browserkit
+browsertest
+browsertestbase
+brûlée
+bscript
+bubbleable
+bubleable
+buildable
+buildinfo
+buildtest
+bundable
+bundleable
+bundleless
+buttonpane
+buttonset
+buytaert
+bytouched
+bzzzzzzzt
+cachable
+cacheability
+cacheable
+cacheablemetadata
+cacheablity
+cachebackend
+cachebackends
+cachebin
+cacheble
+cacher
+cachetag
+cachetags
+cafr
+cagatio
+cait
+calendarsignup
+callable's
+callables
+callout
+camelcase
+camelid
+camelids
+camelize
+camelized
+canonicalized
+canonicalizing
+castable
+catalana
+catbro
+catchable
+ccyy
+ccyymm
+ccyymmdd
+cdns
+cette
+cfield
+chainable
+chainedfast
+changelist
+charcodes
+checkbox's
+checkboxified
+checkboxifier
+checkboxify
+checkboxradio
+checkmark
+chedked
+chien
+chiens
+childlist
+chnged
+chocolatiers
+chromedriver
+chroot'd
+chtext
+chumillas
+chvotes
+cidhash
+cids
+cillum
+cincopa
+circlesmall
+cjds
+ckeditor
+ckers
+claro's
+classloader
+classmap
+classmaps
+classname
+classtype
+classwithconstants
+classy's
+cldr
+clearfix
+clearfix's
+cleartype
+clicksort
+clicksorter
+clist
+closethick
+closur
+cnenzrgre
+cnfi
+cochez
+codefilter
+codesniffer
+colgroups
+collegehumor
+colletion
+colonpos
+colspans
+columnschange
+comida
+commandline
+commenter's
+commenters
+commmand
+commonmark
+commontest
+comparision
+compliane
+complote
+compositionend
+compositionstart
+config's
+configentity
+configtranslation
+configurability
+configurator
+confirm's
+conformant
+conkey
+conname
+conneg
+conrelid
+constucts
+contant
+contaynz
+contentblock
+contenteditable
+contententry
+contentrendererentry
+contextual's
+contextuals
+contrained
+contribs
+controlgroup
+contype
+coord
+copmplete
+corefake
+coretest
+corge
+cotrol
+countquery
+coversions
+cpan
+cpio
+createkey
+createrole
+createuser
+crema
+cript
+crudui
+crypted
+cscript
+csrf
+csrftoken
+cssidentifier
+csslint
+csslintrc
+ctags
+ctes
+ctools
+ctund
+cucurbitaceae
+curle
+curlopt
+currenttime
+currentuser
+customly
+customrequest
+cves
+cweagans
+data's
+databasefilename
+databasename
+datafld
+dataformatas
+datapoint
+dataprovider
+datas
+datasrc
+datatypes
+datefield
+dateformatter
+datelist
+dateonly
+datepicker
+daterange
+datestamp
+datetimecallback
+datetimeiso
+datetimeplus
+datetype
+davysgrey
+daycount
+daycounter
+dblog
+dbtng
+dburl
+dcom
+ddblock
+ddev
+deckard
+deconstructor
+dedupe
+deduplicated
+deduplicates
+deepzoom
+defalt
+defaultable
+defgroup
+defintion
+deletable
+deletedline
+deletee
+deleteing
+deleter
+delim
+delsp
+denormalizable
+denormalization
+denormalize
+denormalized
+denormalizer
+denormalizers
+denormalizes
+denormalizing
+denyall
+dependee
+dependee's
+dependees
+dependening
+depenencies
+deprioritize
+dequeues
+derivedfrom
+derp
+desaturate
+desaturated
+desaturates
+desaturating
+descripcion
+deserialization
+deserializes
+destid
+destinationproperty
+destion
+destructable
+destructured
+desynchronized
+deutsch
+deutscher
+devel
+deviantart
+dflt
+diactoros
+dialog's
+dialogcreate
+dialogsave
+diff'd
+diffchange
+differring
+discoverability
+displaymessage
+displayname
+distincted
+ditka
+divs
+dnumber
+docblock
+docroot
+docroots
+docx
+dolore
+dont
+doubleclick
+downcasting
+downlevel
+doxygen
+drag'n'drop
+draggable
+dragtable
+dramallama
+dramallamas
+drei
+drillable
+driveletter
+drivernumber
+drivertest
+drivertestmysql
+drivertestpgsql
+drivertext
+dropbutton
+dropbuttons
+droping
+dropzone
+drup
+drupalci
+drupaldatetime
+drupaldevdays
+drupalget
+drupalimage
+drupalimage's
+drupalimagecaption
+drupalin
+drupalism
+drupalisms
+drupallink
+drupalmedia
+drupalmedialibrary
+drupaltest
+drupalunlink
+druplicon
+drush
+drépal
+dublincoreentry
+dublincorefeed
+dublincorerendererentry
+dublincorerendererfeed
+dynsrc
+défaut
+détruire
+eacute
+easyrdf
+ecmascript
+editables
+editdrupalimage
+editorconfig
+editunblock
+eerste
+egroe
+egulias
+eins
+elbonia
+elementspath
+elems
+elit
+embed's
+emebd
+emogrifier
+emptry
+emptyparagraphkiller
+emtity
+emtpy
+encapsed
+encoding's
+endapply
+endautoescape
+endcode
+endembed
+endfor
+endlink
+endmacro
+endofheader
+endofscript
+endpo
+endset
+endtrans
+eniac
+enim
+enoki
+enregistrer
+entit
+entites
+entitiesto
+entitynodeedit
+entityreference
+entitytype
+entityviewedit
+entrypoint
+eridani
+errmode
+errored
+errrf
+escapeable
+eslintignore
+eslinting
+espagnol
+ession
+estraven
+etag
+etags
+etheopian
+eurozone
+evenodd
+eventhandler
+exampleurl
+exdep
+exeption
+existant
+exitcode
+expirable
+extlink
+extraday
+extrasmall
+extraspace
+exts
+fabpot
+faible
+failonerror
+fakepath
+falsey
+falsish
+fapi
+farb
+farbtastic
+fatals
+favicon
+favicons
+favourite
+favstar
+fcgi
+februar
+feededit
+fetchmode
+fffffg
+ffnli
+fichiers
+fieldable
+fieldapi
+fieldblock
+fieldbody
+fieldby
+fieldeset
+fieldgroups
+fielditem
+fieldlinks
+fieldnames
+fieldright
+fieldsets
+filecount
+filefield
+filefields
+filelist
+filemime
+filesort
+filespecs
+filestorage
+filesystems
+filetransfer
+filevalidationerror
+fillfactor
+filterprovider
+filtertypes
+findwith
+finegrained
+firstcolumn
+fixnull
+flexbox
+flexslider
+flic
+flickr
+floatingspace
+foaf
+foat
+focusable
+focusring
+fodg
+fodp
+fods
+fodt
+fontsizer
+fooalert
+foobarbaz
+foobargorilla
+foobars
+foobartik
+foobaz
+foofoo
+foomm
+foos
+fooÿñ
+forder
+foreaching
+forena
+forentity
+formated
+formating
+formatless
+formattable
+formatter's
+formvalidation
+fouc
+fourcol
+fourthcolumn
+fozzie
+fqcn
+fqdn
+francais
+français
+fraîche
+freenode
+frombracket
+frontcontroller
+frontpage
+fsdf
+ftest
+fubar
+fudgy
+fulldata
+fulldate
+fulltext
+fullwidth
+funciona
+functionaljavascripttest
+functionaltest
+funic
+furchtbar
+gabilondo
+gato
+gaurd
+gbmb
+get's
+getcode
+getfile
+gethttpclient
+geting
+getlist
+getmachine
+getview
+gids
+gifs
+giggabyte
+gitattributes
+gitignored
+gloop
+gnomovision
+gnumeric
+goldfinger
+gonner
+googleapis
+gotit
+gotwo
+goutte
+grandgrandchild
+grandgrandchild's
+granularities
+grayblue
+greeking
+greyskull
+gripsmall
+groupable
+groupby
+groupname
+groupnames
+groupwise
+guzzle's
+guzzlehttp
+gzipped
+hande
+hant
+hardcode
+hardcodes
+hardcoding
+harkonnen
+harnhammar
+hasdata
+hasher
+hashmarks
+hateoas
+hbox
+heartz
+heke
+hellip
+helpfiles
+heroless
+herpderp
+herro
+heure
+heures
+hidpi
+highwater
+hijklmn
+hilfetestmodul
+hilited
+hinode
+hippopotamidae
+hisu
+hisue
+hoglet
+hola
+hookname
+horizontalrule
+hosters
+hostnames
+hreflang
+hrefs
+htaccess
+htkey
+htmlcorrector
+htmlpurifier
+htmls
+htmltidy
+htmlto
+httpd
+httpheader
+httpkernel
+httponly
+httpoxy
+huhuu
+humfrey
+hurlant
+hustlin
+hwldf
+iacute
+iana
+icann
+ichars
+iconwrap
+idconflict
+idekey
+idempotency
+idempotently
+identation
+identifier's
+idmap
+ieid
+iframe's
+iframes
+iframeupload
+ignoretag
+iids
+ilike
+imageapi
+imagecache
+imagecreatefrom
+imagefield
+imagefields
+imagelink
+imagemagick
+imagetest
+inator
+indetation
+indexname
+indexrelid
+indisprimary
+indkey
+indrelid
+ingoa
+inited
+inno
+inorrect
+inpur
+inputtypes
+insidekeyword
+inspectable
+instace
+instaclick
+install's
+installable
+instantiator
+inteface
+intefacewithconstants
+interger
+internal's
+intlinks
+introspectable
+invalida
+invalidateby
+invalidators
+invalididentifier
+invokable
+iopt
+ip's
+isam
+isdst
+isid
+isinstallable
+isnew
+items's
+itoa
+itok
+itunesentry
+itunesfeed
+itunesrendererentry
+itunesrendererfeed
+ized
+j'aime
+jamo
+janeway
+januar
+januari
+janvier
+javascripts
+jcbfyr
+jessebeach
+jkro
+jnoub
+johansson
+johndoe
+johnsmith
+jours
+jqueryui
+json's
+jsonapi
+jsonlint
+jssdk
+jumplinks
+juni
+junidecode
+junit
+justifyblock
+justifycenter
+justifyleft
+justifyright
+justinrainbow
+kakec
+kangarookitten
+kerneltest
+kernighan
+keyname
+keypresses
+keyvalue
+killswitch
+kinberg
+kitt
+kolkata
+kontex
+kpresenter
+kristiaan
+kses
+kspread
+kthxbai
+kword
+laatste
+labely
+lamoids
+langcode
+langcodes
+langname
+languageswitcher
+larowlan
+lastsplit
+latn
+layouted
+lazybuilder
+lazyload
+lazyloader
+lcode
+ldquo
+leftjoin
+libc
+libellé
+libicu
+libmysqlclient
+librariesby
+libyaml
+licious
+lified
+lightbulb
+lightninggreen
+linebreak
+linebreaks
+linecap
+linefeeds
+linkability
+linkback
+linkgenerator
+linkification
+linksby
+linktitle
+lisu
+litererally
+livescript
+llamaids
+llamasarelame
+llame
+llamma
+lnumber
+localemark
+localetranslatedirty
+localizable
+localpath
+lolspeak
+longblob
+longerthan
+longtext
+loquesea
+loreming
+loremipsumloremipsum
+lowercased
+lowlevel
+lowline
+lrdd
+lspeak
+lsquo
+lstitle
+ltitle
+ltlanguage
+lugin
+lundi
+lzop
+maailma
+macbinary
+machinename
+madeup
+magrathea
+mainpage
+makealternatemessage
+makedefaultmessage
+makewarningmessage
+mame
+mank
+mapkey
+mapwith
+mariadb
+maryjane
+marz
+marzo
+matchout
+mathematica
+mattfarina
+maxage
+maxdepth
+maximumred
+maxlifetime
+maxsize
+may've
+maynot
+mbytes
+mdash
+mdhash
+mediumint
+mediumtext
+membersonly
+menulist
+merhaba
+messagekey
+metacharacters
+metainformation
+metapackage
+metapackages
+metatag
+metatags
+methodname
+meφω
+miaus
+middlewares
+midgardmvc
+mikey
+milli
+mimeheaders
+mimetypes
+mimick
+minifiers
+minifyzombies
+minimise
+minipager
+minky
+minusthick
+mirakolous
+misrendered
+missingkey
+missingkeys
+miterlimit
+mjuc
+mlfr
+mlid
+mlids
+moby
+mocktail
+mocktails
+mocky
+moderatable
+modernizr
+modernizr's
+modulename
+modulenarrow
+modules's
+mojito
+montag
+monthnames
+moono
+mooooh
+mosie
+mostrar
+moutons
+moyenne
+mple
+msgbox
+msgctxt
+msgid
+msgstr
+msword
+mtas
+mtimes
+mucho
+mulrev
+mulrevpub
+multibuys
+multibyte
+multicardinality
+multicolumn
+multifield
+multigroup
+multilanguage
+multilink
+multipage
+multipass
+multipleforms
+multirow
+multisite
+multistar
+multistep
+multivalue
+multivalued
+multiwidgetfield
+munge
+muuh
+muun
+muuuh
+myclabs
+myclass
+mydistro
+mydriver
+myeditor
+myeditoroverride
+myfragment
+myfrontpage
+myfunctions
+mymenu
+mymodule
+mynewpassword
+myothermenu
+mypath
+myprimarykey
+myprofile
+myproject
+myrootuser
+myroute
+myselect
+myservice
+mysetting
+mysite
+mysqladmin
+mysqldump
+mystring
+mytab
+mytable
+mytheme
+mytube
+mytype
+myvalue
+myvar
+myverylongurl
+myverylongurlexample
+műveletek
+nalias
+nameofbin
+namespacing
+narf
+nbaz
+nbchoices
+nblocks
+ncck
+ncontent
+ncript
+ndash
+ndelay
+ndocs
+nearbykeyword
+necolas
+negotiatiors
+nemo
+networkerror
+newcol
+newdata
+newfieldinitial
+newname
+newnode
+newstr
+newterm
+nextval
+nfocus
+nids
+nightlies
+nightwatch
+nightwatchjs
+nmedi
+nmenu
+nmouseover
+nmsgid
+nmsgstr
+nntp
+noaccess
+noadd
+nocache
+nocase
+nocdata
+nocookie
+nocssjs
+nodeaccess
+nodeapi
+nodelink
+nodereference
+nodo
+noemptytag
+noevent
+nofields
+nofollow
+noindex
+nojs
+nolink
+nomask
+nonamespace
+nonconfigurable
+nonexistingfilename
+nonoptional
+nonspacing
+nonwordgerman
+nonworditem
+noquotes
+normalizer's
+noschema
+noslash
+nosniff
+nostart
+nosuchcolumn
+nosuchindex
+nosuchscheme
+nosuchtable
+nosuchtag
+notag
+notawordenglish
+notawordgerman
+notexisting
+nothere
+notnull
+notsimpletest
+nourriture
+noxss
+nplurals
+npoll
+nprofile
+nresponse
+nspname
+nstrings
+nsync
+ntaxonomy
+ntfs
+nturn
+nullaction
+nyan
+nyancat
+nyans
+nzdt
+nœud
+objectid
+objectindex
+oembed
+officedocument
+oldsilver
+omitscript
+omittable
+ondemand
+onecol
+oneplusfourgrid
+onetwo
+onewidgetfield
+onmediaerror
+onoff
+opendocument
+opengraph
+openid
+openlayers
+openxmlformats
+oplopend
+opmls
+optgroups
+optimizable
+optin
+optionchecker
+optionwidgets
+or'd
+or's
+ored
+org's
+orgchart
+origdir
+oring
+ossp
+otherfield
+otherjob
+othername
+otherpage
+otherprofile
+otsikko
+ouptut
+outdata
+outdent
+outdir
+outro
+overidden
+overridable
+overriden
+overrider
+overrider's
+overriders
+overridetest
+overwritable
+pageable
+pagecache
+pagetop
+pageviews
+pagina
+pagnel
+pangram
+paramaters
+paramconverter
+parens
+parentc
+parentlist
+parseable
+parsererror
+pastafazoul
+pastefromword
+pastetext
+pathauto
+pathnames
+pcre
+pcss
+pdo's
+pecl
+peole
+percona
+perfoming
+performant
+perma
+permissionless
+persion
+persistable
+pharextract
+phars
+phpass
+phpcs
+phpdoc
+phpdocumentor
+phpfile
+phplint
+phps
+phpserialize
+phpspec
+phpunit
+phpunit's
+pianura
+pickable
+picturefill
+pingback
+pioggia
+pjpeg
+placeholdered
+placeholdering
+playsholdr
+plid
+pluggable
+plugins's
+pluralforms
+plusthick
+podcastentry
+podcastfeed
+poink
+pommes
+ponedjeljak
+popperedge
+popperjs
+porterstemmer
+português
+postbar
+postcondition
+postfields
+postfoo
+postge
+postgres
+postgresql
+postorder
+postprocess
+postupdate
+potx
+poweredby
+powerpoint
+powriter
+pptx
+prebar
+precache
+precompiled
+preconfigure
+preconfigured
+preconnect
+precreated
+predelete
+prefech
+prefetches
+preffix
+prefill
+prefilled
+prefilling
+prefills
+prefixsqlite
+prefoo
+preinstall
+preload
+preloadable
+preloads
+preorder
+prepended
+prepending
+prepopulate
+prepopulated
+prepopulates
+prepopulating
+prepopulation
+preprocess
+preprocesses
+preprocessors
+prerender
+prerendered
+presave
+presentationml
+presetid
+presetname
+pression
+pretransaction
+preuninstall
+processlist
+projecta
+projectb
+proname
+propegated
+propertyname
+prophesize
+prophesized
+prophesizing
+protcol
+protossl
+proxied
+proxying
+pseudocode
+pseudotag
+ptablenode
+pterm
+pulks
+punit
+puzzlepiece
+pvde
+pwprompt
+qcait
+queryor
+querystring
+querystrings
+questionmark
+quickedit
+quickediting
+quickeditor
+quicklinks
+quickstart
+quicktime
+quinlan
+quux
+quxqux
+qvalue
+qvalues
+qwer
+qwerqwer
+ragdoll
+ralouphie
+rasterizable
+rasterize
+rasterized
+rasterizes
+rawurlencoded
+rawurlencoding
+rbaz
+rdfa
+rdfs
+rdftype
+rdquo
+readmore
+readonlydir
+readwrite
+readystate
+realelement
+realpaths
+realword
+rebuilder
+receieved
+reclosed
+recolorable
+redirections
+redstrawberryhiddenfield
+refactorings
+refback
+referenceable
+referenceables
+referencer
+referencers
+referer
+refinable
+regclass
+regexes
+rehydrated
+reimplement
+reimplementing
+reindex
+reindexing
+reinitializes
+reinject
+reinstantiated
+reiss
+relkind
+relname
+relnamespace
+removeformat
+renderable
+renderables
+renderd
+renderer's
+renderered
+renormalize
+reparenting
+reparsed
+replyto
+require'd
+rerender
+rerendered
+rerendering
+resampling
+resave
+resaved
+resaving
+rescan
+resizer
+resonse
+restirct
+restplugin
+restrictor
+restripe
+restriped
+restui
+rethrown
+retrigger
+returntransfer
+reuploading
+revisionability
+revisionable
+revisioned
+revisionid
+revisioning
+revist
+revlog
+revpub
+ribisi
+ript
+ritchie
+robloach
+robo
+rolename
+roly
+roota
+rootb
+routable
+routeable
+routename
+rowspans
+rowtest
+rpos
+rrggbb
+rsyslog
+rtsp
+ruleset
+rulesets
+rupal
+rxpq
+répét
+répété
+safa
+safed
+sameline
+samename
+sameorigin
+sanitizable
+sapere
+sata
+savepath
+savepoints
+sayre
+scaffol
+scarlett
+schemaapi
+schemaless
+schemaname
+schemeless
+schipul
+schipulcon
+scorewords
+screenreader
+screenreaders
+scri
+scriptable
+scriptlet
+scrollable
+scrollbars
+scrscriptipt
+sdeeeee
+searchdirs
+searchfield
+searchpages
+sebe
+secondcolumn
+seld
+selectbox
+selectlist
+semver
+sendmail
+seralization
+seriailize
+serializer's
+serialzer
+serviceform
+sesison
+sess
+sessionpath
+settingstray
+setttings
+setval
+sevice
+sharedspace
+shatner
+shortcode
+shorterthan
+shortlink
+shortname
+shortnames
+showblocks
+shrinked
+sidebarborders
+siema
+silverlight
+silvie
+simpletest
+simpletest's
+simpletests
+singlebyte
+sioc
+sioct
+sisko
+sitename
+sitewide
+sivun
+skiptags
+skos
+skynet
+skłodowska
+slackjaw
+slashentry
+slashrendererentry
+slatkin
+sloopal
+smacss
+smalldatetime
+smallint
+smtp
+someclass
+somecompany
+somefieldname
+somefile
+somelinks
+somemodule
+someplugin
+someschema
+sometext
+somethinggeneric
+soofy
+sortby
+sorteren
+sourcearea
+sourcearea's
+sourcedialog
+sourcedialog's
+sourcedir
+sourceid
+spacebar
+spagna
+spamspan
+spdx
+specialchar
+specialchars
+spiffiness
+splitbuttons
+spreadsheetml
+sqlpassword
+sqlusername
+sqruct
+squaresmall
+squiz
+squizlabs
+srcset
+ssess
+ssid
+stardivision
+starrrrr
+startpunt
+starzzzz
+statuscode
+stdclass
+stdlib
+stitle
+streamwrapper
+streamwrappers
+strikethrough
+stringable
+stringis
+striptags
+strs
+sttid
+stuffit
+styleguide
+styleing
+stylelint
+stylescombo
+subarrays
+subchild
+subclassing
+subcompile
+subcondition
+subcontainer
+subdir
+subelements
+subfolder
+subform
+subform's
+subforms
+subjectkeyword
+subkey
+subkeys
+submenu
+submited
+subpackage
+subparse
+subpath
+subpatterns
+subplugins
+subproject
+subprojects
+subproperties
+subqueries
+subquery
+subrequest
+subrequest's
+subrequests
+subresults
+subselect
+subsequentially
+subseven
+subshell
+substrategies
+subsub
+subsubtheme
+subtheme
+subtheme's
+subthemes
+subtoken
+subvalue
+subvalues
+subview
+suggestionnotimplemented
+suis
+sulaco
+sunz
+sunzzzzzzz
+supercede
+suppresion
+supresses
+sut's
+svenska
+svgs
+svgz
+svibanj
+swcf
+symfony's
+symlinking
+symlinks
+synchronizable
+syrop
+sytem
+tabarnak
+tabbable
+tabbingmanager
+tabindex
+tabledrag
+tableheader
+tableinfo
+tableresponsive
+tableselect
+tablesort
+tablesort's
+tablesorts
+tabset
+tabwidth
+tagstack
+tagwords
+takeshita
+tappable
+targetdir
+tarz
+tascript
+taskless
+tatou
+tbodies
+tcomment
+tdlanguage
+teletubbies
+tempfile
+templating
+tempstore
+tempuser
+tendenci
+tercera
+terok
+testajax
+testattribute
+testblock
+testbody
+testbot
+testbots
+testcase
+testcases
+testcontent
+testcontextual
+testdescription
+testdialog
+testdisplay
+testen
+testfetch
+testfield
+testfilename
+testfilter
+testformat
+testfunc
+testfunction
+testget
+testgroups
+testid
+testitem
+testkey
+testlist
+testload
+testname
+testnoschema
+testproject
+testproperty
+testservice
+teststring
+testsuite
+testsuites
+testvalue
+testwithleadingslash
+testwithnewline
+testwithslashes
+testwithtrailingslash
+texample
+textareas
+textboxes
+texte
+textfield
+textfield's
+textfields
+textfile
+textformat
+textgroup
+textwithsummary
+thaana
+themable
+themeable
+themename
+themer
+themers
+themey
+theming
+theseer
+theseparator
+thingie
+thirdcolumn
+thisval
+threadentry
+threadingrendererentry
+threecol
+throttleable
+tids
+timecurrent
+timeframe
+timegate
+timemap
+timepicker
+timespan
+timetime
+tinyint
+tinytext
+tiplist
+titel
+titlealert
+titlebar
+titleslogan
+tlds
+tmpdir
+tmpfs
+tnid
+todos
+toepassen
+toggleable
+togglewrap
+tongatapu
+toolgroup
+toolgroups
+toolkits
+toplevel
+topop
+torder
+totalcount
+totoro
+totranslate
+touchevent
+touchevents
+tparams
+trackback
+trailingslash
+traint
+tranformed
+transferthick
+transitionend
+translatables
+translateable
+transpiled
+traslation
+trayblock
+trex
+trgm
+trid
+troopal
+truecolor
+tsid
+tspan
+turbolinks
+twistie
+twoa
+twob
+twocol
+txtzzzz
+typehint
+typehinted
+typehinting
+typehints
+typemanager
+typogrify
+typr
+tzid
+uberawesome
+ubmit
+ui's
+uicrud
+uids
+ulwa
+umami
+unajaxify
+unaliased
+unallowed
+unassigning
+unassigns
+unban
+unbans
+unbold
+unbundleable
+unbustable
+uncacheable
+uncategorized
+uncheck
+unchecking
+unclickable
+uncollapsible
+unconfigured
+undecorate
+undelayed
+undelegate
+undraggable
+uneccesarilly
+unextracted
+unfieldable
+unflagged
+ungenerated
+ungroup
+ungroupable
+ungrouped
+unhashed
+unhide
+unicoded
+unidecode
+unidecoder
+unindented
+unindexed
+uninstal
+uninstallation
+uninstallations
+uninstantiatable
+uninstantiated
+unioned
+unitalicize
+unixepoch
+unixtimestamp
+unkeyed
+unknow
+unmanaged
+unmatch
+unmigrated
+unminified
+unmoderated
+unmunge
+unmunged
+unmunging
+unoptimized
+unpad
+unparsable
+unparseable
+unpermissioned
+unprefix
+unprefixed
+unpreloaded
+unprocessable
+unpromote
+unpromoted
+unpublish
+unpublishes
+unpublishing
+unregisters
+unrendered
+unrevisionable
+unrouted
+unsanitized
+unserialization
+unserialized
+unserializes
+unserializing
+unsets
+unsetting
+unshortened
+unsimplified
+unsticky
+unstripped
+unsynchronized
+untabbable
+untarring
+untruncated
+untrustable
+untrusted
+unvalidated
+unversioned
+unwrapper
+upcasted
+upcasting
+updateing
+updateprogress
+updatetype
+upload's
+uploader
+uploaders
+uploadprogress
+uploadsize
+uppercased
+upscaling
+upsert
+upserting
+upto
+urandom
+uri's
+url's
+urlalias
+urldecoding
+urlto
+useage
+usecase
+userid
+userinfo
+userref
+userreference
+users's
+userspace
+usuario
+utton
+uuid's
+uuids
+validatable
+valign
+vals
+vampirize
+vancode
+varchar
+vbscript
+veeeery
+vendored
+veniam
+verison
+versionable
+versionless
+veryfast
+verygreatdrupalmodule
+vfsstream
+vibber
+vids
+viewmode
+viewport's
+viewports
+viewsviewfiles
+vivamus
+vmov
+vocabfixed
+vocablocalized
+vocabs
+vocabtranslate
+volgende
+vorige
+vous
+vxezb
+vxfbk
+waitfor
+wambooli
+wamboolipastafazoul
+wcprops
+wcsrefsdf
+webassert
+webcal
+webconfig
+webdriver
+webflo
+webfonts
+webheads
+webhosting
+webm
+webmention
+webmozart
+webroot
+webserver
+webservers
+webtest
+webuser
+wellformedwebentry
+wellformedwebrendererentry
+whakamataku
+whitespaces
+whois
+whos
+widget's
+widt
+widthx
+wiget
+wimoids
+windir
+winnt
+withut
+wmlscript
+woff
+wonkiness
+wontmatter
+wordfilter
+wordprocessingml
+wordsafe
+wordword
+worklow
+workspace's
+workspaceswitcher
+wqkcy
+writability
+writeln
+wrongparam
+wsod
+wwwrun
+wxuczpzdmc
+wysiwygs
+xampl
+xbap
+xbbcode
+xbeg
+xbitmap
+xcache
+xfbml
+xhr's
+xjkm
+xlen
+xlgp
+xlink
+xlsx
+xmlhttp
+xmlhttprequest
+xmlurl
+xoxo
+xpsdocument
+xsiemax
+xsses
+xtmpl
+xvnsm
+xxgroup
+xyabz
+yamls
+yarhar
+yarr
+ybeg
+yearless
+ylen
+yml's
+yokotsoko
+yottabytes
+yourbackend
+yourmodule
+youtube
+yowser
+yoyodyne
+yygroup
+yyyymm
+zartan
+zendframework
+zipf's
+znor
+zomg
+zoneinfo
+zonelist
+zoomin
+zoomout
+zwei
+zxvf
+zzgroup
+übersetzung
diff --git a/core/modules/dblog/tests/src/Functional/DbLogTest.php b/core/modules/dblog/tests/src/Functional/DbLogTest.php
index 5391280b74f2..7ce90acf3e5b 100644
--- a/core/modules/dblog/tests/src/Functional/DbLogTest.php
+++ b/core/modules/dblog/tests/src/Functional/DbLogTest.php
@@ -819,6 +819,7 @@ public function testTemporaryUser() {
    */
   public function testOverviewLinks() {
     $this->drupalLogin($this->adminUser);
+    // cSpell:disable-next-line
     $this->generateLogEntries(1, ['message' => "&lt;script&gt;alert('foo');&lt;/script&gt;<strong>Lorem</strong> ipsum dolor sit amet, consectetur adipiscing & elit."]);
     $this->drupalGet('admin/reports/dblog');
     $this->assertSession()->statusCodeEquals(200);
diff --git a/core/modules/file/tests/src/Functional/DownloadTest.php b/core/modules/file/tests/src/Functional/DownloadTest.php
index 35d2589323ca..2ed06384df7e 100644
--- a/core/modules/file/tests/src/Functional/DownloadTest.php
+++ b/core/modules/file/tests/src/Functional/DownloadTest.php
@@ -115,6 +115,7 @@ public function testFileCreateUrl() {
       // Characters that look like a percent-escaped string.
       "%23%25%26%2B%2F%3F" .
       // Characters from various non-ASCII alphabets.
+      // cSpell:disable-next-line
       "éøïвβ中國書۞";
     $basename_encoded = '%20-._~%21%24%27%22%28%29%2A%40%5B%5D%3F%26%2B%25%23%2C%3B%3D%3A__' .
       '%2523%2525%2526%252B%252F%253F' .
diff --git a/core/modules/file/tests/src/Functional/FileManagedTestBase.php b/core/modules/file/tests/src/Functional/FileManagedTestBase.php
index f18972aef785..8f7964e1fee9 100644
--- a/core/modules/file/tests/src/Functional/FileManagedTestBase.php
+++ b/core/modules/file/tests/src/Functional/FileManagedTestBase.php
@@ -183,6 +183,7 @@ public function createUri($filepath = NULL, $contents = NULL, $scheme = NULL) {
     if (!isset($filepath)) {
       // Prefix with non-latin characters to ensure that all file-related
       // tests work with international filenames.
+      // cSpell:disable-next-line
       $filepath = 'Файл для тестирования ' . $this->randomMachineName();
     }
     if (!isset($scheme)) {
diff --git a/core/modules/file/tests/src/Functional/FileTokenReplaceTest.php b/core/modules/file/tests/src/Functional/FileTokenReplaceTest.php
index 5ff9d3d6f91b..650210dd972d 100644
--- a/core/modules/file/tests/src/Functional/FileTokenReplaceTest.php
+++ b/core/modules/file/tests/src/Functional/FileTokenReplaceTest.php
@@ -37,6 +37,7 @@ public function testFileTokenReplacement() {
 
     $test_file = $this->getTestFile('text');
     // Coping a file to test uploads with non-latin filenames.
+    // cSpell:disable-next-line
     $filename = \Drupal::service('file_system')->dirname($test_file->getFileUri()) . '/текстовый файл.txt';
     $test_file = file_copy($test_file, $filename);
 
diff --git a/core/modules/file/tests/src/Kernel/FileManagedUnitTestBase.php b/core/modules/file/tests/src/Kernel/FileManagedUnitTestBase.php
index ae6121421adf..277cc282dab1 100644
--- a/core/modules/file/tests/src/Kernel/FileManagedUnitTestBase.php
+++ b/core/modules/file/tests/src/Kernel/FileManagedUnitTestBase.php
@@ -196,6 +196,7 @@ public function createUri($filepath = NULL, $contents = NULL, $scheme = NULL) {
     if (!isset($filepath)) {
       // Prefix with non-latin characters to ensure that all file-related
       // tests work with international filenames.
+      // cSpell:disable-next-line
       $filepath = 'Файл для тестирования ' . $this->randomMachineName();
     }
     if (!isset($scheme)) {
diff --git a/core/modules/file/tests/src/Kernel/SaveDataTest.php b/core/modules/file/tests/src/Kernel/SaveDataTest.php
index 38a53c601ec1..c3a7a1ed01a8 100644
--- a/core/modules/file/tests/src/Kernel/SaveDataTest.php
+++ b/core/modules/file/tests/src/Kernel/SaveDataTest.php
@@ -44,6 +44,7 @@ public function testWithFilename() {
     $contents = $this->randomMachineName(8);
 
     // Using filename with non-latin characters.
+    // cSpell:disable-next-line
     $filename = 'Текстовый файл.txt';
 
     $result = file_save_data($contents, 'public://' . $filename);
diff --git a/core/modules/filter/tests/src/Kernel/FilterKernelTest.php b/core/modules/filter/tests/src/Kernel/FilterKernelTest.php
index 834518b37de2..530ab2be1c45 100644
--- a/core/modules/filter/tests/src/Kernel/FilterKernelTest.php
+++ b/core/modules/filter/tests/src/Kernel/FilterKernelTest.php
@@ -323,6 +323,7 @@ public function testLineBreakFilter() {
     // Since the line break filter naturally needs plenty of newlines in test
     // strings and expectations, we're using "\n" instead of regular newlines
     // here.
+    // cSpell:disable
     $tests = [
       // Single line breaks should be changed to <br /> tags, while paragraphs
       // separated with double line breaks should be enclosed with <p></p> tags.
@@ -381,6 +382,7 @@ public function testLineBreakFilter() {
         '<p><drupal-media data-caption=" " data-entity-type="media" data-entity-uuid="dbb16f97-cd11-4357-acde-cd09e19e312b"></drupal-media></p>' => FALSE,
       ],
     ];
+    // cSpell:enable
     $this->assertFilteredString($filter, $tests);
 
     // Very long string hitting PCRE limits.
@@ -1023,8 +1025,10 @@ public function testHtmlCorrectorFilter() {
     $f = Html::normalize('<p>test\n</p>\n');
     $this->assertEqual($f, '<p>test\n</p>\n', 'HTML corrector -- New-lines are accepted and kept as-is.');
 
+    // cSpell:disable
     $f = Html::normalize('<p>دروبال');
     $this->assertEqual($f, '<p>دروبال</p>', 'HTML corrector -- Encoding is correctly kept.');
+    // cSpell:enable
 
     $f = Html::normalize('<script>alert("test")</script>');
     $this->assertEqual($f, '<script>
diff --git a/core/modules/link/src/Plugin/migrate/process/FieldLink.php b/core/modules/link/src/Plugin/migrate/process/FieldLink.php
index 143b7ea09be8..9a053f75e260 100644
--- a/core/modules/link/src/Plugin/migrate/process/FieldLink.php
+++ b/core/modules/link/src/Plugin/migrate/process/FieldLink.php
@@ -74,6 +74,7 @@ protected function canonicalizeUri($uri) {
       // and &#x00FF; (except × &#x00D7; and ÷ &#x00F7;) with the addition of
       // &#x0152;, &#x0153; and &#x0178;.
       // @see https://git.drupalcode.org/project/link/blob/7.x-1.5-beta2/link.module#L1382
+      // cSpell:disable-next-line
       $link_ichars = '¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿŒœŸ';
 
       // Pattern specific to internal links.
diff --git a/core/modules/link/tests/src/Unit/Plugin/Validation/Constraint/LinkExternalProtocolsConstraintValidatorTest.php b/core/modules/link/tests/src/Unit/Plugin/Validation/Constraint/LinkExternalProtocolsConstraintValidatorTest.php
index 805690b8b8d1..4db771cc517d 100644
--- a/core/modules/link/tests/src/Unit/Plugin/Validation/Constraint/LinkExternalProtocolsConstraintValidatorTest.php
+++ b/core/modules/link/tests/src/Unit/Plugin/Validation/Constraint/LinkExternalProtocolsConstraintValidatorTest.php
@@ -50,6 +50,7 @@ public function providerValidate() {
     // Test allowed protocols.
     $data[] = ['http://www.drupal.org', TRUE];
     $data[] = ['https://www.drupal.org', TRUE];
+    // cSpell:disable-next-line
     $data[] = ['magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C', TRUE];
 
     // Invalid protocols.
diff --git a/core/modules/locale/tests/src/Functional/LocaleConfigTranslationImportTest.php b/core/modules/locale/tests/src/Functional/LocaleConfigTranslationImportTest.php
index 3197ff9ad65a..3162f7db1c88 100644
--- a/core/modules/locale/tests/src/Functional/LocaleConfigTranslationImportTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleConfigTranslationImportTest.php
@@ -74,6 +74,7 @@ public function testConfigTranslationImport() {
 
     // Check if configuration translations have been imported.
     $override = \Drupal::languageManager()->getLanguageConfigOverride('af', 'system.maintenance');
+    // cSpell:disable-next-line
     $this->assertEqual($override->get('message'), 'Ons is tans besig met onderhoud op @site. Wees asseblief geduldig, ons sal binnekort weer terug wees.');
   }
 
diff --git a/core/modules/locale/tests/src/Functional/LocaleImportFunctionalTest.php b/core/modules/locale/tests/src/Functional/LocaleImportFunctionalTest.php
index 5ed2632e3e3f..28ef8bc5bf19 100644
--- a/core/modules/locale/tests/src/Functional/LocaleImportFunctionalTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleImportFunctionalTest.php
@@ -291,11 +291,13 @@ public function testConfigPoFile() {
     $config_strings = [
       'system.maintenance' => [
         '@site is currently under maintenance. We should be back shortly. Thank you for your patience.',
+        // cSpell:disable-next-line
         '@site karbantartás alatt áll. Rövidesen visszatérünk. Köszönjük a türelmet.',
         'message',
       ],
       'user.role.anonymous' => [
         'Anonymous user',
+        // cSpell:disable-next-line
         'Névtelen felhasználó',
         'label',
       ],
diff --git a/core/modules/locale/tests/src/Functional/LocaleNonInteractiveInstallTest.php b/core/modules/locale/tests/src/Functional/LocaleNonInteractiveInstallTest.php
index ea3c1b5aba1f..bb9512874ada 100644
--- a/core/modules/locale/tests/src/Functional/LocaleNonInteractiveInstallTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleNonInteractiveInstallTest.php
@@ -56,6 +56,7 @@ protected function installParameters() {
    */
   public function testInstallerTranslations() {
     $this->drupalGet('user/login');
+    // cSpell:disable-next-line
     $this->assertSession()->responseContains('Geben sie das Passwort für ihren Benutzernamen ein.');
   }
 
diff --git a/core/modules/locale/tests/src/Functional/LocaleUpdateTest.php b/core/modules/locale/tests/src/Functional/LocaleUpdateTest.php
index 7c470056a5d0..3ca3c164beae 100644
--- a/core/modules/locale/tests/src/Functional/LocaleUpdateTest.php
+++ b/core/modules/locale/tests/src/Functional/LocaleUpdateTest.php
@@ -150,6 +150,7 @@ public function testUpdateImportSourceRemote() {
     $this->assertEqual($history['contrib_module_three']['de']->last_checked, $this->timestampMedium, 'Translation of contrib_module_three is not updated');
 
     // Check whether existing translations have (not) been overwritten.
+    // cSpell:disable
     $this->assertEqual(t('January', [], ['langcode' => 'de']), 'Januar_1', 'Translation of January');
     $this->assertEqual(t('February', [], ['langcode' => 'de']), 'Februar_2', 'Translation of February');
     $this->assertEqual(t('March', [], ['langcode' => 'de']), 'Marz_2', 'Translation of March');
@@ -157,6 +158,7 @@ public function testUpdateImportSourceRemote() {
     $this->assertEqual(t('May', [], ['langcode' => 'de']), 'Mai_customized', 'Translation of May');
     $this->assertEqual(t('June', [], ['langcode' => 'de']), 'Juni', 'Translation of June');
     $this->assertEqual(t('Monday', [], ['langcode' => 'de']), 'Montag', 'Translation of Monday');
+    // cSpell:enable
   }
 
   /**
@@ -204,6 +206,7 @@ public function testUpdateImportSourceLocal() {
     $this->assertEqual($history['contrib_module_three']['de']->last_checked, $this->timestampMedium, 'Translation of contrib_module_three is not updated');
 
     // Check whether existing translations have (not) been overwritten.
+    // cSpell:disable
     $this->assertEqual(t('January', [], ['langcode' => 'de']), 'Januar_customized', 'Translation of January');
     $this->assertEqual(t('February', [], ['langcode' => 'de']), 'Februar_2', 'Translation of February');
     $this->assertEqual(t('March', [], ['langcode' => 'de']), 'Marz_2', 'Translation of March');
@@ -211,6 +214,7 @@ public function testUpdateImportSourceLocal() {
     $this->assertEqual(t('May', [], ['langcode' => 'de']), 'Mai_customized', 'Translation of May');
     $this->assertEqual(t('June', [], ['langcode' => 'de']), 'Juni', 'Translation of June');
     $this->assertEqual(t('Monday', [], ['langcode' => 'de']), 'Montag', 'Translation of Monday');
+    // cSpell:enable
   }
 
   /**
@@ -240,6 +244,7 @@ public function testUpdateImportModeNonCustomized() {
     $this->drupalPostForm('admin/reports/translations', [], t('Update translations'));
 
     // Check whether existing translations have (not) been overwritten.
+    // cSpell:disable
     $this->assertEqual(t('January', [], ['langcode' => 'de']), 'Januar_customized', 'Translation of January');
     $this->assertEqual(t('February', [], ['langcode' => 'de']), 'Februar_customized', 'Translation of February');
     $this->assertEqual(t('March', [], ['langcode' => 'de']), 'Marz_2', 'Translation of March');
@@ -247,6 +252,7 @@ public function testUpdateImportModeNonCustomized() {
     $this->assertEqual(t('May', [], ['langcode' => 'de']), 'Mai_customized', 'Translation of May');
     $this->assertEqual(t('June', [], ['langcode' => 'de']), 'Juni', 'Translation of June');
     $this->assertEqual(t('Monday', [], ['langcode' => 'de']), 'Montag', 'Translation of Monday');
+    // cSpell:enable
   }
 
   /**
@@ -276,6 +282,7 @@ public function testUpdateImportModeNone() {
     $this->drupalPostForm('admin/reports/translations', [], t('Update translations'));
 
     // Check whether existing translations have (not) been overwritten.
+    // cSpell:disable
     $this->assertTranslation('January', 'Januar_customized', 'de');
     $this->assertTranslation('February', 'Februar_customized', 'de');
     $this->assertTranslation('March', 'Marz', 'de');
@@ -283,6 +290,7 @@ public function testUpdateImportModeNone() {
     $this->assertTranslation('May', 'Mai_customized', 'de');
     $this->assertTranslation('June', 'Juni', 'de');
     $this->assertTranslation('Monday', 'Montag', 'de');
+    // cSpell:enable
   }
 
   /**
@@ -304,6 +312,7 @@ public function testEnableUninstallModule() {
     // Check if translations have been imported.
     $this->assertRaw(t('One translation file imported. %number translations were added, %update translations were updated and %delete translations were removed.',
       ['%number' => 7, '%update' => 0, '%delete' => 0]), 'One translation file imported.');
+    // cSpell:disable-next-line
     $this->assertTranslation('Tuesday', 'Dienstag', 'de');
 
     $edit = [
@@ -338,6 +347,7 @@ public function testEnableLanguage() {
 
     // Check if there is no Dutch translation yet.
     $this->assertTranslation('Extraday', '', 'nl');
+    // cSpell:disable-next-line
     $this->assertTranslation('Tuesday', 'Dienstag', 'de');
 
     // Add a language.
@@ -349,6 +359,7 @@ public function testEnableLanguage() {
     // Check if the right number of translations are added.
     $this->assertRaw(t('One translation file imported. %number translations were added, %update translations were updated and %delete translations were removed.',
       ['%number' => 8, '%update' => 0, '%delete' => 0]), 'One language added.');
+    // cSpell:disable-next-line
     $this->assertTranslation('Extraday', 'extra dag', 'nl');
 
     // Check if the language data is added to the database.
@@ -365,6 +376,7 @@ public function testEnableLanguage() {
 
     // Check that the Dutch translation is gone.
     $this->assertTranslation('Extraday', '', 'nl');
+    // cSpell:disable-next-line
     $this->assertTranslation('Tuesday', 'Dienstag', 'de');
   }
 
diff --git a/core/modules/locale/tests/src/Unit/LocaleLookupTest.php b/core/modules/locale/tests/src/Unit/LocaleLookupTest.php
index be265812d97f..c515f802f109 100644
--- a/core/modules/locale/tests/src/Unit/LocaleLookupTest.php
+++ b/core/modules/locale/tests/src/Unit/LocaleLookupTest.php
@@ -134,6 +134,7 @@ public function testResolveCacheMissWithoutFallback() {
    */
   public function testResolveCacheMissWithFallback($langcode, $string, $context, $expected) {
     // These are fake words!
+    // cSpell:disable
     $translations = [
       'en' => [
         'test' => 'test',
@@ -153,6 +154,7 @@ public function testResolveCacheMissWithFallback($langcode, $string, $context, $
         'missing pl' => 'chybějící pl',
       ],
     ];
+    // cSpell:enable
     $this->storage->expects($this->any())
       ->method('findTranslation')
       ->will($this->returnCallback(function ($argument) use ($translations) {
@@ -189,6 +191,7 @@ public function testResolveCacheMissWithFallback($langcode, $string, $context, $
    * Provides test data for testResolveCacheMissWithFallback().
    */
   public function resolveCacheMissWithFallbackProvider() {
+    // cSpell:disable
     return [
       ['cs', 'test', 'irrelevant', 'test v české'],
       ['cs', 'fake', 'irrelevant', 'falešný'],
@@ -203,6 +206,7 @@ public function resolveCacheMissWithFallbackProvider() {
       ['pl', 'missing cs', 'irrelevant', 'zaginiony czech'],
       ['pl', 'missing both', 'irrelevant', 'missing both'],
     ];
+    // cSpell:enable
   }
 
   /**
diff --git a/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php b/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php
index 8e5fb850171d..48c5aabef47a 100644
--- a/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php
+++ b/core/modules/media/tests/src/FunctionalJavascript/CKEditorIntegrationTest.php
@@ -667,6 +667,7 @@ public function testAlt() {
     $assert_session->elementAttributeContains('named', ['field', 'attributes[alt]'], 'placeholder', 'default alt');
 
     // Fill in the alt field, submit and return to CKEditor.
+    // cSpell:disable-next-line
     $who_is_zartan = 'Zartan is the leader of the Dreadnoks.';
     $page->fillField('attributes[alt]', $who_is_zartan);
     $this->submitDialog();
@@ -793,6 +794,7 @@ public function testTranslationAlt() {
     $host->save();
 
     $translation = $host->addTranslation('fr');
+    // cSpell:disable-next-line
     $translation->title = 'Animaux avec des noms étranges';
     $translation->body->value = $host->body->value;
     $translation->body->format = $host->body->format;
@@ -810,16 +812,20 @@ public function testTranslationAlt() {
     $this->getSession()->switchToIFrame('ckeditor');
 
     // Test that the default alt attribute displays without an override.
+    // cSpell:disable-next-line
     $this->assertNotEmpty($assert_session->waitForElementVisible('xpath', '//img[contains(@alt, "texte alternatif par défaut")]'));
     // Test `aria-label` attribute appears on the widget wrapper.
+    // cSpell:disable-next-line
     $assert_session->elementExists('css', '.cke_widget_drupalmedia[aria-label="Tatou poilu hurlant"]');
     $page->pressButton('Edit media');
     $this->waitForMetadataDialog();
     // Assert that the placeholder is set to the value of the media field's
     // alt text.
+    // cSpell:disable-next-line
     $assert_session->elementAttributeContains('named', ['field', 'attributes[alt]'], 'placeholder', 'texte alternatif par défaut');
 
     // Fill in the alt field in the dialog.
+    // cSpell:disable-next-line
     $qui_est_zartan = 'Zartan est le chef des Dreadnoks.';
     $page->fillField('attributes[alt]', $qui_est_zartan);
     $this->submitDialog();
diff --git a/core/modules/media_library/tests/src/FunctionalJavascript/TranslationsTest.php b/core/modules/media_library/tests/src/FunctionalJavascript/TranslationsTest.php
index d5ba97828c0a..0aa581b42feb 100644
--- a/core/modules/media_library/tests/src/FunctionalJavascript/TranslationsTest.php
+++ b/core/modules/media_library/tests/src/FunctionalJavascript/TranslationsTest.php
@@ -81,12 +81,14 @@ protected function setUp(): void {
     $image->save();
 
     // Create a translated and untranslated media item in each language.
+    // cSpell:disable
     $media_items = [
       ['nl' => 'Eekhoorn', 'es' => 'Ardilla'],
       ['es' => 'Zorro', 'nl' => 'Vos'],
       ['nl' => 'Hert'],
       ['es' => 'Tejón'],
     ];
+    // cSpell:enable
     foreach ($media_items as $translations) {
       $default_langcode = key($translations);
       $default_name = array_shift($translations);
@@ -131,6 +133,7 @@ public function testMediaLibraryTranslations() {
       $media_names[] = $media_item->getText();
     }
     sort($media_names);
+    // cSpell:disable-next-line
     $this->assertSame(['Ardilla', 'Eekhoorn', 'Hert', 'Tejón', 'Vos', 'Zorro'], $media_names);
 
     $this->drupalGet('es/admin/content/media-grid');
@@ -141,6 +144,7 @@ public function testMediaLibraryTranslations() {
       $media_names[] = $media_item->getText();
     }
     sort($media_names);
+    // cSpell:disable-next-line
     $this->assertSame(['Ardilla', 'Eekhoorn', 'Hert', 'Tejón', 'Vos', 'Zorro'], $media_names);
 
     // All media should only be shown once, and should be shown in the interface
@@ -155,6 +159,7 @@ public function testMediaLibraryTranslations() {
       $media_names[] = $media_item->getText();
     }
     sort($media_names);
+    // cSpell:disable-next-line
     $this->assertSame(['Eekhoorn', 'Hert', 'Tejón', 'Vos'], $media_names);
 
     $this->drupalGet('es/node/add/article');
@@ -167,6 +172,7 @@ public function testMediaLibraryTranslations() {
       $media_names[] = $media_item->getText();
     }
     sort($media_names);
+    // cSpell:disable-next-line
     $this->assertSame(['Ardilla', 'Hert', 'Tejón', 'Zorro'], $media_names);
   }
 
diff --git a/core/modules/node/tests/src/Kernel/SummaryLengthTest.php b/core/modules/node/tests/src/Kernel/SummaryLengthTest.php
index 97830c656b0f..3c9c9b955147 100644
--- a/core/modules/node/tests/src/Kernel/SummaryLengthTest.php
+++ b/core/modules/node/tests/src/Kernel/SummaryLengthTest.php
@@ -82,6 +82,7 @@ public function testSummaryLength() {
 
     // Create a node to view.
     $settings = [
+      // cSpell:disable-next-line
       'body' => [['value' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vitae arcu at leo cursus laoreet. Curabitur dui tortor, adipiscing malesuada tempor in, bibendum ac diam. Cras non tellus a libero pellentesque condimentum. What is a Drupalism? Suspendisse ac lacus libero. Ut non est vel nisl faucibus interdum nec sed leo. Pellentesque sem risus, vulputate eu semper eget, auctor in libero. Ut fermentum est vitae metus convallis scelerisque. Phasellus pellentesque rhoncus tellus, eu dignissim purus posuere id. Quisque eu fringilla ligula. Morbi ullamcorper, lorem et mattis egestas, tortor neque pretium velit, eget eleifend odio turpis eu purus. Donec vitae metus quis leo pretium tincidunt a pulvinar sem. Morbi adipiscing laoreet mauris vel placerat. Nullam elementum, nisl sit amet scelerisque malesuada, dolor nunc hendrerit quam, eu ultrices erat est in orci. Curabitur feugiat egestas nisl sed accumsan.']],
       'promote' => 1,
     ];
diff --git a/core/modules/path/tests/src/Functional/PathAliasTest.php b/core/modules/path/tests/src/Functional/PathAliasTest.php
index 99eaa4fee0bd..455f4e198eb6 100644
--- a/core/modules/path/tests/src/Functional/PathAliasTest.php
+++ b/core/modules/path/tests/src/Functional/PathAliasTest.php
@@ -111,6 +111,7 @@ public function testAdminAlias() {
       // currently unable to find the upper-case versions of non-ASCII
       // characters.
       // @todo fix this in https://www.drupal.org/node/2607432
+      // cSpell:disable-next-line
       $edit['alias[0][value]'] .= "ïвβéø";
     }
     $this->drupalPostForm('admin/config/search/path/edit/' . $pid, $edit, t('Save'));
@@ -266,6 +267,7 @@ public function testNodeAlias() {
       // currently unable to find the upper-case versions of non-ASCII
       // characters.
       // @todo fix this in https://www.drupal.org/node/2607432
+      // cSpell:disable-next-line
       $edit['path[0][alias]'] .= "ïвβéø";
     }
     $this->drupalPostForm('node/' . $node1->id() . '/edit', $edit, t('Save'));
diff --git a/core/modules/rest/tests/src/Unit/EventSubscriber/ResourceResponseSubscriberTest.php b/core/modules/rest/tests/src/Unit/EventSubscriber/ResourceResponseSubscriberTest.php
index 305ed3e1382d..8ff2eae36ef7 100644
--- a/core/modules/rest/tests/src/Unit/EventSubscriber/ResourceResponseSubscriberTest.php
+++ b/core/modules/rest/tests/src/Unit/EventSubscriber/ResourceResponseSubscriberTest.php
@@ -57,6 +57,7 @@ public function providerTestSerialization() {
       'default' => [NULL, ''],
       'empty string' => [''],
       'simple string' => ['string'],
+      // cSpell:disable-next-line
       'complex string' => ['Complex \ string $%^&@ with unicode ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ'],
       'empty array' => [[]],
       'numeric array' => [['test']],
diff --git a/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php b/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
index dffb3061c03d..04338ed44395 100644
--- a/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNodeDiacriticsTest.php
@@ -44,6 +44,7 @@ protected function setUp(): void {
    * Tests that search returns results with diacritics in the search phrase.
    */
   public function testPhraseSearchPunctuation() {
+    // cSpell:disable
     $body_text = 'The Enricþment Center is cómmīŦŧęđ to the well BɆĬŇĜ of æll påŔťıçȉpǎǹţș. ';
     $body_text .= 'Also meklēt (see #731298)';
     $this->drupalCreateNode(['body' => [['value' => $body_text]]]);
@@ -89,6 +90,7 @@ public function testPhraseSearchPunctuation() {
     $edit = ['keys' => 'all'];
     $this->drupalPostForm('search/node', $edit, t('Search'));
     $this->assertNoRaw('<strong>æll</strong>');
+    // cSpell:enable
   }
 
 }
diff --git a/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php b/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
index bfe47f124357..c946f9891bdf 100644
--- a/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
+++ b/core/modules/search/tests/src/Functional/SearchNodePunctuationTest.php
@@ -44,6 +44,7 @@ protected function setUp(): void {
    */
   public function testPhraseSearchPunctuation() {
     $node = $this->drupalCreateNode(['body' => [['value' => "The bunny's ears were fluffy."]]]);
+    // cSpell:disable-next-line
     $node2 = $this->drupalCreateNode(['body' => [['value' => 'Dignissim Aliquam &amp; Quieligo meus natu quae quia te. Damnum&copy; erat&mdash; neo pneum. Facilisi feugiat ibidem ratis.']]]);
 
     // Update the search index.
diff --git a/core/modules/search/tests/src/Kernel/SearchExcerptTest.php b/core/modules/search/tests/src/Kernel/SearchExcerptTest.php
index 3bec241d6a15..45abf5438e8e 100644
--- a/core/modules/search/tests/src/Kernel/SearchExcerptTest.php
+++ b/core/modules/search/tests/src/Kernel/SearchExcerptTest.php
@@ -77,8 +77,10 @@ public function testSearchExcerpt() {
   public function testSearchExcerptSimplified() {
     $start_time = microtime(TRUE);
 
+    // cSpell:disable
     $lorem1 = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vitae arcu at leo cursus laoreet. Curabitur dui tortor, adipiscing malesuada tempor in, bibendum ac diam. Cras non tellus a libero pellentesque condimentum. What is a Drupalism? Suspendisse ac lacus libero. Ut non est vel nisl faucibus interdum nec sed leo. Pellentesque sem risus, vulputate eu semper eget, auctor in libero.';
     $lorem2 = 'Ut fermentum est vitae metus convallis scelerisque. Phasellus pellentesque rhoncus tellus, eu dignissim purus posuere id. Quisque eu fringilla ligula. Morbi ullamcorper, lorem et mattis egestas, tortor neque pretium velit, eget eleifend odio turpis eu purus. Donec vitae metus quis leo pretium tincidunt a pulvinar sem. Morbi adipiscing laoreet mauris vel placerat. Nullam elementum, nisl sit amet scelerisque malesuada, dolor nunc hendrerit quam, eu ultrices erat est in orci.';
+    // cSpell:enable
 
     // Make some text with some keywords that will get simplified.
     $text = $lorem1 . ' Number: 123456.7890 Hyphenated: one-two abc,def ' . $lorem2;
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.links.menu.yml b/core/modules/system/tests/modules/menu_test/menu_test.links.menu.yml
index eecd42c9a1da..2bdb59865a3f 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.links.menu.yml
+++ b/core/modules/system/tests/modules/menu_test/menu_test.links.menu.yml
@@ -36,6 +36,7 @@ menu_test.exotic_path:
   route_name: menu_test.exotic_path
   # "Special" ASCII characters. Characters that look like a percent-escaped
   # string. Characters from various non-ASCII alphabets.
+  # cSpell:disable-next-line
   route_parameters: { exotic: ' -._~!$''"()*@[]?&+%#,;=:%23%25%26%2B%2F%3Féøïвβ中國書۞' }
 # Hidden tests; base parents.
 # Same structure as in Menu and Block modules. Since those structures can
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.routing.yml b/core/modules/system/tests/modules/menu_test/menu_test.routing.yml
index 38de862eee7d..59086d156cbd 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.routing.yml
+++ b/core/modules/system/tests/modules/menu_test/menu_test.routing.yml
@@ -381,6 +381,7 @@ menu_test.exotic_path:
   # "Special" ASCII characters, characters that look like a percent-escaped
   # string, and characters from various non-ASCII alphabets.
   # @todo Find a way to use the correct path.
+  # cSpell:disable-next-line
   #path: "/menu-test/ -._~!$'\"()*@[]?&+%#,;=:%23%25%26%2B%2F%3Féøïвβ中國書۞"
   path: '/menu-test/{exotic}'
   defaults:
diff --git a/core/modules/system/tests/src/Functional/Menu/MenuRouterTest.php b/core/modules/system/tests/src/Functional/Menu/MenuRouterTest.php
index 810320836c75..923c5fadf9ee 100644
--- a/core/modules/system/tests/src/Functional/Menu/MenuRouterTest.php
+++ b/core/modules/system/tests/src/Functional/Menu/MenuRouterTest.php
@@ -198,6 +198,7 @@ protected function doTestExoticPath() {
       // Characters that look like a percent-escaped string.
       "%23%25%26%2B%2F%3F" .
       // Characters from various non-ASCII alphabets.
+      // cSpell:disable-next-line
       "éøïвβ中國書۞";
     $this->drupalGet($path);
     $this->assertRaw('This is the menuTestCallback content.');
diff --git a/core/modules/system/tests/src/Functional/System/RetrieveFileTest.php b/core/modules/system/tests/src/Functional/System/RetrieveFileTest.php
index bda8c2571dca..3bcb295efbb9 100644
--- a/core/modules/system/tests/src/Functional/System/RetrieveFileTest.php
+++ b/core/modules/system/tests/src/Functional/System/RetrieveFileTest.php
@@ -24,6 +24,7 @@ public function testFileRetrieving() {
     /** @var \Drupal\Core\File\FileSystemInterface $file_system */
     $file_system = \Drupal::service('file_system');
     $file_system->mkdir($sourcedir = 'public://' . $this->randomMachineName());
+    // cSpell:disable-next-line
     $filename = 'Файл для тестирования ' . $this->randomMachineName();
     $url = file_create_url($sourcedir . '/' . $filename);
     $retrieved_file = system_retrieve_file($url);
diff --git a/core/modules/system/tests/src/Functional/UpdateSystem/UpdatePathTestBaseFilledTest.php b/core/modules/system/tests/src/Functional/UpdateSystem/UpdatePathTestBaseFilledTest.php
index 0b0b4475b640..218c83545c3b 100644
--- a/core/modules/system/tests/src/Functional/UpdateSystem/UpdatePathTestBaseFilledTest.php
+++ b/core/modules/system/tests/src/Functional/UpdateSystem/UpdatePathTestBaseFilledTest.php
@@ -301,8 +301,10 @@ public function testUpdatedSite() {
 
     // Make sure strings are still translated.
     $this->drupalGet('admin/structure/views/view/content/translate/es/edit');
+    // cSpell:disable-next-line
     $this->assertText('Contenido');
     $this->drupalPostForm('admin/config/regional/translate', ['string' => 'Full comment'], 'Filter');
+    // cSpell:disable-next-line
     $this->assertText('Comentario completo');
 
     // Make sure our custom action is still there.
diff --git a/core/modules/text/tests/src/Kernel/TextSummaryTest.php b/core/modules/text/tests/src/Kernel/TextSummaryTest.php
index b95ae19ab771..b7f975fda842 100644
--- a/core/modules/text/tests/src/Kernel/TextSummaryTest.php
+++ b/core/modules/text/tests/src/Kernel/TextSummaryTest.php
@@ -51,6 +51,7 @@ public function testFirstSentenceQuestion() {
    */
   public function testLongSentence() {
     // 125.
+    // cSpell:disable
     $text =
       'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' .
       // 108.
@@ -62,6 +63,7 @@ public function testLongSentence() {
     $expected = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' .
                 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ' .
                 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.';
+    // cSpell:enable
     // First three sentences add up to: 336, so add one for space and then 3 to get half-way into next word.
     $this->assertTextSummary($text, $expected, NULL, 340);
   }
diff --git a/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserProfileValuesTest.php b/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserProfileValuesTest.php
index 02a1f46c1839..d06c50495742 100644
--- a/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserProfileValuesTest.php
+++ b/core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserProfileValuesTest.php
@@ -41,9 +41,11 @@ public function testUserProfileValues() {
     $user = User::load(2);
     $this->assertNotNull($user);
     $this->assertIdentical('red', $user->profile_color->value);
+    // cSpell:disable
     $expected = <<<EOT
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nulla sapien, congue nec risus ut, adipiscing aliquet felis. Maecenas quis justo vel nulla varius euismod. Quisque metus metus, cursus sit amet sem non, bibendum vehicula elit. Cras dui nisl, eleifend at iaculis vitae, lacinia ut felis. Nullam aliquam ligula volutpat nulla consectetur accumsan. Maecenas tincidunt molestie diam, a accumsan enim fringilla sit amet. Morbi a tincidunt tellus. Donec imperdiet scelerisque porta. Sed quis sem bibendum eros congue sodales. Vivamus vel fermentum est, at rutrum orci. Nunc consectetur purus ut dolor pulvinar, ut volutpat felis congue. Cras tincidunt odio sed neque sollicitudin, vehicula tempor metus scelerisque.
 EOT;
+    // cSpell:enable
     $this->assertIdentical($expected, $user->profile_biography->value);
     $this->assertIdentical('1', $user->profile_sell_address->value);
     $this->assertIdentical('Back\slash', $user->profile_sold_to->value);
diff --git a/core/modules/user/tests/src/Kernel/UserValidationTest.php b/core/modules/user/tests/src/Kernel/UserValidationTest.php
index 3884cc592551..11c5c6f64a93 100644
--- a/core/modules/user/tests/src/Kernel/UserValidationTest.php
+++ b/core/modules/user/tests/src/Kernel/UserValidationTest.php
@@ -41,6 +41,7 @@ protected function setUp(): void {
    * Tests user name validation.
    */
   public function testUsernames() {
+    // cSpell:disable
     $test_cases = [
       // '<username>' => ['<description>', 'assert<testName>'].
       'foo'                    => ['Valid username', 'assertNull'],
@@ -66,6 +67,7 @@ public function testUsernames() {
       'foo' . chr(13) . 'bar'  => ['Invalid username containing chr(13)', 'assertNotNull'],
       str_repeat('x', UserInterface::USERNAME_MAX_LENGTH + 1) => ['Invalid excessively long username', 'assertNotNull'],
     ];
+    // cSpell:enable
     foreach ($test_cases as $name => $test_case) {
       list($description, $test) = $test_case;
       $result = user_validate_name($name);
diff --git a/core/modules/views/tests/src/Kernel/Handler/FieldKernelTest.php b/core/modules/views/tests/src/Kernel/Handler/FieldKernelTest.php
index 63c44e72f48e..702dcf83b358 100644
--- a/core/modules/views/tests/src/Kernel/Handler/FieldKernelTest.php
+++ b/core/modules/views/tests/src/Kernel/Handler/FieldKernelTest.php
@@ -802,6 +802,7 @@ public function testClickSortable() {
    */
   public function testTrimText() {
     // Test unicode. See https://www.drupal.org/node/513396#comment-2839416.
+    // cSpell:disable
     $text = [
       'Tuy nhiên, những hi vọng',
       'Giả sử chúng tôi có 3 Apple',
@@ -849,6 +850,7 @@ public function testTrimText() {
       $result_text = FieldPluginBase::trimText($alter, $line);
       $this->assertEqual($result_text, $expect[$key]);
     }
+    // cSpell:enable
   }
 
 }
diff --git a/core/package.json b/core/package.json
index b40c8aaf8593..9fc2325b352b 100644
--- a/core/package.json
+++ b/core/package.json
@@ -23,7 +23,10 @@
     "lint:css": "stylelint \"**/*.css\"",
     "lint:css-checkstyle": "stylelint \"**/*.css\" --custom-formatter ./node_modules/stylelint-checkstyle-formatter/index.js",
     "test:nightwatch": "cross-env BABEL_ENV=development node -r dotenv-safe/config -r @babel/register ./node_modules/.bin/nightwatch --config ./tests/Drupal/Nightwatch/nightwatch.conf.js",
-    "prettier": "prettier --write \"./**/*.es6.js\" \"./tests/Drupal/Nightwatch/**/*.js\""
+    "prettier": "prettier --write \"./**/*.es6.js\" \"./tests/Drupal/Nightwatch/**/*.js\"",
+    "spellcheck": "cspell",
+    "spellcheck:make-drupal-dict": "rm -f misc/cspell/dictionary.txt && yarn -s spellcheck:core --unique --wordsOnly | tr '[:upper:]' '[:lower:]' | tr -d \\\\\\\\ | LC_ALL=C sort -u -o misc/cspell/dictionary.txt",
+    "spellcheck:core": "cspell \"**/*\" \"../composer/**/*\""
   },
   "devDependencies": {
     "@babel/core": "^7.0.0",
@@ -35,6 +38,7 @@
     "chokidar": "^3.3.1",
     "chromedriver": "^79.0.0",
     "cross-env": "^6.0.3",
+    "cspell": "^4.0.63",
     "dotenv-safe": "^8.2.0",
     "eslint": "^6.7.2",
     "eslint-config-airbnb": "^18.0.1",
diff --git a/core/profiles/demo_umami/tests/src/Functional/UmamiMultilingualInstallTest.php b/core/profiles/demo_umami/tests/src/Functional/UmamiMultilingualInstallTest.php
index 4736be9f3650..e6b92e1f853c 100644
--- a/core/profiles/demo_umami/tests/src/Functional/UmamiMultilingualInstallTest.php
+++ b/core/profiles/demo_umami/tests/src/Functional/UmamiMultilingualInstallTest.php
@@ -26,6 +26,7 @@ class UmamiMultilingualInstallTest extends InstallerTestBase {
    */
   public function testUmami() {
     $this->drupalGet('');
+    // cSpell:disable-next-line
     $this->assertSession()->pageTextContains('Quiche mediterráneo profundo');
   }
 
diff --git a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php
index fb69ea772d66..5d86fc54fdb3 100644
--- a/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php
+++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php
@@ -57,8 +57,10 @@ protected function setUpSettings() {
     parent::setUpSettings();
 
     // Ensure that the error message translation is working.
+    // cSpell:disable
     $this->assertRaw('Beheben Sie alle Probleme unten, um die Installation fortzusetzen. Informationen zur Konfiguration der Datenbankserver finden Sie in der <a href="https://www.drupal.org/docs/8/install">Installationshandbuch</a>, oder kontaktieren Sie Ihren Hosting-Anbieter.');
     $this->assertRaw('<strong>CREATE</strong> ein Test-Tabelle auf Ihrem Datenbankserver mit dem Befehl <em class="placeholder">CREATE TABLE {drupal_install_test} (id int NOT NULL PRIMARY KEY)</em> fehlgeschlagen.');
+    // cSpell:enable
 
     // Now do it successfully.
     Database::getConnection('default')->query('DROP TABLE {drupal_install_test}');
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php b/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
index df3a6e25dea1..3c40385f9456 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
@@ -54,6 +54,7 @@ public function providerTestInvalidCharacters() {
       // Nothing special.
       ['foo', 'bar', 'baz'],
       // Invalid characters in CID.
+      // cSpell:disable-next-line
       ['éøïвβ中國書۞', 'foo', 'bar'],
       // Really long CID.
       [$this->randomString(1024), 'foo', 'bar'],
diff --git a/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php b/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php
index 33dbc77812ec..99fa58b88d0c 100644
--- a/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php
@@ -118,6 +118,7 @@ protected function setUp(): void {
     $storage->write('test_config', $this->data);
 
     // Create user account with some potential syntax issues.
+    // cspell:disable-next-line
     $account = User::create(['mail' => 'q\'uote$dollar@example.com', 'name' => '$dollar']);
     $account->save();
 
@@ -184,6 +185,7 @@ public function testDbDumpCommand() {
     $this->assertRegExp('/' . $pattern . '/', $command_tester->getDisplay(), 'Generated data is found in the exported script.');
 
     // Check that the user account name and email address was properly escaped.
+    // cspell:disable-next-line
     $pattern = preg_quote('"q\'uote\$dollar@example.com"');
     $this->assertRegExp('/' . $pattern . '/', $command_tester->getDisplay(), 'The user account email address was properly escaped in the exported script.');
     $pattern = preg_quote('\'$dollar\'');
diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigFileContentTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigFileContentTest.php
index 515d60ac0427..fe1ab39c2fd5 100644
--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigFileContentTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigFileContentTest.php
@@ -200,6 +200,7 @@ public function testSerialization() {
         // UTF-8 in values.
         'UTF-8' => 'FrançAIS is ÜBER-åwesome',
         // Unicode in keys and values.
+        // cSpell:disable-next-line
         'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ' => 'αβγδεζηθικλμνξοσὠ',
       ],
       'invalid xml' => '</title><script type="text/javascript">alert("Title XSS!");</script> & < > " \' ',
@@ -222,6 +223,7 @@ public function testSerialization() {
     $key = 'UTF-8';
     $this->assertSame($config_data['nested keys'][$key], $config_parsed['nested keys'][$key]);
 
+    // cSpell:disable-next-line
     $key = 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ';
     $this->assertSame($config_data['nested keys'][$key], $config_parsed['nested keys'][$key]);
 
diff --git a/core/tests/Drupal/KernelTests/Core/File/FileTestBase.php b/core/tests/Drupal/KernelTests/Core/File/FileTestBase.php
index 9069e554dc5f..c47cf9b8b4b5 100644
--- a/core/tests/Drupal/KernelTests/Core/File/FileTestBase.php
+++ b/core/tests/Drupal/KernelTests/Core/File/FileTestBase.php
@@ -187,6 +187,7 @@ public function createUri($filepath = NULL, $contents = NULL, $scheme = NULL) {
     if (!isset($filepath)) {
       // Prefix with non-latin characters to ensure that all file-related
       // tests work with international filenames.
+      // cSpell:disable-next-line
       $filepath = 'Файл для тестирования ' . $this->randomMachineName();
     }
     if (!isset($scheme)) {
diff --git a/core/tests/Drupal/KernelTests/Core/Routing/RouteProviderTest.php b/core/tests/Drupal/KernelTests/Core/Routing/RouteProviderTest.php
index 0d4252944df9..e21a0ce9c018 100644
--- a/core/tests/Drupal/KernelTests/Core/Routing/RouteProviderTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Routing/RouteProviderTest.php
@@ -207,6 +207,7 @@ public function testOutlinePathMatch() {
    * Data provider for testMixedCasePaths()
    */
   public function providerMixedCaseRoutePaths() {
+    // cSpell:disable
     return [
       ['/path/one', 'route_a'],
       ['/path/two', NULL],
@@ -221,6 +222,7 @@ public function providerMixedCaseRoutePaths() {
       ['/place/meΦω', 'route_e', 'HEAD'],
       ['/place/meφΩ', 'route_e', 'HEAD'],
     ];
+    // cSpell:enable
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php b/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
index 75f50d5b0c97..39cf95d18aa2 100644
--- a/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
+++ b/core/tests/Drupal/Tests/Component/Gettext/PoStreamWriterTest.php
@@ -80,6 +80,7 @@ public function testWriteItem($poContent, $expected, $long) {
    *   - Content longer than 10 bytes.
    */
   public function providerWriteData() {
+    // cSpell:disable
     return [
       ['', '', FALSE],
       ["\r\n", "\r\n", FALSE],
@@ -89,6 +90,7 @@ public function providerWriteData() {
       ['中文 890', '中文 890', FALSE],
       ['中文 89012', '中文 890', TRUE],
     ];
+    // cSpell:enable
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php b/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php
index 5512a1c62c1c..f002567268da 100644
--- a/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php
+++ b/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php
@@ -52,11 +52,13 @@ public function testDecode($string, $data) {
    * @covers ::encode
    */
   public function testEncode() {
+    // cSpell:disable
     $this->assertEquals('---
 foo:
   bar: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis
 ...
 ', YamlPecl::encode(['foo' => ['bar' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis']]));
+    // cSpell:enable
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Component/Serialization/YamlSymfonyTest.php b/core/tests/Drupal/Tests/Component/Serialization/YamlSymfonyTest.php
index cbf7afbf46af..6e88c1571feb 100644
--- a/core/tests/Drupal/Tests/Component/Serialization/YamlSymfonyTest.php
+++ b/core/tests/Drupal/Tests/Component/Serialization/YamlSymfonyTest.php
@@ -41,9 +41,11 @@ public function testDecode($string, $data) {
    * @covers ::encode
    */
   public function testEncode() {
+    // cSpell:disable
     $this->assertEquals('foo:
   bar: \'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis\'
 ', YamlSymfony::encode(['foo' => ['bar' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis']]));
+    // cSpell:enable
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php b/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
index 82c5ed0cec04..3c9594c2d3f4 100644
--- a/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
+++ b/core/tests/Drupal/Tests/Component/Transliteration/PhpTransliterationTest.php
@@ -40,6 +40,7 @@ public function testRemoveDiacritics($original, $expected) {
    *   self::testRemoveDiacritics().
    */
   public function providerTestPhpTransliterationRemoveDiacritics() {
+    // cSpell:disable
     return [
       // Test all characters in the Unicode range 0x00bf to 0x017f.
       ['ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ', 'AAAAAAÆCEEEEIIII'],
@@ -66,6 +67,7 @@ public function providerTestPhpTransliterationRemoveDiacritics() {
       ['ȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿ', 'OoYylntjȸȹACcLTs'],
       ['ɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏ', 'zɁɂBUɅEeJjQqRrYy'],
     ];
+    // cSpell:enable
   }
 
   /**
@@ -105,6 +107,7 @@ public function providerTestPhpTransliteration() {
     $random = $random_generator->string(10);
     // Make some strings with two, three, and four-byte characters for testing.
     // Note that the 3-byte character is overridden by the 'kg' language.
+    // cSpell:disable-next-line
     $two_byte = 'Ä Ö Ü Å Ø äöüåøhello';
     // This is a Cyrillic character that looks something like a "u". See
     // http://www.unicode.org/charts/PDF/U0400.pdf
@@ -117,6 +120,7 @@ public function providerTestPhpTransliteration() {
     // They are not in our tables, but should at least give us '?' (unknown).
     $five_byte = html_entity_decode('&#x10330;&#x10338;', ENT_NOQUOTES, 'UTF-8');
 
+    // cSpell:disable
     return [
       // Each test case is language code, input, output, unknown character, max
       // length.
@@ -171,6 +175,7 @@ public function providerTestPhpTransliteration() {
       // Keep many spaces between words.
       ['en', 'Too    many    spaces between words !', 'Too    many    spaces between words !'],
     ];
+    // cSpell:enable
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php b/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
index 3a3c5f22ee44..3f2ab9de2ff5 100644
--- a/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/HtmlTest.php
@@ -127,6 +127,7 @@ public function testHtmlGetUniqueId($expected, $source, $reset = FALSE) {
    *   Test data.
    */
   public function providerTestHtmlGetUniqueId() {
+    // cSpell:disable
     $id = 'abcdefghijklmnopqrstuvwxyz-0123456789';
     return [
       // Verify that letters, digits, and hyphens are not stripped from the ID.
@@ -140,6 +141,7 @@ public function providerTestHtmlGetUniqueId() {
       ['test-unique-id--2', 'test-unique-id'],
       ['test-unique-id--3', 'test-unique-id'],
     ];
+    // cSpell:enable
   }
 
   /**
@@ -210,6 +212,7 @@ public function testHtmlGetId($expected, $source) {
    *   Test data.
    */
   public function providerTestHtmlGetId() {
+    // cSpell:disable
     $id = 'abcdefghijklmnopqrstuvwxyz-0123456789';
     return [
       // Verify that letters, digits, and hyphens are not stripped from the ID.
@@ -222,6 +225,7 @@ public function providerTestHtmlGetId() {
       ['test-unique-id', 'test-unique-id'],
       ['test-unique-id', 'test-unique-id'],
     ];
+    // cSpell:enable
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php b/core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php
index 8951ebf56f67..19b73f3c2b2a 100644
--- a/core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/UnicodeTest.php
@@ -61,6 +61,7 @@ public function testUcfirst($text, $expected) {
    *   An array containing a string and its uppercase first version.
    */
   public function providerUcfirst() {
+    // cSpell:disable
     return [
       ['tHe QUIcK bRoWn', 'THe QUIcK bRoWn'],
       ['françAIS', 'FrançAIS'],
@@ -69,6 +70,7 @@ public function providerUcfirst() {
       // A multibyte string.
       ['σion', 'Σion'],
     ];
+    // cSpell:enable
   }
 
   /**
@@ -90,6 +92,7 @@ public function testLcfirst($text, $expected) {
    *   An array containing a string and its lowercase version.
    */
   public function providerLcfirst() {
+    // cSpell:disable
     return [
       ['tHe QUIcK bRoWn', 'tHe QUIcK bRoWn'],
       ['FrançAIS is ÜBER-åwesome', 'françAIS is ÜBER-åwesome'],
@@ -98,6 +101,7 @@ public function providerLcfirst() {
       // Add a multibyte string.
       ['ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ', 'αΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ'],
     ];
+    // cSpell:enable
   }
 
   /**
@@ -119,6 +123,7 @@ public function testUcwords($text, $expected) {
    *   An array containing a string and its capitalized version.
    */
   public function providerUcwords() {
+    // cSpell:disable
     return [
       ['tHe QUIcK bRoWn', 'THe QUIcK BRoWn'],
       ['françAIS', 'FrançAIS'],
@@ -129,6 +134,7 @@ public function providerUcwords() {
       // Add a multibyte string.
       ['σion', 'Σion'],
     ];
+    // cSpell:enable
   }
 
   /**
@@ -155,6 +161,7 @@ public function testTruncate($text, $max_length, $expected, $wordsafe = FALSE, $
    *     - (optional) Boolean for the $add_ellipsis flag. Defaults to FALSE.
    */
   public function providerTruncate() {
+    // cSpell:disable
     $tests = [
       ['frànçAIS is über-åwesome', 24, 'frànçAIS is über-åwesome'],
       ['frànçAIS is über-åwesome', 23, 'frànçAIS is über-åwesom'],
@@ -201,6 +208,7 @@ public function providerTruncate() {
       ['Help! Help! Help!', 3, 'He…', TRUE, TRUE],
       ['Help! Help! Help!', 2, 'H…', TRUE, TRUE],
     ];
+    // cSpell:enable
 
     // Test truncate on text with multiple lines.
     $multi_line = <<<EOF
diff --git a/core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php b/core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php
index 49ab57a7f850..19f9fd8ef475 100644
--- a/core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php
+++ b/core/tests/Drupal/Tests/Core/EventSubscriber/ActiveLinkResponseFilterTest.php
@@ -48,6 +48,7 @@ public function providerTestSetLinkActiveClass() {
       // https://www.drupal.org/comment/7938201#comment-7938201.
       1 => ['prefix' => '<div><p>', 'suffix' => '</p>' . $edge_case_html5 . '</div>'],
       // Multi-byte content *before* the HTML that needs the "is-active" class.
+      // cSpell:disable-next-line
       2 => ['prefix' => '<div><p>αβγδεζηθικλμνξοσὠ</p><p>', 'suffix' => '</p></div>'],
     ];
     $tags = [
@@ -64,6 +65,7 @@ public function providerTestSetLinkActiveClass() {
       // Mix of UTF-8 and HTML entities, both must be retained.
       '☆ 3 × 4 = €12 and 4 &times; 3 = &euro;12 &#9734',
       // Multi-byte content.
+      // cSpell:disable-next-line
       'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ',
       // Text that closely approximates an important attribute, but should be
       // ignored.
diff --git a/core/tests/Drupal/Tests/Core/Form/SubformStateTest.php b/core/tests/Drupal/Tests/Core/Form/SubformStateTest.php
index f78ec5bc9a15..7bb7d86d808d 100644
--- a/core/tests/Drupal/Tests/Core/Form/SubformStateTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/SubformStateTest.php
@@ -296,6 +296,7 @@ public function testGetLimitValidationErrors() {
   public function testSetErrorByName() {
     $parent_form_error_name = 'dog][name';
     $subform_error_name = 'name';
+    // cSpell:disable-next-line
     $message = 'De kat krabt de krullen van de trap.';
 
     $parent_form_state = $this->prophesize(FormStateInterface::class);
diff --git a/core/tests/Drupal/Tests/Core/Routing/RoutingFixtures.php b/core/tests/Drupal/Tests/Core/Routing/RoutingFixtures.php
index 5ff38fa46b6b..f6fa1ebc40f2 100644
--- a/core/tests/Drupal/Tests/Core/Routing/RoutingFixtures.php
+++ b/core/tests/Drupal/Tests/Core/Routing/RoutingFixtures.php
@@ -156,6 +156,7 @@ public function mixedCaseRouteCollection() {
     $collection->add('route_b', $route);
 
     // Uses Hebrew letter QOF (U+05E7)
+    // cSpell:disable-next-line
     $route = new Route('/somewhere/{item}/over/the/קainbow');
     $route->setMethods(['GET']);
     $collection->add('route_c', $route);
@@ -164,6 +165,7 @@ public function mixedCaseRouteCollection() {
     $collection->add('route_d', $route);
 
     // Greek letters lower case phi (U+03C6) and lower case omega (U+03C9)
+    // cSpell:disable-next-line
     $route = new Route('/place/meφω');
     $route->setMethods(['GET', 'HEAD']);
     $collection->add('route_e', $route);
@@ -197,10 +199,12 @@ public function duplicatePathsRouteCollection() {
     $collection->add('route_d', $route);
 
     // Greek letters lower case phi (U+03C6) and lower case omega (U+03C9)
+    // cSpell:disable-next-line
     $route = new Route('/place/meφω');
     $route->setMethods(['GET', 'HEAD']);
     $collection->add('route_f', $route);
 
+    // cSpell:disable-next-line
     $route = new Route('/PLACE/meφω');
     $collection->add('route_e', $route);
 
diff --git a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
index ef3ad8b8b5dc..81a1312198c0 100644
--- a/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
+++ b/core/tests/Drupal/Tests/Core/Template/AttributeTest.php
@@ -280,6 +280,7 @@ public function testTwigAddRemoveClasses($template, $expected, $seed_attributes
    *   a resulting string of classes and an optional array of attributes.
    */
   public function providerTestAttributeClassHelpers() {
+    // cSpell:disable
     return [
       ["{{ attributes.class }}", ''],
       ["{{ attributes.addClass('everest').class }}", 'everest'],
@@ -313,6 +314,7 @@ public function providerTestAttributeClassHelpers() {
       // Test for the removal of an empty class name.
       ["{{ attributes.addClass('rakaposhi', '').class }}", 'rakaposhi'],
     ];
+    // cSpell:enable
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Transliteration/PhpTransliterationTest.php b/core/tests/Drupal/Tests/Core/Transliteration/PhpTransliterationTest.php
index 29d266c356c1..58182f9352f8 100644
--- a/core/tests/Drupal/Tests/Core/Transliteration/PhpTransliterationTest.php
+++ b/core/tests/Drupal/Tests/Core/Transliteration/PhpTransliterationTest.php
@@ -66,6 +66,7 @@ public function providerTestPhpTransliterationWithAlter() {
     $random = $random_generator->string(10);
     // Make some strings with two, three, and four-byte characters for testing.
     // Note that the 3-byte character is overridden by the 'kg' language.
+    // cSpell:disable-next-line
     $two_byte = 'Ä Ö Ü Å Ø äöüåøhello';
     // These are two Gothic alphabet letters. See
     // http://wikipedia.org/wiki/Gothic_alphabet
@@ -77,6 +78,7 @@ public function providerTestPhpTransliterationWithAlter() {
     $cases = [
       // Test the language override hook in the test module, which changes
       // the transliteration of Ä to Z and provides for the 5-byte characters.
+      // cSpell:disable-next-line
       ['zz', $two_byte, 'Z O U A O aouaohello'],
       ['zz', $random, $random],
       ['zz', $five_byte, 'ATh', $five_byte_printable],
diff --git a/core/yarn.lock b/core/yarn.lock
index 4a0e945129e6..5c3ac1f1c50f 100644
--- a/core/yarn.lock
+++ b/core/yarn.lock
@@ -1152,6 +1152,11 @@ asynckit@^0.4.0:
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
   integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
 
+at-least-node@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+  integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
 atob@^2.1.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@@ -1609,11 +1614,21 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
   dependencies:
     delayed-stream "~1.0.0"
 
-commander@^2.11.0, commander@^2.20.0:
+commander@^2.11.0, commander@^2.20.0, commander@^2.20.3:
   version "2.20.3"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
   integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
 
+comment-json@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-3.0.2.tgz#a5652a491910e338080bcbf98fc9a37cbd7f3733"
+  integrity sha512-ysJasbJ671+8mPEmwLOfLFqxoGtSmjyoep+lKRVH4J1/hsGu79fwetMDQWk8de8mVgqDZ43D7JuJAlACqjI1pg==
+  dependencies:
+    core-util-is "^1.0.2"
+    esprima "^4.0.1"
+    has-own-prop "^2.0.0"
+    repeat-string "^1.6.1"
+
 commondir@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -1639,6 +1654,18 @@ concat-stream@^1.6.2:
     readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
+configstore@^5.0.0, configstore@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
+  integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
+  dependencies:
+    dot-prop "^5.2.0"
+    graceful-fs "^4.1.2"
+    make-dir "^3.0.0"
+    unique-string "^2.0.0"
+    write-file-atomic "^3.0.0"
+    xdg-basedir "^4.0.0"
+
 confusing-browser-globals@^1.0.9:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd"
@@ -1674,7 +1701,7 @@ core-js-pure@^3.0.0:
   resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
   integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
 
-core-util-is@1.0.2, core-util-is@~1.0.0:
+core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
   integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
@@ -1727,6 +1754,285 @@ cross-spawn@^7.0.0:
     shebang-command "^2.0.0"
     which "^2.0.1"
 
+crypto-random-string@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
+  integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+
+cspell-dict-aws@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/cspell-dict-aws/-/cspell-dict-aws-1.0.5.tgz#538af5c2e3d3be9cae6f5ea73aa141a1f2d2aa34"
+  integrity sha512-yhOi7YiPuMS+2YPZgZmmwU4U3YPUxF+2TypYXF7eoIjzpNdKrag7r6B2i9lgSttCj6I1oWdjIEmNsAap4Affkw==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-bash@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/cspell-dict-bash/-/cspell-dict-bash-1.0.3.tgz#e3cf0e2dbe56f18c68a16c3eb8037d418e88c3cd"
+  integrity sha512-pEGuoZXhgqhpmmvdEoNY/XYDrypI37y0Z09VgKTHEblzTHo++vLyd4Z8r1SY3kJ2eQejduz4IL7ZGXqgtEp2vw==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-companies@^1.0.22:
+  version "1.0.22"
+  resolved "https://registry.yarnpkg.com/cspell-dict-companies/-/cspell-dict-companies-1.0.22.tgz#a30983605888ce530e5c7c2ad1b2b9e33c20fcae"
+  integrity sha512-P7ziSCteONYjlPHFFqZTnisSEJr9h9FXTJh0t9QQIoKcaNR4wij5GiZDv4p4YubCf0z3GeJ7Uao+99RGeHakRQ==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-cpp@^1.1.26:
+  version "1.1.26"
+  resolved "https://registry.yarnpkg.com/cspell-dict-cpp/-/cspell-dict-cpp-1.1.26.tgz#67e3f8d26ec2c49d305b086013935f0b0fade2e0"
+  integrity sha512-ywY7X6UzC5BC7fQhyRAwZHurl52GjwnY6D2wG57JJ/bcT5IsJOWpLAjHORtUH2AcCp6BSAKR6wxl6/bqSuKHJw==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-cryptocurrencies@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/cspell-dict-cryptocurrencies/-/cspell-dict-cryptocurrencies-1.0.2.tgz#301773a9b555d4c3173f442b0770483874ec36dd"
+  integrity sha512-suLIsOGmeHt+lqRBbbOJM9aVeBNcXq+3kKINOyuFiAJFpRhDMQrnATzGmW0hhi8XaJHFBcSeQY7iQYe3u1WbnA==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-django@^1.0.15:
+  version "1.0.15"
+  resolved "https://registry.yarnpkg.com/cspell-dict-django/-/cspell-dict-django-1.0.15.tgz#a0faec617cab280bd9ef942d1b2a6a5634e5c143"
+  integrity sha512-heppo6ZEGgv+cVPDLr24miG8xIn3E5SEGFBGHyNLyGqt8sHzeG3eNKhjKOJCC0hG/fq0ZECbE5q4691LvH24/Q==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-dotnet@^1.0.14:
+  version "1.0.14"
+  resolved "https://registry.yarnpkg.com/cspell-dict-dotnet/-/cspell-dict-dotnet-1.0.14.tgz#780c3143d340e3211be27df7cfd2d9d1f82b24c5"
+  integrity sha512-gTuh94tNAVMS4XmVCK2AsFgKp2mXBk2b8+f2GLCw2K8HY6QUHlvOJg051JJrZABRW/lAoquKZuqssSo9B1mgng==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-elixir@^1.0.13:
+  version "1.0.13"
+  resolved "https://registry.yarnpkg.com/cspell-dict-elixir/-/cspell-dict-elixir-1.0.13.tgz#f3d08b27d2ee2a25fcae5050820d5680028e95d5"
+  integrity sha512-KWDO4NeV3QuMlZxSWpN0sPiFN4GE5AzlDi75eSKRvq/f1+pxgxgXQ5zLNPnDbr2EOSJBV34paZwI+7PvCiTTgA==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-en-gb@^1.1.16:
+  version "1.1.16"
+  resolved "https://registry.yarnpkg.com/cspell-dict-en-gb/-/cspell-dict-en-gb-1.1.16.tgz#75155e43c21e972ac2f60117b69fd53b5701335f"
+  integrity sha512-PBzHF40fVj+6Adm3dV3/uhkE2Ptu8W+WJ28socBDDpEfedFMwnC0rpxvAgmKJlLc0OYsn07/yzRnt9srisNrLg==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-en_us@^1.2.26:
+  version "1.2.26"
+  resolved "https://registry.yarnpkg.com/cspell-dict-en_us/-/cspell-dict-en_us-1.2.26.tgz#7e9b9bcbc1b9d3cd7d0442d6264cefdc3cbf8fe1"
+  integrity sha512-v/9yHpi4J8KAThUa1mtGfhUsv8GXB5lZnKae7ZDN4pzjx5O+KgzZ6GGEUvRlMVzBOl0vEmNInTSIKTG1Y3h4lg==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-fonts@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/cspell-dict-fonts/-/cspell-dict-fonts-1.0.5.tgz#df96979e07d68cd186fe20eae0113e939d880c4f"
+  integrity sha512-R9A/MVDzqEQbwXaZhmNJ7bSzzkH5YSJ5UDr3wDRk7FXzNNcuJ4J9WRbkDjCDnoVfg0kCx0FeEp0fme+PbLTeng==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-fullstack@^1.0.23:
+  version "1.0.23"
+  resolved "https://registry.yarnpkg.com/cspell-dict-fullstack/-/cspell-dict-fullstack-1.0.23.tgz#c933e3987edf6e81e85bf58ca31e574ff79f9d0c"
+  integrity sha512-vc/aihpKVD/ML+SLVry6kDWFswW/sQfP9QHrr2ZhQLUwhj9pVMnZvx+u1cV8bhMYltWQZxrDhdAe4jrlBrxLHA==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-golang@^1.1.14:
+  version "1.1.14"
+  resolved "https://registry.yarnpkg.com/cspell-dict-golang/-/cspell-dict-golang-1.1.14.tgz#5567d823a3e58b8f4c783bea185e95580008d47e"
+  integrity sha512-V9TQQjoTgdLTpLNczEjoF+BO+CkdmuZlD6J71SCT8sczSP0FLz4QkL1MpqiL0lhdnbtASsjs+oCF53Y+dWdh9g==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-haskell@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/cspell-dict-haskell/-/cspell-dict-haskell-1.0.4.tgz#98a3a00fb72d39f3b94aa019fac7ed86ab73dbd8"
+  integrity sha512-Wy5EE446icPbsi8bLqSCOtxS5Z6QDLGNBvz6Nh+yvuLf7Nb8mU6NQmfSYH/yMfJoVGa5bpcmv8pQtJV4I2E5Tg==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-html-symbol-entities@^1.0.13:
+  version "1.0.13"
+  resolved "https://registry.yarnpkg.com/cspell-dict-html-symbol-entities/-/cspell-dict-html-symbol-entities-1.0.13.tgz#41b770fa08f82b20f9e3c7f234a320bbb1dee851"
+  integrity sha512-u8BARt4r5rdUee7Yw6ejsD69WLib9l+pyBr4UUIZovhCUccddm2LkS9GDJUqWtCf/frZpoTnmpuW/NPWVVG6pQ==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-java@^1.0.12:
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/cspell-dict-java/-/cspell-dict-java-1.0.12.tgz#d0220153984a0ccf6bbd69617f324ab11ce4a3fe"
+  integrity sha512-9pg5IrCEZGlWLgv8qGjxzzca19egfBYrbnuiWhJNLbBGBOTWrwYjFqbLQtMJReXUtWikWLY0KCzRZlCGusr7bw==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-latex@^1.0.13:
+  version "1.0.13"
+  resolved "https://registry.yarnpkg.com/cspell-dict-latex/-/cspell-dict-latex-1.0.13.tgz#cdbbc2ebda7b82d44a3574d53b6f5b9a6d0644bb"
+  integrity sha512-UZqGJQ82mkzseqdF7kWXIrA07VD91W7rWx16DCThDBMohOsFdvCymUUgr0pM90FuqmldSiD+Gi1FayDSyPdNtQ==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-lorem-ipsum@^1.0.10:
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/cspell-dict-lorem-ipsum/-/cspell-dict-lorem-ipsum-1.0.10.tgz#3828f43b4df35b258d5d31e4e539c2f6d3f3ce14"
+  integrity sha512-UlboQ3xH+D3l+hemLO4J5yz8EM60SH91f1dJIy2s94AeePZXtwYh1hTFM5dEsXI2CAQkfTu3ZdPWflLsInPfrA==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-lua@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/cspell-dict-lua/-/cspell-dict-lua-1.0.8.tgz#733c3f908a818d08aadb360ace20ff2f8d9a0585"
+  integrity sha512-zPQoZxcKRbtO7dpWh02zO5kCElzJIqkgjAV209q03k7NoS1n0kAcV48W0agY6T1OR0ZjDWMkUheaLFDbaMJq3g==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-php@^1.0.13:
+  version "1.0.13"
+  resolved "https://registry.yarnpkg.com/cspell-dict-php/-/cspell-dict-php-1.0.13.tgz#83cdab21e52d036303b321bf9bca27a9820661a6"
+  integrity sha512-RP5XST+hWEqWxlLISS3sXxsQa2YXOWx8X5LcxQHvEGdb1hMNypXxw9V53th7S+hfUTPKJrbUIzckYZp4j8TS4A==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-powershell@^1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/cspell-dict-powershell/-/cspell-dict-powershell-1.0.6.tgz#2cd32028fb2c7894f4eb7ff202eeec02a8138825"
+  integrity sha512-rwxt/fG3Nr7tQaV7e38ilz8qWfXrf5Ie+MQC6Mw/ddjT4wLOkGvruUqtJA/USoDE9PFG12KoarFsWlVXv/nwPA==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-python@^1.0.20:
+  version "1.0.20"
+  resolved "https://registry.yarnpkg.com/cspell-dict-python/-/cspell-dict-python-1.0.20.tgz#39509b4cbaf5cbe9b5ceab9440eeeb42c04f6323"
+  integrity sha512-BiV8LnH9YNxvkUbVwTyDpZhOuRjPr8cE+nxpuPDbCHmVJmlLsDlg8MXTcJH8I+OFjoz6YdBX6yqK1bi55Aioow==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-ruby@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/cspell-dict-ruby/-/cspell-dict-ruby-1.0.3.tgz#bbda30306af9c9274b8848005d9f73f1d3513651"
+  integrity sha512-uFxUyGj9SRASfnd75lcpkoNvMYHNWmqkFmS9ZruL61M1RmFx9eekuEY74nK11qsb/E4o6yPtGAQH4SrotF9SwQ==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-rust@^1.0.12:
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/cspell-dict-rust/-/cspell-dict-rust-1.0.12.tgz#323eedd0137d8019df08f02d9c1956d9778d0baa"
+  integrity sha512-bMt70/aQL2OcadZRtWfPIF/mHWX9JNOGq92UUU2ka+9C3OPBP/TuyYiHhUWt67y/CoIyEQ7/5uAtjX8paLf14w==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-scala@^1.0.11:
+  version "1.0.11"
+  resolved "https://registry.yarnpkg.com/cspell-dict-scala/-/cspell-dict-scala-1.0.11.tgz#42533b2c850fe6eb64946708fd19e66824b842a7"
+  integrity sha512-bmAQjapvcceJaiwGTkBd9n2L9GaqpmFDKe5S19WQDsWqjFiDwQ+r47td3TU7yWjOLPqp72h9X/XGzDJFvQEPcg==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-software-terms@^1.0.10:
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/cspell-dict-software-terms/-/cspell-dict-software-terms-1.0.10.tgz#8aa6fe2c6979810675e1dadee035404f71538a1e"
+  integrity sha512-buww9OWunaLwRBiJ+gHW7DLoqMtSbHR6sP3DkvjSZBeke3KxAyS2HmsXPTPVrHFrbqm6qCDmGBs442HZcUz3Iw==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-dict-typescript@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/cspell-dict-typescript/-/cspell-dict-typescript-1.0.5.tgz#7e375a6f694b9a925647e5a5696cc992e5411339"
+  integrity sha512-bp4rf3/N02Q6JJhJyDcmCtzn9L00nRBQaar3uxRR7lHz3JfIPujUpTXpJN+iuhhcBv8jL1bKTd5wCpfRyHSi1g==
+  dependencies:
+    configstore "^5.0.0"
+
+cspell-glob@^0.1.19:
+  version "0.1.19"
+  resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-0.1.19.tgz#e6076918a4e17a26f9be19d81198437bbc74126e"
+  integrity sha512-mWWXtKZIsbbUcFKscHEHc2o3fG7VWLqx46ooqbNVnItSZ/jJgPSuguvKh3L6avPY3KKmef2Loae7bjchDwZ+Mw==
+  dependencies:
+    micromatch "^4.0.2"
+
+cspell-io@^4.0.22:
+  version "4.0.22"
+  resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-4.0.22.tgz#fec7000e34394cd9a4795f606ddddcb7b0838145"
+  integrity sha512-cjkCHgLZftGPmGe6eSh+FQpQPCxou7t/MjwuCTY8ZeqI55veCF9uCWk8BI4lKbvDjkp6HxgU1T4mighvKY3/wA==
+  dependencies:
+    iconv-lite "^0.4.24"
+    iterable-to-stream "^1.0.1"
+
+cspell-lib@^4.1.29:
+  version "4.1.29"
+  resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-4.1.29.tgz#40a028a7b2675d7f6ecd45f1eab8d9310f5456ea"
+  integrity sha512-NQTxLhPPObvPg2MJmu1pVJG5fEaytHhhHjHhbdfh6gFTUKdBwQTwxprL+9ySRBPpxm9x7BgqGchJpDa7UbENyQ==
+  dependencies:
+    comment-json "^3.0.2"
+    configstore "^5.0.1"
+    cspell-dict-aws "^1.0.5"
+    cspell-dict-bash "^1.0.3"
+    cspell-dict-companies "^1.0.22"
+    cspell-dict-cpp "^1.1.26"
+    cspell-dict-cryptocurrencies "^1.0.2"
+    cspell-dict-django "^1.0.15"
+    cspell-dict-dotnet "^1.0.14"
+    cspell-dict-elixir "^1.0.13"
+    cspell-dict-en-gb "^1.1.16"
+    cspell-dict-en_us "^1.2.26"
+    cspell-dict-fonts "^1.0.5"
+    cspell-dict-fullstack "^1.0.23"
+    cspell-dict-golang "^1.1.14"
+    cspell-dict-haskell "^1.0.4"
+    cspell-dict-html-symbol-entities "^1.0.13"
+    cspell-dict-java "^1.0.12"
+    cspell-dict-latex "^1.0.13"
+    cspell-dict-lorem-ipsum "^1.0.10"
+    cspell-dict-lua "^1.0.8"
+    cspell-dict-php "^1.0.13"
+    cspell-dict-powershell "^1.0.6"
+    cspell-dict-python "^1.0.20"
+    cspell-dict-ruby "^1.0.3"
+    cspell-dict-rust "^1.0.12"
+    cspell-dict-scala "^1.0.11"
+    cspell-dict-software-terms "^1.0.10"
+    cspell-dict-typescript "^1.0.5"
+    cspell-io "^4.0.22"
+    cspell-trie-lib "^4.1.10"
+    cspell-util-bundle "^4.0.12"
+    fs-extra "^9.0.0"
+    gensequence "^3.1.1"
+    minimatch "^3.0.4"
+    vscode-uri "^2.1.1"
+
+cspell-trie-lib@^4.1.10:
+  version "4.1.10"
+  resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-4.1.10.tgz#a55b5ac525d948a6004bed08bf475ab7aa3719ec"
+  integrity sha512-KRcHfdzWQz5W4M4WstzjFDGS8EM7nxGOVXTOq1mNXsT2DkoOemVPI0gIUWLGHcuZuXAj90dkqzEWNk6wZ9v9+w==
+  dependencies:
+    gensequence "^3.1.1"
+
+cspell-util-bundle@^4.0.12:
+  version "4.0.12"
+  resolved "https://registry.yarnpkg.com/cspell-util-bundle/-/cspell-util-bundle-4.0.12.tgz#ac0389535998dba4363126218e3cbbade85bbe2d"
+  integrity sha512-qrqbgSF4Uci/E5q7q95Wd00RrVj6NTABbJGE8qNTMcLfBLezVy0zj+eHdLe7dTkx4oHob2N3WrMBBE3xBhzg/g==
+
+cspell@^4.0.63:
+  version "4.0.63"
+  resolved "https://registry.yarnpkg.com/cspell/-/cspell-4.0.63.tgz#af42bed1a149c5fed9beb69b7b57e25c5a0ec38d"
+  integrity sha512-dF0oq69CrTFArISxKhih5p8Mcb1RihzQcQ5LnQnuY66Df/qtyScCMvPgg+G/gUtLPa2RYb3WSy8surZNVS2c0Q==
+  dependencies:
+    chalk "^2.4.2"
+    commander "^2.20.3"
+    comment-json "^3.0.2"
+    cspell-glob "^0.1.19"
+    cspell-lib "^4.1.29"
+    fs-extra "^9.0.0"
+    gensequence "^3.1.1"
+    get-stdin "^7.0.0"
+    glob "^7.1.6"
+    minimatch "^3.0.4"
+
 cssesc@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
@@ -2580,6 +2886,16 @@ fragment-cache@^0.2.1:
   dependencies:
     map-cache "^0.2.2"
 
+fs-extra@^9.0.0:
+  version "9.0.0"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3"
+  integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==
+  dependencies:
+    at-least-node "^1.0.0"
+    graceful-fs "^4.2.0"
+    jsonfile "^6.0.1"
+    universalify "^1.0.0"
+
 fs.realpath@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -2613,6 +2929,11 @@ gather-stream@^1.0.0:
   resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b"
   integrity sha1-szmUr0V6gRVwDUEPMXczy+egkEs=
 
+gensequence@^3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-3.1.1.tgz#95c1afc7c0680f92942c17f2d6f83f3d26ea97af"
+  integrity sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g==
+
 gensync@^1.0.0-beta.1:
   version "1.0.0-beta.1"
   resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
@@ -2628,6 +2949,11 @@ get-stdin@^6.0.0:
   resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
   integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
 
+get-stdin@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
+  integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==
+
 get-stdin@^8.0.0:
   version "8.0.0"
   resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
@@ -2689,7 +3015,7 @@ glob@7.1.3:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
-glob@^7.0.3, glob@^7.1.2, glob@^7.1.3:
+glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6:
   version "7.1.6"
   resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
   integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -2778,7 +3104,7 @@ gonzales-pe@^4.2.3, gonzales-pe@^4.3.0:
   dependencies:
     minimist "^1.2.5"
 
-graceful-fs@^4.1.2:
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
   version "4.2.4"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
   integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
@@ -2828,6 +3154,11 @@ has-flag@^4.0.0:
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
   integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
 
+has-own-prop@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af"
+  integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==
+
 has-symbols@^1.0.0, has-symbols@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
@@ -3392,6 +3723,11 @@ isstream@~0.1.2:
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
   integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
 
+iterable-to-stream@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/iterable-to-stream/-/iterable-to-stream-1.0.1.tgz#37e86baacf6b1a0e9233dad4eb526d0423d08bf3"
+  integrity sha512-O62gD5ADMUGtJoOoM9U6LQ7i4byPXUNoHJ6mqsmkQJcom331ZJGDApWgDESWyBMEHEJRjtHozgIiTzYo9RU4UA==
+
 js-base64@^2.1.9:
   version "2.5.2"
   resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209"
@@ -3465,6 +3801,15 @@ json5@^2.1.2:
   dependencies:
     minimist "^1.2.5"
 
+jsonfile@^6.0.1:
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
+  integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==
+  dependencies:
+    universalify "^1.0.0"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
 jsprim@^1.2.2:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -3751,6 +4096,13 @@ make-dir@^2.0.0, make-dir@^2.1.0:
     pify "^4.0.1"
     semver "^5.6.0"
 
+make-dir@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+  integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+  dependencies:
+    semver "^6.0.0"
+
 map-cache@^0.2.2:
   version "0.2.2"
   resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
@@ -5297,7 +5649,7 @@ semver@7.0.0:
   resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
   integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
 
-semver@^6.1.2, semver@^6.3.0:
+semver@^6.0.0, semver@^6.1.2, semver@^6.3.0:
   version "6.3.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
   integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -6190,6 +6542,13 @@ uniq@^1.0.1:
   resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
   integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
 
+unique-string@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
+  integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
+  dependencies:
+    crypto-random-string "^2.0.0"
+
 unist-util-find-all-after@^1.0.2:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz#5751a8608834f41d117ad9c577770c5f2f1b2899"
@@ -6271,6 +6630,11 @@ unist-util-visit@^2.0.0:
     unist-util-is "^4.0.0"
     unist-util-visit-parents "^3.0.0"
 
+universalify@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
+  integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
+
 unpipe@1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -6387,6 +6751,11 @@ vfile@^4.0.0:
     unist-util-stringify-position "^2.0.0"
     vfile-message "^2.0.0"
 
+vscode-uri@^2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
+  integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
+
 wcwidth@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
@@ -6439,7 +6808,7 @@ wrappy@1:
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
   integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
 
-write-file-atomic@^3.0.3:
+write-file-atomic@^3.0.0, write-file-atomic@^3.0.3:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
   integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
@@ -6466,6 +6835,11 @@ x-is-string@^0.1.0:
   resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
   integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
 
+xdg-basedir@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
+  integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
+
 xregexp@2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
-- 
GitLab