Merge branch 'master' of github.com:ornicar/lila

* 'master' of github.com:ornicar/lila:
  New Crowdin updates (#9796)
  Check for i32x4.trunc_sat_f64x2_u_zero in diagnostics.html
  Use @types/web instead of TS-provided "dom" types
  Update Typescript to 4.4.3 for requestIdleCallback
  Update scaffeine to 5.1.1
  Update sbt-bloop to 1.4.9
  link benevity cause (closes #9784)
  Revert "fix weirdness in RawHtml mention regex"
  cache regex
  better clean up msgs
  filter profile info for mobile app
  tweak user profile code
pull/9807/head
Thibault Duplessis 2021-09-15 08:03:21 +02:00
commit 10166c3ca0
82 changed files with 265 additions and 127 deletions

View File

@ -313,7 +313,9 @@ ${payPalFormSingle(pricing, "lichess.org lifetime")}
),
dt(otherMethods()),
dd(
"Lichess is registered with Benevity.",
"Lichess is ",
a(href := "https://causes.benevity.org/causes/250-5789375887401_bf01")("registered with Benevity"),
".",
br,
a(href := assetUrl("doc/iban_LICHESS_ORG_00022031601.pdf"), targetBlank)(bankTransfers()),
".",

View File

@ -84,7 +84,8 @@ object String {
}
// https://www.compart.com/en/unicode/block/U+1F300
def removeMultibyteSymbols(str: String): String = str.replaceAll("\\p{So}+", "")
private val multibyteSymbolsRegex = "\\p{So}+".r
def removeMultibyteSymbols(str: String): String = multibyteSymbolsRegex.replaceAllIn(str, "")
def fullCleanUp(str: String) = removeMultibyteSymbols(removeGarbageChars(normalize(str.trim)))

View File

@ -42,7 +42,7 @@ final object RawHtml {
// word (i.e. preceded and followed by space or appropriate punctuation):
// Yes: everyone says @ornicar is a pretty cool guy
// No: contact@lichess.org, @1, http://example.com/@happy0, @lichess.org
val atUsernameRegex = """@(?<![\w@#/]@)([\w-]{2,30})(?![@\w-]|\.\w)""".r
val atUsernameRegex = """@(?<![\w@#/]@)([\w-]{2,30}+)(?![@\w-]|\.\w)""".r
private[this] val atUsernamePat = atUsernameRegex.pattern

View File

@ -33,9 +33,9 @@ object Msg {
}
def make(text: String, user: User.ID): Option[Msg] = {
val cleanText = text.trim
val cleanText = lila.common.String.normalize(text.trim take 8_000)
cleanText.nonEmpty option Msg(
text = cleanText take 10_000,
text = cleanText,
user = user,
date = DateTime.now
)

View File

@ -23,7 +23,7 @@ final class JsonView(isOnline: lila.socket.IsOnline) {
)
.add("disabled" -> u.disabled)
.add("tosViolation" -> u.lame)
.add("profile" -> u.profile.map(p => profileWrites.writes(p).noNull))
.add("profile" -> u.profile.map(p => profileWrites.writes(p.filterTroll(u.marks.troll)).noNull))
.add("seenAt" -> u.seenAt)
.add("patron" -> u.isPatron)
.add("playTime" -> u.playTime)

View File

@ -1,5 +1,7 @@
package lila.user
import cats.implicits._
case class Profile(
country: Option[String] = None,
location: Option[String] = None,
@ -16,9 +18,8 @@ case class Profile(
) {
def nonEmptyRealName =
List(ne(firstName), ne(lastName)).flatten match {
case Nil => none
case names => (names mkString " ").some
(ne(firstName) zip ne(lastName)) map { case (first, last) =>
s"$first $last"
}
def countryInfo = country flatMap Countries.info
@ -44,6 +45,14 @@ case class Profile(
cfcRating.map { OfficialRating("cfc", _) } orElse
dsbRating.map { OfficialRating("dsb", _) }
def filterTroll(troll: Boolean) = copy(
bio = bio ifFalse troll,
firstName = firstName ifFalse troll,
lastName = lastName ifFalse troll,
location = location ifFalse troll,
links = links ifFalse troll
)
private def ne(str: Option[String]) = str.filter(_.nonEmpty)
}

View File

@ -26,11 +26,12 @@
"xml2js": "0.4.23"
},
"devDependencies": {
"@types/web": "=0.0.32",
"@typescript-eslint/eslint-plugin": "^4.29.2",
"@typescript-eslint/parser": "^4.29.2",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.1.0",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"scripts": {
"format": "prettier --write .",

View File

@ -12,7 +12,7 @@ object Dependencies {
val compression = "org.lichess" %% "compression" % "1.6"
val maxmind = "com.sanoma.cda" %% "maxmind-geoip2-scala" % "1.3.1-THIB"
val prismic = "io.prismic" %% "scala-kit" % "1.2.19-THIB213"
val scaffeine = "com.github.blemale" %% "scaffeine" % "5.1.0" % "compile"
val scaffeine = "com.github.blemale" %% "scaffeine" % "5.1.1" % "compile"
val googleOAuth = "com.google.auth" % "google-auth-library-oauth2-http" % "1.1.0"
val scalaUri = "io.lemonlabs" %% "scala-uri" % "3.5.0"
val scalatags = "com.lihaoyi" %% "scalatags" % "0.9.4"

View File

@ -4,4 +4,4 @@ resolvers += Resolver.url(
)(Resolver.ivyStylePatterns)
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.8-lila_1.8")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.3")
addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.4.8-126-57329401")
addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.4.9")

View File

@ -24,7 +24,8 @@ function wasmInfo() {
if (!info.mvp) return info;
info.simd = {
'i32x4.dot_i16x8_s': WebAssembly.validate(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 7, 8, 1, 4, 116, 101, 115, 116, 0, 0, 10, 15, 1, 13, 0, 65, 0, 253, 17, 65, 0, 253, 17, 253, 186, 1, 11))
'i32x4.dot_i16x8_s': WebAssembly.validate(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 7, 8, 1, 4, 116, 101, 115, 116, 0, 0, 10, 15, 1, 13, 0, 65, 0, 253, 17, 65, 0, 253, 17, 253, 186, 1, 11)),
'i32x4.trunc_sat_f64x2_u_zero': WebAssembly.validate(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 6, 1, 96, 1, 123, 1, 123, 3, 2, 1, 0, 7, 5, 1, 1, 97, 0, 0, 10, 9, 1, 7, 0, 32, 0, 253, 253, 1, 11)),
};
if (info.SharedArrayBuffer !== 'function') return info;

View File

@ -7,8 +7,8 @@
<item quantity="other">Har støttet lichess.org i %1$s måneder som en %2$s</item>
</plurals>
<plurals name="practicedNbPositions">
<item quantity="one">Øvede %1$s position i %2$s</item>
<item quantity="other">Øvede %1$s positioner i %2$s</item>
<item quantity="one">Øvede %1$s stilling i %2$s</item>
<item quantity="other">Øvede %1$s stillinger i %2$s</item>
</plurals>
<plurals name="solvedNbPuzzles">
<item quantity="one">Løste %s taktisk opgave</item>

View File

@ -2,10 +2,23 @@
<resources>
<string name="arenaTournaments">Arena Turnéier</string>
<string name="isItRated">Ass et gewäert?</string>
<string name="willBeNotified">Mir soen dir Bescheed wann den Turnéier ufänkt, du kanns also an der Zwëschenzäit an engem aneren Tab spillen.</string>
<string name="isRated">Dësen Turnéier ass gewäert an beaflosst déng Wäertung.</string>
<string name="isNotRated">Dësen Turnéier ass *net* gewäert an beaflosst déng Wäertung *net*.</string>
<string name="someRated">Verschidden Turnéier sinn gewäert an beaflossen deng Wäertung.</string>
<string name="howAreScoresCalculated">Wéi ginn d\'Punkten berechent?</string>
<string name="berserk">Arena Berserk</string>
<string name="howIsTheWinnerDecided">Wéi gëtt den Gewënner bestëmmt?</string>
<string name="howDoesPairingWork">Wéi funktionéieren d\'Puerungen?</string>
<string name="howDoesItEnd">Wéi hält et op?</string>
<string name="otherRules">Aner wichteg Reegelen</string>
<string name="thisIsPrivate">Dësen Turnéier ass privat</string>
<string name="shareUrl">Deel dës URL, dass aner Leit bäitrieden kënnen: %s</string>
<string name="history">Arena-Geschicht</string>
<plurals name="viewAllXTeams" comment="viewAllXTeams [one] [other]&#10;&#10;%s is the number of teams that can be viewed">
<item quantity="one">Ekipp ukucken</item>
<item quantity="other">All %s Ekippen ukucken</item>
</plurals>
<string name="newTeamBattle">Neien Ekippenkampf</string>
<string name="allowBerserk">Berserk erlaben</string>
</resources>

View File

@ -24,4 +24,5 @@
<string name="broadcastUrl">رابط البث</string>
<string name="currentRoundUrl">رابط الجولة الحالية</string>
<string name="currentGameUrl">رابط المباراة الحالية</string>
<string name="downloadAllRounds">تحميل جميع المباريات</string>
</resources>

View File

@ -46,6 +46,7 @@
<string name="createDesc2">لا يطلب عنوان بريد إلكتروني. سيتم إنشاء كلمة مرور، وعليك إرسالها إلى الطالب، حتى يمكنهم تسجيل الدخول.</string>
<string name="createDesc3">هام: يجب ألا يملك للطالب حسابات متعددة.</string>
<string name="createDesc4">إذا كان لديهم واحد، استخدم نموذج الدعوة بدلاً من ذلك.</string>
<string name="createStudentWarning" comment="createStudentWarning&#10;&#10;A warning to people that may look to abuse special teacher accounts (https://lichess.org/class).">فقط قم بإنشاء حسابات للطلاب الحقيقين. لا تقم بإنشاء حسابات متتعدة لنفسك و إلا ستتعرض للحظر.</string>
<string name="lichessUsername">اسم المستخدم على ليتشيس</string>
<string name="generateANewUsername">إنشاء اسم مستخدم جديد</string>
<string name="welcomeToClass">مرحبا بك في فصلك: %s.

View File

@ -46,7 +46,7 @@
<string name="castlingPrevented">Rokade forhindres kun, hvis kongen passerer gennem et kontrolleret felt.</string>
<string name="castlingRules">Vær sikker på, at du forstår reglerne for rokade</string>
<string name="tryCastling">Prøve dette lille interaktive spil for at øve rokade i skak</string>
<string name="castlingImported">Sikr dig, at du har indstillet rokade-rettighederne korrekt, hvis du har importeret partiet eller startet det fra en position.</string>
<string name="castlingImported">Sikr dig, at du har indstillet rokade-rettighederne korrekt, hvis du har importeret partiet eller startet det fra en stilling.</string>
<string name="insufficientMaterial">Utilstrækkeligt materiale til at sætte mat</string>
<string name="fideMate">Ifølge FIDEs regler for skak §6.9, er et parti ikke remis, hvis en skakmat er mulig med en lovlig rækkefølge af træk</string>
<string name="knightMate">Det er muligt at sætte skakmat med blot en springer eller løber, hvis modstanderen har mere end en konge på brættet.</string>

View File

@ -37,19 +37,19 @@
<string name="lichessSupportChessAnd">Lichess understøtter standardskak og %1$s.</string>
<string name="eightVariants">8 skakvarianter</string>
<string name="whatIsACPL">Hvad er \"Gennemsnitligt centibonde-tab\"/GCBT?</string>
<string name="acplExplanation">En centibonde er et mål, som bruges i skak som en repræsentation af fordelen. En centibonde svarer til en hundrededel (1/100) af en bonde. Derfor er 100 centibønder = 1 bonde. Disse værdier spiller ingen formel rolle i partiet, men er nyttige for spillerne og essentielle i computerskak ved evalueringen af positioner.
<string name="acplExplanation">En centibonde er et mål, som bruges i skak som en repræsentation af fordelen. En centibonde svarer til en hundrededel (1/100) af en bonde. Derfor er 100 centibønder = 1 bonde. Disse værdier spiller ingen formel rolle i partiet, men er nyttige for spillerne og essentielle i computerskak ved evalueringen af stillinger.
Det bedste computertræk vil koste nul centibønder, mens svagere træk vil medføre en forværring af positionen, målt i centibønder.
Det bedste computertræk vil koste nul centibønder, mens svagere træk vil medføre en forværring af stillingen, målt i centibønder.
Denne værdi kan bruges som en indikator for spilkvalitet. Desto færre centibønder der tabes per træk, desto stærkere spilles der.
Computeranalysen på Lichess leveres ved hjælp af Stockfish.</string>
<string name="insufficientMaterial">Tabe på tid, remis og utilstrækkeligt materiale</string>
<string name="lichessFollowFIDErules">Hvis en spiller løber tør for tid, vil denne spiller som regel tabe partiet. Partiet ender dog med remis, hvis positionen er således at modstanderen ikke kan sætte spillerens konge skakmat med en række lovlige træk (%1$s).
<string name="lichessFollowFIDErules">Hvis en spiller løber tør for tid, vil denne spiller som regel tabe partiet. Partiet ender dog med remis, hvis stillingen er således at modstanderen ikke kan sætte spillerens konge skakmat med en række lovlige træk (%1$s).
I sjældne tilfælde kan dette være vanskeligt at afgøre automatisk (fremtvungne linjer, fæstninger). Som udgangspunkt holder vi altid med den spiller, som ikke løb tør for tid.
I sjældne tilfælde kan dette være vanskeligt at afgøre automatisk (fremtvungne linjer, fæstninger). Som udgangspunkt holder vi altid med den spiller, som ikke løb tør for tid.
Bemærk at det kan være muligt at sætte mat med en enkelt springer eller løber, hvis modstanderen har en brik, som kan blokere kongen.</string>
Bemærk at det kan være muligt at sætte mat med en enkelt springer eller løber, hvis modstanderen har en brik, som kan blokere kongen.</string>
<string name="fideHandbookX">FIDE håndbog %s</string>
<string name="discoveringEnPassant">Hvorfor kan en bonde tage en anden bonde, når den allerede er passeret? (en passant)</string>
<string name="explainingEnPassant">Dette er et lovligt træk kendt som \"en passant\". Wikipedia-artiklen giver en %1$s.
@ -63,13 +63,13 @@ Tjek %3$s for dette træk og for at øve det.</string>
<string name="officialRulesPDF">officielle regler (pdf)</string>
<string name="lichessTraining">Lichess træning</string>
<string name="threefoldRepetition">Trækgentagelse</string>
<string name="threefoldRepetitionExplanation">Hvis en position forekommer tre gange, kan spillerne kræve remis ved %1$s. Lichess implementerer de officielle FIDE-regler som beskrevet i Artikel 9.2 (d) i %2$s.</string>
<string name="threefoldRepetitionExplanation">Hvis en stilling forekommer tre gange, kan spillere forlange remis ved %1$s. Lichess implementerer de officielle FIDE-regler som beskrevet i Artikel 9.2 (d) i %2$s.</string>
<string name="threefoldRepetitionLowerCase">trækgentagelse</string>
<string name="notRepeatedMoves">Vi gentog ikke træk. Hvorfor endte partiet alligevel med remis ved trækgentagelse?</string>
<string name="repeatedPositionsThatMatters">Trækgentagelse vedrører gentagende %1$s, ikke træk. Gentagelse behøver ikke at ske lige efter hinanden.</string>
<string name="positions">positioner</string>
<string name="weRepeatedthreeTimesPosButNoDraw">Vi gentog en position tre gange. Hvorfor var partiet ikke remis?</string>
<string name="threeFoldHasToBeClaimed">Trækgentagelse skal kræves af en af spillerne. Du kan gøre dette ved at trykke på knappen, som dukker op, eller ved at tilbyde remis før du laver dit endelige gentagende træk. Du kan også %1$s Lichess til automatisk at kræve trækgentagelse for dig. Derudover vil femfoldig altid øjeblikkeligt afslutte partiet.</string>
<string name="positions">stillinger</string>
<string name="weRepeatedthreeTimesPosButNoDraw">Vi gentog en stilling tre gange. Hvorfor var partiet ikke remis?</string>
<string name="threeFoldHasToBeClaimed">Trækgentagelse skal kræves af en af spillerne. Du kan gøre dette ved at trykke på knappen, som dukker op, eller ved at tilbyde remis før du laver dit endelige gentagende træk. Du kan også %1$s Lichess til automatisk at kræve trækgentagelse for dig. Derudover vil femfoldig trækgentagelse altid øjeblikkeligt afslutte partiet.</string>
<string name="configure">konfigurér</string>
<string name="accounts">Konti</string>
<string name="titlesAvailableOnLichess">Hvilke titler er der på Lichess?</string>

View File

@ -6,4 +6,31 @@
<string name="howCanIContributeToLichess">Wéi kann ech zu Lichess bäidroen?</string>
<string name="areThereWebsitesBasedOnLichess">Ginn et Websäiten déi op Lichess baséieren?</string>
<string name="fairPlay">Fair Play</string>
<string name="whenAmIEligibleRatinRefund">Wéi qualifizéieren ech mech fir eng automatesch Wäertungsréckerstattung?</string>
<string name="preventLeavingGameWithoutResigning">Wat geschitt mat Spiller, déi eng Partie verloossen, ouni opzeginn?</string>
<string name="howCanIBecomeModerator">Wéi kann ech e Moderator ginn?</string>
<string name="isCorrespondenceDifferent">Wéi ënnerscheeden sech Korrespondenz an normalen Schach?</string>
<string name="gameplay">Spillerliefnis</string>
<string name="howBulletBlitzEtcDecided">Wat decidéiert op eng Zäitkontroll Bullet, Blitz oder eng aner ass?</string>
<string name="whatVariantsCanIplay">Wéieng Varianten kann ech op Lichess spillen?</string>
<string name="whatIsACPL">Wat ass den duerchschnëttlechen Honnertselbauerverloscht (ACPL)?</string>
<string name="insufficientMaterial">Op Zäit verléieren, Remis an ongenügend Material</string>
<string name="fideHandbookX">FIDE Handbuch %s</string>
<string name="discoveringEnPassant">Firwat kann e Bauern een aneren Bauer schloen, wann hien laanscht gezunn huet? (en passant)</string>
<string name="threefoldRepetition">Dräifach Stellungswidderhuelung</string>
<string name="accounts">Konten</string>
<string name="titlesAvailableOnLichess">Wéieng Titel ginn et op Lichess?</string>
<string name="canIbecomeLM">Kann ech den Lichess Meeschter (LM) Titel kréien?</string>
<string name="whatUsernameCanIchoose">Wéi kann mäin Benotzernumm ausgesinn?</string>
<string name="guidelines">Richtlinnen</string>
<string name="canIChangeMyUsername">Kann ech mäin Benotzernumm änneren?</string>
<string name="uniqueTrophies">Eenzegaarteg Trophäen</string>
<string name="lichessRatings">Lichess Wäertungen</string>
<string name="whichRatingSystemUsedByLichess">Wéieen Wäertungssystem benotzt Lichess?</string>
<string name="whatIsProvisionalRating">Firwat ass en Fragezeichen (?) nieft enger Wäertung?</string>
<string name="howDoLeaderoardsWork">Wéi funktionéieren Räng and Ranglëschten?</string>
<string name="whyAreRatingHigher">Firwat sin Wäertungen méi héich wéi op aneren Plazen wéi FIDE, USCF oder ICC?</string>
<string name="howToHideRatingWhilePlaying">Wéi kann ech Wäertungen wärend dem Spillen verstoppen?</string>
<string name="connexionLostCanIGetMyRatingBack">Ech hunn eng Partie wéinst Lag/Verbindungsverloscht verluer. Kann ech meng Wäertungspunkten zeréckkréien?</string>
<string name="enableDisableNotificationPopUps">Notifikatiouns-Popups aktivéieren an desaktivéieren?</string>
</resources>

View File

@ -93,7 +93,7 @@
<string name="boardSetup">Opstilling</string>
<string name="howTheGameStarts">Hvordan spillet starter</string>
<string name="boardSetupIntro">De to hære står overfor hinanden, klar til slaget.</string>
<string name="thisIsTheInitialPosition">Dette er udgangspositionen for alle skakspil! Lav et hvilket som helst træk for at fortsætte.</string>
<string name="thisIsTheInitialPosition">Dette er udgangsstillingen for alle skakpartier! Lav et hvilket som helst træk for at fortsætte.</string>
<string name="firstPlaceTheRooks">Placer tårnene! De hører til i hjørnerne.</string>
<string name="thenPlaceTheKnights">Placer dernæst springerne! De skal stå ved siden af tårnene.</string>
<string name="placeTheBishops">Placer løberne! De skal stå ved siden af springerne.</string>
@ -163,7 +163,7 @@ Bonde = 1</string>
<string name="register">Registrer</string>
<string name="getAFreeLichessAccount">Få en gratis Lichess konto</string>
<string name="practice">Øvelser</string>
<string name="learnCommonChessPositions">Lær almindelige skakpositioner</string>
<string name="learnCommonChessPositions">Lær almindelige skakstillinger</string>
<string name="puzzles">Opgaver</string>
<string name="exerciseYourTacticalSkills">Træn dine taktiske evner</string>
<string name="videos">Videoer</string>

View File

@ -31,7 +31,7 @@
<string name="inCasualGamesOnly">Kun i ikke-ratede spil</string>
<string name="promoteToQueenAutomatically">Forfrem til Dronning automatisk</string>
<string name="whenPremoving">Ved forhåndstræk</string>
<string name="claimDrawOnThreefoldRepetitionAutomatically">Kræv automatisk remis ved trefoldig gentagelse</string>
<string name="claimDrawOnThreefoldRepetitionAutomatically">Kræv automatisk remis ved trækgentagelse</string>
<string name="whenTimeRemainingLessThanThirtySeconds">Når tilbageværende tid &lt; 30 sekunder</string>
<string name="moveConfirmation">Bekræft træk</string>
<string name="inCorrespondenceGames">I korrespondancepartier</string>

View File

@ -8,6 +8,7 @@
<string name="pieceDestinations">Destinationes scaccorum (motus et praemotus rati)</string>
<string name="boardCoordinates">Coordinatae tabulae (A-H, 1-8)</string>
<string name="moveListWhilePlaying">Index motuum</string>
<string name="pgnPieceNotation">Notatio motuum</string>
<string name="chessPieceSymbol">Signum scaccarii</string>
<string name="pgnLetter">Ars (K, Q, R, B, N)</string>
<string name="zenMode" comment="zenMode&#10;&#10;This is not the religious meaning. Turning this option on takes away make elements of the user interface.&#10;&#10;Can also translate as 'Focus mode' as one example.">Modus Zenonis</string>
@ -18,6 +19,8 @@
<string name="horizontalGreenProgressBars">Regula progressus viridis</string>
<string name="soundWhenTimeGetsCritical">Sonus cum tempore maximi momenti</string>
<string name="giveMoreTime">Da tempus</string>
<string name="gameBehavior" comment="gameBehavior&#10;&#10;In the user settings page, &quot;Game behavior&quot; is the title of the tab for configuring how the player can interact with the game.">Lusi mores</string>
<string name="howDoYouMovePieces">Quomodo milites movebuntur?</string>
<string name="clickTwoSquares">Clige duorum quadratorum</string>
<string name="dragPiece">Fragmen congrega</string>
<string name="bothClicksAndDrag">Tum</string>
@ -31,5 +34,9 @@
<string name="moveConfirmation">Confirmatio motu</string>
<string name="inCorrespondenceGames">Ludi longinqui</string>
<string name="correspondenceAndUnlimited">per epistolam et immoderatus</string>
<string name="castleByMovingTheKingTwoSquaresOrOntoTheRook">Adroccandi ratio</string>
<string name="castleByMovingTwoSquares">Regem movere in secundum quadrum</string>
<string name="castleByMovingOntoTheRook">Regem super turrim movere</string>
<string name="sayGgWpAfterLosingOrDrawing" comment="sayGgWpAfterLosingOrDrawing&#10;&#10;When enabled, this setting will automatically send 'Good game, well played' to your opponent if you are lose or draw the game. It's meant as a courtesy message.&#10;&#10;The message will be sent in ENGLISH.&#10;&#10;It is up to you how to deal with this. For example, you may want to put '(message will be sent in English)' in your translated text as one example. Or you can leave the actual English text and put a brief translation in your own language.">\"Bene lusimus illum lusum\" dicere te victum vel ludu ancipe</string>
<string name="yourPreferencesHaveBeenSaved">Praeposititiones tuae conservatae sunt.</string>
</resources>

View File

@ -53,6 +53,8 @@
<string name="blackResigned">الأسود استسلم</string>
<string name="whiteLeftTheGame">الأبيض ترك المباراة</string>
<string name="blackLeftTheGame">الأسود ترك المباراة</string>
<string name="whiteDidntMove">لم يقم الأبيض بالحركة</string>
<string name="blackDidntMove">لم يقم الأبيض بالحركة</string>
<string name="shareThisUrlToLetSpectatorsSeeTheGame">شارك هذا الرابط ليرى المشاهدون المباراة</string>
<string name="theComputerAnalysisHasFailed">فشل تحليل الحاسب</string>
<string name="viewTheComputerAnalysis">عرض تحليل الحاسب</string>
@ -98,6 +100,7 @@
<item quantity="many">مات في %s نصف-نقلة</item>
<item quantity="other">مات في %s نصف-نقلة</item>
</plurals>
<string name="dtzWithRounding">DTZ50\'\' مع تقريب ، استنادًا إلى عدد من نصف التحركات حتى التقاط أو نقل بياض التالي</string>
<string name="noGameFound">لم يتم العثور على مباريات</string>
<string name="maybeIncludeMoreGamesFromThePreferencesMenu">أترغب في ضم مباريات أكثر من قائمة التفضيلات؟</string>
<string name="openingExplorer">مستكشف الافتتاحيات</string>
@ -105,6 +108,9 @@
<string name="xOpeningExplorer">مستكشف افتتاحيات %s</string>
<string name="winPreventedBy50MoveRule">قاعدة ال 50 نقلة منعت الفوز</string>
<string name="lossSavedBy50MoveRule">قاعدة ال 50 نقلة منعت الخسارة</string>
<string name="winOr50MovesByPriorMistake">فوز أو 50 حركة عن طريق خطأ سابق</string>
<string name="lossOr50MovesByPriorMistake">خسارة أو 50 نقلة عن طريق خطأ سابق</string>
<string name="unknownDueToRounding">فالفوز/الخسارة المكفولة فقط إذا كان خط الأساس الموصى به قد اتبع منذ آخر عملية لالتقاط أو تحريك للبياء، بسبب احتمال تقريب الأرباح.</string>
<string name="allSet">إعتمد كل الإعدادات!</string>
<string name="importPgn">استيراد PGN</string>
<string name="delete">حذف</string>

View File

@ -19,7 +19,7 @@
<string name="white">Hvid</string>
<string name="black">Sort</string>
<string name="randomColor">Tilfældig farve</string>
<string name="createAGame">Start et parti</string>
<string name="createAGame">Opret et parti</string>
<string name="whiteIsVictorious">Hvid har vundet</string>
<string name="blackIsVictorious">Sort har vundet</string>
<string name="youPlayTheWhitePieces">Du spiller med de hvide brikker</string>
@ -31,20 +31,20 @@
<string name="raceFinished">Race færdigt</string>
<string name="variantEnding">Variantafslutning</string>
<string name="newOpponent">Ny modstander</string>
<string name="yourOpponentWantsToPlayANewGameWithYou">Din modstander vil gerne spille et nyt spil</string>
<string name="yourOpponentWantsToPlayANewGameWithYou">Din modstander vil gerne spille et nyt parti</string>
<string name="joinTheGame">Deltag i spillet</string>
<string name="whitePlays">Hvid i trækket</string>
<string name="blackPlays">Sort i trækket</string>
<plurals name="opponentLeftCounter">
<item quantity="one">Din modstander har forladt spillet. Du kan kræve sejr om %s sekund.</item>
<item quantity="other">Din modstander har forladt spillet. Du kan kræve sejr om %s sekunder.</item>
<item quantity="one">Din modstander har forladt partiet. Du kan kræve sejr om %s sekund.</item>
<item quantity="other">Din modstander har forladt partiet. Du kan kræve sejr om %s sekunder.</item>
</plurals>
<string name="opponentLeftChoices">Din modstander har forladt spillet. Du kan fremtvinge modstanderens kapitulation eller vente.</string>
<string name="opponentLeftChoices">Din modstander har forladt partiet. Du kan fremtvinge modstanderens kapitulation eller vente.</string>
<string name="makeYourOpponentResign">Tving din modstander til at kapitulere</string>
<string name="forceResignation">Kræv sejr</string>
<string name="forceDraw">Fremtving remis</string>
<string name="forceDraw">Kræv remis</string>
<string name="talkInChat">Husk den gode tone i chatten!</string>
<string name="theFirstPersonToComeOnThisUrlWillPlayWithYou">Den første person der bruger denne URL, vil blive din modstander</string>
<string name="theFirstPersonToComeOnThisUrlWillPlayWithYou">Den første person der bruger denne URL, vil blive din modstander.</string>
<string name="whiteResigned">Hvid opgav</string>
<string name="blackResigned">Sort opgav</string>
<string name="whiteLeftTheGame">Hvid forlod partiet</string>
@ -87,7 +87,7 @@
<string name="averageRatingX">Gennemsnitlig rating: %s</string>
<string name="recentGames">Seneste partier</string>
<string name="topGames">Top-partier</string>
<string name="masterDbExplanation">To millioner ikke online spil af %1$s + FIDE ratede spillere fra %2$s til %3$s</string>
<string name="masterDbExplanation">To millioner ikke-online partier af %1$s+ FIDE-ratede spillere fra %2$s til %3$s</string>
<plurals name="mateInXHalfMoves">
<item quantity="one">Mat i %s halv-træk</item>
<item quantity="other">Mat i %s halv-træk</item>
@ -113,7 +113,7 @@
<string name="openStudy">Åben studie</string>
<string name="enable">Aktiver</string>
<string name="bestMoveArrow">Bedste træk pil</string>
<string name="evaluationGauge">Evalueringsbar</string>
<string name="evaluationGauge">Evalueringsindikator</string>
<string name="multipleLines">Flere linjer</string>
<string name="cpus">CPU\'er</string>
<string name="memory">Hukommelse</string>
@ -148,8 +148,8 @@
<string name="fiftyMovesWithoutProgress">Halvtreds træk uden fremskridt</string>
<string name="currentGames">Igangværende partier</string>
<plurals name="nbGames">
<item quantity="one">Se %s parti</item>
<item quantity="other">Se alle %s partier</item>
<item quantity="one">%s parti</item>
<item quantity="other">%s partier</item>
</plurals>
<plurals name="nbBookmarks">
<item quantity="one">%s bogmærke</item>
@ -445,12 +445,12 @@
<string name="boardEditor">Opstilling</string>
<string name="setTheBoard">Opstil bræt</string>
<string name="popularOpenings">Populære åbninger</string>
<string name="endgamePositions">Slutspilspositioner</string>
<string name="endgamePositions">Slutspilsstillinger</string>
<string name="chess960StartPosition">Chess960 startposition: %s</string>
<string name="startPosition">Startopstilling</string>
<string name="clearBoard">Fjern alle brikker</string>
<string name="savePosition">Gem stilling</string>
<string name="loadPosition">Indlæs position</string>
<string name="loadPosition">Indlæs stilling</string>
<string name="isPrivate">Privat</string>
<string name="reportXToModerators">Rapporter %s til administratorer</string>
<string name="profileCompletion">Profil færdiggørelse: %s</string>
@ -863,7 +863,7 @@
<string name="youHaveJoinedTeamX">Du har sluttet dig til \"%1$s\".</string>
<string name="someoneYouReportedWasBanned">Nogen du rapporterede blev udelukket</string>
<string name="congratsYouWon">Tillykke, du vandt!</string>
<string name="gameVsX">Spil mod %1$s</string>
<string name="gameVsX">Parti mod %1$s</string>
<string name="resVsX">%1$s mod %2$s</string>
<string name="someoneReviewedYourCoachProfile">Nogen har gennemgået din trænerprofil.</string>
<string name="newPendingReview">Ny afventende gennemgang</string>
@ -889,10 +889,10 @@ og påvirker spilleres ratings</string>
<string name="maximumWeeklyRating">Maksimal ugentlig rating</string>
<string name="onlyTitled">Kun spilere med titel</string>
<string name="onlyTitledHelp">Kræv en officiel titel for at deltage i turneringen</string>
<string name="positionInputHelp">Indsæt en gyldig FEN for at starte hvert parti fra en given position.
<string name="positionInputHelp">Indsæt en gyldig FEN for at starte hvert parti fra en given stilling.
Det virker kun for standardspil, ikke med varianter.
Du kan bruge %s til at generere en FEN-position og derefter indsætte den her.
Lad stå tomt for at starte partier fra den normale udgangsposition.</string>
Du kan bruge %s til at generere en FEN-stilling og derefter indsætte den her.
Lad stå tomt for at starte partier fra den normale udgangsstilling.</string>
<string name="cancelSimul">Annuller simultanen</string>
<string name="simulHostcolor">Værtsfarve for hvert parti</string>
<string name="estimatedStart">Anslået starttidspunkt</string>

View File

@ -92,6 +92,7 @@
<item quantity="one">Matt om %s halvtrekk</item>
<item quantity="other">Matt om %s halvtrekk</item>
</plurals>
<string name="dtzWithRounding">DTZ50\'\' med avrunding, basert på antall halvtrekk til neste slag eller bondetrekk</string>
<string name="noGameFound">Intet parti funnet</string>
<string name="maybeIncludeMoreGamesFromThePreferencesMenu">Kanskje inkludere flere parti fra preferansemenyen?</string>
<string name="openingExplorer">Åpningsutforsker</string>
@ -99,6 +100,9 @@
<string name="xOpeningExplorer">Åpningsutforsker for %s</string>
<string name="winPreventedBy50MoveRule">Seier hindret av 50-trekksregelen</string>
<string name="lossSavedBy50MoveRule">Tap forhindret av 50-trekkregelen</string>
<string name="winOr50MovesByPriorMistake">Seier eller 50 trekk etter tidligere feil</string>
<string name="lossOr50MovesByPriorMistake">Tap eller 50 trekk etter tidligere feil</string>
<string name="unknownDueToRounding">Seier/tap bare garantert dersom anbefalte trekk fra tabellbasen er fulgt siden siste slag eller bondetrekk, grunnet mulig avrunding.</string>
<string name="allSet">Alt klart!</string>
<string name="importPgn">Importér PGN-fil</string>
<string name="delete">Slett</string>

View File

@ -51,4 +51,5 @@
<string name="skipHelp">You can skip one move per race:</string>
<string name="skipExplanation">Skip this move to preserve your combo! Only works once per race.</string>
<string name="failedPuzzles">Failed puzzles</string>
<string name="slowPuzzles">Slow puzzles</string>
</resources>

View File

@ -48,4 +48,6 @@
<string name="skip">lewati</string>
<string name="skipHelp">Anda dapat melewati satu gerakan per pertandingan:</string>
<string name="skipExplanation">Lewati gerakan ini untuk mempertahankan kombo Anda! Hanya bekerja sekali per pertandingan.</string>
<string name="failedPuzzles">Teka-teki yang gagal</string>
<string name="slowPuzzles">Teka-teki yang memakan waktu</string>
</resources>

View File

@ -2,4 +2,24 @@
<resources>
<string name="lichessStreamers">Lichess Streamer</string>
<string name="lichessStreamer">Lichess Streamer</string>
<string name="live">LIVE!</string>
<string name="offline">OFFLINE</string>
<string name="currentlyStreaming">Streamt grad: %s</string>
<string name="lastStream">Leschte Stream: %s</string>
<string name="becomeStreamer">Wäert e Lichess Streamer</string>
<string name="doYouHaveStream">Hues du en Twitch oder YouTube-Kanal?</string>
<string name="hereWeGo">Lass geet et!</string>
<string name="allStreamers">All Streamer</string>
<string name="editPage">Streamersäit beaarbechten</string>
<string name="yourPage">Deng Streamersäit</string>
<string name="downloadKit">Lued d\'Streamerkit erof</string>
<string name="xIsStreaming">%s streamt grad</string>
<string name="rules">Streaming-Reegelen</string>
<string name="rule1">Füg d\'Stéchwuert \"lichess.org\" an dengem Streamtitel an, oder verwend d\'Kategorie \"Chess\", wann s du op Lichess streamst.</string>
<string name="rule2">Sträich d\'Stéchwuert, wann s du grad näicht mat Lichess streamst.</string>
<string name="rule3">Lichess wäert däin Stream automatesch erkennen an follgend Zousazdéngscht aktivéieren:</string>
<string name="rule4" comment="the resulting message is: Read our streaming Fairplay FAQ to ensure a fair play for everyone in your stream">Lies eis %s fir Fairplay fir jiddereen wärend denge Streams ze garantéieren.</string>
<string name="streamingFairplayFAQ">Streaming Fairplay FAQ</string>
<string name="perks">Virdeeler fir Streaming mat engem Stéchwuert</string>
<string name="longDescription">Laang Beschreiwung</string>
</resources>

View File

@ -42,14 +42,14 @@
<string name="pgnTags">PGN tags</string>
<string name="like">Synes godt om</string>
<string name="newTag">Nyt tag</string>
<string name="commentThisPosition">Kommenter på denne position</string>
<string name="commentThisPosition">Kommenter på denne stilling</string>
<string name="commentThisMove">Kommenter på dette træk</string>
<string name="annotateWithGlyphs">Annoter med glyffer</string>
<string name="theChapterIsTooShortToBeAnalysed">Dette kapitel er for kort til at blive analyseret.</string>
<string name="onlyContributorsCanRequestAnalysis">Kun studiets bidragsydere kan anmode om en computeranalyse.</string>
<string name="getAFullComputerAnalysis">Få en fuld server-computeranalyse af hovedlinjen.</string>
<string name="makeSureTheChapterIsComplete">Sikr dig at kapitlet er færdigt. Du kan kun anmode om analyse én gang.</string>
<string name="allSyncMembersRemainOnTheSamePosition">Alle SYNC medlemmer forbliver på samme position</string>
<string name="allSyncMembersRemainOnTheSamePosition">Alle SYNC medlemmer forbliver på samme stilling</string>
<string name="shareChanges">Del ændringer med tilskuere og gem dem på serveren</string>
<string name="playing">Spiller</string>
<string name="first">Første</string>
@ -65,7 +65,7 @@
<string name="studyUrl">Studie URL</string>
<string name="currentChapterUrl">Nuværende kapitel URL</string>
<string name="youCanPasteThisInTheForumToEmbed">Du kan indsætte dette i forummet for at indlejre</string>
<string name="startAtInitialPosition">Start ved indledende position</string>
<string name="startAtInitialPosition">Start ved indledende stilling</string>
<string name="startAtX">Start ved %s</string>
<string name="embedInYourWebsite">Indlejr på din hjemmeside eller blog</string>
<string name="readMoreAboutEmbedding">Læs mere om indlejring</string>
@ -90,11 +90,11 @@
<string name="interactiveLesson">Interaktiv lektion</string>
<string name="chapterX">Kapitel %s</string>
<string name="empty">Tom</string>
<string name="startFromInitialPosition">Start ved indledende position</string>
<string name="startFromInitialPosition">Start ved indledende stilling</string>
<string name="editor">Editor</string>
<string name="startFromCustomPosition">Start fra brugerdefinerede position</string>
<string name="startFromCustomPosition">Start fra brugerdefinerede stilling</string>
<string name="loadAGameByUrl">Indlæs et parti fra URL</string>
<string name="loadAPositionFromFen">Indlæs en position fra FEN</string>
<string name="loadAPositionFromFen">Indlæs en stilling fra FEN</string>
<string name="loadAGameFromPgn">Indlæs et parti fra PGN</string>
<string name="automatic">Automatisk</string>
<plurals name="pasteYourPgnTextHereUpToNbGames">
@ -118,7 +118,7 @@
<string name="members">Medlemmer</string>
<string name="everyone">Enhver</string>
<string name="enableSync">Aktiver synk</string>
<string name="yesKeepEveryoneOnTheSamePosition">Ja: behold alle på den samme position</string>
<string name="yesKeepEveryoneOnTheSamePosition">Ja: behold alle på den samme stilling</string>
<string name="noLetPeopleBrowseFreely">Nej: lad folk gennemse frit</string>
<string name="pinnedStudyComment">Fastgjort studie-kommentar</string>
<string name="start">Start</string>
@ -136,8 +136,8 @@
<string name="dubiousMove" comment="dubiousMove&#10;A questionable move.">Tvivlsomt træk</string>
<string name="onlyMove" comment="onlyMove&#10;The only possible move. This is a label that can be placed in a study of a past game. It may not technically be the only move, but the only feasible one.">Eneste mulige træk</string>
<string name="zugzwang" comment="zugzwang&#10;What zugzwang is: https://lichess.org/practice/intermediate-tactics/zugzwang/9cKgYrHb/ybYJ9gNa&#10;&#10;This specific string is a label that can be applied to a position in a study, to indicate one side is in zugzwang.">Zugzwang</string>
<string name="equalPosition">Lige position</string>
<string name="unclearPosition" comment="unclearPosition&#10;It is unclear who is winning or losing.">Uafklaret position</string>
<string name="equalPosition">Lige stilling</string>
<string name="unclearPosition" comment="unclearPosition&#10;It is unclear who is winning or losing.">Uafklaret stilling</string>
<string name="whiteIsSlightlyBetter">Hvid står lidt bedre</string>
<string name="blackIsSlightlyBetter">Sort står lidt bedre</string>
<string name="whiteIsBetter">Hvid står bedre</string>

View File

@ -41,6 +41,7 @@
</plurals>
<string name="willBeReviewed">سيتم النظر في طلب انضمامك من قبل قائد الفريق.</string>
<string name="beingReviewed">طلب انضمامك مازال يتم النظر فيه من قبل قائد الفريق.</string>
<string name="requestDeclined">طلب انضمامك للفريق قد تم رفضه من قبل القائد.</string>
<string name="subToTeamMessages">الاشتراك في رسائل الفريق</string>
<string name="teamBattle">معركة الفرق</string>
<string name="teamBattleOverview">معركة بين مجموعة فرق، كل لاعب يحرز النقاط لفريقه</string>
@ -64,4 +65,5 @@
<string name="teamAlreadyExists">هذا الفريق موجود بالفعل.</string>
<string name="upcomingTourns">البطولات القادمة</string>
<string name="completedTourns">البطولات المنتهية</string>
<string name="declinedRequests" comment="declinedRequests&#10;&#10;Visible to team leaders - requests to join the team that have been declined.">الطلبات المرفوضة</string>
</resources>

View File

@ -3,6 +3,7 @@
<string name="xBlog">مدونة %s</string>
<string name="newPost">منشور جديد</string>
<string name="editYourBlogPost">تعديل منشور مدونتك</string>
<string name="saveDraft">حفظ المسودة</string>
<string name="postTitle">عنوان المنشور</string>
<string name="postIntro">مقدمة المنشور</string>
<string name="postBody">نص المنشور</string>
@ -33,4 +34,13 @@
<string name="noPostsInThisBlogYet">لايوجد مقالات في هذه المدونة حالياً.</string>
<string name="noDrafts">لا يوجد مسودات لعرضها.</string>
<string name="latestBlogPosts">أخر منشورات المدونة</string>
<plurals name="viewAllNbPosts">
<item quantity="zero">عرض مقالة</item>
<item quantity="one">عرض مقالة</item>
<item quantity="two">عرض مقالتين</item>
<item quantity="few">عرض %s مقالات</item>
<item quantity="many">عرض %s مقالات</item>
<item quantity="other">عرض %s مقال</item>
</plurals>
<string name="uploadAnImageForYourPost" comment="uploadAnImageForYourPost&#10;&#10;The image in question is a banner image shown at the top of each post.">تحميل صورة لمقالتك</string>
</resources>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="xBlog">%s\' blog</string>
<string name="xBlog">Blog - %s</string>
<string name="newPost">Nyt indlæg</string>
<string name="editYourBlogPost">Rediger dit blogindlæg</string>
<string name="saveDraft">Gem udkast</string>
@ -30,5 +30,5 @@
<item quantity="one">Se et indlæg</item>
<item quantity="other">Se alle %s indlæg</item>
</plurals>
<string name="uploadAnImageForYourPost">Upload et billede til dit indlæg</string>
<string name="uploadAnImageForYourPost" comment="uploadAnImageForYourPost&#10;&#10;The image in question is a banner image shown at the top of each post.">Upload et billede til dit indlæg</string>
</resources>

View File

@ -25,6 +25,7 @@
<string name="moreBlogPostsBy">View more blog posts by %s</string>
<string name="noPostsInThisBlogYet">No posts in this blog, yet.</string>
<string name="noDrafts">No drafts to show.</string>
<string name="latestBlogPosts">Latest blog posts</string>
<plurals name="viewAllNbPosts">
<item quantity="one">View one post</item>
<item quantity="other">View all %s posts</item>

View File

@ -10,9 +10,10 @@
"@rollup/plugin-commonjs": "^20.0.0",
"@rollup/plugin-node-resolve": "^13.0.4",
"@rollup/plugin-typescript": "^8.2.5",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"rollup-plugin-terser": "^7.0.2",
"tslib": "^2.3.1",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
}
}

View File

@ -18,11 +18,12 @@
"@types/debounce-promise": "^3.1.4",
"@types/highcharts": "=4.2.57",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"@types/yaireo__tagify": "^4.7",
"highcharts": "=4.2.5",
"prop-types": "^15.7.2",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"@badrap/result": "^0.2",

View File

@ -22,7 +22,8 @@
"devDependencies": {
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"typescript": "^4.3.5"
"@types/web": "=0.0.32",
"typescript": "^4.4.3"
},
"dependencies": {
"chessops": "^0.10.0",

View File

@ -3,6 +3,6 @@
"include": ["src"],
"compilerOptions": {
"outDir": "./dist",
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -12,8 +12,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"scripts": {
"dev": "rollup --config",

View File

@ -22,7 +22,8 @@
"@build/rollupProject": "2.0.0",
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
}
}

View File

@ -3,6 +3,6 @@
"include": ["src"],
"compilerOptions": {
"outDir": "./dist",
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -35,6 +35,7 @@
},
"devDependencies": {
"@types/lichess": "2.0.0",
"typescript": "^4.3.5"
"@types/web": "=0.0.32",
"typescript": "^4.4.3"
}
}

View File

@ -11,8 +11,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"scripts": {
"dev": "rollup --config",

View File

@ -36,6 +36,7 @@
"@types/cash": "8.0.0",
"@types/dom-screen-wake-lock": "1.0.0",
"@types/lichess": "2.0.0",
"typescript": "^4.3.5"
"@types/web": "=0.0.32",
"typescript": "^4.4.3"
}
}

View File

@ -4,6 +4,6 @@
"exclude": [],
"compilerOptions": {
"outDir": "./dist",
"types": ["lichess", "cash", "dom-screen-wake-lock"]
"types": ["lichess", "web", "cash", "dom-screen-wake-lock"]
}
}

View File

@ -13,8 +13,9 @@
"@build/rollupProject": "2.0.0",
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"scripts": {
"dev": "rollup --config",

View File

@ -1,6 +1,6 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -8,8 +8,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"chessops": "^0.10.0"

View File

@ -48,7 +48,7 @@ export default function (token: string) {
console.warn('JSON Object for Speech Keywords seems incomplete. Using English default.');
}
} catch (error) {
console.error('Invalid JSON Object for Speech Keywords. Using English default. ' + Error(error).message);
console.error('Invalid JSON Object for Speech Keywords. Using English default. ' + error);
}
//Lichess Integration with Board API
@ -250,7 +250,7 @@ export default function (token: string) {
connectToGameStream(data.game.id);
} catch (error) {
//This will trigger if connectToGameStream fails
console.error('connectToEventStream - Failed to connect to game stream. ' + Error(error).message);
console.error('connectToEventStream - Failed to connect to game stream. ' + error);
}
} else if (data.type == 'challenge') {
//Challenge received
@ -262,7 +262,7 @@ export default function (token: string) {
console.warn('connectToEventStream - ' + data.error);
}
} catch (error) {
console.error('connectToEventStream - Unable to parse JSON or Unexpected error. ' + Error(error).message);
console.error('connectToEventStream - Unable to parse JSON or Unexpected error. ' + error);
}
} else {
//Signal that some empty message arrived. This is normal to keep the connection alive.
@ -374,7 +374,7 @@ export default function (token: string) {
console.log('connectToGameStream - ' + data.error);
}
} catch (error) {
console.error('connectToGameStream - No valid game data or Unexpected error. ' + Error(error).message);
console.error('connectToGameStream - No valid game data or Unexpected error. ' + error);
}
} else {
//Signal that some empty message arrived
@ -540,7 +540,7 @@ export default function (token: string) {
if (verbose) console.log(board(chess.board));
if (verbose) console.log(chess.turn + "'s turn");
} catch (error) {
console.error(`initializeChessBoard - Error: ${error.message}`);
console.error(`initializeChessBoard - Error: ${error}`);
}
}
@ -593,7 +593,7 @@ export default function (token: string) {
if (verbose) console.log(chess.turn + "'s turn");
}
} catch (error) {
console.error(`updateChessBoard - Error: ${error.message}`);
console.error(`updateChessBoard - Error: ${error}`);
}
}
@ -1137,7 +1137,7 @@ export default function (token: string) {
try {
extendedSanMove = extendedSanMove.replace(keywordsBase[i], ' ' + keywords[keywordsBase[i]].toLowerCase() + ' ');
} catch (error) {
console.error(`raplaceKeywords - Error replacing keyword. ${keywordsBase[i]} . ${Error(error).message}`);
console.error(`raplaceKeywords - Error replacing keyword. ${keywordsBase[i]} . ${error}`);
}
}
return extendedSanMove;
@ -1215,7 +1215,7 @@ export default function (token: string) {
}
}
} catch (err) {
console.warn('compareMoves - ' + Error(err).message);
console.warn('compareMoves - ' + err);
}
return false;
}

View File

@ -14,8 +14,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"chessground": "^8.1.7",

View File

@ -36,6 +36,7 @@
},
"devDependencies": {
"@types/lichess": "2.0.0",
"typescript": "^4.3.5"
"@types/web": "=0.0.32",
"typescript": "^4.4.3"
}
}

View File

@ -18,9 +18,10 @@
"@types/cash": "8.0.0",
"@types/highcharts": "=4.2.57",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"highcharts": "=4.2.5",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"common": "2.0.0",

View File

@ -5,6 +5,6 @@
"paths": {
"numeral": ["./@types/numeral"]
},
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -16,8 +16,9 @@
"@build/rollupProject": "2.0.0",
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"@types/chess.js": "=0.10.1",

View File

@ -5,7 +5,7 @@
"paths": {
"chessground": ["@types/chessground"]
},
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
},
"extends": "../tsconfig.base.json"
}

View File

@ -17,8 +17,9 @@
"@build/rollupProject": "2.0.0",
"@types/debounce-promise": "^3.1.4",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"chessground": "^8.1.7",

View File

@ -9,8 +9,9 @@
"@build/rollupProject": "2.0.0",
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"common": "2.0.0",

View File

@ -1,6 +1,6 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -12,8 +12,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"scripts": {
"dev": "rollup --config",

View File

@ -30,7 +30,8 @@
"devDependencies": {
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"typescript": "^4.3.5"
"@types/web": "=0.0.32",
"typescript": "^4.4.3"
},
"dependencies": {
"chess": "2.0.0",

View File

@ -4,6 +4,6 @@
"exclude": [],
"compilerOptions": {
"outDir": "./dist",
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -16,8 +16,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"@types/webrtc": "^0.0.27",

View File

@ -32,6 +32,7 @@
},
"devDependencies": {
"@types/lichess": "2.0.0",
"typescript": "^4.3.5"
"@types/web": "=0.0.32",
"typescript": "^4.4.3"
}
}

View File

@ -16,8 +16,9 @@
"@types/cash": "8.0.0",
"@types/chart.js": "^2.9.29",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"ceval": "2.0.0",

View File

@ -1,6 +1,6 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -15,8 +15,9 @@
"@build/rollupProject": "2.0.0",
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"chess": "2.0.0",

View File

@ -1,6 +1,6 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -14,8 +14,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"ab": "https://github.com/lichess-org/ab-stub",

View File

@ -9,7 +9,7 @@
"@build/rollupProject": "2.0.0",
"rollup": "^2.56.2",
"types-serviceworker": "^0.0.1",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"scripts": {
"dev": "rollup --config",

View File

@ -13,8 +13,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"chat": "2.0.0",

View File

@ -11,12 +11,13 @@
"@types/debounce-promise": "^3.1.4",
"@types/fnando__sparkline": "^0.3.2",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"@types/yaireo__tagify": "^4.7",
"@types/zxcvbn": "^4.4.0",
"chessground": "^8.1.7",
"rollup": "^2.56.2",
"rollup-plugin-copy": "^3.3.0",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"@fnando/sparkline": "^0.3.10",

View File

@ -1,11 +1,3 @@
// TODO: Remove this when TypeScript 4.4.3 gets released
// TS 4.4 introduced support for requestIdleCallback but 4.4.2 hangs rollup
declare global {
interface Window {
requestIdleCallback(callback: () => void, options?: { timeout: number }): void;
}
}
export const requestIdleCallback = (f: () => void, timeout?: number) => {
if (window.requestIdleCallback) window.requestIdleCallback(f, timeout ? { timeout } : undefined);
else requestAnimationFrame(f);

View File

@ -162,7 +162,7 @@ export default class StrongSocket {
let stack: string;
try {
stack = new Error().stack!.split('\n').join(' / ').replace(/\s+/g, ' ');
} catch (e) {
} catch (e: any) {
stack = `${e.message} ${navigator.userAgent}`;
}
if (!stack.includes('round.nvui')) setTimeout(() => this.send('rep', { n: `soc: ${message} ${stack}` }), 10000);
@ -257,7 +257,7 @@ export default class StrongSocket {
}
};
debug = (msg: string, always = false) => {
debug = (msg: unknown, always = false) => {
if (always || this.options.debug) console.debug(msg);
};
@ -278,7 +278,7 @@ export default class StrongSocket {
}
};
onError = (e: Event) => {
onError = (e: unknown) => {
this.options.debug = true;
this.debug('error: ' + JSON.stringify(e));
this.tryOtherUrl = true;

View File

@ -137,7 +137,7 @@ lichess.load.then(() => {
}, 1000);
// prevent zoom when keyboard shows on iOS
if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) {
if (/iPad|iPhone|iPod/.test(navigator.userAgent) && 'MSStream' in window) {
const el = document.querySelector('meta[name=viewport]') as HTMLElement;
el.setAttribute('content', el.getAttribute('content') + ',maximum-scale=1.0');
}

View File

@ -15,8 +15,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"scripts": {
"dev": "rollup --config",

View File

@ -15,8 +15,9 @@
"@build/rollupProject": "2.0.0",
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"chess": "2.0.0",

View File

@ -1,6 +1,6 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -15,8 +15,9 @@
"@build/rollupProject": "2.0.0",
"@types/cash": "8.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"chat": "2.0.0",

View File

@ -1,6 +1,6 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"types": ["lichess", "cash"]
"types": ["lichess", "web", "cash"]
}
}

View File

@ -14,8 +14,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"chat": "2.0.0",

View File

@ -14,8 +14,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"common": "2.0.0",

View File

@ -14,8 +14,9 @@
"devDependencies": {
"@build/rollupProject": "2.0.0",
"@types/lichess": "2.0.0",
"@types/web": "=0.0.32",
"rollup": "^2.56.2",
"typescript": "^4.3.5"
"typescript": "^4.4.3"
},
"dependencies": {
"common": "2.0.0",

View File

@ -19,7 +19,8 @@
},
"devDependencies": {
"@types/lichess": "2.0.0",
"typescript": "^4.3.5"
"@types/web": "=0.0.32",
"typescript": "^4.4.3"
},
"dependencies": {
"common": "2.0.0"

View File

@ -10,7 +10,7 @@
"moduleResolution": "node",
"target": "ES2017",
"module": "esnext",
"lib": ["DOM", "ES2017", "DOM.iterable"],
"types": ["lichess"]
"lib": ["ES2017"],
"types": ["lichess", "web"]
}
}

View File

@ -287,6 +287,11 @@
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==
"@types/web@=0.0.32":
version "0.0.32"
resolved "https://registry.yarnpkg.com/@types/web/-/web-0.0.32.tgz#f0fd2a26f49719fe999a6a7edc7a37d13b288bec"
integrity sha512-P6r3FT1Ta4ClRVQylpanWN25tYn9fVb68b1eA2thEr5CxjxKJBZMCMXy+di+p3cHVZ0xiqKKLE2cr6iKdgDY2w==
"@types/webrtc@^0.0.27":
version "0.0.27"
resolved "https://registry.yarnpkg.com/@types/webrtc/-/webrtc-0.0.27.tgz#cf9118fa0ac54e530f0ee16c45b8e34df70ef47d"
@ -5462,10 +5467,10 @@ types-serviceworker@^0.0.1:
resolved "https://registry.yarnpkg.com/types-serviceworker/-/types-serviceworker-0.0.1.tgz#3d356e176d3b987d2164b34e609c591e67d31f1c"
integrity sha512-EKO/SZ3AsHEZsqv+bsdlTCz5k955riOksnYGlG6JhVwNTVsPWj/TScTbiNVZ5+mmX8TcEXF0C8aSxUw0jTDpIw==
typescript@^4.3.5:
version "4.3.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4"
integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==
typescript@^4.4.3:
version "4.4.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324"
integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==
unc-path-regex@^0.1.2:
version "0.1.2"