@claudinho/cli 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/index.js +1346 -228
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -257,6 +257,151 @@ function nationToRegion(nameOrCode) {
|
|
|
257
257
|
if (byCode) return byCode;
|
|
258
258
|
return intlNameMap()[norm(nameOrCode)];
|
|
259
259
|
}
|
|
260
|
+
var EN = {
|
|
261
|
+
"bracket.title": "Knockout bracket",
|
|
262
|
+
"bracket.stageTitle": "Knockout \xB7 {stage}",
|
|
263
|
+
"bracket.shareTitle": "Knockout bracket \xB7 2026",
|
|
264
|
+
"bracket.degraded": "Live scores unavailable \u2014 bracket structure only, no confirmed advancement.",
|
|
265
|
+
"bracket.standingsDegraded": "Live standings unavailable \u2014 group slots stay TBD until groups finish.",
|
|
266
|
+
"bracket.treeFallback": "Terminal too narrow for tree view \u2014 showing staged list.",
|
|
267
|
+
"bracket.empty": "No bracket matches available.",
|
|
268
|
+
"bracket.projected": "(proj.)",
|
|
269
|
+
"bracket.invalidStage": "Stage must be one of: R32, R16, QF, SF, 3P, F",
|
|
270
|
+
"bracket.unknownStage": 'Unknown stage "{stage}". Use R32, R16, QF, SF, 3P, or F.',
|
|
271
|
+
"bracket.slot.groupWinner": "Group {group} winner",
|
|
272
|
+
"bracket.slot.groupSecond": "Group {group} 2nd",
|
|
273
|
+
"bracket.slot.third": "3rd ({groups})",
|
|
274
|
+
"bracket.slot.winner": "{stage} {n} winner",
|
|
275
|
+
"bracket.slot.loser": "{stage} {n} loser",
|
|
276
|
+
"bracket.slot.tbd": "TBD",
|
|
277
|
+
"live.data": "Live data: {source}",
|
|
278
|
+
"share.tryIt": "Try it: {line}",
|
|
279
|
+
"stage.group": "Group {group}",
|
|
280
|
+
"stage.groupStage": "Group stage",
|
|
281
|
+
"stage.r32": "Round of 32",
|
|
282
|
+
"stage.r16": "Round of 16",
|
|
283
|
+
"stage.qf": "Quarter-final",
|
|
284
|
+
"stage.sf": "Semi-final",
|
|
285
|
+
"stage.3p": "Third-place play-off",
|
|
286
|
+
"stage.f": "Final",
|
|
287
|
+
"stage.friendly": "Friendly"
|
|
288
|
+
};
|
|
289
|
+
var ES = {
|
|
290
|
+
"bracket.title": "Cuadro de eliminatorias",
|
|
291
|
+
"bracket.stageTitle": "Eliminatorias \xB7 {stage}",
|
|
292
|
+
"bracket.shareTitle": "Cuadro de eliminatorias \xB7 2026",
|
|
293
|
+
"bracket.degraded": "Marcadores en vivo no disponibles \u2014 solo estructura del cuadro, sin avances confirmados.",
|
|
294
|
+
"bracket.standingsDegraded": "Tabla en vivo no disponible \u2014 los cupos de grupo siguen por definir hasta que terminen los grupos.",
|
|
295
|
+
"bracket.treeFallback": "Terminal demasiado estrecha para el \xE1rbol \u2014 mostrando lista por fase.",
|
|
296
|
+
"bracket.empty": "No hay partidos de eliminatorias disponibles.",
|
|
297
|
+
"bracket.projected": "(proy.)",
|
|
298
|
+
"bracket.invalidStage": "La fase debe ser una de: R32, R16, QF, SF, 3P, F",
|
|
299
|
+
"bracket.unknownStage": 'Fase desconocida "{stage}". Usa R32, R16, QF, SF, 3P o F.',
|
|
300
|
+
"bracket.slot.groupWinner": "Ganador del grupo {group}",
|
|
301
|
+
"bracket.slot.groupSecond": "2.\xBA del grupo {group}",
|
|
302
|
+
"bracket.slot.third": "3.\xBA ({groups})",
|
|
303
|
+
"bracket.slot.winner": "Ganador {stage} {n}",
|
|
304
|
+
"bracket.slot.loser": "Perdedor {stage} {n}",
|
|
305
|
+
"bracket.slot.tbd": "Por definir",
|
|
306
|
+
"live.data": "Datos en vivo: {source}",
|
|
307
|
+
"share.tryIt": "Pru\xE9balo: {line}",
|
|
308
|
+
"stage.group": "Grupo {group}",
|
|
309
|
+
"stage.groupStage": "Fase de grupos",
|
|
310
|
+
"stage.r32": "Dieciseisavos de final",
|
|
311
|
+
"stage.r16": "Octavos de final",
|
|
312
|
+
"stage.qf": "Cuartos de final",
|
|
313
|
+
"stage.sf": "Semifinal",
|
|
314
|
+
"stage.3p": "Tercer puesto",
|
|
315
|
+
"stage.f": "Final",
|
|
316
|
+
"stage.friendly": "Amistoso"
|
|
317
|
+
};
|
|
318
|
+
var PT = {
|
|
319
|
+
"bracket.title": "Chave do mata-mata",
|
|
320
|
+
"bracket.stageTitle": "Mata-mata \xB7 {stage}",
|
|
321
|
+
"bracket.shareTitle": "Chave do mata-mata \xB7 2026",
|
|
322
|
+
"bracket.degraded": "Placar ao vivo indispon\xEDvel \u2014 apenas a estrutura da chave, sem avan\xE7os confirmados.",
|
|
323
|
+
"bracket.standingsDegraded": "Classifica\xE7\xE3o ao vivo indispon\xEDvel \u2014 vagas de grupo seguem a definir at\xE9 o fim dos grupos.",
|
|
324
|
+
"bracket.treeFallback": "Terminal estreito demais para a \xE1rvore \u2014 mostrando lista por fase.",
|
|
325
|
+
"bracket.empty": "Nenhum jogo do mata-mata dispon\xEDvel.",
|
|
326
|
+
"bracket.projected": "(proj.)",
|
|
327
|
+
"bracket.invalidStage": "A fase deve ser uma de: R32, R16, QF, SF, 3P, F",
|
|
328
|
+
"bracket.unknownStage": 'Fase desconhecida "{stage}". Use R32, R16, QF, SF, 3P ou F.',
|
|
329
|
+
"bracket.slot.groupWinner": "Vencedor do grupo {group}",
|
|
330
|
+
"bracket.slot.groupSecond": "2.\xBA do grupo {group}",
|
|
331
|
+
"bracket.slot.third": "3.\xBA ({groups})",
|
|
332
|
+
"bracket.slot.winner": "Vencedor {stage} {n}",
|
|
333
|
+
"bracket.slot.loser": "Perdedor {stage} {n}",
|
|
334
|
+
"bracket.slot.tbd": "A definir",
|
|
335
|
+
"live.data": "Dados ao vivo: {source}",
|
|
336
|
+
"share.tryIt": "Experimente: {line}",
|
|
337
|
+
"stage.group": "Grupo {group}",
|
|
338
|
+
"stage.groupStage": "Fase de grupos",
|
|
339
|
+
"stage.r32": "Fase de 32 equipes",
|
|
340
|
+
"stage.r16": "Oitavas de final",
|
|
341
|
+
"stage.qf": "Quartas de final",
|
|
342
|
+
"stage.sf": "Semifinal",
|
|
343
|
+
"stage.3p": "Disputa do 3.\xBA lugar",
|
|
344
|
+
"stage.f": "Final",
|
|
345
|
+
"stage.friendly": "Amistoso"
|
|
346
|
+
};
|
|
347
|
+
var FR = {
|
|
348
|
+
"bracket.title": "Tableau \xE0 \xE9limination directe",
|
|
349
|
+
"bracket.stageTitle": "\xC9liminatoires \xB7 {stage}",
|
|
350
|
+
"bracket.shareTitle": "Tableau \xE0 \xE9limination directe \xB7 2026",
|
|
351
|
+
"bracket.degraded": "Scores en direct indisponibles \u2014 structure du tableau seulement, aucune qualification confirm\xE9e.",
|
|
352
|
+
"bracket.standingsDegraded": "Classement en direct indisponible \u2014 les places de groupe restent \xE0 d\xE9finir jusqu\u2019\xE0 la fin des poules.",
|
|
353
|
+
"bracket.treeFallback": "Terminal trop \xE9troit pour l\u2019arbre \u2014 affichage par phase.",
|
|
354
|
+
"bracket.empty": "Aucun match \xE0 \xE9limination directe disponible.",
|
|
355
|
+
"bracket.projected": "(proj.)",
|
|
356
|
+
"bracket.invalidStage": "La phase doit \xEAtre l\u2019une de : R32, R16, QF, SF, 3P, F",
|
|
357
|
+
"bracket.unknownStage": "Phase inconnue \xAB {stage} \xBB. Utilisez R32, R16, QF, SF, 3P ou F.",
|
|
358
|
+
"bracket.slot.groupWinner": "Vainqueur du groupe {group}",
|
|
359
|
+
"bracket.slot.groupSecond": "2e du groupe {group}",
|
|
360
|
+
"bracket.slot.third": "3e ({groups})",
|
|
361
|
+
"bracket.slot.winner": "Vainqueur {stage} {n}",
|
|
362
|
+
"bracket.slot.loser": "Perdant {stage} {n}",
|
|
363
|
+
"bracket.slot.tbd": "\xC0 d\xE9finir",
|
|
364
|
+
"live.data": "Donn\xE9es en direct : {source}",
|
|
365
|
+
"share.tryIt": "Essayez : {line}",
|
|
366
|
+
"stage.group": "Groupe {group}",
|
|
367
|
+
"stage.groupStage": "Phase de groupes",
|
|
368
|
+
"stage.r32": "Seizi\xE8mes de finale",
|
|
369
|
+
"stage.r16": "Huiti\xE8mes de finale",
|
|
370
|
+
"stage.qf": "Quarts de finale",
|
|
371
|
+
"stage.sf": "Demi-finale",
|
|
372
|
+
"stage.3p": "Match pour la 3e place",
|
|
373
|
+
"stage.f": "Finale",
|
|
374
|
+
"stage.friendly": "Match amical"
|
|
375
|
+
};
|
|
376
|
+
var CATALOGS = { en: EN, es: ES, pt: PT, fr: FR };
|
|
377
|
+
function normalizeLang(lang) {
|
|
378
|
+
const code = (lang ?? "en").slice(0, 2).toLowerCase();
|
|
379
|
+
if (code === "es" || code === "pt" || code === "fr") return code;
|
|
380
|
+
return "en";
|
|
381
|
+
}
|
|
382
|
+
function t(lang, key, vars) {
|
|
383
|
+
const dict = CATALOGS[normalizeLang(lang)];
|
|
384
|
+
let s = dict[key] ?? EN[key] ?? key;
|
|
385
|
+
if (vars) {
|
|
386
|
+
for (const [k, v] of Object.entries(vars)) s = s.replaceAll(`{${k}}`, v);
|
|
387
|
+
}
|
|
388
|
+
return s;
|
|
389
|
+
}
|
|
390
|
+
var STAGE_KEYS = {
|
|
391
|
+
GROUP: "stage.groupStage",
|
|
392
|
+
R32: "stage.r32",
|
|
393
|
+
R16: "stage.r16",
|
|
394
|
+
QF: "stage.qf",
|
|
395
|
+
SF: "stage.sf",
|
|
396
|
+
"3P": "stage.3p",
|
|
397
|
+
F: "stage.f",
|
|
398
|
+
FRIENDLY: "stage.friendly"
|
|
399
|
+
};
|
|
400
|
+
function stageLabelI18n(lang, stage, group) {
|
|
401
|
+
if (group) return t(lang, "stage.group", { group });
|
|
402
|
+
const key = STAGE_KEYS[stage];
|
|
403
|
+
return key ? t(lang, key) : stage;
|
|
404
|
+
}
|
|
260
405
|
function isValidTimeZone(tz) {
|
|
261
406
|
if (!tz) return false;
|
|
262
407
|
try {
|
|
@@ -350,6 +495,11 @@ function localDate(iso, tz) {
|
|
|
350
495
|
timeZone: zone
|
|
351
496
|
}).format(new Date(iso));
|
|
352
497
|
}
|
|
498
|
+
function outcomeFromScore(home, away) {
|
|
499
|
+
if (home > away) return "H";
|
|
500
|
+
if (home < away) return "A";
|
|
501
|
+
return "D";
|
|
502
|
+
}
|
|
353
503
|
function isLive(status) {
|
|
354
504
|
return status === "LIVE" || status === "HT";
|
|
355
505
|
}
|
|
@@ -477,7 +627,7 @@ var schedule_2026_default = [
|
|
|
477
627
|
flag: "\u{1F1FF}\u{1F1E6}"
|
|
478
628
|
},
|
|
479
629
|
status: "SCHEDULED",
|
|
480
|
-
updatedAt: "2026-06-
|
|
630
|
+
updatedAt: "2026-06-24T01:20:06.301Z"
|
|
481
631
|
},
|
|
482
632
|
{
|
|
483
633
|
id: "760414",
|
|
@@ -498,7 +648,7 @@ var schedule_2026_default = [
|
|
|
498
648
|
flag: "\u{1F1E8}\u{1F1FF}"
|
|
499
649
|
},
|
|
500
650
|
status: "SCHEDULED",
|
|
501
|
-
updatedAt: "2026-06-
|
|
651
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
502
652
|
},
|
|
503
653
|
{
|
|
504
654
|
id: "760416",
|
|
@@ -519,7 +669,7 @@ var schedule_2026_default = [
|
|
|
519
669
|
flag: "\u{1F1E7}\u{1F1E6}"
|
|
520
670
|
},
|
|
521
671
|
status: "SCHEDULED",
|
|
522
|
-
updatedAt: "2026-06-
|
|
672
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
523
673
|
},
|
|
524
674
|
{
|
|
525
675
|
id: "760417",
|
|
@@ -540,7 +690,7 @@ var schedule_2026_default = [
|
|
|
540
690
|
flag: "\u{1F1F5}\u{1F1FE}"
|
|
541
691
|
},
|
|
542
692
|
status: "SCHEDULED",
|
|
543
|
-
updatedAt: "2026-06-
|
|
693
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
544
694
|
},
|
|
545
695
|
{
|
|
546
696
|
id: "760420",
|
|
@@ -561,7 +711,7 @@ var schedule_2026_default = [
|
|
|
561
711
|
flag: "\u{1F1E8}\u{1F1ED}"
|
|
562
712
|
},
|
|
563
713
|
status: "SCHEDULED",
|
|
564
|
-
updatedAt: "2026-06-
|
|
714
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
565
715
|
},
|
|
566
716
|
{
|
|
567
717
|
id: "760419",
|
|
@@ -582,7 +732,7 @@ var schedule_2026_default = [
|
|
|
582
732
|
flag: "\u{1F1F2}\u{1F1E6}"
|
|
583
733
|
},
|
|
584
734
|
status: "SCHEDULED",
|
|
585
|
-
updatedAt: "2026-06-
|
|
735
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
586
736
|
},
|
|
587
737
|
{
|
|
588
738
|
id: "760418",
|
|
@@ -603,7 +753,7 @@ var schedule_2026_default = [
|
|
|
603
753
|
flag: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}"
|
|
604
754
|
},
|
|
605
755
|
status: "SCHEDULED",
|
|
606
|
-
updatedAt: "2026-06-
|
|
756
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
607
757
|
},
|
|
608
758
|
{
|
|
609
759
|
id: "760421",
|
|
@@ -624,7 +774,7 @@ var schedule_2026_default = [
|
|
|
624
774
|
flag: "\u{1F1F9}\u{1F1F7}"
|
|
625
775
|
},
|
|
626
776
|
status: "SCHEDULED",
|
|
627
|
-
updatedAt: "2026-06-
|
|
777
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
628
778
|
},
|
|
629
779
|
{
|
|
630
780
|
id: "760422",
|
|
@@ -645,7 +795,7 @@ var schedule_2026_default = [
|
|
|
645
795
|
flag: "\u{1F1E8}\u{1F1FC}"
|
|
646
796
|
},
|
|
647
797
|
status: "SCHEDULED",
|
|
648
|
-
updatedAt: "2026-06-
|
|
798
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
649
799
|
},
|
|
650
800
|
{
|
|
651
801
|
id: "760425",
|
|
@@ -666,7 +816,7 @@ var schedule_2026_default = [
|
|
|
666
816
|
flag: "\u{1F1EF}\u{1F1F5}"
|
|
667
817
|
},
|
|
668
818
|
status: "SCHEDULED",
|
|
669
|
-
updatedAt: "2026-06-
|
|
819
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
670
820
|
},
|
|
671
821
|
{
|
|
672
822
|
id: "760423",
|
|
@@ -687,7 +837,7 @@ var schedule_2026_default = [
|
|
|
687
837
|
flag: "\u{1F1EA}\u{1F1E8}"
|
|
688
838
|
},
|
|
689
839
|
status: "SCHEDULED",
|
|
690
|
-
updatedAt: "2026-06-
|
|
840
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
691
841
|
},
|
|
692
842
|
{
|
|
693
843
|
id: "760424",
|
|
@@ -708,7 +858,7 @@ var schedule_2026_default = [
|
|
|
708
858
|
flag: "\u{1F1F9}\u{1F1F3}"
|
|
709
859
|
},
|
|
710
860
|
status: "SCHEDULED",
|
|
711
|
-
updatedAt: "2026-06-
|
|
861
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
712
862
|
},
|
|
713
863
|
{
|
|
714
864
|
id: "760428",
|
|
@@ -729,7 +879,7 @@ var schedule_2026_default = [
|
|
|
729
879
|
flag: "\u{1F1E8}\u{1F1FB}"
|
|
730
880
|
},
|
|
731
881
|
status: "SCHEDULED",
|
|
732
|
-
updatedAt: "2026-06-
|
|
882
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
733
883
|
},
|
|
734
884
|
{
|
|
735
885
|
id: "760426",
|
|
@@ -750,7 +900,7 @@ var schedule_2026_default = [
|
|
|
750
900
|
flag: "\u{1F1EA}\u{1F1EC}"
|
|
751
901
|
},
|
|
752
902
|
status: "SCHEDULED",
|
|
753
|
-
updatedAt: "2026-06-
|
|
903
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
754
904
|
},
|
|
755
905
|
{
|
|
756
906
|
id: "760429",
|
|
@@ -771,7 +921,7 @@ var schedule_2026_default = [
|
|
|
771
921
|
flag: "\u{1F1FA}\u{1F1FE}"
|
|
772
922
|
},
|
|
773
923
|
status: "SCHEDULED",
|
|
774
|
-
updatedAt: "2026-06-
|
|
924
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
775
925
|
},
|
|
776
926
|
{
|
|
777
927
|
id: "760427",
|
|
@@ -792,7 +942,7 @@ var schedule_2026_default = [
|
|
|
792
942
|
flag: "\u{1F1F3}\u{1F1FF}"
|
|
793
943
|
},
|
|
794
944
|
status: "SCHEDULED",
|
|
795
|
-
updatedAt: "2026-06-
|
|
945
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
796
946
|
},
|
|
797
947
|
{
|
|
798
948
|
id: "760432",
|
|
@@ -813,7 +963,7 @@ var schedule_2026_default = [
|
|
|
813
963
|
flag: "\u{1F1F8}\u{1F1F3}"
|
|
814
964
|
},
|
|
815
965
|
status: "SCHEDULED",
|
|
816
|
-
updatedAt: "2026-06-
|
|
966
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
817
967
|
},
|
|
818
968
|
{
|
|
819
969
|
id: "760430",
|
|
@@ -834,7 +984,7 @@ var schedule_2026_default = [
|
|
|
834
984
|
flag: "\u{1F1F3}\u{1F1F4}"
|
|
835
985
|
},
|
|
836
986
|
status: "SCHEDULED",
|
|
837
|
-
updatedAt: "2026-06-
|
|
987
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
838
988
|
},
|
|
839
989
|
{
|
|
840
990
|
id: "760433",
|
|
@@ -855,7 +1005,7 @@ var schedule_2026_default = [
|
|
|
855
1005
|
flag: "\u{1F1E9}\u{1F1FF}"
|
|
856
1006
|
},
|
|
857
1007
|
status: "SCHEDULED",
|
|
858
|
-
updatedAt: "2026-06-
|
|
1008
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
859
1009
|
},
|
|
860
1010
|
{
|
|
861
1011
|
id: "760431",
|
|
@@ -876,7 +1026,7 @@ var schedule_2026_default = [
|
|
|
876
1026
|
flag: "\u{1F1EF}\u{1F1F4}"
|
|
877
1027
|
},
|
|
878
1028
|
status: "SCHEDULED",
|
|
879
|
-
updatedAt: "2026-06-
|
|
1029
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
880
1030
|
},
|
|
881
1031
|
{
|
|
882
1032
|
id: "760435",
|
|
@@ -897,7 +1047,7 @@ var schedule_2026_default = [
|
|
|
897
1047
|
flag: "\u{1F1E8}\u{1F1E9}"
|
|
898
1048
|
},
|
|
899
1049
|
status: "SCHEDULED",
|
|
900
|
-
updatedAt: "2026-06-
|
|
1050
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
901
1051
|
},
|
|
902
1052
|
{
|
|
903
1053
|
id: "760437",
|
|
@@ -918,7 +1068,7 @@ var schedule_2026_default = [
|
|
|
918
1068
|
flag: "\u{1F1ED}\u{1F1F7}"
|
|
919
1069
|
},
|
|
920
1070
|
status: "SCHEDULED",
|
|
921
|
-
updatedAt: "2026-06-
|
|
1071
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
922
1072
|
},
|
|
923
1073
|
{
|
|
924
1074
|
id: "760434",
|
|
@@ -939,7 +1089,7 @@ var schedule_2026_default = [
|
|
|
939
1089
|
flag: "\u{1F1F5}\u{1F1E6}"
|
|
940
1090
|
},
|
|
941
1091
|
status: "SCHEDULED",
|
|
942
|
-
updatedAt: "2026-06-
|
|
1092
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
943
1093
|
},
|
|
944
1094
|
{
|
|
945
1095
|
id: "760436",
|
|
@@ -960,7 +1110,7 @@ var schedule_2026_default = [
|
|
|
960
1110
|
flag: "\u{1F1E8}\u{1F1F4}"
|
|
961
1111
|
},
|
|
962
1112
|
status: "SCHEDULED",
|
|
963
|
-
updatedAt: "2026-06-
|
|
1113
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
964
1114
|
},
|
|
965
1115
|
{
|
|
966
1116
|
id: "760438",
|
|
@@ -981,7 +1131,7 @@ var schedule_2026_default = [
|
|
|
981
1131
|
flag: "\u{1F1FF}\u{1F1E6}"
|
|
982
1132
|
},
|
|
983
1133
|
status: "SCHEDULED",
|
|
984
|
-
updatedAt: "2026-06-
|
|
1134
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
985
1135
|
},
|
|
986
1136
|
{
|
|
987
1137
|
id: "760439",
|
|
@@ -1002,7 +1152,7 @@ var schedule_2026_default = [
|
|
|
1002
1152
|
flag: "\u{1F1E7}\u{1F1E6}"
|
|
1003
1153
|
},
|
|
1004
1154
|
status: "SCHEDULED",
|
|
1005
|
-
updatedAt: "2026-06-
|
|
1155
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1006
1156
|
},
|
|
1007
1157
|
{
|
|
1008
1158
|
id: "760440",
|
|
@@ -1023,7 +1173,7 @@ var schedule_2026_default = [
|
|
|
1023
1173
|
flag: "\u{1F1F6}\u{1F1E6}"
|
|
1024
1174
|
},
|
|
1025
1175
|
status: "SCHEDULED",
|
|
1026
|
-
updatedAt: "2026-06-
|
|
1176
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1027
1177
|
},
|
|
1028
1178
|
{
|
|
1029
1179
|
id: "760441",
|
|
@@ -1044,7 +1194,7 @@ var schedule_2026_default = [
|
|
|
1044
1194
|
flag: "\u{1F1F0}\u{1F1F7}"
|
|
1045
1195
|
},
|
|
1046
1196
|
status: "SCHEDULED",
|
|
1047
|
-
updatedAt: "2026-06-
|
|
1197
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1048
1198
|
},
|
|
1049
1199
|
{
|
|
1050
1200
|
id: "760442",
|
|
@@ -1065,7 +1215,7 @@ var schedule_2026_default = [
|
|
|
1065
1215
|
flag: "\u{1F1E6}\u{1F1FA}"
|
|
1066
1216
|
},
|
|
1067
1217
|
status: "SCHEDULED",
|
|
1068
|
-
updatedAt: "2026-06-
|
|
1218
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1069
1219
|
},
|
|
1070
1220
|
{
|
|
1071
1221
|
id: "760445",
|
|
@@ -1086,7 +1236,7 @@ var schedule_2026_default = [
|
|
|
1086
1236
|
flag: "\u{1F1F2}\u{1F1E6}"
|
|
1087
1237
|
},
|
|
1088
1238
|
status: "SCHEDULED",
|
|
1089
|
-
updatedAt: "2026-06-
|
|
1239
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1090
1240
|
},
|
|
1091
1241
|
{
|
|
1092
1242
|
id: "760444",
|
|
@@ -1107,7 +1257,7 @@ var schedule_2026_default = [
|
|
|
1107
1257
|
flag: "\u{1F1ED}\u{1F1F9}"
|
|
1108
1258
|
},
|
|
1109
1259
|
status: "SCHEDULED",
|
|
1110
|
-
updatedAt: "2026-06-
|
|
1260
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1111
1261
|
},
|
|
1112
1262
|
{
|
|
1113
1263
|
id: "760443",
|
|
@@ -1128,7 +1278,7 @@ var schedule_2026_default = [
|
|
|
1128
1278
|
flag: "\u{1F1F5}\u{1F1FE}"
|
|
1129
1279
|
},
|
|
1130
1280
|
status: "SCHEDULED",
|
|
1131
|
-
updatedAt: "2026-06-
|
|
1281
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1132
1282
|
},
|
|
1133
1283
|
{
|
|
1134
1284
|
id: "760447",
|
|
@@ -1149,7 +1299,7 @@ var schedule_2026_default = [
|
|
|
1149
1299
|
flag: "\u{1F1F8}\u{1F1EA}"
|
|
1150
1300
|
},
|
|
1151
1301
|
status: "SCHEDULED",
|
|
1152
|
-
updatedAt: "2026-06-
|
|
1302
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1153
1303
|
},
|
|
1154
1304
|
{
|
|
1155
1305
|
id: "760448",
|
|
@@ -1170,7 +1320,7 @@ var schedule_2026_default = [
|
|
|
1170
1320
|
flag: "\u{1F1E8}\u{1F1EE}"
|
|
1171
1321
|
},
|
|
1172
1322
|
status: "SCHEDULED",
|
|
1173
|
-
updatedAt: "2026-06-
|
|
1323
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1174
1324
|
},
|
|
1175
1325
|
{
|
|
1176
1326
|
id: "760446",
|
|
@@ -1191,7 +1341,7 @@ var schedule_2026_default = [
|
|
|
1191
1341
|
flag: "\u{1F1E8}\u{1F1FC}"
|
|
1192
1342
|
},
|
|
1193
1343
|
status: "SCHEDULED",
|
|
1194
|
-
updatedAt: "2026-06-
|
|
1344
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1195
1345
|
},
|
|
1196
1346
|
{
|
|
1197
1347
|
id: "760449",
|
|
@@ -1212,7 +1362,7 @@ var schedule_2026_default = [
|
|
|
1212
1362
|
flag: "\u{1F1EF}\u{1F1F5}"
|
|
1213
1363
|
},
|
|
1214
1364
|
status: "SCHEDULED",
|
|
1215
|
-
updatedAt: "2026-06-
|
|
1365
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1216
1366
|
},
|
|
1217
1367
|
{
|
|
1218
1368
|
id: "760453",
|
|
@@ -1233,7 +1383,7 @@ var schedule_2026_default = [
|
|
|
1233
1383
|
flag: "\u{1F1F8}\u{1F1E6}"
|
|
1234
1384
|
},
|
|
1235
1385
|
status: "SCHEDULED",
|
|
1236
|
-
updatedAt: "2026-06-
|
|
1386
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1237
1387
|
},
|
|
1238
1388
|
{
|
|
1239
1389
|
id: "760451",
|
|
@@ -1254,7 +1404,7 @@ var schedule_2026_default = [
|
|
|
1254
1404
|
flag: "\u{1F1EE}\u{1F1F7}"
|
|
1255
1405
|
},
|
|
1256
1406
|
status: "SCHEDULED",
|
|
1257
|
-
updatedAt: "2026-06-
|
|
1407
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1258
1408
|
},
|
|
1259
1409
|
{
|
|
1260
1410
|
id: "760450",
|
|
@@ -1275,7 +1425,7 @@ var schedule_2026_default = [
|
|
|
1275
1425
|
flag: "\u{1F1E8}\u{1F1FB}"
|
|
1276
1426
|
},
|
|
1277
1427
|
status: "SCHEDULED",
|
|
1278
|
-
updatedAt: "2026-06-
|
|
1428
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1279
1429
|
},
|
|
1280
1430
|
{
|
|
1281
1431
|
id: "760452",
|
|
@@ -1296,7 +1446,7 @@ var schedule_2026_default = [
|
|
|
1296
1446
|
flag: "\u{1F1EA}\u{1F1EC}"
|
|
1297
1447
|
},
|
|
1298
1448
|
status: "SCHEDULED",
|
|
1299
|
-
updatedAt: "2026-06-
|
|
1449
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1300
1450
|
},
|
|
1301
1451
|
{
|
|
1302
1452
|
id: "760456",
|
|
@@ -1317,7 +1467,7 @@ var schedule_2026_default = [
|
|
|
1317
1467
|
flag: "\u{1F1E6}\u{1F1F9}"
|
|
1318
1468
|
},
|
|
1319
1469
|
status: "SCHEDULED",
|
|
1320
|
-
updatedAt: "2026-06-
|
|
1470
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1321
1471
|
},
|
|
1322
1472
|
{
|
|
1323
1473
|
id: "760457",
|
|
@@ -1338,7 +1488,7 @@ var schedule_2026_default = [
|
|
|
1338
1488
|
flag: "\u{1F1EE}\u{1F1F6}"
|
|
1339
1489
|
},
|
|
1340
1490
|
status: "SCHEDULED",
|
|
1341
|
-
updatedAt: "2026-06-
|
|
1491
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1342
1492
|
},
|
|
1343
1493
|
{
|
|
1344
1494
|
id: "760454",
|
|
@@ -1359,7 +1509,7 @@ var schedule_2026_default = [
|
|
|
1359
1509
|
flag: "\u{1F1F8}\u{1F1F3}"
|
|
1360
1510
|
},
|
|
1361
1511
|
status: "SCHEDULED",
|
|
1362
|
-
updatedAt: "2026-06-
|
|
1512
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1363
1513
|
},
|
|
1364
1514
|
{
|
|
1365
1515
|
id: "760455",
|
|
@@ -1380,7 +1530,7 @@ var schedule_2026_default = [
|
|
|
1380
1530
|
flag: "\u{1F1E9}\u{1F1FF}"
|
|
1381
1531
|
},
|
|
1382
1532
|
status: "SCHEDULED",
|
|
1383
|
-
updatedAt: "2026-06-
|
|
1533
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1384
1534
|
},
|
|
1385
1535
|
{
|
|
1386
1536
|
id: "760461",
|
|
@@ -1401,7 +1551,7 @@ var schedule_2026_default = [
|
|
|
1401
1551
|
flag: "\u{1F1FA}\u{1F1FF}"
|
|
1402
1552
|
},
|
|
1403
1553
|
status: "SCHEDULED",
|
|
1404
|
-
updatedAt: "2026-06-
|
|
1554
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1405
1555
|
},
|
|
1406
1556
|
{
|
|
1407
1557
|
id: "760458",
|
|
@@ -1422,7 +1572,7 @@ var schedule_2026_default = [
|
|
|
1422
1572
|
flag: "\u{1F1EC}\u{1F1ED}"
|
|
1423
1573
|
},
|
|
1424
1574
|
status: "SCHEDULED",
|
|
1425
|
-
updatedAt: "2026-06-
|
|
1575
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1426
1576
|
},
|
|
1427
1577
|
{
|
|
1428
1578
|
id: "760460",
|
|
@@ -1443,7 +1593,7 @@ var schedule_2026_default = [
|
|
|
1443
1593
|
flag: "\u{1F1ED}\u{1F1F7}"
|
|
1444
1594
|
},
|
|
1445
1595
|
status: "SCHEDULED",
|
|
1446
|
-
updatedAt: "2026-06-
|
|
1596
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1447
1597
|
},
|
|
1448
1598
|
{
|
|
1449
1599
|
id: "760459",
|
|
@@ -1464,7 +1614,7 @@ var schedule_2026_default = [
|
|
|
1464
1614
|
flag: "\u{1F1E8}\u{1F1E9}"
|
|
1465
1615
|
},
|
|
1466
1616
|
status: "SCHEDULED",
|
|
1467
|
-
updatedAt: "2026-06-
|
|
1617
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1468
1618
|
},
|
|
1469
1619
|
{
|
|
1470
1620
|
id: "760462",
|
|
@@ -1485,7 +1635,7 @@ var schedule_2026_default = [
|
|
|
1485
1635
|
flag: "\u{1F1F6}\u{1F1E6}"
|
|
1486
1636
|
},
|
|
1487
1637
|
status: "SCHEDULED",
|
|
1488
|
-
updatedAt: "2026-06-
|
|
1638
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1489
1639
|
},
|
|
1490
1640
|
{
|
|
1491
1641
|
id: "760463",
|
|
@@ -1506,7 +1656,7 @@ var schedule_2026_default = [
|
|
|
1506
1656
|
flag: "\u{1F1E8}\u{1F1E6}"
|
|
1507
1657
|
},
|
|
1508
1658
|
status: "SCHEDULED",
|
|
1509
|
-
updatedAt: "2026-06-
|
|
1659
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1510
1660
|
},
|
|
1511
1661
|
{
|
|
1512
1662
|
id: "760464",
|
|
@@ -1527,7 +1677,7 @@ var schedule_2026_default = [
|
|
|
1527
1677
|
flag: "\u{1F1ED}\u{1F1F9}"
|
|
1528
1678
|
},
|
|
1529
1679
|
status: "SCHEDULED",
|
|
1530
|
-
updatedAt: "2026-06-
|
|
1680
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1531
1681
|
},
|
|
1532
1682
|
{
|
|
1533
1683
|
id: "760465",
|
|
@@ -1548,7 +1698,7 @@ var schedule_2026_default = [
|
|
|
1548
1698
|
flag: "\u{1F1E7}\u{1F1F7}"
|
|
1549
1699
|
},
|
|
1550
1700
|
status: "SCHEDULED",
|
|
1551
|
-
updatedAt: "2026-06-
|
|
1701
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1552
1702
|
},
|
|
1553
1703
|
{
|
|
1554
1704
|
id: "760467",
|
|
@@ -1569,7 +1719,7 @@ var schedule_2026_default = [
|
|
|
1569
1719
|
flag: "\u{1F1F2}\u{1F1FD}"
|
|
1570
1720
|
},
|
|
1571
1721
|
status: "SCHEDULED",
|
|
1572
|
-
updatedAt: "2026-06-
|
|
1722
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1573
1723
|
},
|
|
1574
1724
|
{
|
|
1575
1725
|
id: "760466",
|
|
@@ -1590,7 +1740,7 @@ var schedule_2026_default = [
|
|
|
1590
1740
|
flag: "\u{1F1F0}\u{1F1F7}"
|
|
1591
1741
|
},
|
|
1592
1742
|
status: "SCHEDULED",
|
|
1593
|
-
updatedAt: "2026-06-
|
|
1743
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1594
1744
|
},
|
|
1595
1745
|
{
|
|
1596
1746
|
id: "760473",
|
|
@@ -1611,7 +1761,7 @@ var schedule_2026_default = [
|
|
|
1611
1761
|
flag: "\u{1F1E8}\u{1F1EE}"
|
|
1612
1762
|
},
|
|
1613
1763
|
status: "SCHEDULED",
|
|
1614
|
-
updatedAt: "2026-06-
|
|
1764
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1615
1765
|
},
|
|
1616
1766
|
{
|
|
1617
1767
|
id: "760468",
|
|
@@ -1632,7 +1782,7 @@ var schedule_2026_default = [
|
|
|
1632
1782
|
flag: "\u{1F1E9}\u{1F1EA}"
|
|
1633
1783
|
},
|
|
1634
1784
|
status: "SCHEDULED",
|
|
1635
|
-
updatedAt: "2026-06-
|
|
1785
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1636
1786
|
},
|
|
1637
1787
|
{
|
|
1638
1788
|
id: "760471",
|
|
@@ -1653,7 +1803,7 @@ var schedule_2026_default = [
|
|
|
1653
1803
|
flag: "\u{1F1F8}\u{1F1EA}"
|
|
1654
1804
|
},
|
|
1655
1805
|
status: "SCHEDULED",
|
|
1656
|
-
updatedAt: "2026-06-
|
|
1806
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1657
1807
|
},
|
|
1658
1808
|
{
|
|
1659
1809
|
id: "760472",
|
|
@@ -1674,7 +1824,7 @@ var schedule_2026_default = [
|
|
|
1674
1824
|
flag: "\u{1F1F3}\u{1F1F1}"
|
|
1675
1825
|
},
|
|
1676
1826
|
status: "SCHEDULED",
|
|
1677
|
-
updatedAt: "2026-06-
|
|
1827
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1678
1828
|
},
|
|
1679
1829
|
{
|
|
1680
1830
|
id: "760469",
|
|
@@ -1695,7 +1845,7 @@ var schedule_2026_default = [
|
|
|
1695
1845
|
flag: "\u{1F1E6}\u{1F1FA}"
|
|
1696
1846
|
},
|
|
1697
1847
|
status: "SCHEDULED",
|
|
1698
|
-
updatedAt: "2026-06-
|
|
1848
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1699
1849
|
},
|
|
1700
1850
|
{
|
|
1701
1851
|
id: "760470",
|
|
@@ -1716,7 +1866,7 @@ var schedule_2026_default = [
|
|
|
1716
1866
|
flag: "\u{1F1FA}\u{1F1F8}"
|
|
1717
1867
|
},
|
|
1718
1868
|
status: "SCHEDULED",
|
|
1719
|
-
updatedAt: "2026-06-
|
|
1869
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1720
1870
|
},
|
|
1721
1871
|
{
|
|
1722
1872
|
id: "760475",
|
|
@@ -1737,7 +1887,7 @@ var schedule_2026_default = [
|
|
|
1737
1887
|
flag: "\u{1F1EB}\u{1F1F7}"
|
|
1738
1888
|
},
|
|
1739
1889
|
status: "SCHEDULED",
|
|
1740
|
-
updatedAt: "2026-06-
|
|
1890
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1741
1891
|
},
|
|
1742
1892
|
{
|
|
1743
1893
|
id: "760474",
|
|
@@ -1758,7 +1908,7 @@ var schedule_2026_default = [
|
|
|
1758
1908
|
flag: "\u{1F1EE}\u{1F1F6}"
|
|
1759
1909
|
},
|
|
1760
1910
|
status: "SCHEDULED",
|
|
1761
|
-
updatedAt: "2026-06-
|
|
1911
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1762
1912
|
},
|
|
1763
1913
|
{
|
|
1764
1914
|
id: "760478",
|
|
@@ -1779,7 +1929,7 @@ var schedule_2026_default = [
|
|
|
1779
1929
|
flag: "\u{1F1F8}\u{1F1E6}"
|
|
1780
1930
|
},
|
|
1781
1931
|
status: "SCHEDULED",
|
|
1782
|
-
updatedAt: "2026-06-
|
|
1932
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1783
1933
|
},
|
|
1784
1934
|
{
|
|
1785
1935
|
id: "760479",
|
|
@@ -1800,7 +1950,7 @@ var schedule_2026_default = [
|
|
|
1800
1950
|
flag: "\u{1F1EA}\u{1F1F8}"
|
|
1801
1951
|
},
|
|
1802
1952
|
status: "SCHEDULED",
|
|
1803
|
-
updatedAt: "2026-06-
|
|
1953
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1804
1954
|
},
|
|
1805
1955
|
{
|
|
1806
1956
|
id: "760476",
|
|
@@ -1821,7 +1971,7 @@ var schedule_2026_default = [
|
|
|
1821
1971
|
flag: "\u{1F1EE}\u{1F1F7}"
|
|
1822
1972
|
},
|
|
1823
1973
|
status: "SCHEDULED",
|
|
1824
|
-
updatedAt: "2026-06-
|
|
1974
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1825
1975
|
},
|
|
1826
1976
|
{
|
|
1827
1977
|
id: "760477",
|
|
@@ -1842,7 +1992,7 @@ var schedule_2026_default = [
|
|
|
1842
1992
|
flag: "\u{1F1E7}\u{1F1EA}"
|
|
1843
1993
|
},
|
|
1844
1994
|
status: "SCHEDULED",
|
|
1845
|
-
updatedAt: "2026-06-
|
|
1995
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1846
1996
|
},
|
|
1847
1997
|
{
|
|
1848
1998
|
id: "760480",
|
|
@@ -1863,7 +2013,7 @@ var schedule_2026_default = [
|
|
|
1863
2013
|
flag: "\u{1F1EC}\u{1F1ED}"
|
|
1864
2014
|
},
|
|
1865
2015
|
status: "SCHEDULED",
|
|
1866
|
-
updatedAt: "2026-06-
|
|
2016
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1867
2017
|
},
|
|
1868
2018
|
{
|
|
1869
2019
|
id: "760485",
|
|
@@ -1884,7 +2034,7 @@ var schedule_2026_default = [
|
|
|
1884
2034
|
flag: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}"
|
|
1885
2035
|
},
|
|
1886
2036
|
status: "SCHEDULED",
|
|
1887
|
-
updatedAt: "2026-06-
|
|
2037
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1888
2038
|
},
|
|
1889
2039
|
{
|
|
1890
2040
|
id: "760481",
|
|
@@ -1905,7 +2055,7 @@ var schedule_2026_default = [
|
|
|
1905
2055
|
flag: "\u{1F1F5}\u{1F1F9}"
|
|
1906
2056
|
},
|
|
1907
2057
|
status: "SCHEDULED",
|
|
1908
|
-
updatedAt: "2026-06-
|
|
2058
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1909
2059
|
},
|
|
1910
2060
|
{
|
|
1911
2061
|
id: "760482",
|
|
@@ -1926,7 +2076,7 @@ var schedule_2026_default = [
|
|
|
1926
2076
|
flag: "\u{1F1FA}\u{1F1FF}"
|
|
1927
2077
|
},
|
|
1928
2078
|
status: "SCHEDULED",
|
|
1929
|
-
updatedAt: "2026-06-
|
|
2079
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1930
2080
|
},
|
|
1931
2081
|
{
|
|
1932
2082
|
id: "760484",
|
|
@@ -1947,7 +2097,7 @@ var schedule_2026_default = [
|
|
|
1947
2097
|
flag: "\u{1F1E6}\u{1F1F9}"
|
|
1948
2098
|
},
|
|
1949
2099
|
status: "SCHEDULED",
|
|
1950
|
-
updatedAt: "2026-06-
|
|
2100
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1951
2101
|
},
|
|
1952
2102
|
{
|
|
1953
2103
|
id: "760483",
|
|
@@ -1968,7 +2118,7 @@ var schedule_2026_default = [
|
|
|
1968
2118
|
flag: "\u{1F1E6}\u{1F1F7}"
|
|
1969
2119
|
},
|
|
1970
2120
|
status: "SCHEDULED",
|
|
1971
|
-
updatedAt: "2026-06-
|
|
2121
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1972
2122
|
},
|
|
1973
2123
|
{
|
|
1974
2124
|
id: "760486",
|
|
@@ -1988,7 +2138,7 @@ var schedule_2026_default = [
|
|
|
1988
2138
|
flag: "\u{1F3F3}\uFE0F"
|
|
1989
2139
|
},
|
|
1990
2140
|
status: "SCHEDULED",
|
|
1991
|
-
updatedAt: "2026-06-
|
|
2141
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
1992
2142
|
},
|
|
1993
2143
|
{
|
|
1994
2144
|
id: "760487",
|
|
@@ -2008,7 +2158,7 @@ var schedule_2026_default = [
|
|
|
2008
2158
|
flag: "\u{1F3F3}\uFE0F"
|
|
2009
2159
|
},
|
|
2010
2160
|
status: "SCHEDULED",
|
|
2011
|
-
updatedAt: "2026-06-
|
|
2161
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2012
2162
|
},
|
|
2013
2163
|
{
|
|
2014
2164
|
id: "760489",
|
|
@@ -2018,9 +2168,9 @@ var schedule_2026_default = [
|
|
|
2018
2168
|
city: "Foxborough, Massachusetts",
|
|
2019
2169
|
country: "USA",
|
|
2020
2170
|
home: {
|
|
2021
|
-
code: "
|
|
2171
|
+
code: "TBD",
|
|
2022
2172
|
name: "Germany",
|
|
2023
|
-
flag: "\u{
|
|
2173
|
+
flag: "\u{1F3F3}\uFE0F"
|
|
2024
2174
|
},
|
|
2025
2175
|
away: {
|
|
2026
2176
|
code: "3RD",
|
|
@@ -2028,7 +2178,7 @@ var schedule_2026_default = [
|
|
|
2028
2178
|
flag: "\u{1F3F3}\uFE0F"
|
|
2029
2179
|
},
|
|
2030
2180
|
status: "SCHEDULED",
|
|
2031
|
-
updatedAt: "2026-06-
|
|
2181
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2032
2182
|
},
|
|
2033
2183
|
{
|
|
2034
2184
|
id: "760488",
|
|
@@ -2048,7 +2198,7 @@ var schedule_2026_default = [
|
|
|
2048
2198
|
flag: "\u{1F3F3}\uFE0F"
|
|
2049
2199
|
},
|
|
2050
2200
|
status: "SCHEDULED",
|
|
2051
|
-
updatedAt: "2026-06-
|
|
2201
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2052
2202
|
},
|
|
2053
2203
|
{
|
|
2054
2204
|
id: "760490",
|
|
@@ -2068,7 +2218,7 @@ var schedule_2026_default = [
|
|
|
2068
2218
|
flag: "\u{1F3F3}\uFE0F"
|
|
2069
2219
|
},
|
|
2070
2220
|
status: "SCHEDULED",
|
|
2071
|
-
updatedAt: "2026-06-
|
|
2221
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2072
2222
|
},
|
|
2073
2223
|
{
|
|
2074
2224
|
id: "760492",
|
|
@@ -2088,7 +2238,7 @@ var schedule_2026_default = [
|
|
|
2088
2238
|
flag: "\u{1F3F3}\uFE0F"
|
|
2089
2239
|
},
|
|
2090
2240
|
status: "SCHEDULED",
|
|
2091
|
-
updatedAt: "2026-06-
|
|
2241
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2092
2242
|
},
|
|
2093
2243
|
{
|
|
2094
2244
|
id: "760491",
|
|
@@ -2098,9 +2248,9 @@ var schedule_2026_default = [
|
|
|
2098
2248
|
city: "Mexico City",
|
|
2099
2249
|
country: "Mexico",
|
|
2100
2250
|
home: {
|
|
2101
|
-
code: "
|
|
2251
|
+
code: "TBD",
|
|
2102
2252
|
name: "Mexico",
|
|
2103
|
-
flag: "\u{
|
|
2253
|
+
flag: "\u{1F3F3}\uFE0F"
|
|
2104
2254
|
},
|
|
2105
2255
|
away: {
|
|
2106
2256
|
code: "3RD",
|
|
@@ -2108,7 +2258,7 @@ var schedule_2026_default = [
|
|
|
2108
2258
|
flag: "\u{1F3F3}\uFE0F"
|
|
2109
2259
|
},
|
|
2110
2260
|
status: "SCHEDULED",
|
|
2111
|
-
updatedAt: "2026-06-
|
|
2261
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2112
2262
|
},
|
|
2113
2263
|
{
|
|
2114
2264
|
id: "760495",
|
|
@@ -2128,7 +2278,7 @@ var schedule_2026_default = [
|
|
|
2128
2278
|
flag: "\u{1F3F3}\uFE0F"
|
|
2129
2279
|
},
|
|
2130
2280
|
status: "SCHEDULED",
|
|
2131
|
-
updatedAt: "2026-06-
|
|
2281
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2132
2282
|
},
|
|
2133
2283
|
{
|
|
2134
2284
|
id: "760493",
|
|
@@ -2148,7 +2298,7 @@ var schedule_2026_default = [
|
|
|
2148
2298
|
flag: "\u{1F3F3}\uFE0F"
|
|
2149
2299
|
},
|
|
2150
2300
|
status: "SCHEDULED",
|
|
2151
|
-
updatedAt: "2026-06-
|
|
2301
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2152
2302
|
},
|
|
2153
2303
|
{
|
|
2154
2304
|
id: "760494",
|
|
@@ -2158,9 +2308,9 @@ var schedule_2026_default = [
|
|
|
2158
2308
|
city: "Santa Clara, California",
|
|
2159
2309
|
country: "USA",
|
|
2160
2310
|
home: {
|
|
2161
|
-
code: "
|
|
2311
|
+
code: "TBD",
|
|
2162
2312
|
name: "United States",
|
|
2163
|
-
flag: "\u{
|
|
2313
|
+
flag: "\u{1F3F3}\uFE0F"
|
|
2164
2314
|
},
|
|
2165
2315
|
away: {
|
|
2166
2316
|
code: "3RD",
|
|
@@ -2168,7 +2318,7 @@ var schedule_2026_default = [
|
|
|
2168
2318
|
flag: "\u{1F3F3}\uFE0F"
|
|
2169
2319
|
},
|
|
2170
2320
|
status: "SCHEDULED",
|
|
2171
|
-
updatedAt: "2026-06-
|
|
2321
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2172
2322
|
},
|
|
2173
2323
|
{
|
|
2174
2324
|
id: "760497",
|
|
@@ -2188,7 +2338,7 @@ var schedule_2026_default = [
|
|
|
2188
2338
|
flag: "\u{1F3F3}\uFE0F"
|
|
2189
2339
|
},
|
|
2190
2340
|
status: "SCHEDULED",
|
|
2191
|
-
updatedAt: "2026-06-
|
|
2341
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2192
2342
|
},
|
|
2193
2343
|
{
|
|
2194
2344
|
id: "760496",
|
|
@@ -2208,7 +2358,7 @@ var schedule_2026_default = [
|
|
|
2208
2358
|
flag: "\u{1F3F3}\uFE0F"
|
|
2209
2359
|
},
|
|
2210
2360
|
status: "SCHEDULED",
|
|
2211
|
-
updatedAt: "2026-06-
|
|
2361
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2212
2362
|
},
|
|
2213
2363
|
{
|
|
2214
2364
|
id: "760498",
|
|
@@ -2228,7 +2378,7 @@ var schedule_2026_default = [
|
|
|
2228
2378
|
flag: "\u{1F3F3}\uFE0F"
|
|
2229
2379
|
},
|
|
2230
2380
|
status: "SCHEDULED",
|
|
2231
|
-
updatedAt: "2026-06-
|
|
2381
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2232
2382
|
},
|
|
2233
2383
|
{
|
|
2234
2384
|
id: "760499",
|
|
@@ -2248,7 +2398,7 @@ var schedule_2026_default = [
|
|
|
2248
2398
|
flag: "\u{1F3F3}\uFE0F"
|
|
2249
2399
|
},
|
|
2250
2400
|
status: "SCHEDULED",
|
|
2251
|
-
updatedAt: "2026-06-
|
|
2401
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2252
2402
|
},
|
|
2253
2403
|
{
|
|
2254
2404
|
id: "760500",
|
|
@@ -2258,9 +2408,9 @@ var schedule_2026_default = [
|
|
|
2258
2408
|
city: "Miami Gardens, Florida",
|
|
2259
2409
|
country: "USA",
|
|
2260
2410
|
home: {
|
|
2261
|
-
code: "
|
|
2411
|
+
code: "TBD",
|
|
2262
2412
|
name: "Argentina",
|
|
2263
|
-
flag: "\u{
|
|
2413
|
+
flag: "\u{1F3F3}\uFE0F"
|
|
2264
2414
|
},
|
|
2265
2415
|
away: {
|
|
2266
2416
|
code: "2H",
|
|
@@ -2268,7 +2418,7 @@ var schedule_2026_default = [
|
|
|
2268
2418
|
flag: "\u{1F3F3}\uFE0F"
|
|
2269
2419
|
},
|
|
2270
2420
|
status: "SCHEDULED",
|
|
2271
|
-
updatedAt: "2026-06-
|
|
2421
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2272
2422
|
},
|
|
2273
2423
|
{
|
|
2274
2424
|
id: "760501",
|
|
@@ -2288,7 +2438,7 @@ var schedule_2026_default = [
|
|
|
2288
2438
|
flag: "\u{1F3F3}\uFE0F"
|
|
2289
2439
|
},
|
|
2290
2440
|
status: "SCHEDULED",
|
|
2291
|
-
updatedAt: "2026-06-
|
|
2441
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2292
2442
|
},
|
|
2293
2443
|
{
|
|
2294
2444
|
id: "760502",
|
|
@@ -2308,7 +2458,7 @@ var schedule_2026_default = [
|
|
|
2308
2458
|
flag: "\u{1F3F3}\uFE0F"
|
|
2309
2459
|
},
|
|
2310
2460
|
status: "SCHEDULED",
|
|
2311
|
-
updatedAt: "2026-06-
|
|
2461
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2312
2462
|
},
|
|
2313
2463
|
{
|
|
2314
2464
|
id: "760503",
|
|
@@ -2328,7 +2478,7 @@ var schedule_2026_default = [
|
|
|
2328
2478
|
flag: "\u{1F3F3}\uFE0F"
|
|
2329
2479
|
},
|
|
2330
2480
|
status: "SCHEDULED",
|
|
2331
|
-
updatedAt: "2026-06-
|
|
2481
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2332
2482
|
},
|
|
2333
2483
|
{
|
|
2334
2484
|
id: "760504",
|
|
@@ -2348,7 +2498,7 @@ var schedule_2026_default = [
|
|
|
2348
2498
|
flag: "\u{1F3F3}\uFE0F"
|
|
2349
2499
|
},
|
|
2350
2500
|
status: "SCHEDULED",
|
|
2351
|
-
updatedAt: "2026-06-
|
|
2501
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2352
2502
|
},
|
|
2353
2503
|
{
|
|
2354
2504
|
id: "760505",
|
|
@@ -2368,7 +2518,7 @@ var schedule_2026_default = [
|
|
|
2368
2518
|
flag: "\u{1F3F3}\uFE0F"
|
|
2369
2519
|
},
|
|
2370
2520
|
status: "SCHEDULED",
|
|
2371
|
-
updatedAt: "2026-06-
|
|
2521
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2372
2522
|
},
|
|
2373
2523
|
{
|
|
2374
2524
|
id: "760506",
|
|
@@ -2388,7 +2538,7 @@ var schedule_2026_default = [
|
|
|
2388
2538
|
flag: "\u{1F3F3}\uFE0F"
|
|
2389
2539
|
},
|
|
2390
2540
|
status: "SCHEDULED",
|
|
2391
|
-
updatedAt: "2026-06-
|
|
2541
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2392
2542
|
},
|
|
2393
2543
|
{
|
|
2394
2544
|
id: "760507",
|
|
@@ -2408,7 +2558,7 @@ var schedule_2026_default = [
|
|
|
2408
2558
|
flag: "\u{1F3F3}\uFE0F"
|
|
2409
2559
|
},
|
|
2410
2560
|
status: "SCHEDULED",
|
|
2411
|
-
updatedAt: "2026-06-
|
|
2561
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2412
2562
|
},
|
|
2413
2563
|
{
|
|
2414
2564
|
id: "760509",
|
|
@@ -2428,7 +2578,7 @@ var schedule_2026_default = [
|
|
|
2428
2578
|
flag: "\u{1F3F3}\uFE0F"
|
|
2429
2579
|
},
|
|
2430
2580
|
status: "SCHEDULED",
|
|
2431
|
-
updatedAt: "2026-06-
|
|
2581
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2432
2582
|
},
|
|
2433
2583
|
{
|
|
2434
2584
|
id: "760508",
|
|
@@ -2448,7 +2598,7 @@ var schedule_2026_default = [
|
|
|
2448
2598
|
flag: "\u{1F3F3}\uFE0F"
|
|
2449
2599
|
},
|
|
2450
2600
|
status: "SCHEDULED",
|
|
2451
|
-
updatedAt: "2026-06-
|
|
2601
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2452
2602
|
},
|
|
2453
2603
|
{
|
|
2454
2604
|
id: "760510",
|
|
@@ -2458,17 +2608,17 @@ var schedule_2026_default = [
|
|
|
2458
2608
|
city: "Foxborough, Massachusetts",
|
|
2459
2609
|
country: "USA",
|
|
2460
2610
|
home: {
|
|
2461
|
-
code: "
|
|
2611
|
+
code: "RD32",
|
|
2462
2612
|
name: "Round of 16 1 Winner",
|
|
2463
2613
|
flag: "\u{1F3F3}\uFE0F"
|
|
2464
2614
|
},
|
|
2465
2615
|
away: {
|
|
2466
|
-
code: "
|
|
2616
|
+
code: "RD32",
|
|
2467
2617
|
name: "Round of 16 2 Winner",
|
|
2468
2618
|
flag: "\u{1F3F3}\uFE0F"
|
|
2469
2619
|
},
|
|
2470
2620
|
status: "SCHEDULED",
|
|
2471
|
-
updatedAt: "2026-06-
|
|
2621
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2472
2622
|
},
|
|
2473
2623
|
{
|
|
2474
2624
|
id: "760511",
|
|
@@ -2478,17 +2628,17 @@ var schedule_2026_default = [
|
|
|
2478
2628
|
city: "Inglewood, California",
|
|
2479
2629
|
country: "USA",
|
|
2480
2630
|
home: {
|
|
2481
|
-
code: "
|
|
2631
|
+
code: "RD32",
|
|
2482
2632
|
name: "Round of 16 5 Winner",
|
|
2483
2633
|
flag: "\u{1F3F3}\uFE0F"
|
|
2484
2634
|
},
|
|
2485
2635
|
away: {
|
|
2486
|
-
code: "
|
|
2636
|
+
code: "RD32",
|
|
2487
2637
|
name: "Round of 16 6 Winner",
|
|
2488
2638
|
flag: "\u{1F3F3}\uFE0F"
|
|
2489
2639
|
},
|
|
2490
2640
|
status: "SCHEDULED",
|
|
2491
|
-
updatedAt: "2026-06-
|
|
2641
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2492
2642
|
},
|
|
2493
2643
|
{
|
|
2494
2644
|
id: "760512",
|
|
@@ -2498,17 +2648,17 @@ var schedule_2026_default = [
|
|
|
2498
2648
|
city: "Miami Gardens, Florida",
|
|
2499
2649
|
country: "USA",
|
|
2500
2650
|
home: {
|
|
2501
|
-
code: "
|
|
2651
|
+
code: "RD32",
|
|
2502
2652
|
name: "Round of 16 3 Winner",
|
|
2503
2653
|
flag: "\u{1F3F3}\uFE0F"
|
|
2504
2654
|
},
|
|
2505
2655
|
away: {
|
|
2506
|
-
code: "
|
|
2656
|
+
code: "RD32",
|
|
2507
2657
|
name: "Round of 16 4 Winner",
|
|
2508
2658
|
flag: "\u{1F3F3}\uFE0F"
|
|
2509
2659
|
},
|
|
2510
2660
|
status: "SCHEDULED",
|
|
2511
|
-
updatedAt: "2026-06-
|
|
2661
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2512
2662
|
},
|
|
2513
2663
|
{
|
|
2514
2664
|
id: "760513",
|
|
@@ -2518,17 +2668,17 @@ var schedule_2026_default = [
|
|
|
2518
2668
|
city: "Kansas City, Missouri",
|
|
2519
2669
|
country: "USA",
|
|
2520
2670
|
home: {
|
|
2521
|
-
code: "
|
|
2671
|
+
code: "RD32",
|
|
2522
2672
|
name: "Round of 16 7 Winner",
|
|
2523
2673
|
flag: "\u{1F3F3}\uFE0F"
|
|
2524
2674
|
},
|
|
2525
2675
|
away: {
|
|
2526
|
-
code: "
|
|
2676
|
+
code: "RD32",
|
|
2527
2677
|
name: "Round of 16 8 Winner",
|
|
2528
2678
|
flag: "\u{1F3F3}\uFE0F"
|
|
2529
2679
|
},
|
|
2530
2680
|
status: "SCHEDULED",
|
|
2531
|
-
updatedAt: "2026-06-
|
|
2681
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2532
2682
|
},
|
|
2533
2683
|
{
|
|
2534
2684
|
id: "760514",
|
|
@@ -2538,17 +2688,17 @@ var schedule_2026_default = [
|
|
|
2538
2688
|
city: "Arlington, Texas",
|
|
2539
2689
|
country: "USA",
|
|
2540
2690
|
home: {
|
|
2541
|
-
code: "
|
|
2691
|
+
code: "RD32",
|
|
2542
2692
|
name: "Quarterfinal 1 Winner",
|
|
2543
2693
|
flag: "\u{1F3F3}\uFE0F"
|
|
2544
2694
|
},
|
|
2545
2695
|
away: {
|
|
2546
|
-
code: "
|
|
2696
|
+
code: "RD32",
|
|
2547
2697
|
name: "Quarterfinal 2 Winner",
|
|
2548
2698
|
flag: "\u{1F3F3}\uFE0F"
|
|
2549
2699
|
},
|
|
2550
2700
|
status: "SCHEDULED",
|
|
2551
|
-
updatedAt: "2026-06-
|
|
2701
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2552
2702
|
},
|
|
2553
2703
|
{
|
|
2554
2704
|
id: "760515",
|
|
@@ -2558,17 +2708,17 @@ var schedule_2026_default = [
|
|
|
2558
2708
|
city: "Atlanta, Georgia",
|
|
2559
2709
|
country: "USA",
|
|
2560
2710
|
home: {
|
|
2561
|
-
code: "
|
|
2711
|
+
code: "RD32",
|
|
2562
2712
|
name: "Quarterfinal 3 Winner",
|
|
2563
2713
|
flag: "\u{1F3F3}\uFE0F"
|
|
2564
2714
|
},
|
|
2565
2715
|
away: {
|
|
2566
|
-
code: "
|
|
2716
|
+
code: "RD32",
|
|
2567
2717
|
name: "Quarterfinal 4 Winner",
|
|
2568
2718
|
flag: "\u{1F3F3}\uFE0F"
|
|
2569
2719
|
},
|
|
2570
2720
|
status: "SCHEDULED",
|
|
2571
|
-
updatedAt: "2026-06-
|
|
2721
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2572
2722
|
},
|
|
2573
2723
|
{
|
|
2574
2724
|
id: "760516",
|
|
@@ -2578,17 +2728,17 @@ var schedule_2026_default = [
|
|
|
2578
2728
|
city: "Miami Gardens, Florida",
|
|
2579
2729
|
country: "USA",
|
|
2580
2730
|
home: {
|
|
2581
|
-
code: "
|
|
2731
|
+
code: "RD32",
|
|
2582
2732
|
name: "Semifinal 1 Loser",
|
|
2583
2733
|
flag: "\u{1F3F3}\uFE0F"
|
|
2584
2734
|
},
|
|
2585
2735
|
away: {
|
|
2586
|
-
code: "
|
|
2736
|
+
code: "RD32",
|
|
2587
2737
|
name: "Semifinal 2 Loser",
|
|
2588
2738
|
flag: "\u{1F3F3}\uFE0F"
|
|
2589
2739
|
},
|
|
2590
2740
|
status: "SCHEDULED",
|
|
2591
|
-
updatedAt: "2026-06-
|
|
2741
|
+
updatedAt: "2026-06-24T01:20:06.749Z"
|
|
2592
2742
|
},
|
|
2593
2743
|
{
|
|
2594
2744
|
id: "760517",
|
|
@@ -2598,17 +2748,17 @@ var schedule_2026_default = [
|
|
|
2598
2748
|
city: "East Rutherford, New Jersey",
|
|
2599
2749
|
country: "USA",
|
|
2600
2750
|
home: {
|
|
2601
|
-
code: "
|
|
2751
|
+
code: "RD32",
|
|
2602
2752
|
name: "Semifinal 1 Winner",
|
|
2603
2753
|
flag: "\u{1F3F3}\uFE0F"
|
|
2604
2754
|
},
|
|
2605
2755
|
away: {
|
|
2606
|
-
code: "
|
|
2756
|
+
code: "RD32",
|
|
2607
2757
|
name: "Semifinal 2 Winner",
|
|
2608
2758
|
flag: "\u{1F3F3}\uFE0F"
|
|
2609
2759
|
},
|
|
2610
2760
|
status: "SCHEDULED",
|
|
2611
|
-
updatedAt: "2026-06-
|
|
2761
|
+
updatedAt: "2026-06-24T01:20:06.749Z"
|
|
2612
2762
|
}
|
|
2613
2763
|
];
|
|
2614
2764
|
var SCHEDULE = schedule_2026_default;
|
|
@@ -2712,10 +2862,10 @@ function toInt(s) {
|
|
|
2712
2862
|
const n = parseInt(s, 10);
|
|
2713
2863
|
return Number.isFinite(n) ? n : void 0;
|
|
2714
2864
|
}
|
|
2715
|
-
function toTeam(
|
|
2716
|
-
const name =
|
|
2717
|
-
const code = (
|
|
2718
|
-
return { code, name, flag: nationToFlag(
|
|
2865
|
+
function toTeam(t2) {
|
|
2866
|
+
const name = t2?.displayName ?? t2?.name ?? t2?.location ?? t2?.shortDisplayName ?? "TBD";
|
|
2867
|
+
const code = (t2?.abbreviation ?? name.slice(0, 3)).toUpperCase();
|
|
2868
|
+
return { code, name, flag: nationToFlag(t2?.displayName ?? t2?.abbreviation ?? name) };
|
|
2719
2869
|
}
|
|
2720
2870
|
function mapEspnEvent(ev, ctx = {}) {
|
|
2721
2871
|
const comp = ev.competitions?.[0];
|
|
@@ -2733,6 +2883,11 @@ function mapEspnEvent(ev, ctx = {}) {
|
|
|
2733
2883
|
const hs = toInt(homeC?.score);
|
|
2734
2884
|
const as = toInt(awayC?.score);
|
|
2735
2885
|
const hasScore = status !== "SCHEDULED" && hs !== void 0 && as !== void 0;
|
|
2886
|
+
let winnerCode;
|
|
2887
|
+
if (isFinished(status)) {
|
|
2888
|
+
if (homeC?.winner) winnerCode = home.code;
|
|
2889
|
+
else if (awayC?.winner) winnerCode = away.code;
|
|
2890
|
+
}
|
|
2736
2891
|
return {
|
|
2737
2892
|
id: ev.id,
|
|
2738
2893
|
stage,
|
|
@@ -2746,6 +2901,7 @@ function mapEspnEvent(ev, ctx = {}) {
|
|
|
2746
2901
|
score: hasScore ? { home: hs, away: as } : void 0,
|
|
2747
2902
|
minute: parseMinute(ev.status ?? comp?.status),
|
|
2748
2903
|
status,
|
|
2904
|
+
winnerCode,
|
|
2749
2905
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2750
2906
|
};
|
|
2751
2907
|
}
|
|
@@ -2837,7 +2993,7 @@ var EspnAdapter = class {
|
|
|
2837
2993
|
const map = {};
|
|
2838
2994
|
try {
|
|
2839
2995
|
const tables = parseStandings(await this.get(this.standingsUrl()));
|
|
2840
|
-
for (const
|
|
2996
|
+
for (const t2 of tables) for (const r of t2.rows) map[r.team.code] = t2.group;
|
|
2841
2997
|
} catch {
|
|
2842
2998
|
}
|
|
2843
2999
|
this.groupMap = map;
|
|
@@ -2873,6 +3029,688 @@ var EspnAdapter = class {
|
|
|
2873
3029
|
}
|
|
2874
3030
|
}
|
|
2875
3031
|
};
|
|
3032
|
+
function teamFromMatch(match, code) {
|
|
3033
|
+
if (match.home.code === code) return match.home;
|
|
3034
|
+
if (match.away.code === code) return match.away;
|
|
3035
|
+
return void 0;
|
|
3036
|
+
}
|
|
3037
|
+
function matchKey(stage, index) {
|
|
3038
|
+
return `${stage}:${index}`;
|
|
3039
|
+
}
|
|
3040
|
+
function isGroupComplete(group, tables, standingsDegraded) {
|
|
3041
|
+
if (standingsDegraded) return false;
|
|
3042
|
+
const table = tables.find((t2) => t2.group === group);
|
|
3043
|
+
if (!table?.rows.length || table.rows.length !== 4) return false;
|
|
3044
|
+
return table.rows.every((r) => r.played >= 3);
|
|
3045
|
+
}
|
|
3046
|
+
function teamFromStandings(group, position, tables) {
|
|
3047
|
+
const table = tables.find((t2) => t2.group === group);
|
|
3048
|
+
if (!table) return void 0;
|
|
3049
|
+
const row = table.rows[position - 1];
|
|
3050
|
+
return row?.team;
|
|
3051
|
+
}
|
|
3052
|
+
function resolveWinner(match) {
|
|
3053
|
+
if (!isFinished(match.status)) return void 0;
|
|
3054
|
+
if (match.winnerCode) {
|
|
3055
|
+
const w = teamFromMatch(match, match.winnerCode);
|
|
3056
|
+
if (w && w.flag !== "\u{1F3F3}\uFE0F") return w;
|
|
3057
|
+
}
|
|
3058
|
+
if (!match.score) return void 0;
|
|
3059
|
+
const outcome = outcomeFromScore(match.score.home, match.score.away);
|
|
3060
|
+
if (outcome === "H") return match.home.flag !== "\u{1F3F3}\uFE0F" ? match.home : void 0;
|
|
3061
|
+
if (outcome === "A") return match.away.flag !== "\u{1F3F3}\uFE0F" ? match.away : void 0;
|
|
3062
|
+
return void 0;
|
|
3063
|
+
}
|
|
3064
|
+
function resolveLoser(match) {
|
|
3065
|
+
if (!isFinished(match.status)) return void 0;
|
|
3066
|
+
if (match.winnerCode) {
|
|
3067
|
+
const winner = teamFromMatch(match, match.winnerCode);
|
|
3068
|
+
if (winner?.code === match.home.code) {
|
|
3069
|
+
return match.away.flag !== "\u{1F3F3}\uFE0F" ? match.away : void 0;
|
|
3070
|
+
}
|
|
3071
|
+
if (winner?.code === match.away.code) {
|
|
3072
|
+
return match.home.flag !== "\u{1F3F3}\uFE0F" ? match.home : void 0;
|
|
3073
|
+
}
|
|
3074
|
+
}
|
|
3075
|
+
if (!match.score) return void 0;
|
|
3076
|
+
const outcome = outcomeFromScore(match.score.home, match.score.away);
|
|
3077
|
+
if (outcome === "H") return match.away.flag !== "\u{1F3F3}\uFE0F" ? match.away : void 0;
|
|
3078
|
+
if (outcome === "A") return match.home.flag !== "\u{1F3F3}\uFE0F" ? match.home : void 0;
|
|
3079
|
+
return void 0;
|
|
3080
|
+
}
|
|
3081
|
+
function participant(team, status) {
|
|
3082
|
+
return { label: team.name, flag: team.flag, code: team.code, status };
|
|
3083
|
+
}
|
|
3084
|
+
function tbd(label) {
|
|
3085
|
+
return { label, flag: "\u{1F3F3}\uFE0F", status: "tbd" };
|
|
3086
|
+
}
|
|
3087
|
+
function winnerLabel(ctx, stage, index) {
|
|
3088
|
+
return t(ctx.lang, "bracket.slot.winner", {
|
|
3089
|
+
stage: stageLabelI18n(ctx.lang, stage),
|
|
3090
|
+
n: String(index)
|
|
3091
|
+
});
|
|
3092
|
+
}
|
|
3093
|
+
function resolveSlot(ref, ctx) {
|
|
3094
|
+
switch (ref.kind) {
|
|
3095
|
+
case "seed":
|
|
3096
|
+
return tbd(ref.label);
|
|
3097
|
+
case "group": {
|
|
3098
|
+
if (isGroupComplete(ref.group, ctx.tables, ctx.standingsDegraded)) {
|
|
3099
|
+
const team = teamFromStandings(ref.group, ref.position, ctx.tables);
|
|
3100
|
+
if (team) return participant(team, "projected");
|
|
3101
|
+
}
|
|
3102
|
+
const label = ref.position === 1 ? t(ctx.lang, "bracket.slot.groupWinner", { group: ref.group }) : t(ctx.lang, "bracket.slot.groupSecond", { group: ref.group });
|
|
3103
|
+
return tbd(label);
|
|
3104
|
+
}
|
|
3105
|
+
case "third":
|
|
3106
|
+
return tbd(t(ctx.lang, "bracket.slot.third", { groups: ref.groups.join("/") }));
|
|
3107
|
+
case "winner": {
|
|
3108
|
+
const node = ctx.nodesByKey.get(matchKey(ref.stage, ref.index));
|
|
3109
|
+
const match = node ? ctx.matchesById.get(node.matchId) : void 0;
|
|
3110
|
+
if (match) {
|
|
3111
|
+
const winner = resolveWinner(match);
|
|
3112
|
+
if (winner) return participant(winner, "confirmed");
|
|
3113
|
+
}
|
|
3114
|
+
return tbd(winnerLabel(ctx, ref.stage, ref.index));
|
|
3115
|
+
}
|
|
3116
|
+
case "loser": {
|
|
3117
|
+
const node = ctx.nodesByKey.get(matchKey(ref.stage, ref.index));
|
|
3118
|
+
const match = node ? ctx.matchesById.get(node.matchId) : void 0;
|
|
3119
|
+
if (match) {
|
|
3120
|
+
const loser = resolveLoser(match);
|
|
3121
|
+
if (loser) return participant(loser, "confirmed");
|
|
3122
|
+
}
|
|
3123
|
+
return tbd(
|
|
3124
|
+
t(ctx.lang, "bracket.slot.loser", {
|
|
3125
|
+
stage: stageLabelI18n(ctx.lang, ref.stage),
|
|
3126
|
+
n: String(ref.index)
|
|
3127
|
+
})
|
|
3128
|
+
);
|
|
3129
|
+
}
|
|
3130
|
+
default:
|
|
3131
|
+
return tbd(t(ctx.lang, "bracket.slot.tbd"));
|
|
3132
|
+
}
|
|
3133
|
+
}
|
|
3134
|
+
function buildBracketView(topology, matches, tables, standingsDegraded, liveDegraded, filterStage, lang) {
|
|
3135
|
+
const knockout = matches.filter((m) => m.stage !== "GROUP" && m.stage !== "FRIENDLY");
|
|
3136
|
+
const matchesById = new Map(knockout.map((m) => [m.id, m]));
|
|
3137
|
+
const nodesByKey = new Map(topology.matches.map((n) => [matchKey(n.stage, n.index), n]));
|
|
3138
|
+
const ctx = { nodesByKey, matchesById, tables, standingsDegraded, lang };
|
|
3139
|
+
const want = filterStage?.toUpperCase();
|
|
3140
|
+
const stages = [];
|
|
3141
|
+
for (const stage of topology.stages) {
|
|
3142
|
+
if (want && stage !== want) continue;
|
|
3143
|
+
const nodes = topology.matches.filter((n) => n.stage === stage);
|
|
3144
|
+
const matchViews = nodes.map((node) => {
|
|
3145
|
+
const match = matchesById.get(node.matchId) ?? {
|
|
3146
|
+
id: node.matchId,
|
|
3147
|
+
stage: node.stage,
|
|
3148
|
+
kickoff: "",
|
|
3149
|
+
venue: "",
|
|
3150
|
+
home: { code: "?", name: "TBD", flag: "\u{1F3F3}\uFE0F" },
|
|
3151
|
+
away: { code: "?", name: "TBD", flag: "\u{1F3F3}\uFE0F" },
|
|
3152
|
+
status: "SCHEDULED",
|
|
3153
|
+
updatedAt: ""
|
|
3154
|
+
};
|
|
3155
|
+
return {
|
|
3156
|
+
matchId: node.matchId,
|
|
3157
|
+
stage: node.stage,
|
|
3158
|
+
index: node.index,
|
|
3159
|
+
kickoff: match.kickoff,
|
|
3160
|
+
home: resolveSlot(node.home, ctx),
|
|
3161
|
+
away: resolveSlot(node.away, ctx),
|
|
3162
|
+
match
|
|
3163
|
+
};
|
|
3164
|
+
});
|
|
3165
|
+
stages.push({
|
|
3166
|
+
stage,
|
|
3167
|
+
label: stageLabelI18n(lang, stage),
|
|
3168
|
+
matches: matchViews
|
|
3169
|
+
});
|
|
3170
|
+
}
|
|
3171
|
+
return {
|
|
3172
|
+
stages,
|
|
3173
|
+
degraded: liveDegraded,
|
|
3174
|
+
standingsDegraded
|
|
3175
|
+
};
|
|
3176
|
+
}
|
|
3177
|
+
var bracket_2026_default = {
|
|
3178
|
+
generatedAt: "2026-06-24T01:20:06.749Z",
|
|
3179
|
+
stages: [
|
|
3180
|
+
"R32",
|
|
3181
|
+
"R16",
|
|
3182
|
+
"QF",
|
|
3183
|
+
"SF",
|
|
3184
|
+
"3P",
|
|
3185
|
+
"F"
|
|
3186
|
+
],
|
|
3187
|
+
matches: [
|
|
3188
|
+
{
|
|
3189
|
+
matchId: "760486",
|
|
3190
|
+
stage: "R32",
|
|
3191
|
+
index: 1,
|
|
3192
|
+
home: {
|
|
3193
|
+
kind: "group",
|
|
3194
|
+
position: 2,
|
|
3195
|
+
group: "A"
|
|
3196
|
+
},
|
|
3197
|
+
away: {
|
|
3198
|
+
kind: "group",
|
|
3199
|
+
position: 2,
|
|
3200
|
+
group: "B"
|
|
3201
|
+
}
|
|
3202
|
+
},
|
|
3203
|
+
{
|
|
3204
|
+
matchId: "760487",
|
|
3205
|
+
stage: "R32",
|
|
3206
|
+
index: 2,
|
|
3207
|
+
home: {
|
|
3208
|
+
kind: "group",
|
|
3209
|
+
position: 1,
|
|
3210
|
+
group: "C"
|
|
3211
|
+
},
|
|
3212
|
+
away: {
|
|
3213
|
+
kind: "group",
|
|
3214
|
+
position: 2,
|
|
3215
|
+
group: "F"
|
|
3216
|
+
}
|
|
3217
|
+
},
|
|
3218
|
+
{
|
|
3219
|
+
matchId: "760488",
|
|
3220
|
+
stage: "R32",
|
|
3221
|
+
index: 3,
|
|
3222
|
+
home: {
|
|
3223
|
+
kind: "group",
|
|
3224
|
+
position: 1,
|
|
3225
|
+
group: "F"
|
|
3226
|
+
},
|
|
3227
|
+
away: {
|
|
3228
|
+
kind: "group",
|
|
3229
|
+
position: 2,
|
|
3230
|
+
group: "C"
|
|
3231
|
+
}
|
|
3232
|
+
},
|
|
3233
|
+
{
|
|
3234
|
+
matchId: "760489",
|
|
3235
|
+
stage: "R32",
|
|
3236
|
+
index: 4,
|
|
3237
|
+
home: {
|
|
3238
|
+
kind: "seed",
|
|
3239
|
+
label: "Germany",
|
|
3240
|
+
code: "TBD"
|
|
3241
|
+
},
|
|
3242
|
+
away: {
|
|
3243
|
+
kind: "third",
|
|
3244
|
+
groups: [
|
|
3245
|
+
"A",
|
|
3246
|
+
"B",
|
|
3247
|
+
"C",
|
|
3248
|
+
"D",
|
|
3249
|
+
"F"
|
|
3250
|
+
]
|
|
3251
|
+
}
|
|
3252
|
+
},
|
|
3253
|
+
{
|
|
3254
|
+
matchId: "760490",
|
|
3255
|
+
stage: "R32",
|
|
3256
|
+
index: 5,
|
|
3257
|
+
home: {
|
|
3258
|
+
kind: "group",
|
|
3259
|
+
position: 2,
|
|
3260
|
+
group: "E"
|
|
3261
|
+
},
|
|
3262
|
+
away: {
|
|
3263
|
+
kind: "group",
|
|
3264
|
+
position: 2,
|
|
3265
|
+
group: "I"
|
|
3266
|
+
}
|
|
3267
|
+
},
|
|
3268
|
+
{
|
|
3269
|
+
matchId: "760491",
|
|
3270
|
+
stage: "R32",
|
|
3271
|
+
index: 6,
|
|
3272
|
+
home: {
|
|
3273
|
+
kind: "seed",
|
|
3274
|
+
label: "Mexico",
|
|
3275
|
+
code: "TBD"
|
|
3276
|
+
},
|
|
3277
|
+
away: {
|
|
3278
|
+
kind: "third",
|
|
3279
|
+
groups: [
|
|
3280
|
+
"C",
|
|
3281
|
+
"E",
|
|
3282
|
+
"F",
|
|
3283
|
+
"H",
|
|
3284
|
+
"I"
|
|
3285
|
+
]
|
|
3286
|
+
}
|
|
3287
|
+
},
|
|
3288
|
+
{
|
|
3289
|
+
matchId: "760492",
|
|
3290
|
+
stage: "R32",
|
|
3291
|
+
index: 7,
|
|
3292
|
+
home: {
|
|
3293
|
+
kind: "group",
|
|
3294
|
+
position: 1,
|
|
3295
|
+
group: "I"
|
|
3296
|
+
},
|
|
3297
|
+
away: {
|
|
3298
|
+
kind: "third",
|
|
3299
|
+
groups: [
|
|
3300
|
+
"C",
|
|
3301
|
+
"D",
|
|
3302
|
+
"F",
|
|
3303
|
+
"G",
|
|
3304
|
+
"H"
|
|
3305
|
+
]
|
|
3306
|
+
}
|
|
3307
|
+
},
|
|
3308
|
+
{
|
|
3309
|
+
matchId: "760493",
|
|
3310
|
+
stage: "R32",
|
|
3311
|
+
index: 8,
|
|
3312
|
+
home: {
|
|
3313
|
+
kind: "group",
|
|
3314
|
+
position: 1,
|
|
3315
|
+
group: "G"
|
|
3316
|
+
},
|
|
3317
|
+
away: {
|
|
3318
|
+
kind: "third",
|
|
3319
|
+
groups: [
|
|
3320
|
+
"A",
|
|
3321
|
+
"E",
|
|
3322
|
+
"H",
|
|
3323
|
+
"I",
|
|
3324
|
+
"J"
|
|
3325
|
+
]
|
|
3326
|
+
}
|
|
3327
|
+
},
|
|
3328
|
+
{
|
|
3329
|
+
matchId: "760494",
|
|
3330
|
+
stage: "R32",
|
|
3331
|
+
index: 9,
|
|
3332
|
+
home: {
|
|
3333
|
+
kind: "seed",
|
|
3334
|
+
label: "United States",
|
|
3335
|
+
code: "TBD"
|
|
3336
|
+
},
|
|
3337
|
+
away: {
|
|
3338
|
+
kind: "third",
|
|
3339
|
+
groups: [
|
|
3340
|
+
"B",
|
|
3341
|
+
"E",
|
|
3342
|
+
"F",
|
|
3343
|
+
"I",
|
|
3344
|
+
"J"
|
|
3345
|
+
]
|
|
3346
|
+
}
|
|
3347
|
+
},
|
|
3348
|
+
{
|
|
3349
|
+
matchId: "760495",
|
|
3350
|
+
stage: "R32",
|
|
3351
|
+
index: 10,
|
|
3352
|
+
home: {
|
|
3353
|
+
kind: "group",
|
|
3354
|
+
position: 1,
|
|
3355
|
+
group: "L"
|
|
3356
|
+
},
|
|
3357
|
+
away: {
|
|
3358
|
+
kind: "third",
|
|
3359
|
+
groups: [
|
|
3360
|
+
"E",
|
|
3361
|
+
"H",
|
|
3362
|
+
"I",
|
|
3363
|
+
"J",
|
|
3364
|
+
"K"
|
|
3365
|
+
]
|
|
3366
|
+
}
|
|
3367
|
+
},
|
|
3368
|
+
{
|
|
3369
|
+
matchId: "760496",
|
|
3370
|
+
stage: "R32",
|
|
3371
|
+
index: 11,
|
|
3372
|
+
home: {
|
|
3373
|
+
kind: "group",
|
|
3374
|
+
position: 2,
|
|
3375
|
+
group: "K"
|
|
3376
|
+
},
|
|
3377
|
+
away: {
|
|
3378
|
+
kind: "group",
|
|
3379
|
+
position: 2,
|
|
3380
|
+
group: "L"
|
|
3381
|
+
}
|
|
3382
|
+
},
|
|
3383
|
+
{
|
|
3384
|
+
matchId: "760497",
|
|
3385
|
+
stage: "R32",
|
|
3386
|
+
index: 12,
|
|
3387
|
+
home: {
|
|
3388
|
+
kind: "group",
|
|
3389
|
+
position: 1,
|
|
3390
|
+
group: "H"
|
|
3391
|
+
},
|
|
3392
|
+
away: {
|
|
3393
|
+
kind: "group",
|
|
3394
|
+
position: 2,
|
|
3395
|
+
group: "J"
|
|
3396
|
+
}
|
|
3397
|
+
},
|
|
3398
|
+
{
|
|
3399
|
+
matchId: "760498",
|
|
3400
|
+
stage: "R32",
|
|
3401
|
+
index: 13,
|
|
3402
|
+
home: {
|
|
3403
|
+
kind: "group",
|
|
3404
|
+
position: 1,
|
|
3405
|
+
group: "B"
|
|
3406
|
+
},
|
|
3407
|
+
away: {
|
|
3408
|
+
kind: "third",
|
|
3409
|
+
groups: [
|
|
3410
|
+
"E",
|
|
3411
|
+
"F",
|
|
3412
|
+
"G",
|
|
3413
|
+
"I",
|
|
3414
|
+
"J"
|
|
3415
|
+
]
|
|
3416
|
+
}
|
|
3417
|
+
},
|
|
3418
|
+
{
|
|
3419
|
+
matchId: "760499",
|
|
3420
|
+
stage: "R32",
|
|
3421
|
+
index: 14,
|
|
3422
|
+
home: {
|
|
3423
|
+
kind: "group",
|
|
3424
|
+
position: 2,
|
|
3425
|
+
group: "D"
|
|
3426
|
+
},
|
|
3427
|
+
away: {
|
|
3428
|
+
kind: "group",
|
|
3429
|
+
position: 2,
|
|
3430
|
+
group: "G"
|
|
3431
|
+
}
|
|
3432
|
+
},
|
|
3433
|
+
{
|
|
3434
|
+
matchId: "760500",
|
|
3435
|
+
stage: "R32",
|
|
3436
|
+
index: 15,
|
|
3437
|
+
home: {
|
|
3438
|
+
kind: "seed",
|
|
3439
|
+
label: "Argentina",
|
|
3440
|
+
code: "TBD"
|
|
3441
|
+
},
|
|
3442
|
+
away: {
|
|
3443
|
+
kind: "group",
|
|
3444
|
+
position: 2,
|
|
3445
|
+
group: "H"
|
|
3446
|
+
}
|
|
3447
|
+
},
|
|
3448
|
+
{
|
|
3449
|
+
matchId: "760501",
|
|
3450
|
+
stage: "R32",
|
|
3451
|
+
index: 16,
|
|
3452
|
+
home: {
|
|
3453
|
+
kind: "group",
|
|
3454
|
+
position: 1,
|
|
3455
|
+
group: "K"
|
|
3456
|
+
},
|
|
3457
|
+
away: {
|
|
3458
|
+
kind: "third",
|
|
3459
|
+
groups: [
|
|
3460
|
+
"D",
|
|
3461
|
+
"E",
|
|
3462
|
+
"I",
|
|
3463
|
+
"J",
|
|
3464
|
+
"L"
|
|
3465
|
+
]
|
|
3466
|
+
}
|
|
3467
|
+
},
|
|
3468
|
+
{
|
|
3469
|
+
matchId: "760502",
|
|
3470
|
+
stage: "R16",
|
|
3471
|
+
index: 1,
|
|
3472
|
+
home: {
|
|
3473
|
+
kind: "winner",
|
|
3474
|
+
stage: "R32",
|
|
3475
|
+
index: 1
|
|
3476
|
+
},
|
|
3477
|
+
away: {
|
|
3478
|
+
kind: "winner",
|
|
3479
|
+
stage: "R32",
|
|
3480
|
+
index: 3
|
|
3481
|
+
}
|
|
3482
|
+
},
|
|
3483
|
+
{
|
|
3484
|
+
matchId: "760503",
|
|
3485
|
+
stage: "R16",
|
|
3486
|
+
index: 2,
|
|
3487
|
+
home: {
|
|
3488
|
+
kind: "winner",
|
|
3489
|
+
stage: "R32",
|
|
3490
|
+
index: 2
|
|
3491
|
+
},
|
|
3492
|
+
away: {
|
|
3493
|
+
kind: "winner",
|
|
3494
|
+
stage: "R32",
|
|
3495
|
+
index: 5
|
|
3496
|
+
}
|
|
3497
|
+
},
|
|
3498
|
+
{
|
|
3499
|
+
matchId: "760504",
|
|
3500
|
+
stage: "R16",
|
|
3501
|
+
index: 3,
|
|
3502
|
+
home: {
|
|
3503
|
+
kind: "winner",
|
|
3504
|
+
stage: "R32",
|
|
3505
|
+
index: 4
|
|
3506
|
+
},
|
|
3507
|
+
away: {
|
|
3508
|
+
kind: "winner",
|
|
3509
|
+
stage: "R32",
|
|
3510
|
+
index: 6
|
|
3511
|
+
}
|
|
3512
|
+
},
|
|
3513
|
+
{
|
|
3514
|
+
matchId: "760505",
|
|
3515
|
+
stage: "R16",
|
|
3516
|
+
index: 4,
|
|
3517
|
+
home: {
|
|
3518
|
+
kind: "winner",
|
|
3519
|
+
stage: "R32",
|
|
3520
|
+
index: 7
|
|
3521
|
+
},
|
|
3522
|
+
away: {
|
|
3523
|
+
kind: "winner",
|
|
3524
|
+
stage: "R32",
|
|
3525
|
+
index: 8
|
|
3526
|
+
}
|
|
3527
|
+
},
|
|
3528
|
+
{
|
|
3529
|
+
matchId: "760506",
|
|
3530
|
+
stage: "R16",
|
|
3531
|
+
index: 5,
|
|
3532
|
+
home: {
|
|
3533
|
+
kind: "winner",
|
|
3534
|
+
stage: "R32",
|
|
3535
|
+
index: 11
|
|
3536
|
+
},
|
|
3537
|
+
away: {
|
|
3538
|
+
kind: "winner",
|
|
3539
|
+
stage: "R32",
|
|
3540
|
+
index: 12
|
|
3541
|
+
}
|
|
3542
|
+
},
|
|
3543
|
+
{
|
|
3544
|
+
matchId: "760507",
|
|
3545
|
+
stage: "R16",
|
|
3546
|
+
index: 6,
|
|
3547
|
+
home: {
|
|
3548
|
+
kind: "winner",
|
|
3549
|
+
stage: "R32",
|
|
3550
|
+
index: 9
|
|
3551
|
+
},
|
|
3552
|
+
away: {
|
|
3553
|
+
kind: "winner",
|
|
3554
|
+
stage: "R32",
|
|
3555
|
+
index: 10
|
|
3556
|
+
}
|
|
3557
|
+
},
|
|
3558
|
+
{
|
|
3559
|
+
matchId: "760508",
|
|
3560
|
+
stage: "R16",
|
|
3561
|
+
index: 7,
|
|
3562
|
+
home: {
|
|
3563
|
+
kind: "winner",
|
|
3564
|
+
stage: "R32",
|
|
3565
|
+
index: 13
|
|
3566
|
+
},
|
|
3567
|
+
away: {
|
|
3568
|
+
kind: "winner",
|
|
3569
|
+
stage: "R32",
|
|
3570
|
+
index: 15
|
|
3571
|
+
}
|
|
3572
|
+
},
|
|
3573
|
+
{
|
|
3574
|
+
matchId: "760509",
|
|
3575
|
+
stage: "R16",
|
|
3576
|
+
index: 8,
|
|
3577
|
+
home: {
|
|
3578
|
+
kind: "winner",
|
|
3579
|
+
stage: "R32",
|
|
3580
|
+
index: 14
|
|
3581
|
+
},
|
|
3582
|
+
away: {
|
|
3583
|
+
kind: "winner",
|
|
3584
|
+
stage: "R32",
|
|
3585
|
+
index: 16
|
|
3586
|
+
}
|
|
3587
|
+
},
|
|
3588
|
+
{
|
|
3589
|
+
matchId: "760510",
|
|
3590
|
+
stage: "QF",
|
|
3591
|
+
index: 1,
|
|
3592
|
+
home: {
|
|
3593
|
+
kind: "winner",
|
|
3594
|
+
stage: "R16",
|
|
3595
|
+
index: 1
|
|
3596
|
+
},
|
|
3597
|
+
away: {
|
|
3598
|
+
kind: "winner",
|
|
3599
|
+
stage: "R16",
|
|
3600
|
+
index: 2
|
|
3601
|
+
}
|
|
3602
|
+
},
|
|
3603
|
+
{
|
|
3604
|
+
matchId: "760511",
|
|
3605
|
+
stage: "QF",
|
|
3606
|
+
index: 2,
|
|
3607
|
+
home: {
|
|
3608
|
+
kind: "winner",
|
|
3609
|
+
stage: "R16",
|
|
3610
|
+
index: 5
|
|
3611
|
+
},
|
|
3612
|
+
away: {
|
|
3613
|
+
kind: "winner",
|
|
3614
|
+
stage: "R16",
|
|
3615
|
+
index: 6
|
|
3616
|
+
}
|
|
3617
|
+
},
|
|
3618
|
+
{
|
|
3619
|
+
matchId: "760512",
|
|
3620
|
+
stage: "QF",
|
|
3621
|
+
index: 3,
|
|
3622
|
+
home: {
|
|
3623
|
+
kind: "winner",
|
|
3624
|
+
stage: "R16",
|
|
3625
|
+
index: 3
|
|
3626
|
+
},
|
|
3627
|
+
away: {
|
|
3628
|
+
kind: "winner",
|
|
3629
|
+
stage: "R16",
|
|
3630
|
+
index: 4
|
|
3631
|
+
}
|
|
3632
|
+
},
|
|
3633
|
+
{
|
|
3634
|
+
matchId: "760513",
|
|
3635
|
+
stage: "QF",
|
|
3636
|
+
index: 4,
|
|
3637
|
+
home: {
|
|
3638
|
+
kind: "winner",
|
|
3639
|
+
stage: "R16",
|
|
3640
|
+
index: 7
|
|
3641
|
+
},
|
|
3642
|
+
away: {
|
|
3643
|
+
kind: "winner",
|
|
3644
|
+
stage: "R16",
|
|
3645
|
+
index: 8
|
|
3646
|
+
}
|
|
3647
|
+
},
|
|
3648
|
+
{
|
|
3649
|
+
matchId: "760514",
|
|
3650
|
+
stage: "SF",
|
|
3651
|
+
index: 1,
|
|
3652
|
+
home: {
|
|
3653
|
+
kind: "winner",
|
|
3654
|
+
stage: "QF",
|
|
3655
|
+
index: 1
|
|
3656
|
+
},
|
|
3657
|
+
away: {
|
|
3658
|
+
kind: "winner",
|
|
3659
|
+
stage: "QF",
|
|
3660
|
+
index: 2
|
|
3661
|
+
}
|
|
3662
|
+
},
|
|
3663
|
+
{
|
|
3664
|
+
matchId: "760515",
|
|
3665
|
+
stage: "SF",
|
|
3666
|
+
index: 2,
|
|
3667
|
+
home: {
|
|
3668
|
+
kind: "winner",
|
|
3669
|
+
stage: "QF",
|
|
3670
|
+
index: 3
|
|
3671
|
+
},
|
|
3672
|
+
away: {
|
|
3673
|
+
kind: "winner",
|
|
3674
|
+
stage: "QF",
|
|
3675
|
+
index: 4
|
|
3676
|
+
}
|
|
3677
|
+
},
|
|
3678
|
+
{
|
|
3679
|
+
matchId: "760516",
|
|
3680
|
+
stage: "3P",
|
|
3681
|
+
index: 1,
|
|
3682
|
+
home: {
|
|
3683
|
+
kind: "loser",
|
|
3684
|
+
stage: "SF",
|
|
3685
|
+
index: 1
|
|
3686
|
+
},
|
|
3687
|
+
away: {
|
|
3688
|
+
kind: "loser",
|
|
3689
|
+
stage: "SF",
|
|
3690
|
+
index: 2
|
|
3691
|
+
}
|
|
3692
|
+
},
|
|
3693
|
+
{
|
|
3694
|
+
matchId: "760517",
|
|
3695
|
+
stage: "F",
|
|
3696
|
+
index: 1,
|
|
3697
|
+
home: {
|
|
3698
|
+
kind: "winner",
|
|
3699
|
+
stage: "SF",
|
|
3700
|
+
index: 1
|
|
3701
|
+
},
|
|
3702
|
+
away: {
|
|
3703
|
+
kind: "winner",
|
|
3704
|
+
stage: "SF",
|
|
3705
|
+
index: 2
|
|
3706
|
+
}
|
|
3707
|
+
}
|
|
3708
|
+
]
|
|
3709
|
+
};
|
|
3710
|
+
var TOPOLOGY = bracket_2026_default;
|
|
3711
|
+
function loadBracketTopology() {
|
|
3712
|
+
return TOPOLOGY;
|
|
3713
|
+
}
|
|
2876
3714
|
function resolveCompetition(explicit) {
|
|
2877
3715
|
if (explicit) return explicit;
|
|
2878
3716
|
if (typeof process !== "undefined" && process.env?.CLAUDINHO_COMPETITION) {
|
|
@@ -2913,7 +3751,7 @@ async function getStandings(adapter, group) {
|
|
|
2913
3751
|
if (adapter.fetchStandings) {
|
|
2914
3752
|
try {
|
|
2915
3753
|
const all = await adapter.fetchStandings();
|
|
2916
|
-
const tables2 = (want ? all.filter((
|
|
3754
|
+
const tables2 = (want ? all.filter((t2) => t2.group === want) : all).sort(
|
|
2917
3755
|
(a, b) => a.group.localeCompare(b.group)
|
|
2918
3756
|
);
|
|
2919
3757
|
return { tables: tables2, degraded: false, source: adapter.name };
|
|
@@ -2921,9 +3759,45 @@ async function getStandings(adapter, group) {
|
|
|
2921
3759
|
}
|
|
2922
3760
|
}
|
|
2923
3761
|
const letters = want ? [want] : groups();
|
|
2924
|
-
const tables = letters.map((g) => ({ group: g, rows: rosterAtZero(fixturesByGroup(g)) })).filter((
|
|
3762
|
+
const tables = letters.map((g) => ({ group: g, rows: rosterAtZero(fixturesByGroup(g)) })).filter((t2) => t2.rows.length > 0);
|
|
2925
3763
|
return { tables, degraded: true };
|
|
2926
3764
|
}
|
|
3765
|
+
var KNOCKOUT_WINDOW_START = "20260628";
|
|
3766
|
+
var KNOCKOUT_WINDOW_END = "20260719";
|
|
3767
|
+
async function getBracket(adapter, opts = {}) {
|
|
3768
|
+
const topology = loadBracketTopology();
|
|
3769
|
+
const base = allFixtures().filter((m) => m.stage !== "GROUP" && m.stage !== "FRIENDLY");
|
|
3770
|
+
let matches = base;
|
|
3771
|
+
let liveDegraded = true;
|
|
3772
|
+
let source;
|
|
3773
|
+
try {
|
|
3774
|
+
const live = adapter.fetchWindow ? await adapter.fetchWindow(KNOCKOUT_WINDOW_START, KNOCKOUT_WINDOW_END) : [];
|
|
3775
|
+
matches = mergeLive(base, live);
|
|
3776
|
+
liveDegraded = false;
|
|
3777
|
+
source = adapter.name;
|
|
3778
|
+
} catch {
|
|
3779
|
+
}
|
|
3780
|
+
const standings = await getStandings(adapter);
|
|
3781
|
+
if (!source && !standings.degraded && standings.source) {
|
|
3782
|
+
source = standings.source;
|
|
3783
|
+
}
|
|
3784
|
+
const view = buildBracketView(
|
|
3785
|
+
topology,
|
|
3786
|
+
matches,
|
|
3787
|
+
standings.tables,
|
|
3788
|
+
standings.degraded,
|
|
3789
|
+
liveDegraded,
|
|
3790
|
+
opts.stage,
|
|
3791
|
+
opts.lang
|
|
3792
|
+
);
|
|
3793
|
+
if (source) view.source = source;
|
|
3794
|
+
return {
|
|
3795
|
+
view,
|
|
3796
|
+
degraded: liveDegraded,
|
|
3797
|
+
standingsDegraded: standings.degraded,
|
|
3798
|
+
source
|
|
3799
|
+
};
|
|
3800
|
+
}
|
|
2927
3801
|
function shiftUtcDate(dateISO, days) {
|
|
2928
3802
|
const [y, m, d] = dateISO.slice(0, 10).split("-").map(Number);
|
|
2929
3803
|
return new Date(Date.UTC(y ?? 1970, (m ?? 1) - 1, (d ?? 1) + days)).toISOString().slice(0, 10);
|
|
@@ -3077,9 +3951,9 @@ function outcomeLabel(o, match) {
|
|
|
3077
3951
|
return o.label;
|
|
3078
3952
|
}
|
|
3079
3953
|
function utcHhmm(iso) {
|
|
3080
|
-
const
|
|
3081
|
-
if (!Number.isFinite(
|
|
3082
|
-
return `${new Date(
|
|
3954
|
+
const t2 = Date.parse(iso);
|
|
3955
|
+
if (!Number.isFinite(t2)) return "";
|
|
3956
|
+
return `${new Date(t2).toISOString().slice(11, 16)} UTC`;
|
|
3083
3957
|
}
|
|
3084
3958
|
function marketFavoriteText(signal, match) {
|
|
3085
3959
|
const fav = signal.favorite;
|
|
@@ -3510,6 +4384,130 @@ function formatShareTable(input, options = {}) {
|
|
|
3510
4384
|
);
|
|
3511
4385
|
return blocks.join("\n\n");
|
|
3512
4386
|
}
|
|
4387
|
+
function formatParticipant(p, side, flags, locale) {
|
|
4388
|
+
const suffix = p.status === "projected" ? ` ${t(locale, "bracket.projected")}` : "";
|
|
4389
|
+
if (!flags || p.flag === "\u{1F3F3}\uFE0F") {
|
|
4390
|
+
if (p.code && p.code !== "TBD") return `${p.code}${suffix}`;
|
|
4391
|
+
return `${p.label}${suffix}`;
|
|
4392
|
+
}
|
|
4393
|
+
if (side === "home") return `${p.flag} ${p.label}${suffix}`;
|
|
4394
|
+
return `${p.label}${suffix} ${p.flag}`;
|
|
4395
|
+
}
|
|
4396
|
+
function statusTail2(m) {
|
|
4397
|
+
if (m.status === "LIVE" && m.minute) return ` ${m.minute}'`;
|
|
4398
|
+
if (m.status === "HT") return " HT";
|
|
4399
|
+
if (m.status === "FT") return " FT";
|
|
4400
|
+
if (isLive(m.status)) return " LIVE";
|
|
4401
|
+
return "";
|
|
4402
|
+
}
|
|
4403
|
+
function formatBracketMatchLine(mv, opts = {}) {
|
|
4404
|
+
const flags = opts.flags !== false;
|
|
4405
|
+
const home = formatParticipant(mv.home, "home", flags, opts.locale);
|
|
4406
|
+
const away = formatParticipant(mv.away, "away", flags, opts.locale);
|
|
4407
|
+
const m = mv.match;
|
|
4408
|
+
if (isFinished(m.status) || isLive(m.status)) {
|
|
4409
|
+
return ` ${home} ${scoreline(m)} ${away}${statusTail2(m)}`;
|
|
4410
|
+
}
|
|
4411
|
+
const kickoff = mv.kickoff ? formatKickoff(mv.kickoff, { tz: opts.tz, locale: opts.locale }) : "";
|
|
4412
|
+
return ` ${home} vs ${away}${kickoff ? ` \xB7 ${kickoff}` : ""}`;
|
|
4413
|
+
}
|
|
4414
|
+
function formatBracketList(view, opts = {}) {
|
|
4415
|
+
const blocks = [];
|
|
4416
|
+
for (const stage of view.stages) {
|
|
4417
|
+
blocks.push(stage.label);
|
|
4418
|
+
for (const mv of stage.matches) {
|
|
4419
|
+
blocks.push(formatBracketMatchLine(mv, opts));
|
|
4420
|
+
}
|
|
4421
|
+
blocks.push("");
|
|
4422
|
+
}
|
|
4423
|
+
if (opts.footer !== false) {
|
|
4424
|
+
if (view.degraded) {
|
|
4425
|
+
blocks.push(`(${t(opts.locale, "bracket.degraded")})`);
|
|
4426
|
+
} else if (view.standingsDegraded) {
|
|
4427
|
+
blocks.push(`(${t(opts.locale, "bracket.standingsDegraded")})`);
|
|
4428
|
+
}
|
|
4429
|
+
if (view.source) {
|
|
4430
|
+
blocks.push(t(opts.locale, "live.data", { source: liveSourceLabel(view.source) }));
|
|
4431
|
+
}
|
|
4432
|
+
}
|
|
4433
|
+
return blocks.join("\n").trimEnd();
|
|
4434
|
+
}
|
|
4435
|
+
var MIN_TREE_WIDTH = 80;
|
|
4436
|
+
function formatBracketTree(view, opts = {}) {
|
|
4437
|
+
const width = opts.width ?? 80;
|
|
4438
|
+
if (width < MIN_TREE_WIDTH) return null;
|
|
4439
|
+
const blocks = [];
|
|
4440
|
+
for (let i = 0; i < view.stages.length; i++) {
|
|
4441
|
+
const stage = view.stages[i];
|
|
4442
|
+
blocks.push(`\u2501\u2501\u2501 ${stage.label} \u2501\u2501\u2501`);
|
|
4443
|
+
for (const mv of stage.matches) {
|
|
4444
|
+
blocks.push(formatBracketMatchLine(mv, opts));
|
|
4445
|
+
}
|
|
4446
|
+
if (i < view.stages.length - 1) {
|
|
4447
|
+
blocks.push(" \u2502");
|
|
4448
|
+
blocks.push(" \u25BC");
|
|
4449
|
+
}
|
|
4450
|
+
blocks.push("");
|
|
4451
|
+
}
|
|
4452
|
+
if (opts.footer !== false) {
|
|
4453
|
+
if (view.degraded) {
|
|
4454
|
+
blocks.push(`(${t(opts.locale, "bracket.degraded")})`);
|
|
4455
|
+
} else if (view.standingsDegraded) {
|
|
4456
|
+
blocks.push(`(${t(opts.locale, "bracket.standingsDegraded")})`);
|
|
4457
|
+
}
|
|
4458
|
+
if (view.source) {
|
|
4459
|
+
blocks.push(t(opts.locale, "live.data", { source: liveSourceLabel(view.source) }));
|
|
4460
|
+
}
|
|
4461
|
+
}
|
|
4462
|
+
return blocks.join("\n").trimEnd();
|
|
4463
|
+
}
|
|
4464
|
+
function formatShareBracket(input, options = {}) {
|
|
4465
|
+
const includeHashtag = options.includeHashtag !== false;
|
|
4466
|
+
const includeInstall = options.includeInstallLine !== false;
|
|
4467
|
+
const locale = options.locale;
|
|
4468
|
+
const blocks = [t(locale, "bracket.shareTitle"), ""];
|
|
4469
|
+
if (input.view.stages.length === 0) {
|
|
4470
|
+
blocks.push(input.emptyNote ?? t(locale, "bracket.empty"));
|
|
4471
|
+
} else if ((options.style ?? "social") === "compact") {
|
|
4472
|
+
const fmtOpts = { locale, tz: options.tz };
|
|
4473
|
+
const lines = input.view.stages.flatMap(
|
|
4474
|
+
(stage) => stage.matches.map((mv) => formatBracketCompactLine(mv, fmtOpts))
|
|
4475
|
+
);
|
|
4476
|
+
blocks.push(lines.join("\n"));
|
|
4477
|
+
if (input.view.degraded) {
|
|
4478
|
+
blocks.push(`(${t(locale, "bracket.degraded")})`);
|
|
4479
|
+
} else if (input.view.standingsDegraded) {
|
|
4480
|
+
blocks.push(`(${t(locale, "bracket.standingsDegraded")})`);
|
|
4481
|
+
}
|
|
4482
|
+
} else {
|
|
4483
|
+
blocks.push(formatBracketList(input.view, { footer: false, locale, tz: options.tz }));
|
|
4484
|
+
if (input.view.degraded) {
|
|
4485
|
+
blocks.push(`(${t(locale, "bracket.degraded")})`);
|
|
4486
|
+
} else if (input.view.standingsDegraded) {
|
|
4487
|
+
blocks.push(`(${t(locale, "bracket.standingsDegraded")})`);
|
|
4488
|
+
}
|
|
4489
|
+
}
|
|
4490
|
+
const footer = [];
|
|
4491
|
+
const src = input.source ?? input.view.source;
|
|
4492
|
+
if (src) footer.push(t(locale, "live.data", { source: liveSourceLabel(src) }));
|
|
4493
|
+
footer.push(
|
|
4494
|
+
[includeHashtag ? SHARE_HASHTAG : "", SHARE_DISCLAIMER].filter(Boolean).join(" \xB7 ")
|
|
4495
|
+
);
|
|
4496
|
+
if (includeInstall && input.installLine) {
|
|
4497
|
+
footer.push(t(locale, "share.tryIt", { line: input.installLine }));
|
|
4498
|
+
}
|
|
4499
|
+
blocks.push("", footer.join("\n"));
|
|
4500
|
+
return blocks.join("\n");
|
|
4501
|
+
}
|
|
4502
|
+
function formatBracketCompactLine(mv, opts = {}) {
|
|
4503
|
+
const flags = opts.flags !== false;
|
|
4504
|
+
const home = formatParticipant(mv.home, "home", flags, opts.locale);
|
|
4505
|
+
const away = formatParticipant(mv.away, "away", flags, opts.locale);
|
|
4506
|
+
const m = mv.match;
|
|
4507
|
+
const mid2 = isFinished(m.status) || isLive(m.status) ? scoreline(m) : "vs";
|
|
4508
|
+
const tail = m.status === "SCHEDULED" && mv.kickoff ? ` \xB7 ${formatKickoff(mv.kickoff, { tz: opts.tz, locale: opts.locale })}` : statusTail2(m);
|
|
4509
|
+
return `${stageLabelI18n(opts.locale, mv.stage)} \xB7 ${home} ${mid2} ${away}${tail}`;
|
|
4510
|
+
}
|
|
3513
4511
|
|
|
3514
4512
|
// src/config.ts
|
|
3515
4513
|
var SUPPORTED_LANGS = ["en", "es", "pt", "fr"];
|
|
@@ -3555,7 +4553,7 @@ function resolveConfig(opts) {
|
|
|
3555
4553
|
}
|
|
3556
4554
|
|
|
3557
4555
|
// src/i18n.ts
|
|
3558
|
-
var
|
|
4556
|
+
var EN2 = {
|
|
3559
4557
|
"today.title": "Today's matches",
|
|
3560
4558
|
"today.on": "Matches",
|
|
3561
4559
|
"today.none": "No matches scheduled for this date.",
|
|
@@ -3589,7 +4587,7 @@ var EN = {
|
|
|
3589
4587
|
"warn.lang": "Unsupported language {lang}; using English. (supported: en, es, pt, fr)",
|
|
3590
4588
|
disclaimer: "Not affiliated with FIFA or Anthropic."
|
|
3591
4589
|
};
|
|
3592
|
-
var
|
|
4590
|
+
var ES2 = {
|
|
3593
4591
|
"today.title": "Partidos de hoy",
|
|
3594
4592
|
"today.on": "Partidos",
|
|
3595
4593
|
"today.none": "No hay partidos para esta fecha.",
|
|
@@ -3623,7 +4621,7 @@ var ES = {
|
|
|
3623
4621
|
"warn.lang": "Idioma no soportado {lang}; usando ingl\xE9s. (disponibles: en, es, pt, fr)",
|
|
3624
4622
|
disclaimer: "No afiliado a FIFA ni Anthropic."
|
|
3625
4623
|
};
|
|
3626
|
-
var
|
|
4624
|
+
var PT2 = {
|
|
3627
4625
|
"today.title": "Jogos de hoje",
|
|
3628
4626
|
"today.on": "Jogos",
|
|
3629
4627
|
"today.none": "Nenhum jogo para esta data.",
|
|
@@ -3657,7 +4655,7 @@ var PT = {
|
|
|
3657
4655
|
"warn.lang": "Idioma n\xE3o suportado {lang}; usando ingl\xEAs. (dispon\xEDveis: en, es, pt, fr)",
|
|
3658
4656
|
disclaimer: "N\xE3o afiliado \xE0 FIFA nem \xE0 Anthropic."
|
|
3659
4657
|
};
|
|
3660
|
-
var
|
|
4658
|
+
var FR2 = {
|
|
3661
4659
|
"today.title": "Matchs d'aujourd'hui",
|
|
3662
4660
|
"today.on": "Matchs",
|
|
3663
4661
|
"today.none": "Aucun match pr\xE9vu pour cette date.",
|
|
@@ -3691,11 +4689,11 @@ var FR = {
|
|
|
3691
4689
|
"warn.lang": "Langue non prise en charge {lang} ; utilisation de l\u2019anglais. (disponibles : en, es, pt, fr)",
|
|
3692
4690
|
disclaimer: "Non affili\xE9 \xE0 la FIFA ni \xE0 Anthropic."
|
|
3693
4691
|
};
|
|
3694
|
-
var
|
|
4692
|
+
var CATALOGS2 = { en: EN2, es: ES2, pt: PT2, fr: FR2 };
|
|
3695
4693
|
function makeT(lang) {
|
|
3696
|
-
const dict =
|
|
4694
|
+
const dict = CATALOGS2[lang] ?? EN2;
|
|
3697
4695
|
return (key, vars) => {
|
|
3698
|
-
let s = dict[key] ??
|
|
4696
|
+
let s = dict[key] ?? EN2[key] ?? key;
|
|
3699
4697
|
if (vars) for (const [k, v] of Object.entries(vars)) s = s.replace(`{${k}}`, v);
|
|
3700
4698
|
return s;
|
|
3701
4699
|
};
|
|
@@ -3735,23 +4733,23 @@ function tableTeamCell(team, flags) {
|
|
|
3735
4733
|
function painterFor(cfg) {
|
|
3736
4734
|
return paint(cfg.color);
|
|
3737
4735
|
}
|
|
3738
|
-
function statusToken(m,
|
|
4736
|
+
function statusToken(m, t2, c) {
|
|
3739
4737
|
switch (m.status) {
|
|
3740
4738
|
case "LIVE":
|
|
3741
|
-
return c.green(`${m.minute ? `${m.minute}'` :
|
|
4739
|
+
return c.green(`${m.minute ? `${m.minute}'` : t2("status.live")}`);
|
|
3742
4740
|
case "HT":
|
|
3743
|
-
return c.yellow(
|
|
4741
|
+
return c.yellow(t2("status.ht"));
|
|
3744
4742
|
case "FT":
|
|
3745
|
-
return c.gray(
|
|
4743
|
+
return c.gray(t2("status.ft"));
|
|
3746
4744
|
case "POSTPONED":
|
|
3747
|
-
return c.red(
|
|
4745
|
+
return c.red(t2("status.postponed"));
|
|
3748
4746
|
case "CANCELLED":
|
|
3749
|
-
return c.red(
|
|
4747
|
+
return c.red(t2("status.cancelled"));
|
|
3750
4748
|
default:
|
|
3751
4749
|
return "";
|
|
3752
4750
|
}
|
|
3753
4751
|
}
|
|
3754
|
-
function matchLine(m, cfg,
|
|
4752
|
+
function matchLine(m, cfg, t2, c, flags = true) {
|
|
3755
4753
|
const home = flags ? `${m.home.flag} ${m.home.name}` : m.home.name;
|
|
3756
4754
|
const away = flags ? `${m.away.name} ${m.away.flag}` : m.away.name;
|
|
3757
4755
|
const mid2 = isLive(m.status) || m.status === "FT" ? c.bold(scoreline(m)) : c.dim("vs");
|
|
@@ -3762,7 +4760,7 @@ function matchLine(m, cfg, t, c, flags = true) {
|
|
|
3762
4760
|
`${formatKickoff(m.kickoff, { tz: cfg.tz, locale: cfg.lang })}`
|
|
3763
4761
|
);
|
|
3764
4762
|
} else {
|
|
3765
|
-
right = statusToken(m,
|
|
4763
|
+
right = statusToken(m, t2, c);
|
|
3766
4764
|
}
|
|
3767
4765
|
const flair = matchFlavor(m, { level: cfg.flavor, locale: cfg.lang });
|
|
3768
4766
|
const tail = flair ? ` ${c.dim(flair)}` : "";
|
|
@@ -3771,8 +4769,8 @@ function matchLine(m, cfg, t, c, flags = true) {
|
|
|
3771
4769
|
function header(text, c) {
|
|
3772
4770
|
return c.bold(c.cyan(text));
|
|
3773
4771
|
}
|
|
3774
|
-
function disclaimer(
|
|
3775
|
-
return c.dim(
|
|
4772
|
+
function disclaimer(t2, c) {
|
|
4773
|
+
return c.dim(t2("disclaimer"));
|
|
3776
4774
|
}
|
|
3777
4775
|
function dataSource(source, c) {
|
|
3778
4776
|
return source ? c.dim(`Live data: ${liveSourceLabel(source)}`) : "";
|
|
@@ -3806,10 +4804,10 @@ function readMarketCache(source, competition, now = Date.now()) {
|
|
|
3806
4804
|
return { signals, checked };
|
|
3807
4805
|
}
|
|
3808
4806
|
for (const [id, entry] of Object.entries(file.entries ?? {})) {
|
|
3809
|
-
const
|
|
3810
|
-
if (!Number.isFinite(
|
|
4807
|
+
const t2 = Date.parse(entry.fetchedAt);
|
|
4808
|
+
if (!Number.isFinite(t2)) continue;
|
|
3811
4809
|
const ttl = entry.signal ? POSITIVE_TTL_MS : NEGATIVE_TTL_MS;
|
|
3812
|
-
if (now -
|
|
4810
|
+
if (now - t2 > ttl) continue;
|
|
3813
4811
|
checked.add(id);
|
|
3814
4812
|
if (entry.signal) signals.set(id, entry.signal);
|
|
3815
4813
|
}
|
|
@@ -3910,8 +4908,8 @@ function writeFileSync_(path, data) {
|
|
|
3910
4908
|
}
|
|
3911
4909
|
function ageMs(state, now = Date.now()) {
|
|
3912
4910
|
if (!state) return Infinity;
|
|
3913
|
-
const
|
|
3914
|
-
return Number.isFinite(
|
|
4911
|
+
const t2 = Date.parse(state.updatedAt);
|
|
4912
|
+
return Number.isFinite(t2) ? now - t2 : Infinity;
|
|
3915
4913
|
}
|
|
3916
4914
|
function lockAgeMs(now = Date.now()) {
|
|
3917
4915
|
const lp = lockPath();
|
|
@@ -3987,8 +4985,8 @@ function inLiveWindow(now = Date.now(), fixtures = allFixtures()) {
|
|
|
3987
4985
|
function nextOverall(now, fixtures = allFixtures()) {
|
|
3988
4986
|
return [...fixtures].sort(byKickoff).find((m) => Date.parse(m.kickoff) >= now);
|
|
3989
4987
|
}
|
|
3990
|
-
function teamTok(
|
|
3991
|
-
return flags ?
|
|
4988
|
+
function teamTok(t2, flags) {
|
|
4989
|
+
return flags ? t2.flag : t2.code;
|
|
3992
4990
|
}
|
|
3993
4991
|
function matchSegment(m, compact, flags) {
|
|
3994
4992
|
const minute = m.status === "HT" ? "HT" : m.minute ? `${m.minute}'` : "LIVE";
|
|
@@ -4363,12 +5361,12 @@ function emitJson(data) {
|
|
|
4363
5361
|
}
|
|
4364
5362
|
var InputError = class extends Error {
|
|
4365
5363
|
};
|
|
4366
|
-
function precheck(cfg,
|
|
5364
|
+
function precheck(cfg, t2, date) {
|
|
4367
5365
|
if (cfg.langRequestedUnsupported) {
|
|
4368
|
-
process.stderr.write(
|
|
5366
|
+
process.stderr.write(t2("warn.lang", { lang: cfg.langRequestedUnsupported }) + "\n");
|
|
4369
5367
|
}
|
|
4370
5368
|
if (cfg.tz && !isValidTimeZone(cfg.tz)) {
|
|
4371
|
-
process.stderr.write(
|
|
5369
|
+
process.stderr.write(t2("warn.tz", { tz: cfg.tz }) + "\n");
|
|
4372
5370
|
}
|
|
4373
5371
|
const competition = resolveCompetition();
|
|
4374
5372
|
if (competition !== DEFAULT_COMPETITION) {
|
|
@@ -4378,7 +5376,7 @@ function precheck(cfg, t, date) {
|
|
|
4378
5376
|
);
|
|
4379
5377
|
}
|
|
4380
5378
|
if (date !== void 0 && !isValidDate(date)) {
|
|
4381
|
-
throw new InputError(
|
|
5379
|
+
throw new InputError(t2("err.date", { date }));
|
|
4382
5380
|
}
|
|
4383
5381
|
}
|
|
4384
5382
|
function resolveTeamArg(team, usage) {
|
|
@@ -4387,8 +5385,8 @@ function resolveTeamArg(team, usage) {
|
|
|
4387
5385
|
return code.toUpperCase();
|
|
4388
5386
|
}
|
|
4389
5387
|
async function cmdToday(date, ctx) {
|
|
4390
|
-
const { cfg, t } = ctx;
|
|
4391
|
-
precheck(cfg,
|
|
5388
|
+
const { cfg, t: t2 } = ctx;
|
|
5389
|
+
precheck(cfg, t2, date);
|
|
4392
5390
|
const adapter = adapterFor(ctx);
|
|
4393
5391
|
const targetDate = date ?? localDate((/* @__PURE__ */ new Date()).toISOString(), cfg.tz);
|
|
4394
5392
|
const { matches, degraded, source } = await getMatchesForDate(adapter, targetDate);
|
|
@@ -4406,28 +5404,28 @@ async function cmdToday(date, ctx) {
|
|
|
4406
5404
|
}
|
|
4407
5405
|
const c = painterFor(cfg);
|
|
4408
5406
|
const flags = flagsEnabled();
|
|
4409
|
-
const title = date === void 0 ?
|
|
5407
|
+
const title = date === void 0 ? t2("today.title") : t2("today.on");
|
|
4410
5408
|
out();
|
|
4411
5409
|
out(header(`${title} \xB7 ${targetDate}`, c));
|
|
4412
5410
|
out();
|
|
4413
5411
|
if (todays.length === 0) {
|
|
4414
|
-
out(c.dim(" " +
|
|
5412
|
+
out(c.dim(" " + t2("today.none")));
|
|
4415
5413
|
} else {
|
|
4416
5414
|
for (const m of todays) {
|
|
4417
|
-
out(matchLine(m, cfg,
|
|
5415
|
+
out(matchLine(m, cfg, t2, c, flags));
|
|
4418
5416
|
const s = signals.get(m.id);
|
|
4419
5417
|
if (s) out(" " + c.dim(marketLine(s, m)));
|
|
4420
5418
|
}
|
|
4421
5419
|
}
|
|
4422
5420
|
out();
|
|
4423
|
-
if (degraded) out(c.dim(" " +
|
|
5421
|
+
if (degraded) out(c.dim(" " + t2("feed.degraded")));
|
|
4424
5422
|
const src = dataSource(source, c);
|
|
4425
5423
|
if (src) out(src);
|
|
4426
|
-
out(disclaimer(
|
|
5424
|
+
out(disclaimer(t2, c));
|
|
4427
5425
|
}
|
|
4428
5426
|
async function cmdLive(ctx) {
|
|
4429
|
-
const { cfg, t } = ctx;
|
|
4430
|
-
precheck(cfg,
|
|
5427
|
+
const { cfg, t: t2 } = ctx;
|
|
5428
|
+
precheck(cfg, t2);
|
|
4431
5429
|
const adapter = adapterFor(ctx);
|
|
4432
5430
|
const { matches, degraded, source } = await getLiveMatches(adapter);
|
|
4433
5431
|
if (cfg.json) {
|
|
@@ -4437,22 +5435,22 @@ async function cmdLive(ctx) {
|
|
|
4437
5435
|
const c = painterFor(cfg);
|
|
4438
5436
|
const flags = flagsEnabled();
|
|
4439
5437
|
out();
|
|
4440
|
-
out(header(
|
|
5438
|
+
out(header(t2("live.title"), c));
|
|
4441
5439
|
out();
|
|
4442
5440
|
if (degraded) {
|
|
4443
|
-
out(c.dim(" " +
|
|
5441
|
+
out(c.dim(" " + t2("live.degraded")));
|
|
4444
5442
|
} else if (matches.length === 0) {
|
|
4445
|
-
out(c.dim(" " +
|
|
5443
|
+
out(c.dim(" " + t2("live.none")));
|
|
4446
5444
|
} else {
|
|
4447
|
-
for (const m of matches) out(matchLine(m, cfg,
|
|
5445
|
+
for (const m of matches) out(matchLine(m, cfg, t2, c, flags));
|
|
4448
5446
|
}
|
|
4449
5447
|
out();
|
|
4450
5448
|
const src = dataSource(source, c);
|
|
4451
5449
|
if (src) out(src);
|
|
4452
|
-
out(disclaimer(
|
|
5450
|
+
out(disclaimer(t2, c));
|
|
4453
5451
|
}
|
|
4454
|
-
async function cmdNext(team, { cfg, t, now }) {
|
|
4455
|
-
precheck(cfg,
|
|
5452
|
+
async function cmdNext(team, { cfg, t: t2, now }) {
|
|
5453
|
+
precheck(cfg, t2);
|
|
4456
5454
|
const code = resolveTeamArg(team, "Usage: claudinho next <team> (or set CLAUDINHO_TEAM)");
|
|
4457
5455
|
const fixture = nextFixtureForTeam(code, { from: now ?? /* @__PURE__ */ new Date() });
|
|
4458
5456
|
if (cfg.json) {
|
|
@@ -4463,26 +5461,26 @@ async function cmdNext(team, { cfg, t, now }) {
|
|
|
4463
5461
|
const flags = flagsEnabled();
|
|
4464
5462
|
out();
|
|
4465
5463
|
if (!fixture) {
|
|
4466
|
-
out(c.dim(" " +
|
|
5464
|
+
out(c.dim(" " + t2("next.none", { team: code })));
|
|
4467
5465
|
out();
|
|
4468
|
-
out(disclaimer(
|
|
5466
|
+
out(disclaimer(t2, c));
|
|
4469
5467
|
return;
|
|
4470
5468
|
}
|
|
4471
|
-
out(header(
|
|
5469
|
+
out(header(t2("next.label", { team: code }), c));
|
|
4472
5470
|
out();
|
|
4473
|
-
out(matchLine(fixture, cfg,
|
|
5471
|
+
out(matchLine(fixture, cfg, t2, c, flags));
|
|
4474
5472
|
const stage = fixture.stage !== "GROUP" ? `${stageLabel(fixture)} \xB7 ` : "";
|
|
4475
5473
|
out(
|
|
4476
5474
|
" " + c.dim(
|
|
4477
|
-
`${stage}${formatKickoff(fixture.kickoff, { tz: cfg.tz, locale: cfg.lang })} \xB7 ` +
|
|
5475
|
+
`${stage}${formatKickoff(fixture.kickoff, { tz: cfg.tz, locale: cfg.lang })} \xB7 ` + t2("next.in", { countdown: countdown(fixture.kickoff) })
|
|
4478
5476
|
)
|
|
4479
5477
|
);
|
|
4480
5478
|
out();
|
|
4481
|
-
out(disclaimer(
|
|
5479
|
+
out(disclaimer(t2, c));
|
|
4482
5480
|
}
|
|
4483
5481
|
async function cmdTable(group, ctx) {
|
|
4484
|
-
const { cfg, t } = ctx;
|
|
4485
|
-
precheck(cfg,
|
|
5482
|
+
const { cfg, t: t2 } = ctx;
|
|
5483
|
+
precheck(cfg, t2);
|
|
4486
5484
|
const { tables, degraded, source } = await getStandings(adapterFor(ctx), group);
|
|
4487
5485
|
if (cfg.json) {
|
|
4488
5486
|
const json = tables.map((tb) => ({ group: tb.group, standings: tb.rows }));
|
|
@@ -4499,26 +5497,26 @@ async function cmdTable(group, ctx) {
|
|
|
4499
5497
|
out();
|
|
4500
5498
|
out(
|
|
4501
5499
|
c.dim(
|
|
4502
|
-
" " + (group ?
|
|
5500
|
+
" " + (group ? t2("table.none", { group: group.toUpperCase() }) : t2("table.empty"))
|
|
4503
5501
|
)
|
|
4504
5502
|
);
|
|
4505
5503
|
out();
|
|
4506
|
-
if (degraded) out(c.dim(" " +
|
|
4507
|
-
out(disclaimer(
|
|
5504
|
+
if (degraded) out(c.dim(" " + t2("table.degraded")));
|
|
5505
|
+
out(disclaimer(t2, c));
|
|
4508
5506
|
return;
|
|
4509
5507
|
}
|
|
4510
5508
|
for (const { group: g, rows } of tables) {
|
|
4511
5509
|
out();
|
|
4512
|
-
out(header(
|
|
5510
|
+
out(header(t2("table.title", { group: g }), c));
|
|
4513
5511
|
const table = new Table({
|
|
4514
5512
|
head: [
|
|
4515
|
-
|
|
4516
|
-
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
|
|
4520
|
-
|
|
4521
|
-
|
|
5513
|
+
t2("col.team"),
|
|
5514
|
+
t2("col.p"),
|
|
5515
|
+
t2("col.w"),
|
|
5516
|
+
t2("col.d"),
|
|
5517
|
+
t2("col.l"),
|
|
5518
|
+
t2("col.gd"),
|
|
5519
|
+
t2("col.pts")
|
|
4522
5520
|
],
|
|
4523
5521
|
colAligns: ["left", "right", "right", "right", "right", "right", "right"],
|
|
4524
5522
|
style: { head: cfg.color ? ["cyan"] : [], border: cfg.color ? ["gray"] : [] }
|
|
@@ -4537,10 +5535,61 @@ async function cmdTable(group, ctx) {
|
|
|
4537
5535
|
out(table.toString());
|
|
4538
5536
|
}
|
|
4539
5537
|
out();
|
|
4540
|
-
if (degraded) out(c.dim(" " +
|
|
5538
|
+
if (degraded) out(c.dim(" " + t2("table.degraded")));
|
|
4541
5539
|
const src = dataSource(source, c);
|
|
4542
5540
|
if (src) out(src);
|
|
4543
|
-
out(disclaimer(
|
|
5541
|
+
out(disclaimer(t2, c));
|
|
5542
|
+
}
|
|
5543
|
+
var BRACKET_STAGES = /* @__PURE__ */ new Set(["R32", "R16", "QF", "SF", "3P", "F"]);
|
|
5544
|
+
async function cmdBracket(stage, opts, ctx) {
|
|
5545
|
+
const { cfg, t: t2 } = ctx;
|
|
5546
|
+
precheck(cfg, t2);
|
|
5547
|
+
const filter = stage?.toUpperCase();
|
|
5548
|
+
if (filter && !BRACKET_STAGES.has(filter)) {
|
|
5549
|
+
throw new InputError(t(cfg.lang, "bracket.invalidStage"));
|
|
5550
|
+
}
|
|
5551
|
+
const { view, degraded, standingsDegraded, source } = await getBracket(
|
|
5552
|
+
adapterFor(ctx),
|
|
5553
|
+
filter ? { stage: filter, lang: cfg.lang } : { lang: cfg.lang }
|
|
5554
|
+
);
|
|
5555
|
+
if (cfg.json) {
|
|
5556
|
+
emitJson({
|
|
5557
|
+
degraded,
|
|
5558
|
+
standingsDegraded,
|
|
5559
|
+
source: source ?? null,
|
|
5560
|
+
view
|
|
5561
|
+
});
|
|
5562
|
+
return;
|
|
5563
|
+
}
|
|
5564
|
+
const c = painterFor(cfg);
|
|
5565
|
+
const flags = flagsEnabled();
|
|
5566
|
+
const formatOpts = { flags, tz: cfg.tz, locale: cfg.lang, footer: false };
|
|
5567
|
+
let body;
|
|
5568
|
+
if (opts.tree) {
|
|
5569
|
+
const tree = formatBracketTree(view, {
|
|
5570
|
+
...formatOpts,
|
|
5571
|
+
width: process.stdout.columns ?? 80
|
|
5572
|
+
});
|
|
5573
|
+
body = tree ?? formatBracketList(view, formatOpts);
|
|
5574
|
+
if (!tree) {
|
|
5575
|
+
out();
|
|
5576
|
+
out(c.dim(` ${t(cfg.lang, "bracket.treeFallback")}`));
|
|
5577
|
+
}
|
|
5578
|
+
} else {
|
|
5579
|
+
body = formatBracketList(view, formatOpts);
|
|
5580
|
+
}
|
|
5581
|
+
out();
|
|
5582
|
+
out(header(
|
|
5583
|
+
filter ? t(cfg.lang, "bracket.stageTitle", { stage: stageLabelI18n(cfg.lang, filter) }) : t(cfg.lang, "bracket.title"),
|
|
5584
|
+
c
|
|
5585
|
+
));
|
|
5586
|
+
out(body);
|
|
5587
|
+
out();
|
|
5588
|
+
if (degraded) out(c.dim(` ${t(cfg.lang, "bracket.degraded")}`));
|
|
5589
|
+
else if (standingsDegraded) out(c.dim(` ${t(cfg.lang, "bracket.standingsDegraded")}`));
|
|
5590
|
+
const src = dataSource(source, c);
|
|
5591
|
+
if (src) out(src);
|
|
5592
|
+
out(disclaimer(t2, c));
|
|
4544
5593
|
}
|
|
4545
5594
|
function cmdPrompt({ cfg }) {
|
|
4546
5595
|
try {
|
|
@@ -4635,8 +5684,8 @@ function cmdInitClaude(opts, { cfg }) {
|
|
|
4635
5684
|
out("\u2192 Restart Claude Code to see it.");
|
|
4636
5685
|
}
|
|
4637
5686
|
async function cmdMatch(id, ctx) {
|
|
4638
|
-
const { cfg, t } = ctx;
|
|
4639
|
-
precheck(cfg,
|
|
5687
|
+
const { cfg, t: t2 } = ctx;
|
|
5688
|
+
precheck(cfg, t2);
|
|
4640
5689
|
const { match, degraded, source: liveSource } = await getMatchById(adapterFor(ctx), id);
|
|
4641
5690
|
const marketSignal = match ? await reliableMarketSignalFor(ctx, match) : void 0;
|
|
4642
5691
|
if (cfg.json) {
|
|
@@ -4651,9 +5700,9 @@ async function cmdMatch(id, ctx) {
|
|
|
4651
5700
|
const c = painterFor(cfg);
|
|
4652
5701
|
out();
|
|
4653
5702
|
if (!match) {
|
|
4654
|
-
out(c.dim(" " +
|
|
5703
|
+
out(c.dim(" " + t2("match.none", { id })));
|
|
4655
5704
|
out();
|
|
4656
|
-
out(disclaimer(
|
|
5705
|
+
out(disclaimer(t2, c));
|
|
4657
5706
|
return;
|
|
4658
5707
|
}
|
|
4659
5708
|
const stageLabelText = stageLabel(match);
|
|
@@ -4661,7 +5710,7 @@ async function cmdMatch(id, ctx) {
|
|
|
4661
5710
|
out(" " + c.dim(`${stageLabelText} \xB7 ${matchLocation(match)}`));
|
|
4662
5711
|
out(
|
|
4663
5712
|
" " + c.dim(
|
|
4664
|
-
`${formatKickoff(match.kickoff, { tz: cfg.tz, locale: cfg.lang })} ${statusToken(match,
|
|
5713
|
+
`${formatKickoff(match.kickoff, { tz: cfg.tz, locale: cfg.lang })} ${statusToken(match, t2, c)}`.trimEnd()
|
|
4665
5714
|
)
|
|
4666
5715
|
);
|
|
4667
5716
|
const flair = matchFlavor(match, { level: cfg.flavor, locale: cfg.lang });
|
|
@@ -4677,10 +5726,10 @@ async function cmdMatch(id, ctx) {
|
|
|
4677
5726
|
for (const mline of marketBlock(marketSignal, match)) out(" " + c.dim(mline));
|
|
4678
5727
|
}
|
|
4679
5728
|
out();
|
|
4680
|
-
if (degraded) out(c.dim(" " +
|
|
5729
|
+
if (degraded) out(c.dim(" " + t2("feed.degraded")));
|
|
4681
5730
|
const src = dataSource(liveSource, c);
|
|
4682
5731
|
if (src) out(src);
|
|
4683
|
-
out(disclaimer(
|
|
5732
|
+
out(disclaimer(t2, c));
|
|
4684
5733
|
}
|
|
4685
5734
|
var MARKET_INFO = "Prediction-market data is informational only.";
|
|
4686
5735
|
function marketDisplayable(sig) {
|
|
@@ -4698,9 +5747,9 @@ function printMarketBlock(m, sig, c) {
|
|
|
4698
5747
|
for (const line2 of marketBlock(sig, m)) out(" " + c.dim(line2));
|
|
4699
5748
|
}
|
|
4700
5749
|
async function cmdMarkets(target, team, ctx) {
|
|
4701
|
-
const { cfg, t } = ctx;
|
|
5750
|
+
const { cfg, t: t2 } = ctx;
|
|
4702
5751
|
if (target === "next") {
|
|
4703
|
-
precheck(cfg,
|
|
5752
|
+
precheck(cfg, t2);
|
|
4704
5753
|
const code = resolveTeamArg(team, "Usage: claudinho markets next <team> (or set CLAUDINHO_TEAM)");
|
|
4705
5754
|
const now2 = ctx.now ?? /* @__PURE__ */ new Date();
|
|
4706
5755
|
const { match: fixture } = await marketFixtureForTeam(adapterFor(ctx), code, now2);
|
|
@@ -4718,7 +5767,7 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4718
5767
|
const c2 = painterFor(cfg);
|
|
4719
5768
|
out();
|
|
4720
5769
|
if (!fixture) {
|
|
4721
|
-
out(c2.dim(" " +
|
|
5770
|
+
out(c2.dim(" " + t2("next.none", { team: code })));
|
|
4722
5771
|
} else {
|
|
4723
5772
|
out(header(marketHeaderLine(fixture, cfg), c2));
|
|
4724
5773
|
out();
|
|
@@ -4726,12 +5775,12 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4726
5775
|
else out(c2.dim(" " + noSignalLine(fixture, now2)));
|
|
4727
5776
|
}
|
|
4728
5777
|
out();
|
|
4729
|
-
out(disclaimer(
|
|
5778
|
+
out(disclaimer(t2, c2));
|
|
4730
5779
|
out(c2.dim(MARKET_INFO));
|
|
4731
5780
|
return;
|
|
4732
5781
|
}
|
|
4733
5782
|
if (target && target !== "today" && !isValidDate(target)) {
|
|
4734
|
-
precheck(cfg,
|
|
5783
|
+
precheck(cfg, t2);
|
|
4735
5784
|
const now2 = ctx.now ?? /* @__PURE__ */ new Date();
|
|
4736
5785
|
const { match } = await getMatchById(adapterFor(ctx), target);
|
|
4737
5786
|
const sig = match && marketRelevant(match, now2) ? (await marketSignalsFor(ctx, [match], MARKETS_CMD_OPTS)).get(match.id) : void 0;
|
|
@@ -4743,7 +5792,7 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4743
5792
|
const c2 = painterFor(cfg);
|
|
4744
5793
|
out();
|
|
4745
5794
|
if (!match) {
|
|
4746
|
-
out(c2.dim(" " +
|
|
5795
|
+
out(c2.dim(" " + t2("match.none", { id: target })));
|
|
4747
5796
|
} else {
|
|
4748
5797
|
out(header(marketHeaderLine(match, cfg), c2));
|
|
4749
5798
|
out();
|
|
@@ -4751,12 +5800,12 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4751
5800
|
else out(c2.dim(" " + noSignalLine(match, now2)));
|
|
4752
5801
|
}
|
|
4753
5802
|
out();
|
|
4754
|
-
out(disclaimer(
|
|
5803
|
+
out(disclaimer(t2, c2));
|
|
4755
5804
|
out(c2.dim(MARKET_INFO));
|
|
4756
5805
|
return;
|
|
4757
5806
|
}
|
|
4758
5807
|
const explicitDate = target && target !== "today" ? target : void 0;
|
|
4759
|
-
precheck(cfg,
|
|
5808
|
+
precheck(cfg, t2, explicitDate);
|
|
4760
5809
|
const now = ctx.now ?? /* @__PURE__ */ new Date();
|
|
4761
5810
|
const date = explicitDate ?? localDate(now.toISOString(), cfg.tz);
|
|
4762
5811
|
const { matches } = await getMatchesForDate(adapterFor(ctx), date);
|
|
@@ -4785,7 +5834,7 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4785
5834
|
out();
|
|
4786
5835
|
}
|
|
4787
5836
|
}
|
|
4788
|
-
out(disclaimer(
|
|
5837
|
+
out(disclaimer(t2, c));
|
|
4789
5838
|
out(c.dim(MARKET_INFO));
|
|
4790
5839
|
}
|
|
4791
5840
|
function pickShareStyle(v) {
|
|
@@ -4854,8 +5903,39 @@ function emitShareTable(ctx, e, copy) {
|
|
|
4854
5903
|
);
|
|
4855
5904
|
}
|
|
4856
5905
|
}
|
|
5906
|
+
function emitShareBracket(ctx, e, copy) {
|
|
5907
|
+
const snippet = formatShareBracket(
|
|
5908
|
+
{
|
|
5909
|
+
view: e.view,
|
|
5910
|
+
source: e.source,
|
|
5911
|
+
installLine: e.installLine,
|
|
5912
|
+
emptyNote: e.emptyNote
|
|
5913
|
+
},
|
|
5914
|
+
e.options
|
|
5915
|
+
);
|
|
5916
|
+
if (ctx.cfg.json) {
|
|
5917
|
+
emitJson({
|
|
5918
|
+
kind: "bracket",
|
|
5919
|
+
target: "bracket",
|
|
5920
|
+
...e.stage ? { stage: e.stage } : {},
|
|
5921
|
+
source: e.source ?? null,
|
|
5922
|
+
degraded: e.degraded,
|
|
5923
|
+
informationalOnly: true,
|
|
5924
|
+
snippet,
|
|
5925
|
+
view: e.view
|
|
5926
|
+
});
|
|
5927
|
+
} else {
|
|
5928
|
+
out(snippet);
|
|
5929
|
+
}
|
|
5930
|
+
if (copy) {
|
|
5931
|
+
const ok = (ctx.copy ?? copyToClipboard)(snippet);
|
|
5932
|
+
process.stderr.write(
|
|
5933
|
+
(ok ? "Copied share snippet to clipboard." : "Clipboard unavailable; printed snippet instead.") + "\n"
|
|
5934
|
+
);
|
|
5935
|
+
}
|
|
5936
|
+
}
|
|
4857
5937
|
async function cmdShare(target, team, opts, ctx) {
|
|
4858
|
-
const { cfg, t } = ctx;
|
|
5938
|
+
const { cfg, t: t2 } = ctx;
|
|
4859
5939
|
const baseOptions = {
|
|
4860
5940
|
style: pickShareStyle(opts.style),
|
|
4861
5941
|
includeMarkets: cfg.markets !== false,
|
|
@@ -4864,7 +5944,7 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4864
5944
|
};
|
|
4865
5945
|
const copy = opts.copy === true;
|
|
4866
5946
|
if (target === "live") {
|
|
4867
|
-
precheck(cfg,
|
|
5947
|
+
precheck(cfg, t2);
|
|
4868
5948
|
const { matches, degraded: degraded2, source: source2 } = await getLiveMatches(adapterFor(ctx));
|
|
4869
5949
|
emitShare(
|
|
4870
5950
|
ctx,
|
|
@@ -4890,7 +5970,7 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4890
5970
|
return;
|
|
4891
5971
|
}
|
|
4892
5972
|
if (target === "table") {
|
|
4893
|
-
precheck(cfg,
|
|
5973
|
+
precheck(cfg, t2);
|
|
4894
5974
|
const group = team?.toUpperCase();
|
|
4895
5975
|
const { tables, degraded: degraded2, source: source2 } = await getStandings(adapterFor(ctx), group);
|
|
4896
5976
|
emitShareTable(
|
|
@@ -4909,8 +5989,39 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4909
5989
|
);
|
|
4910
5990
|
return;
|
|
4911
5991
|
}
|
|
5992
|
+
if (target === "bracket") {
|
|
5993
|
+
precheck(cfg, t2);
|
|
5994
|
+
const stageFilter = team?.toUpperCase();
|
|
5995
|
+
if (stageFilter && !BRACKET_STAGES.has(stageFilter)) {
|
|
5996
|
+
throw new InputError(t(cfg.lang, "bracket.invalidStage"));
|
|
5997
|
+
}
|
|
5998
|
+
const { view, degraded: degraded2, source: source2 } = await getBracket(
|
|
5999
|
+
adapterFor(ctx),
|
|
6000
|
+
stageFilter ? { stage: stageFilter, lang: cfg.lang } : { lang: cfg.lang }
|
|
6001
|
+
);
|
|
6002
|
+
emitShareBracket(
|
|
6003
|
+
ctx,
|
|
6004
|
+
{
|
|
6005
|
+
stage: stageFilter,
|
|
6006
|
+
view,
|
|
6007
|
+
source: degraded2 ? void 0 : source2,
|
|
6008
|
+
degraded: degraded2,
|
|
6009
|
+
installLine: stageFilter ? `npx @claudinho/cli bracket ${stageFilter}` : "npx @claudinho/cli bracket",
|
|
6010
|
+
emptyNote: t(cfg.lang, "bracket.empty"),
|
|
6011
|
+
options: {
|
|
6012
|
+
includeHashtag: baseOptions.includeHashtag,
|
|
6013
|
+
includeInstallLine: baseOptions.includeInstallLine,
|
|
6014
|
+
locale: cfg.lang,
|
|
6015
|
+
style: baseOptions.style,
|
|
6016
|
+
tz: cfg.tz
|
|
6017
|
+
}
|
|
6018
|
+
},
|
|
6019
|
+
copy
|
|
6020
|
+
);
|
|
6021
|
+
return;
|
|
6022
|
+
}
|
|
4912
6023
|
if (target === "next") {
|
|
4913
|
-
precheck(cfg,
|
|
6024
|
+
precheck(cfg, t2);
|
|
4914
6025
|
const code = resolveTeamArg(team, "Usage: claudinho share next <team> (or set CLAUDINHO_TEAM)");
|
|
4915
6026
|
const fixture = nextFixtureForTeam(code, { from: ctx.now ?? /* @__PURE__ */ new Date() });
|
|
4916
6027
|
const matches = fixture ? [fixture] : [];
|
|
@@ -4938,7 +6049,7 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4938
6049
|
return;
|
|
4939
6050
|
}
|
|
4940
6051
|
if (target && target !== "today" && !isValidDate(target)) {
|
|
4941
|
-
precheck(cfg,
|
|
6052
|
+
precheck(cfg, t2);
|
|
4942
6053
|
const { match, degraded: degraded2, source: source2 } = await getMatchById(adapterFor(ctx), target);
|
|
4943
6054
|
const matches = match ? [match] : [];
|
|
4944
6055
|
const signals2 = await reliableShareSignals(ctx, matches);
|
|
@@ -4965,7 +6076,7 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4965
6076
|
return;
|
|
4966
6077
|
}
|
|
4967
6078
|
const explicitDate = target && target !== "today" ? target : void 0;
|
|
4968
|
-
precheck(cfg,
|
|
6079
|
+
precheck(cfg, t2, explicitDate);
|
|
4969
6080
|
const date = explicitDate ?? localDate((/* @__PURE__ */ new Date()).toISOString(), cfg.tz);
|
|
4970
6081
|
const { matches: all, degraded, source } = await getMatchesForDate(adapterFor(ctx), date);
|
|
4971
6082
|
const todays = fixturesByDate(date, all, cfg.tz);
|
|
@@ -5063,7 +6174,7 @@ function handlePipeError(stream) {
|
|
|
5063
6174
|
}
|
|
5064
6175
|
handlePipeError(process.stdout);
|
|
5065
6176
|
handlePipeError(process.stderr);
|
|
5066
|
-
var VERSION = "0.
|
|
6177
|
+
var VERSION = "0.8.1";
|
|
5067
6178
|
var DISCLAIMER = "Claudinho is an independent fan project. Not affiliated with or endorsed by FIFA or Anthropic.";
|
|
5068
6179
|
function ctxFrom(cmd) {
|
|
5069
6180
|
let root = cmd;
|
|
@@ -5111,6 +6222,13 @@ program.command("table").description("show group standings (default: all groups)
|
|
|
5111
6222
|
fail(e);
|
|
5112
6223
|
}
|
|
5113
6224
|
});
|
|
6225
|
+
program.command("bracket").description("show the knockout bracket (default: all rounds)").argument("[stage]", "filter by stage: R32, R16, QF, SF, 3P, F").option("--tree", "ASCII tree view (falls back to list when terminal is narrow)").action(async (stage, opts, cmd) => {
|
|
6226
|
+
try {
|
|
6227
|
+
await cmdBracket(stage, opts, ctxFrom(cmd));
|
|
6228
|
+
} catch (e) {
|
|
6229
|
+
fail(e);
|
|
6230
|
+
}
|
|
6231
|
+
});
|
|
5114
6232
|
program.command("match").description("show a single match by id").argument("<id>", "match id").action(async (id, _opts, cmd) => {
|
|
5115
6233
|
try {
|
|
5116
6234
|
await cmdMatch(id, ctxFrom(cmd));
|
|
@@ -5125,9 +6243,9 @@ program.command("markets").description("show prediction-market signals (read-onl
|
|
|
5125
6243
|
fail(e);
|
|
5126
6244
|
}
|
|
5127
6245
|
});
|
|
5128
|
-
program.command("share").description("print a shareable, copy-pasteable match snippet (#VibingLaVidaLoca)").argument("[target]", '"today" (default), "live", a date, a match id, "next", or "
|
|
6246
|
+
program.command("share").description("print a shareable, copy-pasteable match snippet (#VibingLaVidaLoca)").argument("[target]", '"today" (default), "live", a date, a match id, "next", "table", or "bracket"').argument(
|
|
5129
6247
|
"[team]",
|
|
5130
|
-
'team code for "next" (default: $CLAUDINHO_TEAM),
|
|
6248
|
+
'team code for "next" (default: $CLAUDINHO_TEAM), group letter for "table", or stage for "bracket"'
|
|
5131
6249
|
).option("--style <style>", "snippet style: social (default) or compact").option("--copy", "also copy the snippet to the clipboard (best-effort)").option("--no-hashtag", "omit the #VibingLaVidaLoca tag").option("--no-install-line", "omit the install/run cue").action(async (target, team, opts, cmd) => {
|
|
5132
6250
|
try {
|
|
5133
6251
|
await cmdShare(target, team, opts, ctxFrom(cmd));
|