@claudinho/cli 0.6.2 → 0.8.0
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 +6 -2
- package/dist/index.js +1363 -271
- package/package.json +4 -4
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
|
}
|
|
@@ -366,6 +516,29 @@ function matchLocation(match) {
|
|
|
366
516
|
function byKickoff(a, b) {
|
|
367
517
|
return a.kickoff.localeCompare(b.kickoff);
|
|
368
518
|
}
|
|
519
|
+
function stageLabel(m) {
|
|
520
|
+
if (m.group) return `Group ${m.group}`;
|
|
521
|
+
switch (m.stage) {
|
|
522
|
+
case "GROUP":
|
|
523
|
+
return "Group stage";
|
|
524
|
+
case "R32":
|
|
525
|
+
return "Round of 32";
|
|
526
|
+
case "R16":
|
|
527
|
+
return "Round of 16";
|
|
528
|
+
case "QF":
|
|
529
|
+
return "Quarter-final";
|
|
530
|
+
case "SF":
|
|
531
|
+
return "Semi-final";
|
|
532
|
+
case "3P":
|
|
533
|
+
return "Third-place play-off";
|
|
534
|
+
case "F":
|
|
535
|
+
return "Final";
|
|
536
|
+
case "FRIENDLY":
|
|
537
|
+
return "Friendly";
|
|
538
|
+
default:
|
|
539
|
+
return "";
|
|
540
|
+
}
|
|
541
|
+
}
|
|
369
542
|
var FLAVOR_LEVELS = ["off", "subtle", "full"];
|
|
370
543
|
var DEFAULT_FLAVOR = "full";
|
|
371
544
|
function isFlavorLevel(s) {
|
|
@@ -454,7 +627,7 @@ var schedule_2026_default = [
|
|
|
454
627
|
flag: "\u{1F1FF}\u{1F1E6}"
|
|
455
628
|
},
|
|
456
629
|
status: "SCHEDULED",
|
|
457
|
-
updatedAt: "2026-06-
|
|
630
|
+
updatedAt: "2026-06-24T01:20:06.301Z"
|
|
458
631
|
},
|
|
459
632
|
{
|
|
460
633
|
id: "760414",
|
|
@@ -475,7 +648,7 @@ var schedule_2026_default = [
|
|
|
475
648
|
flag: "\u{1F1E8}\u{1F1FF}"
|
|
476
649
|
},
|
|
477
650
|
status: "SCHEDULED",
|
|
478
|
-
updatedAt: "2026-06-
|
|
651
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
479
652
|
},
|
|
480
653
|
{
|
|
481
654
|
id: "760416",
|
|
@@ -496,7 +669,7 @@ var schedule_2026_default = [
|
|
|
496
669
|
flag: "\u{1F1E7}\u{1F1E6}"
|
|
497
670
|
},
|
|
498
671
|
status: "SCHEDULED",
|
|
499
|
-
updatedAt: "2026-06-
|
|
672
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
500
673
|
},
|
|
501
674
|
{
|
|
502
675
|
id: "760417",
|
|
@@ -517,7 +690,7 @@ var schedule_2026_default = [
|
|
|
517
690
|
flag: "\u{1F1F5}\u{1F1FE}"
|
|
518
691
|
},
|
|
519
692
|
status: "SCHEDULED",
|
|
520
|
-
updatedAt: "2026-06-
|
|
693
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
521
694
|
},
|
|
522
695
|
{
|
|
523
696
|
id: "760420",
|
|
@@ -538,7 +711,7 @@ var schedule_2026_default = [
|
|
|
538
711
|
flag: "\u{1F1E8}\u{1F1ED}"
|
|
539
712
|
},
|
|
540
713
|
status: "SCHEDULED",
|
|
541
|
-
updatedAt: "2026-06-
|
|
714
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
542
715
|
},
|
|
543
716
|
{
|
|
544
717
|
id: "760419",
|
|
@@ -559,7 +732,7 @@ var schedule_2026_default = [
|
|
|
559
732
|
flag: "\u{1F1F2}\u{1F1E6}"
|
|
560
733
|
},
|
|
561
734
|
status: "SCHEDULED",
|
|
562
|
-
updatedAt: "2026-06-
|
|
735
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
563
736
|
},
|
|
564
737
|
{
|
|
565
738
|
id: "760418",
|
|
@@ -580,7 +753,7 @@ var schedule_2026_default = [
|
|
|
580
753
|
flag: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}"
|
|
581
754
|
},
|
|
582
755
|
status: "SCHEDULED",
|
|
583
|
-
updatedAt: "2026-06-
|
|
756
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
584
757
|
},
|
|
585
758
|
{
|
|
586
759
|
id: "760421",
|
|
@@ -601,7 +774,7 @@ var schedule_2026_default = [
|
|
|
601
774
|
flag: "\u{1F1F9}\u{1F1F7}"
|
|
602
775
|
},
|
|
603
776
|
status: "SCHEDULED",
|
|
604
|
-
updatedAt: "2026-06-
|
|
777
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
605
778
|
},
|
|
606
779
|
{
|
|
607
780
|
id: "760422",
|
|
@@ -622,7 +795,7 @@ var schedule_2026_default = [
|
|
|
622
795
|
flag: "\u{1F1E8}\u{1F1FC}"
|
|
623
796
|
},
|
|
624
797
|
status: "SCHEDULED",
|
|
625
|
-
updatedAt: "2026-06-
|
|
798
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
626
799
|
},
|
|
627
800
|
{
|
|
628
801
|
id: "760425",
|
|
@@ -643,7 +816,7 @@ var schedule_2026_default = [
|
|
|
643
816
|
flag: "\u{1F1EF}\u{1F1F5}"
|
|
644
817
|
},
|
|
645
818
|
status: "SCHEDULED",
|
|
646
|
-
updatedAt: "2026-06-
|
|
819
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
647
820
|
},
|
|
648
821
|
{
|
|
649
822
|
id: "760423",
|
|
@@ -664,7 +837,7 @@ var schedule_2026_default = [
|
|
|
664
837
|
flag: "\u{1F1EA}\u{1F1E8}"
|
|
665
838
|
},
|
|
666
839
|
status: "SCHEDULED",
|
|
667
|
-
updatedAt: "2026-06-
|
|
840
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
668
841
|
},
|
|
669
842
|
{
|
|
670
843
|
id: "760424",
|
|
@@ -685,7 +858,7 @@ var schedule_2026_default = [
|
|
|
685
858
|
flag: "\u{1F1F9}\u{1F1F3}"
|
|
686
859
|
},
|
|
687
860
|
status: "SCHEDULED",
|
|
688
|
-
updatedAt: "2026-06-
|
|
861
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
689
862
|
},
|
|
690
863
|
{
|
|
691
864
|
id: "760428",
|
|
@@ -706,7 +879,7 @@ var schedule_2026_default = [
|
|
|
706
879
|
flag: "\u{1F1E8}\u{1F1FB}"
|
|
707
880
|
},
|
|
708
881
|
status: "SCHEDULED",
|
|
709
|
-
updatedAt: "2026-06-
|
|
882
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
710
883
|
},
|
|
711
884
|
{
|
|
712
885
|
id: "760426",
|
|
@@ -727,7 +900,7 @@ var schedule_2026_default = [
|
|
|
727
900
|
flag: "\u{1F1EA}\u{1F1EC}"
|
|
728
901
|
},
|
|
729
902
|
status: "SCHEDULED",
|
|
730
|
-
updatedAt: "2026-06-
|
|
903
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
731
904
|
},
|
|
732
905
|
{
|
|
733
906
|
id: "760429",
|
|
@@ -748,7 +921,7 @@ var schedule_2026_default = [
|
|
|
748
921
|
flag: "\u{1F1FA}\u{1F1FE}"
|
|
749
922
|
},
|
|
750
923
|
status: "SCHEDULED",
|
|
751
|
-
updatedAt: "2026-06-
|
|
924
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
752
925
|
},
|
|
753
926
|
{
|
|
754
927
|
id: "760427",
|
|
@@ -769,7 +942,7 @@ var schedule_2026_default = [
|
|
|
769
942
|
flag: "\u{1F1F3}\u{1F1FF}"
|
|
770
943
|
},
|
|
771
944
|
status: "SCHEDULED",
|
|
772
|
-
updatedAt: "2026-06-
|
|
945
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
773
946
|
},
|
|
774
947
|
{
|
|
775
948
|
id: "760432",
|
|
@@ -790,7 +963,7 @@ var schedule_2026_default = [
|
|
|
790
963
|
flag: "\u{1F1F8}\u{1F1F3}"
|
|
791
964
|
},
|
|
792
965
|
status: "SCHEDULED",
|
|
793
|
-
updatedAt: "2026-06-
|
|
966
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
794
967
|
},
|
|
795
968
|
{
|
|
796
969
|
id: "760430",
|
|
@@ -811,7 +984,7 @@ var schedule_2026_default = [
|
|
|
811
984
|
flag: "\u{1F1F3}\u{1F1F4}"
|
|
812
985
|
},
|
|
813
986
|
status: "SCHEDULED",
|
|
814
|
-
updatedAt: "2026-06-
|
|
987
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
815
988
|
},
|
|
816
989
|
{
|
|
817
990
|
id: "760433",
|
|
@@ -832,7 +1005,7 @@ var schedule_2026_default = [
|
|
|
832
1005
|
flag: "\u{1F1E9}\u{1F1FF}"
|
|
833
1006
|
},
|
|
834
1007
|
status: "SCHEDULED",
|
|
835
|
-
updatedAt: "2026-06-
|
|
1008
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
836
1009
|
},
|
|
837
1010
|
{
|
|
838
1011
|
id: "760431",
|
|
@@ -853,7 +1026,7 @@ var schedule_2026_default = [
|
|
|
853
1026
|
flag: "\u{1F1EF}\u{1F1F4}"
|
|
854
1027
|
},
|
|
855
1028
|
status: "SCHEDULED",
|
|
856
|
-
updatedAt: "2026-06-
|
|
1029
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
857
1030
|
},
|
|
858
1031
|
{
|
|
859
1032
|
id: "760435",
|
|
@@ -874,7 +1047,7 @@ var schedule_2026_default = [
|
|
|
874
1047
|
flag: "\u{1F1E8}\u{1F1E9}"
|
|
875
1048
|
},
|
|
876
1049
|
status: "SCHEDULED",
|
|
877
|
-
updatedAt: "2026-06-
|
|
1050
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
878
1051
|
},
|
|
879
1052
|
{
|
|
880
1053
|
id: "760437",
|
|
@@ -895,7 +1068,7 @@ var schedule_2026_default = [
|
|
|
895
1068
|
flag: "\u{1F1ED}\u{1F1F7}"
|
|
896
1069
|
},
|
|
897
1070
|
status: "SCHEDULED",
|
|
898
|
-
updatedAt: "2026-06-
|
|
1071
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
899
1072
|
},
|
|
900
1073
|
{
|
|
901
1074
|
id: "760434",
|
|
@@ -916,7 +1089,7 @@ var schedule_2026_default = [
|
|
|
916
1089
|
flag: "\u{1F1F5}\u{1F1E6}"
|
|
917
1090
|
},
|
|
918
1091
|
status: "SCHEDULED",
|
|
919
|
-
updatedAt: "2026-06-
|
|
1092
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
920
1093
|
},
|
|
921
1094
|
{
|
|
922
1095
|
id: "760436",
|
|
@@ -937,7 +1110,7 @@ var schedule_2026_default = [
|
|
|
937
1110
|
flag: "\u{1F1E8}\u{1F1F4}"
|
|
938
1111
|
},
|
|
939
1112
|
status: "SCHEDULED",
|
|
940
|
-
updatedAt: "2026-06-
|
|
1113
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
941
1114
|
},
|
|
942
1115
|
{
|
|
943
1116
|
id: "760438",
|
|
@@ -958,7 +1131,7 @@ var schedule_2026_default = [
|
|
|
958
1131
|
flag: "\u{1F1FF}\u{1F1E6}"
|
|
959
1132
|
},
|
|
960
1133
|
status: "SCHEDULED",
|
|
961
|
-
updatedAt: "2026-06-
|
|
1134
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
962
1135
|
},
|
|
963
1136
|
{
|
|
964
1137
|
id: "760439",
|
|
@@ -979,7 +1152,7 @@ var schedule_2026_default = [
|
|
|
979
1152
|
flag: "\u{1F1E7}\u{1F1E6}"
|
|
980
1153
|
},
|
|
981
1154
|
status: "SCHEDULED",
|
|
982
|
-
updatedAt: "2026-06-
|
|
1155
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
983
1156
|
},
|
|
984
1157
|
{
|
|
985
1158
|
id: "760440",
|
|
@@ -1000,7 +1173,7 @@ var schedule_2026_default = [
|
|
|
1000
1173
|
flag: "\u{1F1F6}\u{1F1E6}"
|
|
1001
1174
|
},
|
|
1002
1175
|
status: "SCHEDULED",
|
|
1003
|
-
updatedAt: "2026-06-
|
|
1176
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1004
1177
|
},
|
|
1005
1178
|
{
|
|
1006
1179
|
id: "760441",
|
|
@@ -1021,7 +1194,7 @@ var schedule_2026_default = [
|
|
|
1021
1194
|
flag: "\u{1F1F0}\u{1F1F7}"
|
|
1022
1195
|
},
|
|
1023
1196
|
status: "SCHEDULED",
|
|
1024
|
-
updatedAt: "2026-06-
|
|
1197
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1025
1198
|
},
|
|
1026
1199
|
{
|
|
1027
1200
|
id: "760442",
|
|
@@ -1042,7 +1215,7 @@ var schedule_2026_default = [
|
|
|
1042
1215
|
flag: "\u{1F1E6}\u{1F1FA}"
|
|
1043
1216
|
},
|
|
1044
1217
|
status: "SCHEDULED",
|
|
1045
|
-
updatedAt: "2026-06-
|
|
1218
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1046
1219
|
},
|
|
1047
1220
|
{
|
|
1048
1221
|
id: "760445",
|
|
@@ -1063,7 +1236,7 @@ var schedule_2026_default = [
|
|
|
1063
1236
|
flag: "\u{1F1F2}\u{1F1E6}"
|
|
1064
1237
|
},
|
|
1065
1238
|
status: "SCHEDULED",
|
|
1066
|
-
updatedAt: "2026-06-
|
|
1239
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1067
1240
|
},
|
|
1068
1241
|
{
|
|
1069
1242
|
id: "760444",
|
|
@@ -1084,7 +1257,7 @@ var schedule_2026_default = [
|
|
|
1084
1257
|
flag: "\u{1F1ED}\u{1F1F9}"
|
|
1085
1258
|
},
|
|
1086
1259
|
status: "SCHEDULED",
|
|
1087
|
-
updatedAt: "2026-06-
|
|
1260
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1088
1261
|
},
|
|
1089
1262
|
{
|
|
1090
1263
|
id: "760443",
|
|
@@ -1105,7 +1278,7 @@ var schedule_2026_default = [
|
|
|
1105
1278
|
flag: "\u{1F1F5}\u{1F1FE}"
|
|
1106
1279
|
},
|
|
1107
1280
|
status: "SCHEDULED",
|
|
1108
|
-
updatedAt: "2026-06-
|
|
1281
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1109
1282
|
},
|
|
1110
1283
|
{
|
|
1111
1284
|
id: "760447",
|
|
@@ -1126,7 +1299,7 @@ var schedule_2026_default = [
|
|
|
1126
1299
|
flag: "\u{1F1F8}\u{1F1EA}"
|
|
1127
1300
|
},
|
|
1128
1301
|
status: "SCHEDULED",
|
|
1129
|
-
updatedAt: "2026-06-
|
|
1302
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1130
1303
|
},
|
|
1131
1304
|
{
|
|
1132
1305
|
id: "760448",
|
|
@@ -1147,7 +1320,7 @@ var schedule_2026_default = [
|
|
|
1147
1320
|
flag: "\u{1F1E8}\u{1F1EE}"
|
|
1148
1321
|
},
|
|
1149
1322
|
status: "SCHEDULED",
|
|
1150
|
-
updatedAt: "2026-06-
|
|
1323
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1151
1324
|
},
|
|
1152
1325
|
{
|
|
1153
1326
|
id: "760446",
|
|
@@ -1168,7 +1341,7 @@ var schedule_2026_default = [
|
|
|
1168
1341
|
flag: "\u{1F1E8}\u{1F1FC}"
|
|
1169
1342
|
},
|
|
1170
1343
|
status: "SCHEDULED",
|
|
1171
|
-
updatedAt: "2026-06-
|
|
1344
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1172
1345
|
},
|
|
1173
1346
|
{
|
|
1174
1347
|
id: "760449",
|
|
@@ -1189,7 +1362,7 @@ var schedule_2026_default = [
|
|
|
1189
1362
|
flag: "\u{1F1EF}\u{1F1F5}"
|
|
1190
1363
|
},
|
|
1191
1364
|
status: "SCHEDULED",
|
|
1192
|
-
updatedAt: "2026-06-
|
|
1365
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1193
1366
|
},
|
|
1194
1367
|
{
|
|
1195
1368
|
id: "760453",
|
|
@@ -1210,7 +1383,7 @@ var schedule_2026_default = [
|
|
|
1210
1383
|
flag: "\u{1F1F8}\u{1F1E6}"
|
|
1211
1384
|
},
|
|
1212
1385
|
status: "SCHEDULED",
|
|
1213
|
-
updatedAt: "2026-06-
|
|
1386
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1214
1387
|
},
|
|
1215
1388
|
{
|
|
1216
1389
|
id: "760451",
|
|
@@ -1231,7 +1404,7 @@ var schedule_2026_default = [
|
|
|
1231
1404
|
flag: "\u{1F1EE}\u{1F1F7}"
|
|
1232
1405
|
},
|
|
1233
1406
|
status: "SCHEDULED",
|
|
1234
|
-
updatedAt: "2026-06-
|
|
1407
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1235
1408
|
},
|
|
1236
1409
|
{
|
|
1237
1410
|
id: "760450",
|
|
@@ -1252,7 +1425,7 @@ var schedule_2026_default = [
|
|
|
1252
1425
|
flag: "\u{1F1E8}\u{1F1FB}"
|
|
1253
1426
|
},
|
|
1254
1427
|
status: "SCHEDULED",
|
|
1255
|
-
updatedAt: "2026-06-
|
|
1428
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1256
1429
|
},
|
|
1257
1430
|
{
|
|
1258
1431
|
id: "760452",
|
|
@@ -1273,7 +1446,7 @@ var schedule_2026_default = [
|
|
|
1273
1446
|
flag: "\u{1F1EA}\u{1F1EC}"
|
|
1274
1447
|
},
|
|
1275
1448
|
status: "SCHEDULED",
|
|
1276
|
-
updatedAt: "2026-06-
|
|
1449
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1277
1450
|
},
|
|
1278
1451
|
{
|
|
1279
1452
|
id: "760456",
|
|
@@ -1294,7 +1467,7 @@ var schedule_2026_default = [
|
|
|
1294
1467
|
flag: "\u{1F1E6}\u{1F1F9}"
|
|
1295
1468
|
},
|
|
1296
1469
|
status: "SCHEDULED",
|
|
1297
|
-
updatedAt: "2026-06-
|
|
1470
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1298
1471
|
},
|
|
1299
1472
|
{
|
|
1300
1473
|
id: "760457",
|
|
@@ -1315,7 +1488,7 @@ var schedule_2026_default = [
|
|
|
1315
1488
|
flag: "\u{1F1EE}\u{1F1F6}"
|
|
1316
1489
|
},
|
|
1317
1490
|
status: "SCHEDULED",
|
|
1318
|
-
updatedAt: "2026-06-
|
|
1491
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1319
1492
|
},
|
|
1320
1493
|
{
|
|
1321
1494
|
id: "760454",
|
|
@@ -1336,7 +1509,7 @@ var schedule_2026_default = [
|
|
|
1336
1509
|
flag: "\u{1F1F8}\u{1F1F3}"
|
|
1337
1510
|
},
|
|
1338
1511
|
status: "SCHEDULED",
|
|
1339
|
-
updatedAt: "2026-06-
|
|
1512
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1340
1513
|
},
|
|
1341
1514
|
{
|
|
1342
1515
|
id: "760455",
|
|
@@ -1357,7 +1530,7 @@ var schedule_2026_default = [
|
|
|
1357
1530
|
flag: "\u{1F1E9}\u{1F1FF}"
|
|
1358
1531
|
},
|
|
1359
1532
|
status: "SCHEDULED",
|
|
1360
|
-
updatedAt: "2026-06-
|
|
1533
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1361
1534
|
},
|
|
1362
1535
|
{
|
|
1363
1536
|
id: "760461",
|
|
@@ -1378,7 +1551,7 @@ var schedule_2026_default = [
|
|
|
1378
1551
|
flag: "\u{1F1FA}\u{1F1FF}"
|
|
1379
1552
|
},
|
|
1380
1553
|
status: "SCHEDULED",
|
|
1381
|
-
updatedAt: "2026-06-
|
|
1554
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1382
1555
|
},
|
|
1383
1556
|
{
|
|
1384
1557
|
id: "760458",
|
|
@@ -1399,7 +1572,7 @@ var schedule_2026_default = [
|
|
|
1399
1572
|
flag: "\u{1F1EC}\u{1F1ED}"
|
|
1400
1573
|
},
|
|
1401
1574
|
status: "SCHEDULED",
|
|
1402
|
-
updatedAt: "2026-06-
|
|
1575
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1403
1576
|
},
|
|
1404
1577
|
{
|
|
1405
1578
|
id: "760460",
|
|
@@ -1420,7 +1593,7 @@ var schedule_2026_default = [
|
|
|
1420
1593
|
flag: "\u{1F1ED}\u{1F1F7}"
|
|
1421
1594
|
},
|
|
1422
1595
|
status: "SCHEDULED",
|
|
1423
|
-
updatedAt: "2026-06-
|
|
1596
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1424
1597
|
},
|
|
1425
1598
|
{
|
|
1426
1599
|
id: "760459",
|
|
@@ -1441,7 +1614,7 @@ var schedule_2026_default = [
|
|
|
1441
1614
|
flag: "\u{1F1E8}\u{1F1E9}"
|
|
1442
1615
|
},
|
|
1443
1616
|
status: "SCHEDULED",
|
|
1444
|
-
updatedAt: "2026-06-
|
|
1617
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1445
1618
|
},
|
|
1446
1619
|
{
|
|
1447
1620
|
id: "760462",
|
|
@@ -1462,7 +1635,7 @@ var schedule_2026_default = [
|
|
|
1462
1635
|
flag: "\u{1F1F6}\u{1F1E6}"
|
|
1463
1636
|
},
|
|
1464
1637
|
status: "SCHEDULED",
|
|
1465
|
-
updatedAt: "2026-06-
|
|
1638
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1466
1639
|
},
|
|
1467
1640
|
{
|
|
1468
1641
|
id: "760463",
|
|
@@ -1483,7 +1656,7 @@ var schedule_2026_default = [
|
|
|
1483
1656
|
flag: "\u{1F1E8}\u{1F1E6}"
|
|
1484
1657
|
},
|
|
1485
1658
|
status: "SCHEDULED",
|
|
1486
|
-
updatedAt: "2026-06-
|
|
1659
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1487
1660
|
},
|
|
1488
1661
|
{
|
|
1489
1662
|
id: "760464",
|
|
@@ -1504,7 +1677,7 @@ var schedule_2026_default = [
|
|
|
1504
1677
|
flag: "\u{1F1ED}\u{1F1F9}"
|
|
1505
1678
|
},
|
|
1506
1679
|
status: "SCHEDULED",
|
|
1507
|
-
updatedAt: "2026-06-
|
|
1680
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1508
1681
|
},
|
|
1509
1682
|
{
|
|
1510
1683
|
id: "760465",
|
|
@@ -1525,7 +1698,7 @@ var schedule_2026_default = [
|
|
|
1525
1698
|
flag: "\u{1F1E7}\u{1F1F7}"
|
|
1526
1699
|
},
|
|
1527
1700
|
status: "SCHEDULED",
|
|
1528
|
-
updatedAt: "2026-06-
|
|
1701
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1529
1702
|
},
|
|
1530
1703
|
{
|
|
1531
1704
|
id: "760467",
|
|
@@ -1546,7 +1719,7 @@ var schedule_2026_default = [
|
|
|
1546
1719
|
flag: "\u{1F1F2}\u{1F1FD}"
|
|
1547
1720
|
},
|
|
1548
1721
|
status: "SCHEDULED",
|
|
1549
|
-
updatedAt: "2026-06-
|
|
1722
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1550
1723
|
},
|
|
1551
1724
|
{
|
|
1552
1725
|
id: "760466",
|
|
@@ -1567,7 +1740,7 @@ var schedule_2026_default = [
|
|
|
1567
1740
|
flag: "\u{1F1F0}\u{1F1F7}"
|
|
1568
1741
|
},
|
|
1569
1742
|
status: "SCHEDULED",
|
|
1570
|
-
updatedAt: "2026-06-
|
|
1743
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1571
1744
|
},
|
|
1572
1745
|
{
|
|
1573
1746
|
id: "760473",
|
|
@@ -1588,7 +1761,7 @@ var schedule_2026_default = [
|
|
|
1588
1761
|
flag: "\u{1F1E8}\u{1F1EE}"
|
|
1589
1762
|
},
|
|
1590
1763
|
status: "SCHEDULED",
|
|
1591
|
-
updatedAt: "2026-06-
|
|
1764
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1592
1765
|
},
|
|
1593
1766
|
{
|
|
1594
1767
|
id: "760468",
|
|
@@ -1609,7 +1782,7 @@ var schedule_2026_default = [
|
|
|
1609
1782
|
flag: "\u{1F1E9}\u{1F1EA}"
|
|
1610
1783
|
},
|
|
1611
1784
|
status: "SCHEDULED",
|
|
1612
|
-
updatedAt: "2026-06-
|
|
1785
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1613
1786
|
},
|
|
1614
1787
|
{
|
|
1615
1788
|
id: "760471",
|
|
@@ -1630,7 +1803,7 @@ var schedule_2026_default = [
|
|
|
1630
1803
|
flag: "\u{1F1F8}\u{1F1EA}"
|
|
1631
1804
|
},
|
|
1632
1805
|
status: "SCHEDULED",
|
|
1633
|
-
updatedAt: "2026-06-
|
|
1806
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1634
1807
|
},
|
|
1635
1808
|
{
|
|
1636
1809
|
id: "760472",
|
|
@@ -1651,7 +1824,7 @@ var schedule_2026_default = [
|
|
|
1651
1824
|
flag: "\u{1F1F3}\u{1F1F1}"
|
|
1652
1825
|
},
|
|
1653
1826
|
status: "SCHEDULED",
|
|
1654
|
-
updatedAt: "2026-06-
|
|
1827
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1655
1828
|
},
|
|
1656
1829
|
{
|
|
1657
1830
|
id: "760469",
|
|
@@ -1672,7 +1845,7 @@ var schedule_2026_default = [
|
|
|
1672
1845
|
flag: "\u{1F1E6}\u{1F1FA}"
|
|
1673
1846
|
},
|
|
1674
1847
|
status: "SCHEDULED",
|
|
1675
|
-
updatedAt: "2026-06-
|
|
1848
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1676
1849
|
},
|
|
1677
1850
|
{
|
|
1678
1851
|
id: "760470",
|
|
@@ -1693,7 +1866,7 @@ var schedule_2026_default = [
|
|
|
1693
1866
|
flag: "\u{1F1FA}\u{1F1F8}"
|
|
1694
1867
|
},
|
|
1695
1868
|
status: "SCHEDULED",
|
|
1696
|
-
updatedAt: "2026-06-
|
|
1869
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1697
1870
|
},
|
|
1698
1871
|
{
|
|
1699
1872
|
id: "760475",
|
|
@@ -1714,7 +1887,7 @@ var schedule_2026_default = [
|
|
|
1714
1887
|
flag: "\u{1F1EB}\u{1F1F7}"
|
|
1715
1888
|
},
|
|
1716
1889
|
status: "SCHEDULED",
|
|
1717
|
-
updatedAt: "2026-06-
|
|
1890
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1718
1891
|
},
|
|
1719
1892
|
{
|
|
1720
1893
|
id: "760474",
|
|
@@ -1735,7 +1908,7 @@ var schedule_2026_default = [
|
|
|
1735
1908
|
flag: "\u{1F1EE}\u{1F1F6}"
|
|
1736
1909
|
},
|
|
1737
1910
|
status: "SCHEDULED",
|
|
1738
|
-
updatedAt: "2026-06-
|
|
1911
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1739
1912
|
},
|
|
1740
1913
|
{
|
|
1741
1914
|
id: "760478",
|
|
@@ -1756,7 +1929,7 @@ var schedule_2026_default = [
|
|
|
1756
1929
|
flag: "\u{1F1F8}\u{1F1E6}"
|
|
1757
1930
|
},
|
|
1758
1931
|
status: "SCHEDULED",
|
|
1759
|
-
updatedAt: "2026-06-
|
|
1932
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1760
1933
|
},
|
|
1761
1934
|
{
|
|
1762
1935
|
id: "760479",
|
|
@@ -1777,7 +1950,7 @@ var schedule_2026_default = [
|
|
|
1777
1950
|
flag: "\u{1F1EA}\u{1F1F8}"
|
|
1778
1951
|
},
|
|
1779
1952
|
status: "SCHEDULED",
|
|
1780
|
-
updatedAt: "2026-06-
|
|
1953
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1781
1954
|
},
|
|
1782
1955
|
{
|
|
1783
1956
|
id: "760476",
|
|
@@ -1798,7 +1971,7 @@ var schedule_2026_default = [
|
|
|
1798
1971
|
flag: "\u{1F1EE}\u{1F1F7}"
|
|
1799
1972
|
},
|
|
1800
1973
|
status: "SCHEDULED",
|
|
1801
|
-
updatedAt: "2026-06-
|
|
1974
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1802
1975
|
},
|
|
1803
1976
|
{
|
|
1804
1977
|
id: "760477",
|
|
@@ -1819,7 +1992,7 @@ var schedule_2026_default = [
|
|
|
1819
1992
|
flag: "\u{1F1E7}\u{1F1EA}"
|
|
1820
1993
|
},
|
|
1821
1994
|
status: "SCHEDULED",
|
|
1822
|
-
updatedAt: "2026-06-
|
|
1995
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1823
1996
|
},
|
|
1824
1997
|
{
|
|
1825
1998
|
id: "760480",
|
|
@@ -1840,7 +2013,7 @@ var schedule_2026_default = [
|
|
|
1840
2013
|
flag: "\u{1F1EC}\u{1F1ED}"
|
|
1841
2014
|
},
|
|
1842
2015
|
status: "SCHEDULED",
|
|
1843
|
-
updatedAt: "2026-06-
|
|
2016
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1844
2017
|
},
|
|
1845
2018
|
{
|
|
1846
2019
|
id: "760485",
|
|
@@ -1861,7 +2034,7 @@ var schedule_2026_default = [
|
|
|
1861
2034
|
flag: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}"
|
|
1862
2035
|
},
|
|
1863
2036
|
status: "SCHEDULED",
|
|
1864
|
-
updatedAt: "2026-06-
|
|
2037
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1865
2038
|
},
|
|
1866
2039
|
{
|
|
1867
2040
|
id: "760481",
|
|
@@ -1882,7 +2055,7 @@ var schedule_2026_default = [
|
|
|
1882
2055
|
flag: "\u{1F1F5}\u{1F1F9}"
|
|
1883
2056
|
},
|
|
1884
2057
|
status: "SCHEDULED",
|
|
1885
|
-
updatedAt: "2026-06-
|
|
2058
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1886
2059
|
},
|
|
1887
2060
|
{
|
|
1888
2061
|
id: "760482",
|
|
@@ -1903,7 +2076,7 @@ var schedule_2026_default = [
|
|
|
1903
2076
|
flag: "\u{1F1FA}\u{1F1FF}"
|
|
1904
2077
|
},
|
|
1905
2078
|
status: "SCHEDULED",
|
|
1906
|
-
updatedAt: "2026-06-
|
|
2079
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1907
2080
|
},
|
|
1908
2081
|
{
|
|
1909
2082
|
id: "760484",
|
|
@@ -1924,7 +2097,7 @@ var schedule_2026_default = [
|
|
|
1924
2097
|
flag: "\u{1F1E6}\u{1F1F9}"
|
|
1925
2098
|
},
|
|
1926
2099
|
status: "SCHEDULED",
|
|
1927
|
-
updatedAt: "2026-06-
|
|
2100
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1928
2101
|
},
|
|
1929
2102
|
{
|
|
1930
2103
|
id: "760483",
|
|
@@ -1945,7 +2118,7 @@ var schedule_2026_default = [
|
|
|
1945
2118
|
flag: "\u{1F1E6}\u{1F1F7}"
|
|
1946
2119
|
},
|
|
1947
2120
|
status: "SCHEDULED",
|
|
1948
|
-
updatedAt: "2026-06-
|
|
2121
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1949
2122
|
},
|
|
1950
2123
|
{
|
|
1951
2124
|
id: "760486",
|
|
@@ -1965,7 +2138,7 @@ var schedule_2026_default = [
|
|
|
1965
2138
|
flag: "\u{1F3F3}\uFE0F"
|
|
1966
2139
|
},
|
|
1967
2140
|
status: "SCHEDULED",
|
|
1968
|
-
updatedAt: "2026-06-
|
|
2141
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
1969
2142
|
},
|
|
1970
2143
|
{
|
|
1971
2144
|
id: "760487",
|
|
@@ -1985,7 +2158,7 @@ var schedule_2026_default = [
|
|
|
1985
2158
|
flag: "\u{1F3F3}\uFE0F"
|
|
1986
2159
|
},
|
|
1987
2160
|
status: "SCHEDULED",
|
|
1988
|
-
updatedAt: "2026-06-
|
|
2161
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
1989
2162
|
},
|
|
1990
2163
|
{
|
|
1991
2164
|
id: "760489",
|
|
@@ -1995,8 +2168,8 @@ var schedule_2026_default = [
|
|
|
1995
2168
|
city: "Foxborough, Massachusetts",
|
|
1996
2169
|
country: "USA",
|
|
1997
2170
|
home: {
|
|
1998
|
-
code: "
|
|
1999
|
-
name: "
|
|
2171
|
+
code: "TBD",
|
|
2172
|
+
name: "Germany",
|
|
2000
2173
|
flag: "\u{1F3F3}\uFE0F"
|
|
2001
2174
|
},
|
|
2002
2175
|
away: {
|
|
@@ -2005,7 +2178,7 @@ var schedule_2026_default = [
|
|
|
2005
2178
|
flag: "\u{1F3F3}\uFE0F"
|
|
2006
2179
|
},
|
|
2007
2180
|
status: "SCHEDULED",
|
|
2008
|
-
updatedAt: "2026-06-
|
|
2181
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2009
2182
|
},
|
|
2010
2183
|
{
|
|
2011
2184
|
id: "760488",
|
|
@@ -2025,7 +2198,7 @@ var schedule_2026_default = [
|
|
|
2025
2198
|
flag: "\u{1F3F3}\uFE0F"
|
|
2026
2199
|
},
|
|
2027
2200
|
status: "SCHEDULED",
|
|
2028
|
-
updatedAt: "2026-06-
|
|
2201
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2029
2202
|
},
|
|
2030
2203
|
{
|
|
2031
2204
|
id: "760490",
|
|
@@ -2045,7 +2218,7 @@ var schedule_2026_default = [
|
|
|
2045
2218
|
flag: "\u{1F3F3}\uFE0F"
|
|
2046
2219
|
},
|
|
2047
2220
|
status: "SCHEDULED",
|
|
2048
|
-
updatedAt: "2026-06-
|
|
2221
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2049
2222
|
},
|
|
2050
2223
|
{
|
|
2051
2224
|
id: "760492",
|
|
@@ -2065,7 +2238,7 @@ var schedule_2026_default = [
|
|
|
2065
2238
|
flag: "\u{1F3F3}\uFE0F"
|
|
2066
2239
|
},
|
|
2067
2240
|
status: "SCHEDULED",
|
|
2068
|
-
updatedAt: "2026-06-
|
|
2241
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2069
2242
|
},
|
|
2070
2243
|
{
|
|
2071
2244
|
id: "760491",
|
|
@@ -2075,8 +2248,8 @@ var schedule_2026_default = [
|
|
|
2075
2248
|
city: "Mexico City",
|
|
2076
2249
|
country: "Mexico",
|
|
2077
2250
|
home: {
|
|
2078
|
-
code: "
|
|
2079
|
-
name: "
|
|
2251
|
+
code: "TBD",
|
|
2252
|
+
name: "Mexico",
|
|
2080
2253
|
flag: "\u{1F3F3}\uFE0F"
|
|
2081
2254
|
},
|
|
2082
2255
|
away: {
|
|
@@ -2085,7 +2258,7 @@ var schedule_2026_default = [
|
|
|
2085
2258
|
flag: "\u{1F3F3}\uFE0F"
|
|
2086
2259
|
},
|
|
2087
2260
|
status: "SCHEDULED",
|
|
2088
|
-
updatedAt: "2026-06-
|
|
2261
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2089
2262
|
},
|
|
2090
2263
|
{
|
|
2091
2264
|
id: "760495",
|
|
@@ -2105,7 +2278,7 @@ var schedule_2026_default = [
|
|
|
2105
2278
|
flag: "\u{1F3F3}\uFE0F"
|
|
2106
2279
|
},
|
|
2107
2280
|
status: "SCHEDULED",
|
|
2108
|
-
updatedAt: "2026-06-
|
|
2281
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2109
2282
|
},
|
|
2110
2283
|
{
|
|
2111
2284
|
id: "760493",
|
|
@@ -2125,7 +2298,7 @@ var schedule_2026_default = [
|
|
|
2125
2298
|
flag: "\u{1F3F3}\uFE0F"
|
|
2126
2299
|
},
|
|
2127
2300
|
status: "SCHEDULED",
|
|
2128
|
-
updatedAt: "2026-06-
|
|
2301
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2129
2302
|
},
|
|
2130
2303
|
{
|
|
2131
2304
|
id: "760494",
|
|
@@ -2135,8 +2308,8 @@ var schedule_2026_default = [
|
|
|
2135
2308
|
city: "Santa Clara, California",
|
|
2136
2309
|
country: "USA",
|
|
2137
2310
|
home: {
|
|
2138
|
-
code: "
|
|
2139
|
-
name: "
|
|
2311
|
+
code: "TBD",
|
|
2312
|
+
name: "United States",
|
|
2140
2313
|
flag: "\u{1F3F3}\uFE0F"
|
|
2141
2314
|
},
|
|
2142
2315
|
away: {
|
|
@@ -2145,7 +2318,7 @@ var schedule_2026_default = [
|
|
|
2145
2318
|
flag: "\u{1F3F3}\uFE0F"
|
|
2146
2319
|
},
|
|
2147
2320
|
status: "SCHEDULED",
|
|
2148
|
-
updatedAt: "2026-06-
|
|
2321
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2149
2322
|
},
|
|
2150
2323
|
{
|
|
2151
2324
|
id: "760497",
|
|
@@ -2165,7 +2338,7 @@ var schedule_2026_default = [
|
|
|
2165
2338
|
flag: "\u{1F3F3}\uFE0F"
|
|
2166
2339
|
},
|
|
2167
2340
|
status: "SCHEDULED",
|
|
2168
|
-
updatedAt: "2026-06-
|
|
2341
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2169
2342
|
},
|
|
2170
2343
|
{
|
|
2171
2344
|
id: "760496",
|
|
@@ -2185,7 +2358,7 @@ var schedule_2026_default = [
|
|
|
2185
2358
|
flag: "\u{1F3F3}\uFE0F"
|
|
2186
2359
|
},
|
|
2187
2360
|
status: "SCHEDULED",
|
|
2188
|
-
updatedAt: "2026-06-
|
|
2361
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2189
2362
|
},
|
|
2190
2363
|
{
|
|
2191
2364
|
id: "760498",
|
|
@@ -2205,7 +2378,7 @@ var schedule_2026_default = [
|
|
|
2205
2378
|
flag: "\u{1F3F3}\uFE0F"
|
|
2206
2379
|
},
|
|
2207
2380
|
status: "SCHEDULED",
|
|
2208
|
-
updatedAt: "2026-06-
|
|
2381
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2209
2382
|
},
|
|
2210
2383
|
{
|
|
2211
2384
|
id: "760499",
|
|
@@ -2225,7 +2398,7 @@ var schedule_2026_default = [
|
|
|
2225
2398
|
flag: "\u{1F3F3}\uFE0F"
|
|
2226
2399
|
},
|
|
2227
2400
|
status: "SCHEDULED",
|
|
2228
|
-
updatedAt: "2026-06-
|
|
2401
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2229
2402
|
},
|
|
2230
2403
|
{
|
|
2231
2404
|
id: "760500",
|
|
@@ -2235,8 +2408,8 @@ var schedule_2026_default = [
|
|
|
2235
2408
|
city: "Miami Gardens, Florida",
|
|
2236
2409
|
country: "USA",
|
|
2237
2410
|
home: {
|
|
2238
|
-
code: "
|
|
2239
|
-
name: "
|
|
2411
|
+
code: "TBD",
|
|
2412
|
+
name: "Argentina",
|
|
2240
2413
|
flag: "\u{1F3F3}\uFE0F"
|
|
2241
2414
|
},
|
|
2242
2415
|
away: {
|
|
@@ -2245,7 +2418,7 @@ var schedule_2026_default = [
|
|
|
2245
2418
|
flag: "\u{1F3F3}\uFE0F"
|
|
2246
2419
|
},
|
|
2247
2420
|
status: "SCHEDULED",
|
|
2248
|
-
updatedAt: "2026-06-
|
|
2421
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2249
2422
|
},
|
|
2250
2423
|
{
|
|
2251
2424
|
id: "760501",
|
|
@@ -2265,7 +2438,7 @@ var schedule_2026_default = [
|
|
|
2265
2438
|
flag: "\u{1F3F3}\uFE0F"
|
|
2266
2439
|
},
|
|
2267
2440
|
status: "SCHEDULED",
|
|
2268
|
-
updatedAt: "2026-06-
|
|
2441
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2269
2442
|
},
|
|
2270
2443
|
{
|
|
2271
2444
|
id: "760502",
|
|
@@ -2285,7 +2458,7 @@ var schedule_2026_default = [
|
|
|
2285
2458
|
flag: "\u{1F3F3}\uFE0F"
|
|
2286
2459
|
},
|
|
2287
2460
|
status: "SCHEDULED",
|
|
2288
|
-
updatedAt: "2026-06-
|
|
2461
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2289
2462
|
},
|
|
2290
2463
|
{
|
|
2291
2464
|
id: "760503",
|
|
@@ -2305,7 +2478,7 @@ var schedule_2026_default = [
|
|
|
2305
2478
|
flag: "\u{1F3F3}\uFE0F"
|
|
2306
2479
|
},
|
|
2307
2480
|
status: "SCHEDULED",
|
|
2308
|
-
updatedAt: "2026-06-
|
|
2481
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2309
2482
|
},
|
|
2310
2483
|
{
|
|
2311
2484
|
id: "760504",
|
|
@@ -2325,7 +2498,7 @@ var schedule_2026_default = [
|
|
|
2325
2498
|
flag: "\u{1F3F3}\uFE0F"
|
|
2326
2499
|
},
|
|
2327
2500
|
status: "SCHEDULED",
|
|
2328
|
-
updatedAt: "2026-06-
|
|
2501
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2329
2502
|
},
|
|
2330
2503
|
{
|
|
2331
2504
|
id: "760505",
|
|
@@ -2345,7 +2518,7 @@ var schedule_2026_default = [
|
|
|
2345
2518
|
flag: "\u{1F3F3}\uFE0F"
|
|
2346
2519
|
},
|
|
2347
2520
|
status: "SCHEDULED",
|
|
2348
|
-
updatedAt: "2026-06-
|
|
2521
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2349
2522
|
},
|
|
2350
2523
|
{
|
|
2351
2524
|
id: "760506",
|
|
@@ -2365,7 +2538,7 @@ var schedule_2026_default = [
|
|
|
2365
2538
|
flag: "\u{1F3F3}\uFE0F"
|
|
2366
2539
|
},
|
|
2367
2540
|
status: "SCHEDULED",
|
|
2368
|
-
updatedAt: "2026-06-
|
|
2541
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2369
2542
|
},
|
|
2370
2543
|
{
|
|
2371
2544
|
id: "760507",
|
|
@@ -2385,7 +2558,7 @@ var schedule_2026_default = [
|
|
|
2385
2558
|
flag: "\u{1F3F3}\uFE0F"
|
|
2386
2559
|
},
|
|
2387
2560
|
status: "SCHEDULED",
|
|
2388
|
-
updatedAt: "2026-06-
|
|
2561
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2389
2562
|
},
|
|
2390
2563
|
{
|
|
2391
2564
|
id: "760509",
|
|
@@ -2405,7 +2578,7 @@ var schedule_2026_default = [
|
|
|
2405
2578
|
flag: "\u{1F3F3}\uFE0F"
|
|
2406
2579
|
},
|
|
2407
2580
|
status: "SCHEDULED",
|
|
2408
|
-
updatedAt: "2026-06-
|
|
2581
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2409
2582
|
},
|
|
2410
2583
|
{
|
|
2411
2584
|
id: "760508",
|
|
@@ -2425,7 +2598,7 @@ var schedule_2026_default = [
|
|
|
2425
2598
|
flag: "\u{1F3F3}\uFE0F"
|
|
2426
2599
|
},
|
|
2427
2600
|
status: "SCHEDULED",
|
|
2428
|
-
updatedAt: "2026-06-
|
|
2601
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2429
2602
|
},
|
|
2430
2603
|
{
|
|
2431
2604
|
id: "760510",
|
|
@@ -2435,17 +2608,17 @@ var schedule_2026_default = [
|
|
|
2435
2608
|
city: "Foxborough, Massachusetts",
|
|
2436
2609
|
country: "USA",
|
|
2437
2610
|
home: {
|
|
2438
|
-
code: "
|
|
2611
|
+
code: "RD32",
|
|
2439
2612
|
name: "Round of 16 1 Winner",
|
|
2440
2613
|
flag: "\u{1F3F3}\uFE0F"
|
|
2441
2614
|
},
|
|
2442
2615
|
away: {
|
|
2443
|
-
code: "
|
|
2616
|
+
code: "RD32",
|
|
2444
2617
|
name: "Round of 16 2 Winner",
|
|
2445
2618
|
flag: "\u{1F3F3}\uFE0F"
|
|
2446
2619
|
},
|
|
2447
2620
|
status: "SCHEDULED",
|
|
2448
|
-
updatedAt: "2026-06-
|
|
2621
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2449
2622
|
},
|
|
2450
2623
|
{
|
|
2451
2624
|
id: "760511",
|
|
@@ -2455,17 +2628,17 @@ var schedule_2026_default = [
|
|
|
2455
2628
|
city: "Inglewood, California",
|
|
2456
2629
|
country: "USA",
|
|
2457
2630
|
home: {
|
|
2458
|
-
code: "
|
|
2631
|
+
code: "RD32",
|
|
2459
2632
|
name: "Round of 16 5 Winner",
|
|
2460
2633
|
flag: "\u{1F3F3}\uFE0F"
|
|
2461
2634
|
},
|
|
2462
2635
|
away: {
|
|
2463
|
-
code: "
|
|
2636
|
+
code: "RD32",
|
|
2464
2637
|
name: "Round of 16 6 Winner",
|
|
2465
2638
|
flag: "\u{1F3F3}\uFE0F"
|
|
2466
2639
|
},
|
|
2467
2640
|
status: "SCHEDULED",
|
|
2468
|
-
updatedAt: "2026-06-
|
|
2641
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2469
2642
|
},
|
|
2470
2643
|
{
|
|
2471
2644
|
id: "760512",
|
|
@@ -2475,17 +2648,17 @@ var schedule_2026_default = [
|
|
|
2475
2648
|
city: "Miami Gardens, Florida",
|
|
2476
2649
|
country: "USA",
|
|
2477
2650
|
home: {
|
|
2478
|
-
code: "
|
|
2651
|
+
code: "RD32",
|
|
2479
2652
|
name: "Round of 16 3 Winner",
|
|
2480
2653
|
flag: "\u{1F3F3}\uFE0F"
|
|
2481
2654
|
},
|
|
2482
2655
|
away: {
|
|
2483
|
-
code: "
|
|
2656
|
+
code: "RD32",
|
|
2484
2657
|
name: "Round of 16 4 Winner",
|
|
2485
2658
|
flag: "\u{1F3F3}\uFE0F"
|
|
2486
2659
|
},
|
|
2487
2660
|
status: "SCHEDULED",
|
|
2488
|
-
updatedAt: "2026-06-
|
|
2661
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2489
2662
|
},
|
|
2490
2663
|
{
|
|
2491
2664
|
id: "760513",
|
|
@@ -2495,17 +2668,17 @@ var schedule_2026_default = [
|
|
|
2495
2668
|
city: "Kansas City, Missouri",
|
|
2496
2669
|
country: "USA",
|
|
2497
2670
|
home: {
|
|
2498
|
-
code: "
|
|
2671
|
+
code: "RD32",
|
|
2499
2672
|
name: "Round of 16 7 Winner",
|
|
2500
2673
|
flag: "\u{1F3F3}\uFE0F"
|
|
2501
2674
|
},
|
|
2502
2675
|
away: {
|
|
2503
|
-
code: "
|
|
2676
|
+
code: "RD32",
|
|
2504
2677
|
name: "Round of 16 8 Winner",
|
|
2505
2678
|
flag: "\u{1F3F3}\uFE0F"
|
|
2506
2679
|
},
|
|
2507
2680
|
status: "SCHEDULED",
|
|
2508
|
-
updatedAt: "2026-06-
|
|
2681
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2509
2682
|
},
|
|
2510
2683
|
{
|
|
2511
2684
|
id: "760514",
|
|
@@ -2515,17 +2688,17 @@ var schedule_2026_default = [
|
|
|
2515
2688
|
city: "Arlington, Texas",
|
|
2516
2689
|
country: "USA",
|
|
2517
2690
|
home: {
|
|
2518
|
-
code: "
|
|
2691
|
+
code: "RD32",
|
|
2519
2692
|
name: "Quarterfinal 1 Winner",
|
|
2520
2693
|
flag: "\u{1F3F3}\uFE0F"
|
|
2521
2694
|
},
|
|
2522
2695
|
away: {
|
|
2523
|
-
code: "
|
|
2696
|
+
code: "RD32",
|
|
2524
2697
|
name: "Quarterfinal 2 Winner",
|
|
2525
2698
|
flag: "\u{1F3F3}\uFE0F"
|
|
2526
2699
|
},
|
|
2527
2700
|
status: "SCHEDULED",
|
|
2528
|
-
updatedAt: "2026-06-
|
|
2701
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2529
2702
|
},
|
|
2530
2703
|
{
|
|
2531
2704
|
id: "760515",
|
|
@@ -2535,17 +2708,17 @@ var schedule_2026_default = [
|
|
|
2535
2708
|
city: "Atlanta, Georgia",
|
|
2536
2709
|
country: "USA",
|
|
2537
2710
|
home: {
|
|
2538
|
-
code: "
|
|
2711
|
+
code: "RD32",
|
|
2539
2712
|
name: "Quarterfinal 3 Winner",
|
|
2540
2713
|
flag: "\u{1F3F3}\uFE0F"
|
|
2541
2714
|
},
|
|
2542
2715
|
away: {
|
|
2543
|
-
code: "
|
|
2716
|
+
code: "RD32",
|
|
2544
2717
|
name: "Quarterfinal 4 Winner",
|
|
2545
2718
|
flag: "\u{1F3F3}\uFE0F"
|
|
2546
2719
|
},
|
|
2547
2720
|
status: "SCHEDULED",
|
|
2548
|
-
updatedAt: "2026-06-
|
|
2721
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2549
2722
|
},
|
|
2550
2723
|
{
|
|
2551
2724
|
id: "760516",
|
|
@@ -2555,17 +2728,17 @@ var schedule_2026_default = [
|
|
|
2555
2728
|
city: "Miami Gardens, Florida",
|
|
2556
2729
|
country: "USA",
|
|
2557
2730
|
home: {
|
|
2558
|
-
code: "
|
|
2731
|
+
code: "RD32",
|
|
2559
2732
|
name: "Semifinal 1 Loser",
|
|
2560
2733
|
flag: "\u{1F3F3}\uFE0F"
|
|
2561
2734
|
},
|
|
2562
2735
|
away: {
|
|
2563
|
-
code: "
|
|
2736
|
+
code: "RD32",
|
|
2564
2737
|
name: "Semifinal 2 Loser",
|
|
2565
2738
|
flag: "\u{1F3F3}\uFE0F"
|
|
2566
2739
|
},
|
|
2567
2740
|
status: "SCHEDULED",
|
|
2568
|
-
updatedAt: "2026-06-
|
|
2741
|
+
updatedAt: "2026-06-24T01:20:06.749Z"
|
|
2569
2742
|
},
|
|
2570
2743
|
{
|
|
2571
2744
|
id: "760517",
|
|
@@ -2575,17 +2748,17 @@ var schedule_2026_default = [
|
|
|
2575
2748
|
city: "East Rutherford, New Jersey",
|
|
2576
2749
|
country: "USA",
|
|
2577
2750
|
home: {
|
|
2578
|
-
code: "
|
|
2751
|
+
code: "RD32",
|
|
2579
2752
|
name: "Semifinal 1 Winner",
|
|
2580
2753
|
flag: "\u{1F3F3}\uFE0F"
|
|
2581
2754
|
},
|
|
2582
2755
|
away: {
|
|
2583
|
-
code: "
|
|
2756
|
+
code: "RD32",
|
|
2584
2757
|
name: "Semifinal 2 Winner",
|
|
2585
2758
|
flag: "\u{1F3F3}\uFE0F"
|
|
2586
2759
|
},
|
|
2587
2760
|
status: "SCHEDULED",
|
|
2588
|
-
updatedAt: "2026-06-
|
|
2761
|
+
updatedAt: "2026-06-24T01:20:06.749Z"
|
|
2589
2762
|
}
|
|
2590
2763
|
];
|
|
2591
2764
|
var SCHEDULE = schedule_2026_default;
|
|
@@ -2635,46 +2808,13 @@ function blankRow(team) {
|
|
|
2635
2808
|
points: 0
|
|
2636
2809
|
};
|
|
2637
2810
|
}
|
|
2638
|
-
function
|
|
2639
|
-
const
|
|
2640
|
-
const ensure = (t) => {
|
|
2641
|
-
let r = rows.get(t.code);
|
|
2642
|
-
if (!r) {
|
|
2643
|
-
r = blankRow(t);
|
|
2644
|
-
rows.set(t.code, r);
|
|
2645
|
-
}
|
|
2646
|
-
return r;
|
|
2647
|
-
};
|
|
2811
|
+
function rosterAtZero(matches) {
|
|
2812
|
+
const teams = /* @__PURE__ */ new Map();
|
|
2648
2813
|
for (const m of matches) {
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
if (!isFinished(m.status) || !m.score) continue;
|
|
2652
|
-
const { home: hg, away: ag } = m.score;
|
|
2653
|
-
home.played++;
|
|
2654
|
-
away.played++;
|
|
2655
|
-
home.goalsFor += hg;
|
|
2656
|
-
home.goalsAgainst += ag;
|
|
2657
|
-
away.goalsFor += ag;
|
|
2658
|
-
away.goalsAgainst += hg;
|
|
2659
|
-
if (hg > ag) {
|
|
2660
|
-
home.won++;
|
|
2661
|
-
away.lost++;
|
|
2662
|
-
home.points += 3;
|
|
2663
|
-
} else if (hg < ag) {
|
|
2664
|
-
away.won++;
|
|
2665
|
-
home.lost++;
|
|
2666
|
-
away.points += 3;
|
|
2667
|
-
} else {
|
|
2668
|
-
home.drawn++;
|
|
2669
|
-
away.drawn++;
|
|
2670
|
-
home.points++;
|
|
2671
|
-
away.points++;
|
|
2672
|
-
}
|
|
2814
|
+
teams.set(m.home.code, m.home);
|
|
2815
|
+
teams.set(m.away.code, m.away);
|
|
2673
2816
|
}
|
|
2674
|
-
|
|
2675
|
-
return [...rows.values()].sort(
|
|
2676
|
-
(a, b) => b.points - a.points || b.goalDiff - a.goalDiff || b.goalsFor - a.goalsFor || a.team.name.localeCompare(b.team.name)
|
|
2677
|
-
);
|
|
2817
|
+
return [...teams.values()].sort((a, b) => a.name.localeCompare(b.name)).map(blankRow);
|
|
2678
2818
|
}
|
|
2679
2819
|
var ESPN_SOCCER = "https://site.api.espn.com/apis/site/v2/sports/soccer";
|
|
2680
2820
|
var DEFAULT_COMPETITION = "fifa.world";
|
|
@@ -2722,10 +2862,10 @@ function toInt(s) {
|
|
|
2722
2862
|
const n = parseInt(s, 10);
|
|
2723
2863
|
return Number.isFinite(n) ? n : void 0;
|
|
2724
2864
|
}
|
|
2725
|
-
function toTeam(
|
|
2726
|
-
const name =
|
|
2727
|
-
const code = (
|
|
2728
|
-
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) };
|
|
2729
2869
|
}
|
|
2730
2870
|
function mapEspnEvent(ev, ctx = {}) {
|
|
2731
2871
|
const comp = ev.competitions?.[0];
|
|
@@ -2743,6 +2883,11 @@ function mapEspnEvent(ev, ctx = {}) {
|
|
|
2743
2883
|
const hs = toInt(homeC?.score);
|
|
2744
2884
|
const as = toInt(awayC?.score);
|
|
2745
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
|
+
}
|
|
2746
2891
|
return {
|
|
2747
2892
|
id: ev.id,
|
|
2748
2893
|
stage,
|
|
@@ -2756,6 +2901,7 @@ function mapEspnEvent(ev, ctx = {}) {
|
|
|
2756
2901
|
score: hasScore ? { home: hs, away: as } : void 0,
|
|
2757
2902
|
minute: parseMinute(ev.status ?? comp?.status),
|
|
2758
2903
|
status,
|
|
2904
|
+
winnerCode,
|
|
2759
2905
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2760
2906
|
};
|
|
2761
2907
|
}
|
|
@@ -2847,7 +2993,7 @@ var EspnAdapter = class {
|
|
|
2847
2993
|
const map = {};
|
|
2848
2994
|
try {
|
|
2849
2995
|
const tables = parseStandings(await this.get(this.standingsUrl()));
|
|
2850
|
-
for (const
|
|
2996
|
+
for (const t2 of tables) for (const r of t2.rows) map[r.team.code] = t2.group;
|
|
2851
2997
|
} catch {
|
|
2852
2998
|
}
|
|
2853
2999
|
this.groupMap = map;
|
|
@@ -2883,6 +3029,688 @@ var EspnAdapter = class {
|
|
|
2883
3029
|
}
|
|
2884
3030
|
}
|
|
2885
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
|
+
}
|
|
2886
3714
|
function resolveCompetition(explicit) {
|
|
2887
3715
|
if (explicit) return explicit;
|
|
2888
3716
|
if (typeof process !== "undefined" && process.env?.CLAUDINHO_COMPETITION) {
|
|
@@ -2923,7 +3751,7 @@ async function getStandings(adapter, group) {
|
|
|
2923
3751
|
if (adapter.fetchStandings) {
|
|
2924
3752
|
try {
|
|
2925
3753
|
const all = await adapter.fetchStandings();
|
|
2926
|
-
const tables2 = (want ? all.filter((
|
|
3754
|
+
const tables2 = (want ? all.filter((t2) => t2.group === want) : all).sort(
|
|
2927
3755
|
(a, b) => a.group.localeCompare(b.group)
|
|
2928
3756
|
);
|
|
2929
3757
|
return { tables: tables2, degraded: false, source: adapter.name };
|
|
@@ -2931,9 +3759,45 @@ async function getStandings(adapter, group) {
|
|
|
2931
3759
|
}
|
|
2932
3760
|
}
|
|
2933
3761
|
const letters = want ? [want] : groups();
|
|
2934
|
-
const tables = letters.map((g) => ({ group: g, rows:
|
|
3762
|
+
const tables = letters.map((g) => ({ group: g, rows: rosterAtZero(fixturesByGroup(g)) })).filter((t2) => t2.rows.length > 0);
|
|
2935
3763
|
return { tables, degraded: true };
|
|
2936
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
|
+
}
|
|
2937
3801
|
function shiftUtcDate(dateISO, days) {
|
|
2938
3802
|
const [y, m, d] = dateISO.slice(0, 10).split("-").map(Number);
|
|
2939
3803
|
return new Date(Date.UTC(y ?? 1970, (m ?? 1) - 1, (d ?? 1) + days)).toISOString().slice(0, 10);
|
|
@@ -3087,9 +3951,9 @@ function outcomeLabel(o, match) {
|
|
|
3087
3951
|
return o.label;
|
|
3088
3952
|
}
|
|
3089
3953
|
function utcHhmm(iso) {
|
|
3090
|
-
const
|
|
3091
|
-
if (!Number.isFinite(
|
|
3092
|
-
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`;
|
|
3093
3957
|
}
|
|
3094
3958
|
function marketFavoriteText(signal, match) {
|
|
3095
3959
|
const fav = signal.favorite;
|
|
@@ -3445,6 +4309,7 @@ function socialCard(m, input) {
|
|
|
3445
4309
|
}
|
|
3446
4310
|
const loc = matchLocation(m);
|
|
3447
4311
|
if (loc) lines.push(loc);
|
|
4312
|
+
if (m.stage !== "GROUP") lines.push(stageLabel(m));
|
|
3448
4313
|
return lines;
|
|
3449
4314
|
}
|
|
3450
4315
|
function formatShareSnippet(input, options = {}) {
|
|
@@ -3519,6 +4384,107 @@ function formatShareTable(input, options = {}) {
|
|
|
3519
4384
|
);
|
|
3520
4385
|
return blocks.join("\n\n");
|
|
3521
4386
|
}
|
|
4387
|
+
function formatParticipant(p, flags, locale) {
|
|
4388
|
+
const suffix = p.status === "projected" ? ` ${t(locale, "bracket.projected")}` : "";
|
|
4389
|
+
if (flags && p.flag !== "\u{1F3F3}\uFE0F") return `${p.flag} ${p.label}${suffix}`;
|
|
4390
|
+
if (p.code) return `${p.code}${suffix}`;
|
|
4391
|
+
return `${p.label}${suffix}`;
|
|
4392
|
+
}
|
|
4393
|
+
function statusTail2(m) {
|
|
4394
|
+
if (m.status === "LIVE" && m.minute) return ` ${m.minute}'`;
|
|
4395
|
+
if (m.status === "HT") return " HT";
|
|
4396
|
+
if (m.status === "FT") return " FT";
|
|
4397
|
+
if (isLive(m.status)) return " LIVE";
|
|
4398
|
+
return "";
|
|
4399
|
+
}
|
|
4400
|
+
function formatBracketMatchLine(mv, opts = {}) {
|
|
4401
|
+
const flags = opts.flags !== false;
|
|
4402
|
+
const home = formatParticipant(mv.home, flags, opts.locale);
|
|
4403
|
+
const away = formatParticipant(mv.away, flags, opts.locale);
|
|
4404
|
+
const m = mv.match;
|
|
4405
|
+
if (isFinished(m.status) || isLive(m.status)) {
|
|
4406
|
+
return ` ${home} ${scoreline(m)} ${away}${statusTail2(m)}`;
|
|
4407
|
+
}
|
|
4408
|
+
const kickoff = mv.kickoff ? formatKickoff(mv.kickoff, { tz: opts.tz, locale: opts.locale }) : "";
|
|
4409
|
+
return ` ${home} vs ${away}${kickoff ? ` \xB7 ${kickoff}` : ""}`;
|
|
4410
|
+
}
|
|
4411
|
+
function formatBracketList(view, opts = {}) {
|
|
4412
|
+
const blocks = [];
|
|
4413
|
+
for (const stage of view.stages) {
|
|
4414
|
+
blocks.push(stage.label);
|
|
4415
|
+
for (const mv of stage.matches) {
|
|
4416
|
+
blocks.push(formatBracketMatchLine(mv, opts));
|
|
4417
|
+
}
|
|
4418
|
+
blocks.push("");
|
|
4419
|
+
}
|
|
4420
|
+
if (opts.footer !== false) {
|
|
4421
|
+
if (view.degraded) {
|
|
4422
|
+
blocks.push(`(${t(opts.locale, "bracket.degraded")})`);
|
|
4423
|
+
} else if (view.standingsDegraded) {
|
|
4424
|
+
blocks.push(`(${t(opts.locale, "bracket.standingsDegraded")})`);
|
|
4425
|
+
}
|
|
4426
|
+
if (view.source) {
|
|
4427
|
+
blocks.push(t(opts.locale, "live.data", { source: liveSourceLabel(view.source) }));
|
|
4428
|
+
}
|
|
4429
|
+
}
|
|
4430
|
+
return blocks.join("\n").trimEnd();
|
|
4431
|
+
}
|
|
4432
|
+
var MIN_TREE_WIDTH = 80;
|
|
4433
|
+
function formatBracketTree(view, opts = {}) {
|
|
4434
|
+
const width = opts.width ?? 80;
|
|
4435
|
+
if (width < MIN_TREE_WIDTH) return null;
|
|
4436
|
+
const blocks = [];
|
|
4437
|
+
for (let i = 0; i < view.stages.length; i++) {
|
|
4438
|
+
const stage = view.stages[i];
|
|
4439
|
+
blocks.push(`\u2501\u2501\u2501 ${stage.label} \u2501\u2501\u2501`);
|
|
4440
|
+
for (const mv of stage.matches) {
|
|
4441
|
+
blocks.push(formatBracketMatchLine(mv, opts));
|
|
4442
|
+
}
|
|
4443
|
+
if (i < view.stages.length - 1) {
|
|
4444
|
+
blocks.push(" \u2502");
|
|
4445
|
+
blocks.push(" \u25BC");
|
|
4446
|
+
}
|
|
4447
|
+
blocks.push("");
|
|
4448
|
+
}
|
|
4449
|
+
if (opts.footer !== false) {
|
|
4450
|
+
if (view.degraded) {
|
|
4451
|
+
blocks.push(`(${t(opts.locale, "bracket.degraded")})`);
|
|
4452
|
+
} else if (view.standingsDegraded) {
|
|
4453
|
+
blocks.push(`(${t(opts.locale, "bracket.standingsDegraded")})`);
|
|
4454
|
+
}
|
|
4455
|
+
if (view.source) {
|
|
4456
|
+
blocks.push(t(opts.locale, "live.data", { source: liveSourceLabel(view.source) }));
|
|
4457
|
+
}
|
|
4458
|
+
}
|
|
4459
|
+
return blocks.join("\n").trimEnd();
|
|
4460
|
+
}
|
|
4461
|
+
function formatShareBracket(input, options = {}) {
|
|
4462
|
+
const includeHashtag = options.includeHashtag !== false;
|
|
4463
|
+
const includeInstall = options.includeInstallLine !== false;
|
|
4464
|
+
const locale = options.locale;
|
|
4465
|
+
const blocks = [t(locale, "bracket.shareTitle"), ""];
|
|
4466
|
+
if (input.view.stages.length === 0) {
|
|
4467
|
+
blocks.push(input.emptyNote ?? t(locale, "bracket.empty"));
|
|
4468
|
+
} else {
|
|
4469
|
+
blocks.push(formatBracketList(input.view, { footer: false, locale }));
|
|
4470
|
+
if (input.view.degraded) {
|
|
4471
|
+
blocks.push(`(${t(locale, "bracket.degraded")})`);
|
|
4472
|
+
} else if (input.view.standingsDegraded) {
|
|
4473
|
+
blocks.push(`(${t(locale, "bracket.standingsDegraded")})`);
|
|
4474
|
+
}
|
|
4475
|
+
}
|
|
4476
|
+
const footer = [];
|
|
4477
|
+
const src = input.source ?? input.view.source;
|
|
4478
|
+
if (src) footer.push(t(locale, "live.data", { source: liveSourceLabel(src) }));
|
|
4479
|
+
footer.push(
|
|
4480
|
+
[includeHashtag ? SHARE_HASHTAG : "", SHARE_DISCLAIMER].filter(Boolean).join(" \xB7 ")
|
|
4481
|
+
);
|
|
4482
|
+
if (includeInstall && input.installLine) {
|
|
4483
|
+
footer.push(t(locale, "share.tryIt", { line: input.installLine }));
|
|
4484
|
+
}
|
|
4485
|
+
blocks.push("", footer.join("\n"));
|
|
4486
|
+
return blocks.join("\n");
|
|
4487
|
+
}
|
|
3522
4488
|
|
|
3523
4489
|
// src/config.ts
|
|
3524
4490
|
var SUPPORTED_LANGS = ["en", "es", "pt", "fr"];
|
|
@@ -3564,7 +4530,7 @@ function resolveConfig(opts) {
|
|
|
3564
4530
|
}
|
|
3565
4531
|
|
|
3566
4532
|
// src/i18n.ts
|
|
3567
|
-
var
|
|
4533
|
+
var EN2 = {
|
|
3568
4534
|
"today.title": "Today's matches",
|
|
3569
4535
|
"today.on": "Matches",
|
|
3570
4536
|
"today.none": "No matches scheduled for this date.",
|
|
@@ -3598,7 +4564,7 @@ var EN = {
|
|
|
3598
4564
|
"warn.lang": "Unsupported language {lang}; using English. (supported: en, es, pt, fr)",
|
|
3599
4565
|
disclaimer: "Not affiliated with FIFA or Anthropic."
|
|
3600
4566
|
};
|
|
3601
|
-
var
|
|
4567
|
+
var ES2 = {
|
|
3602
4568
|
"today.title": "Partidos de hoy",
|
|
3603
4569
|
"today.on": "Partidos",
|
|
3604
4570
|
"today.none": "No hay partidos para esta fecha.",
|
|
@@ -3632,7 +4598,7 @@ var ES = {
|
|
|
3632
4598
|
"warn.lang": "Idioma no soportado {lang}; usando ingl\xE9s. (disponibles: en, es, pt, fr)",
|
|
3633
4599
|
disclaimer: "No afiliado a FIFA ni Anthropic."
|
|
3634
4600
|
};
|
|
3635
|
-
var
|
|
4601
|
+
var PT2 = {
|
|
3636
4602
|
"today.title": "Jogos de hoje",
|
|
3637
4603
|
"today.on": "Jogos",
|
|
3638
4604
|
"today.none": "Nenhum jogo para esta data.",
|
|
@@ -3666,7 +4632,7 @@ var PT = {
|
|
|
3666
4632
|
"warn.lang": "Idioma n\xE3o suportado {lang}; usando ingl\xEAs. (dispon\xEDveis: en, es, pt, fr)",
|
|
3667
4633
|
disclaimer: "N\xE3o afiliado \xE0 FIFA nem \xE0 Anthropic."
|
|
3668
4634
|
};
|
|
3669
|
-
var
|
|
4635
|
+
var FR2 = {
|
|
3670
4636
|
"today.title": "Matchs d'aujourd'hui",
|
|
3671
4637
|
"today.on": "Matchs",
|
|
3672
4638
|
"today.none": "Aucun match pr\xE9vu pour cette date.",
|
|
@@ -3700,11 +4666,11 @@ var FR = {
|
|
|
3700
4666
|
"warn.lang": "Langue non prise en charge {lang} ; utilisation de l\u2019anglais. (disponibles : en, es, pt, fr)",
|
|
3701
4667
|
disclaimer: "Non affili\xE9 \xE0 la FIFA ni \xE0 Anthropic."
|
|
3702
4668
|
};
|
|
3703
|
-
var
|
|
4669
|
+
var CATALOGS2 = { en: EN2, es: ES2, pt: PT2, fr: FR2 };
|
|
3704
4670
|
function makeT(lang) {
|
|
3705
|
-
const dict =
|
|
4671
|
+
const dict = CATALOGS2[lang] ?? EN2;
|
|
3706
4672
|
return (key, vars) => {
|
|
3707
|
-
let s = dict[key] ??
|
|
4673
|
+
let s = dict[key] ?? EN2[key] ?? key;
|
|
3708
4674
|
if (vars) for (const [k, v] of Object.entries(vars)) s = s.replace(`{${k}}`, v);
|
|
3709
4675
|
return s;
|
|
3710
4676
|
};
|
|
@@ -3738,28 +4704,31 @@ function paint(enabled) {
|
|
|
3738
4704
|
gray: pc.gray
|
|
3739
4705
|
};
|
|
3740
4706
|
}
|
|
4707
|
+
function tableTeamCell(team, flags) {
|
|
4708
|
+
return flags ? `${team.flag} ${team.name}` : team.name;
|
|
4709
|
+
}
|
|
3741
4710
|
function painterFor(cfg) {
|
|
3742
4711
|
return paint(cfg.color);
|
|
3743
4712
|
}
|
|
3744
|
-
function statusToken(m,
|
|
4713
|
+
function statusToken(m, t2, c) {
|
|
3745
4714
|
switch (m.status) {
|
|
3746
4715
|
case "LIVE":
|
|
3747
|
-
return c.green(`${m.minute ? `${m.minute}'` :
|
|
4716
|
+
return c.green(`${m.minute ? `${m.minute}'` : t2("status.live")}`);
|
|
3748
4717
|
case "HT":
|
|
3749
|
-
return c.yellow(
|
|
4718
|
+
return c.yellow(t2("status.ht"));
|
|
3750
4719
|
case "FT":
|
|
3751
|
-
return c.gray(
|
|
4720
|
+
return c.gray(t2("status.ft"));
|
|
3752
4721
|
case "POSTPONED":
|
|
3753
|
-
return c.red(
|
|
4722
|
+
return c.red(t2("status.postponed"));
|
|
3754
4723
|
case "CANCELLED":
|
|
3755
|
-
return c.red(
|
|
4724
|
+
return c.red(t2("status.cancelled"));
|
|
3756
4725
|
default:
|
|
3757
4726
|
return "";
|
|
3758
4727
|
}
|
|
3759
4728
|
}
|
|
3760
|
-
function matchLine(m, cfg,
|
|
3761
|
-
const home = `${m.home.flag} ${m.home.name}
|
|
3762
|
-
const away = `${m.away.name} ${m.away.flag}
|
|
4729
|
+
function matchLine(m, cfg, t2, c, flags = true) {
|
|
4730
|
+
const home = flags ? `${m.home.flag} ${m.home.name}` : m.home.name;
|
|
4731
|
+
const away = flags ? `${m.away.name} ${m.away.flag}` : m.away.name;
|
|
3763
4732
|
const mid2 = isLive(m.status) || m.status === "FT" ? c.bold(scoreline(m)) : c.dim("vs");
|
|
3764
4733
|
const left = `${home.padEnd(22)} ${mid2.padStart(3)} ${away}`;
|
|
3765
4734
|
let right = "";
|
|
@@ -3768,7 +4737,7 @@ function matchLine(m, cfg, t, c) {
|
|
|
3768
4737
|
`${formatKickoff(m.kickoff, { tz: cfg.tz, locale: cfg.lang })}`
|
|
3769
4738
|
);
|
|
3770
4739
|
} else {
|
|
3771
|
-
right = statusToken(m,
|
|
4740
|
+
right = statusToken(m, t2, c);
|
|
3772
4741
|
}
|
|
3773
4742
|
const flair = matchFlavor(m, { level: cfg.flavor, locale: cfg.lang });
|
|
3774
4743
|
const tail = flair ? ` ${c.dim(flair)}` : "";
|
|
@@ -3777,8 +4746,8 @@ function matchLine(m, cfg, t, c) {
|
|
|
3777
4746
|
function header(text, c) {
|
|
3778
4747
|
return c.bold(c.cyan(text));
|
|
3779
4748
|
}
|
|
3780
|
-
function disclaimer(
|
|
3781
|
-
return c.dim(
|
|
4749
|
+
function disclaimer(t2, c) {
|
|
4750
|
+
return c.dim(t2("disclaimer"));
|
|
3782
4751
|
}
|
|
3783
4752
|
function dataSource(source, c) {
|
|
3784
4753
|
return source ? c.dim(`Live data: ${liveSourceLabel(source)}`) : "";
|
|
@@ -3812,10 +4781,10 @@ function readMarketCache(source, competition, now = Date.now()) {
|
|
|
3812
4781
|
return { signals, checked };
|
|
3813
4782
|
}
|
|
3814
4783
|
for (const [id, entry] of Object.entries(file.entries ?? {})) {
|
|
3815
|
-
const
|
|
3816
|
-
if (!Number.isFinite(
|
|
4784
|
+
const t2 = Date.parse(entry.fetchedAt);
|
|
4785
|
+
if (!Number.isFinite(t2)) continue;
|
|
3817
4786
|
const ttl = entry.signal ? POSITIVE_TTL_MS : NEGATIVE_TTL_MS;
|
|
3818
|
-
if (now -
|
|
4787
|
+
if (now - t2 > ttl) continue;
|
|
3819
4788
|
checked.add(id);
|
|
3820
4789
|
if (entry.signal) signals.set(id, entry.signal);
|
|
3821
4790
|
}
|
|
@@ -3916,8 +4885,8 @@ function writeFileSync_(path, data) {
|
|
|
3916
4885
|
}
|
|
3917
4886
|
function ageMs(state, now = Date.now()) {
|
|
3918
4887
|
if (!state) return Infinity;
|
|
3919
|
-
const
|
|
3920
|
-
return Number.isFinite(
|
|
4888
|
+
const t2 = Date.parse(state.updatedAt);
|
|
4889
|
+
return Number.isFinite(t2) ? now - t2 : Infinity;
|
|
3921
4890
|
}
|
|
3922
4891
|
function lockAgeMs(now = Date.now()) {
|
|
3923
4892
|
const lp = lockPath();
|
|
@@ -3993,8 +4962,8 @@ function inLiveWindow(now = Date.now(), fixtures = allFixtures()) {
|
|
|
3993
4962
|
function nextOverall(now, fixtures = allFixtures()) {
|
|
3994
4963
|
return [...fixtures].sort(byKickoff).find((m) => Date.parse(m.kickoff) >= now);
|
|
3995
4964
|
}
|
|
3996
|
-
function teamTok(
|
|
3997
|
-
return flags ?
|
|
4965
|
+
function teamTok(t2, flags) {
|
|
4966
|
+
return flags ? t2.flag : t2.code;
|
|
3998
4967
|
}
|
|
3999
4968
|
function matchSegment(m, compact, flags) {
|
|
4000
4969
|
const minute = m.status === "HT" ? "HT" : m.minute ? `${m.minute}'` : "LIVE";
|
|
@@ -4369,12 +5338,12 @@ function emitJson(data) {
|
|
|
4369
5338
|
}
|
|
4370
5339
|
var InputError = class extends Error {
|
|
4371
5340
|
};
|
|
4372
|
-
function precheck(cfg,
|
|
5341
|
+
function precheck(cfg, t2, date) {
|
|
4373
5342
|
if (cfg.langRequestedUnsupported) {
|
|
4374
|
-
process.stderr.write(
|
|
5343
|
+
process.stderr.write(t2("warn.lang", { lang: cfg.langRequestedUnsupported }) + "\n");
|
|
4375
5344
|
}
|
|
4376
5345
|
if (cfg.tz && !isValidTimeZone(cfg.tz)) {
|
|
4377
|
-
process.stderr.write(
|
|
5346
|
+
process.stderr.write(t2("warn.tz", { tz: cfg.tz }) + "\n");
|
|
4378
5347
|
}
|
|
4379
5348
|
const competition = resolveCompetition();
|
|
4380
5349
|
if (competition !== DEFAULT_COMPETITION) {
|
|
@@ -4384,7 +5353,7 @@ function precheck(cfg, t, date) {
|
|
|
4384
5353
|
);
|
|
4385
5354
|
}
|
|
4386
5355
|
if (date !== void 0 && !isValidDate(date)) {
|
|
4387
|
-
throw new InputError(
|
|
5356
|
+
throw new InputError(t2("err.date", { date }));
|
|
4388
5357
|
}
|
|
4389
5358
|
}
|
|
4390
5359
|
function resolveTeamArg(team, usage) {
|
|
@@ -4393,8 +5362,8 @@ function resolveTeamArg(team, usage) {
|
|
|
4393
5362
|
return code.toUpperCase();
|
|
4394
5363
|
}
|
|
4395
5364
|
async function cmdToday(date, ctx) {
|
|
4396
|
-
const { cfg, t } = ctx;
|
|
4397
|
-
precheck(cfg,
|
|
5365
|
+
const { cfg, t: t2 } = ctx;
|
|
5366
|
+
precheck(cfg, t2, date);
|
|
4398
5367
|
const adapter = adapterFor(ctx);
|
|
4399
5368
|
const targetDate = date ?? localDate((/* @__PURE__ */ new Date()).toISOString(), cfg.tz);
|
|
4400
5369
|
const { matches, degraded, source } = await getMatchesForDate(adapter, targetDate);
|
|
@@ -4411,28 +5380,29 @@ async function cmdToday(date, ctx) {
|
|
|
4411
5380
|
return;
|
|
4412
5381
|
}
|
|
4413
5382
|
const c = painterFor(cfg);
|
|
4414
|
-
const
|
|
5383
|
+
const flags = flagsEnabled();
|
|
5384
|
+
const title = date === void 0 ? t2("today.title") : t2("today.on");
|
|
4415
5385
|
out();
|
|
4416
5386
|
out(header(`${title} \xB7 ${targetDate}`, c));
|
|
4417
5387
|
out();
|
|
4418
5388
|
if (todays.length === 0) {
|
|
4419
|
-
out(c.dim(" " +
|
|
5389
|
+
out(c.dim(" " + t2("today.none")));
|
|
4420
5390
|
} else {
|
|
4421
5391
|
for (const m of todays) {
|
|
4422
|
-
out(matchLine(m, cfg,
|
|
5392
|
+
out(matchLine(m, cfg, t2, c, flags));
|
|
4423
5393
|
const s = signals.get(m.id);
|
|
4424
5394
|
if (s) out(" " + c.dim(marketLine(s, m)));
|
|
4425
5395
|
}
|
|
4426
5396
|
}
|
|
4427
5397
|
out();
|
|
4428
|
-
if (degraded) out(c.dim(" " +
|
|
5398
|
+
if (degraded) out(c.dim(" " + t2("feed.degraded")));
|
|
4429
5399
|
const src = dataSource(source, c);
|
|
4430
5400
|
if (src) out(src);
|
|
4431
|
-
out(disclaimer(
|
|
5401
|
+
out(disclaimer(t2, c));
|
|
4432
5402
|
}
|
|
4433
5403
|
async function cmdLive(ctx) {
|
|
4434
|
-
const { cfg, t } = ctx;
|
|
4435
|
-
precheck(cfg,
|
|
5404
|
+
const { cfg, t: t2 } = ctx;
|
|
5405
|
+
precheck(cfg, t2);
|
|
4436
5406
|
const adapter = adapterFor(ctx);
|
|
4437
5407
|
const { matches, degraded, source } = await getLiveMatches(adapter);
|
|
4438
5408
|
if (cfg.json) {
|
|
@@ -4440,23 +5410,24 @@ async function cmdLive(ctx) {
|
|
|
4440
5410
|
return;
|
|
4441
5411
|
}
|
|
4442
5412
|
const c = painterFor(cfg);
|
|
5413
|
+
const flags = flagsEnabled();
|
|
4443
5414
|
out();
|
|
4444
|
-
out(header(
|
|
5415
|
+
out(header(t2("live.title"), c));
|
|
4445
5416
|
out();
|
|
4446
5417
|
if (degraded) {
|
|
4447
|
-
out(c.dim(" " +
|
|
5418
|
+
out(c.dim(" " + t2("live.degraded")));
|
|
4448
5419
|
} else if (matches.length === 0) {
|
|
4449
|
-
out(c.dim(" " +
|
|
5420
|
+
out(c.dim(" " + t2("live.none")));
|
|
4450
5421
|
} else {
|
|
4451
|
-
for (const m of matches) out(matchLine(m, cfg,
|
|
5422
|
+
for (const m of matches) out(matchLine(m, cfg, t2, c, flags));
|
|
4452
5423
|
}
|
|
4453
5424
|
out();
|
|
4454
5425
|
const src = dataSource(source, c);
|
|
4455
5426
|
if (src) out(src);
|
|
4456
|
-
out(disclaimer(
|
|
5427
|
+
out(disclaimer(t2, c));
|
|
4457
5428
|
}
|
|
4458
|
-
async function cmdNext(team, { cfg, t, now }) {
|
|
4459
|
-
precheck(cfg,
|
|
5429
|
+
async function cmdNext(team, { cfg, t: t2, now }) {
|
|
5430
|
+
precheck(cfg, t2);
|
|
4460
5431
|
const code = resolveTeamArg(team, "Usage: claudinho next <team> (or set CLAUDINHO_TEAM)");
|
|
4461
5432
|
const fixture = nextFixtureForTeam(code, { from: now ?? /* @__PURE__ */ new Date() });
|
|
4462
5433
|
if (cfg.json) {
|
|
@@ -4464,27 +5435,29 @@ async function cmdNext(team, { cfg, t, now }) {
|
|
|
4464
5435
|
return;
|
|
4465
5436
|
}
|
|
4466
5437
|
const c = painterFor(cfg);
|
|
5438
|
+
const flags = flagsEnabled();
|
|
4467
5439
|
out();
|
|
4468
5440
|
if (!fixture) {
|
|
4469
|
-
out(c.dim(" " +
|
|
5441
|
+
out(c.dim(" " + t2("next.none", { team: code })));
|
|
4470
5442
|
out();
|
|
4471
|
-
out(disclaimer(
|
|
5443
|
+
out(disclaimer(t2, c));
|
|
4472
5444
|
return;
|
|
4473
5445
|
}
|
|
4474
|
-
out(header(
|
|
5446
|
+
out(header(t2("next.label", { team: code }), c));
|
|
4475
5447
|
out();
|
|
4476
|
-
out(matchLine(fixture, cfg,
|
|
5448
|
+
out(matchLine(fixture, cfg, t2, c, flags));
|
|
5449
|
+
const stage = fixture.stage !== "GROUP" ? `${stageLabel(fixture)} \xB7 ` : "";
|
|
4477
5450
|
out(
|
|
4478
5451
|
" " + c.dim(
|
|
4479
|
-
`${formatKickoff(fixture.kickoff, { tz: cfg.tz, locale: cfg.lang })} \xB7 ` +
|
|
5452
|
+
`${stage}${formatKickoff(fixture.kickoff, { tz: cfg.tz, locale: cfg.lang })} \xB7 ` + t2("next.in", { countdown: countdown(fixture.kickoff) })
|
|
4480
5453
|
)
|
|
4481
5454
|
);
|
|
4482
5455
|
out();
|
|
4483
|
-
out(disclaimer(
|
|
5456
|
+
out(disclaimer(t2, c));
|
|
4484
5457
|
}
|
|
4485
5458
|
async function cmdTable(group, ctx) {
|
|
4486
|
-
const { cfg, t } = ctx;
|
|
4487
|
-
precheck(cfg,
|
|
5459
|
+
const { cfg, t: t2 } = ctx;
|
|
5460
|
+
precheck(cfg, t2);
|
|
4488
5461
|
const { tables, degraded, source } = await getStandings(adapterFor(ctx), group);
|
|
4489
5462
|
if (cfg.json) {
|
|
4490
5463
|
const json = tables.map((tb) => ({ group: tb.group, standings: tb.rows }));
|
|
@@ -4496,37 +5469,38 @@ async function cmdTable(group, ctx) {
|
|
|
4496
5469
|
return;
|
|
4497
5470
|
}
|
|
4498
5471
|
const c = painterFor(cfg);
|
|
5472
|
+
const flags = flagsEnabled();
|
|
4499
5473
|
if (tables.length === 0) {
|
|
4500
5474
|
out();
|
|
4501
5475
|
out(
|
|
4502
5476
|
c.dim(
|
|
4503
|
-
" " + (group ?
|
|
5477
|
+
" " + (group ? t2("table.none", { group: group.toUpperCase() }) : t2("table.empty"))
|
|
4504
5478
|
)
|
|
4505
5479
|
);
|
|
4506
5480
|
out();
|
|
4507
|
-
if (degraded) out(c.dim(" " +
|
|
4508
|
-
out(disclaimer(
|
|
5481
|
+
if (degraded) out(c.dim(" " + t2("table.degraded")));
|
|
5482
|
+
out(disclaimer(t2, c));
|
|
4509
5483
|
return;
|
|
4510
5484
|
}
|
|
4511
5485
|
for (const { group: g, rows } of tables) {
|
|
4512
5486
|
out();
|
|
4513
|
-
out(header(
|
|
5487
|
+
out(header(t2("table.title", { group: g }), c));
|
|
4514
5488
|
const table = new Table({
|
|
4515
5489
|
head: [
|
|
4516
|
-
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
|
|
5490
|
+
t2("col.team"),
|
|
5491
|
+
t2("col.p"),
|
|
5492
|
+
t2("col.w"),
|
|
5493
|
+
t2("col.d"),
|
|
5494
|
+
t2("col.l"),
|
|
5495
|
+
t2("col.gd"),
|
|
5496
|
+
t2("col.pts")
|
|
4523
5497
|
],
|
|
4524
5498
|
colAligns: ["left", "right", "right", "right", "right", "right", "right"],
|
|
4525
5499
|
style: { head: cfg.color ? ["cyan"] : [], border: cfg.color ? ["gray"] : [] }
|
|
4526
5500
|
});
|
|
4527
5501
|
for (const r of rows) {
|
|
4528
5502
|
table.push([
|
|
4529
|
-
|
|
5503
|
+
tableTeamCell(r.team, flags),
|
|
4530
5504
|
r.played,
|
|
4531
5505
|
r.won,
|
|
4532
5506
|
r.drawn,
|
|
@@ -4538,10 +5512,61 @@ async function cmdTable(group, ctx) {
|
|
|
4538
5512
|
out(table.toString());
|
|
4539
5513
|
}
|
|
4540
5514
|
out();
|
|
4541
|
-
if (degraded) out(c.dim(" " +
|
|
5515
|
+
if (degraded) out(c.dim(" " + t2("table.degraded")));
|
|
5516
|
+
const src = dataSource(source, c);
|
|
5517
|
+
if (src) out(src);
|
|
5518
|
+
out(disclaimer(t2, c));
|
|
5519
|
+
}
|
|
5520
|
+
var BRACKET_STAGES = /* @__PURE__ */ new Set(["R32", "R16", "QF", "SF", "3P", "F"]);
|
|
5521
|
+
async function cmdBracket(stage, opts, ctx) {
|
|
5522
|
+
const { cfg, t: t2 } = ctx;
|
|
5523
|
+
precheck(cfg, t2);
|
|
5524
|
+
const filter = stage?.toUpperCase();
|
|
5525
|
+
if (filter && !BRACKET_STAGES.has(filter)) {
|
|
5526
|
+
throw new InputError(t(cfg.lang, "bracket.invalidStage"));
|
|
5527
|
+
}
|
|
5528
|
+
const { view, degraded, standingsDegraded, source } = await getBracket(
|
|
5529
|
+
adapterFor(ctx),
|
|
5530
|
+
filter ? { stage: filter, lang: cfg.lang } : { lang: cfg.lang }
|
|
5531
|
+
);
|
|
5532
|
+
if (cfg.json) {
|
|
5533
|
+
emitJson({
|
|
5534
|
+
degraded,
|
|
5535
|
+
standingsDegraded,
|
|
5536
|
+
source: source ?? null,
|
|
5537
|
+
view
|
|
5538
|
+
});
|
|
5539
|
+
return;
|
|
5540
|
+
}
|
|
5541
|
+
const c = painterFor(cfg);
|
|
5542
|
+
const flags = flagsEnabled();
|
|
5543
|
+
const formatOpts = { flags, tz: cfg.tz, locale: cfg.lang, footer: false };
|
|
5544
|
+
let body;
|
|
5545
|
+
if (opts.tree) {
|
|
5546
|
+
const tree = formatBracketTree(view, {
|
|
5547
|
+
...formatOpts,
|
|
5548
|
+
width: process.stdout.columns ?? 80
|
|
5549
|
+
});
|
|
5550
|
+
body = tree ?? formatBracketList(view, formatOpts);
|
|
5551
|
+
if (!tree) {
|
|
5552
|
+
out();
|
|
5553
|
+
out(c.dim(` ${t(cfg.lang, "bracket.treeFallback")}`));
|
|
5554
|
+
}
|
|
5555
|
+
} else {
|
|
5556
|
+
body = formatBracketList(view, formatOpts);
|
|
5557
|
+
}
|
|
5558
|
+
out();
|
|
5559
|
+
out(header(
|
|
5560
|
+
filter ? t(cfg.lang, "bracket.stageTitle", { stage: stageLabelI18n(cfg.lang, filter) }) : t(cfg.lang, "bracket.title"),
|
|
5561
|
+
c
|
|
5562
|
+
));
|
|
5563
|
+
out(body);
|
|
5564
|
+
out();
|
|
5565
|
+
if (degraded) out(c.dim(` ${t(cfg.lang, "bracket.degraded")}`));
|
|
5566
|
+
else if (standingsDegraded) out(c.dim(` ${t(cfg.lang, "bracket.standingsDegraded")}`));
|
|
4542
5567
|
const src = dataSource(source, c);
|
|
4543
5568
|
if (src) out(src);
|
|
4544
|
-
out(disclaimer(
|
|
5569
|
+
out(disclaimer(t2, c));
|
|
4545
5570
|
}
|
|
4546
5571
|
function cmdPrompt({ cfg }) {
|
|
4547
5572
|
try {
|
|
@@ -4636,8 +5661,8 @@ function cmdInitClaude(opts, { cfg }) {
|
|
|
4636
5661
|
out("\u2192 Restart Claude Code to see it.");
|
|
4637
5662
|
}
|
|
4638
5663
|
async function cmdMatch(id, ctx) {
|
|
4639
|
-
const { cfg, t } = ctx;
|
|
4640
|
-
precheck(cfg,
|
|
5664
|
+
const { cfg, t: t2 } = ctx;
|
|
5665
|
+
precheck(cfg, t2);
|
|
4641
5666
|
const { match, degraded, source: liveSource } = await getMatchById(adapterFor(ctx), id);
|
|
4642
5667
|
const marketSignal = match ? await reliableMarketSignalFor(ctx, match) : void 0;
|
|
4643
5668
|
if (cfg.json) {
|
|
@@ -4652,17 +5677,17 @@ async function cmdMatch(id, ctx) {
|
|
|
4652
5677
|
const c = painterFor(cfg);
|
|
4653
5678
|
out();
|
|
4654
5679
|
if (!match) {
|
|
4655
|
-
out(c.dim(" " +
|
|
5680
|
+
out(c.dim(" " + t2("match.none", { id })));
|
|
4656
5681
|
out();
|
|
4657
|
-
out(disclaimer(
|
|
5682
|
+
out(disclaimer(t2, c));
|
|
4658
5683
|
return;
|
|
4659
5684
|
}
|
|
4660
|
-
const
|
|
5685
|
+
const stageLabelText = stageLabel(match);
|
|
4661
5686
|
out(header(`${match.home.name} ${scoreline(match)} ${match.away.name}`, c));
|
|
4662
|
-
out(" " + c.dim(`${
|
|
5687
|
+
out(" " + c.dim(`${stageLabelText} \xB7 ${matchLocation(match)}`));
|
|
4663
5688
|
out(
|
|
4664
5689
|
" " + c.dim(
|
|
4665
|
-
`${formatKickoff(match.kickoff, { tz: cfg.tz, locale: cfg.lang })} ${statusToken(match,
|
|
5690
|
+
`${formatKickoff(match.kickoff, { tz: cfg.tz, locale: cfg.lang })} ${statusToken(match, t2, c)}`.trimEnd()
|
|
4666
5691
|
)
|
|
4667
5692
|
);
|
|
4668
5693
|
const flair = matchFlavor(match, { level: cfg.flavor, locale: cfg.lang });
|
|
@@ -4678,10 +5703,10 @@ async function cmdMatch(id, ctx) {
|
|
|
4678
5703
|
for (const mline of marketBlock(marketSignal, match)) out(" " + c.dim(mline));
|
|
4679
5704
|
}
|
|
4680
5705
|
out();
|
|
4681
|
-
if (degraded) out(c.dim(" " +
|
|
5706
|
+
if (degraded) out(c.dim(" " + t2("feed.degraded")));
|
|
4682
5707
|
const src = dataSource(liveSource, c);
|
|
4683
5708
|
if (src) out(src);
|
|
4684
|
-
out(disclaimer(
|
|
5709
|
+
out(disclaimer(t2, c));
|
|
4685
5710
|
}
|
|
4686
5711
|
var MARKET_INFO = "Prediction-market data is informational only.";
|
|
4687
5712
|
function marketDisplayable(sig) {
|
|
@@ -4699,9 +5724,9 @@ function printMarketBlock(m, sig, c) {
|
|
|
4699
5724
|
for (const line2 of marketBlock(sig, m)) out(" " + c.dim(line2));
|
|
4700
5725
|
}
|
|
4701
5726
|
async function cmdMarkets(target, team, ctx) {
|
|
4702
|
-
const { cfg, t } = ctx;
|
|
5727
|
+
const { cfg, t: t2 } = ctx;
|
|
4703
5728
|
if (target === "next") {
|
|
4704
|
-
precheck(cfg,
|
|
5729
|
+
precheck(cfg, t2);
|
|
4705
5730
|
const code = resolveTeamArg(team, "Usage: claudinho markets next <team> (or set CLAUDINHO_TEAM)");
|
|
4706
5731
|
const now2 = ctx.now ?? /* @__PURE__ */ new Date();
|
|
4707
5732
|
const { match: fixture } = await marketFixtureForTeam(adapterFor(ctx), code, now2);
|
|
@@ -4719,7 +5744,7 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4719
5744
|
const c2 = painterFor(cfg);
|
|
4720
5745
|
out();
|
|
4721
5746
|
if (!fixture) {
|
|
4722
|
-
out(c2.dim(" " +
|
|
5747
|
+
out(c2.dim(" " + t2("next.none", { team: code })));
|
|
4723
5748
|
} else {
|
|
4724
5749
|
out(header(marketHeaderLine(fixture, cfg), c2));
|
|
4725
5750
|
out();
|
|
@@ -4727,12 +5752,12 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4727
5752
|
else out(c2.dim(" " + noSignalLine(fixture, now2)));
|
|
4728
5753
|
}
|
|
4729
5754
|
out();
|
|
4730
|
-
out(disclaimer(
|
|
5755
|
+
out(disclaimer(t2, c2));
|
|
4731
5756
|
out(c2.dim(MARKET_INFO));
|
|
4732
5757
|
return;
|
|
4733
5758
|
}
|
|
4734
5759
|
if (target && target !== "today" && !isValidDate(target)) {
|
|
4735
|
-
precheck(cfg,
|
|
5760
|
+
precheck(cfg, t2);
|
|
4736
5761
|
const now2 = ctx.now ?? /* @__PURE__ */ new Date();
|
|
4737
5762
|
const { match } = await getMatchById(adapterFor(ctx), target);
|
|
4738
5763
|
const sig = match && marketRelevant(match, now2) ? (await marketSignalsFor(ctx, [match], MARKETS_CMD_OPTS)).get(match.id) : void 0;
|
|
@@ -4744,7 +5769,7 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4744
5769
|
const c2 = painterFor(cfg);
|
|
4745
5770
|
out();
|
|
4746
5771
|
if (!match) {
|
|
4747
|
-
out(c2.dim(" " +
|
|
5772
|
+
out(c2.dim(" " + t2("match.none", { id: target })));
|
|
4748
5773
|
} else {
|
|
4749
5774
|
out(header(marketHeaderLine(match, cfg), c2));
|
|
4750
5775
|
out();
|
|
@@ -4752,12 +5777,12 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4752
5777
|
else out(c2.dim(" " + noSignalLine(match, now2)));
|
|
4753
5778
|
}
|
|
4754
5779
|
out();
|
|
4755
|
-
out(disclaimer(
|
|
5780
|
+
out(disclaimer(t2, c2));
|
|
4756
5781
|
out(c2.dim(MARKET_INFO));
|
|
4757
5782
|
return;
|
|
4758
5783
|
}
|
|
4759
5784
|
const explicitDate = target && target !== "today" ? target : void 0;
|
|
4760
|
-
precheck(cfg,
|
|
5785
|
+
precheck(cfg, t2, explicitDate);
|
|
4761
5786
|
const now = ctx.now ?? /* @__PURE__ */ new Date();
|
|
4762
5787
|
const date = explicitDate ?? localDate(now.toISOString(), cfg.tz);
|
|
4763
5788
|
const { matches } = await getMatchesForDate(adapterFor(ctx), date);
|
|
@@ -4786,7 +5811,7 @@ async function cmdMarkets(target, team, ctx) {
|
|
|
4786
5811
|
out();
|
|
4787
5812
|
}
|
|
4788
5813
|
}
|
|
4789
|
-
out(disclaimer(
|
|
5814
|
+
out(disclaimer(t2, c));
|
|
4790
5815
|
out(c.dim(MARKET_INFO));
|
|
4791
5816
|
}
|
|
4792
5817
|
function pickShareStyle(v) {
|
|
@@ -4855,8 +5880,39 @@ function emitShareTable(ctx, e, copy) {
|
|
|
4855
5880
|
);
|
|
4856
5881
|
}
|
|
4857
5882
|
}
|
|
5883
|
+
function emitShareBracket(ctx, e, copy) {
|
|
5884
|
+
const snippet = formatShareBracket(
|
|
5885
|
+
{
|
|
5886
|
+
view: e.view,
|
|
5887
|
+
source: e.source,
|
|
5888
|
+
installLine: e.installLine,
|
|
5889
|
+
emptyNote: e.emptyNote
|
|
5890
|
+
},
|
|
5891
|
+
e.options
|
|
5892
|
+
);
|
|
5893
|
+
if (ctx.cfg.json) {
|
|
5894
|
+
emitJson({
|
|
5895
|
+
kind: "bracket",
|
|
5896
|
+
target: "bracket",
|
|
5897
|
+
...e.stage ? { stage: e.stage } : {},
|
|
5898
|
+
source: e.source ?? null,
|
|
5899
|
+
degraded: e.degraded,
|
|
5900
|
+
informationalOnly: true,
|
|
5901
|
+
snippet,
|
|
5902
|
+
view: e.view
|
|
5903
|
+
});
|
|
5904
|
+
} else {
|
|
5905
|
+
out(snippet);
|
|
5906
|
+
}
|
|
5907
|
+
if (copy) {
|
|
5908
|
+
const ok = (ctx.copy ?? copyToClipboard)(snippet);
|
|
5909
|
+
process.stderr.write(
|
|
5910
|
+
(ok ? "Copied share snippet to clipboard." : "Clipboard unavailable; printed snippet instead.") + "\n"
|
|
5911
|
+
);
|
|
5912
|
+
}
|
|
5913
|
+
}
|
|
4858
5914
|
async function cmdShare(target, team, opts, ctx) {
|
|
4859
|
-
const { cfg, t } = ctx;
|
|
5915
|
+
const { cfg, t: t2 } = ctx;
|
|
4860
5916
|
const baseOptions = {
|
|
4861
5917
|
style: pickShareStyle(opts.style),
|
|
4862
5918
|
includeMarkets: cfg.markets !== false,
|
|
@@ -4865,7 +5921,7 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4865
5921
|
};
|
|
4866
5922
|
const copy = opts.copy === true;
|
|
4867
5923
|
if (target === "live") {
|
|
4868
|
-
precheck(cfg,
|
|
5924
|
+
precheck(cfg, t2);
|
|
4869
5925
|
const { matches, degraded: degraded2, source: source2 } = await getLiveMatches(adapterFor(ctx));
|
|
4870
5926
|
emitShare(
|
|
4871
5927
|
ctx,
|
|
@@ -4891,7 +5947,7 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4891
5947
|
return;
|
|
4892
5948
|
}
|
|
4893
5949
|
if (target === "table") {
|
|
4894
|
-
precheck(cfg,
|
|
5950
|
+
precheck(cfg, t2);
|
|
4895
5951
|
const group = team?.toUpperCase();
|
|
4896
5952
|
const { tables, degraded: degraded2, source: source2 } = await getStandings(adapterFor(ctx), group);
|
|
4897
5953
|
emitShareTable(
|
|
@@ -4910,8 +5966,37 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4910
5966
|
);
|
|
4911
5967
|
return;
|
|
4912
5968
|
}
|
|
5969
|
+
if (target === "bracket") {
|
|
5970
|
+
precheck(cfg, t2);
|
|
5971
|
+
const stageFilter = team?.toUpperCase();
|
|
5972
|
+
if (stageFilter && !BRACKET_STAGES.has(stageFilter)) {
|
|
5973
|
+
throw new InputError(t(cfg.lang, "bracket.invalidStage"));
|
|
5974
|
+
}
|
|
5975
|
+
const { view, degraded: degraded2, source: source2 } = await getBracket(
|
|
5976
|
+
adapterFor(ctx),
|
|
5977
|
+
stageFilter ? { stage: stageFilter, lang: cfg.lang } : { lang: cfg.lang }
|
|
5978
|
+
);
|
|
5979
|
+
emitShareBracket(
|
|
5980
|
+
ctx,
|
|
5981
|
+
{
|
|
5982
|
+
stage: stageFilter,
|
|
5983
|
+
view,
|
|
5984
|
+
source: degraded2 ? void 0 : source2,
|
|
5985
|
+
degraded: degraded2,
|
|
5986
|
+
installLine: stageFilter ? `npx @claudinho/cli bracket ${stageFilter}` : "npx @claudinho/cli bracket",
|
|
5987
|
+
emptyNote: t(cfg.lang, "bracket.empty"),
|
|
5988
|
+
options: {
|
|
5989
|
+
includeHashtag: baseOptions.includeHashtag,
|
|
5990
|
+
includeInstallLine: baseOptions.includeInstallLine,
|
|
5991
|
+
locale: cfg.lang
|
|
5992
|
+
}
|
|
5993
|
+
},
|
|
5994
|
+
copy
|
|
5995
|
+
);
|
|
5996
|
+
return;
|
|
5997
|
+
}
|
|
4913
5998
|
if (target === "next") {
|
|
4914
|
-
precheck(cfg,
|
|
5999
|
+
precheck(cfg, t2);
|
|
4915
6000
|
const code = resolveTeamArg(team, "Usage: claudinho share next <team> (or set CLAUDINHO_TEAM)");
|
|
4916
6001
|
const fixture = nextFixtureForTeam(code, { from: ctx.now ?? /* @__PURE__ */ new Date() });
|
|
4917
6002
|
const matches = fixture ? [fixture] : [];
|
|
@@ -4939,7 +6024,7 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4939
6024
|
return;
|
|
4940
6025
|
}
|
|
4941
6026
|
if (target && target !== "today" && !isValidDate(target)) {
|
|
4942
|
-
precheck(cfg,
|
|
6027
|
+
precheck(cfg, t2);
|
|
4943
6028
|
const { match, degraded: degraded2, source: source2 } = await getMatchById(adapterFor(ctx), target);
|
|
4944
6029
|
const matches = match ? [match] : [];
|
|
4945
6030
|
const signals2 = await reliableShareSignals(ctx, matches);
|
|
@@ -4966,7 +6051,7 @@ async function cmdShare(target, team, opts, ctx) {
|
|
|
4966
6051
|
return;
|
|
4967
6052
|
}
|
|
4968
6053
|
const explicitDate = target && target !== "today" ? target : void 0;
|
|
4969
|
-
precheck(cfg,
|
|
6054
|
+
precheck(cfg, t2, explicitDate);
|
|
4970
6055
|
const date = explicitDate ?? localDate((/* @__PURE__ */ new Date()).toISOString(), cfg.tz);
|
|
4971
6056
|
const { matches: all, degraded, source } = await getMatchesForDate(adapterFor(ctx), date);
|
|
4972
6057
|
const todays = fixturesByDate(date, all, cfg.tz);
|
|
@@ -5064,7 +6149,7 @@ function handlePipeError(stream) {
|
|
|
5064
6149
|
}
|
|
5065
6150
|
handlePipeError(process.stdout);
|
|
5066
6151
|
handlePipeError(process.stderr);
|
|
5067
|
-
var VERSION = "0.
|
|
6152
|
+
var VERSION = "0.8.0";
|
|
5068
6153
|
var DISCLAIMER = "Claudinho is an independent fan project. Not affiliated with or endorsed by FIFA or Anthropic.";
|
|
5069
6154
|
function ctxFrom(cmd) {
|
|
5070
6155
|
let root = cmd;
|
|
@@ -5112,6 +6197,13 @@ program.command("table").description("show group standings (default: all groups)
|
|
|
5112
6197
|
fail(e);
|
|
5113
6198
|
}
|
|
5114
6199
|
});
|
|
6200
|
+
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) => {
|
|
6201
|
+
try {
|
|
6202
|
+
await cmdBracket(stage, opts, ctxFrom(cmd));
|
|
6203
|
+
} catch (e) {
|
|
6204
|
+
fail(e);
|
|
6205
|
+
}
|
|
6206
|
+
});
|
|
5115
6207
|
program.command("match").description("show a single match by id").argument("<id>", "match id").action(async (id, _opts, cmd) => {
|
|
5116
6208
|
try {
|
|
5117
6209
|
await cmdMatch(id, ctxFrom(cmd));
|
|
@@ -5126,9 +6218,9 @@ program.command("markets").description("show prediction-market signals (read-onl
|
|
|
5126
6218
|
fail(e);
|
|
5127
6219
|
}
|
|
5128
6220
|
});
|
|
5129
|
-
program.command("share").description("print a shareable, copy-pasteable match snippet (#VibingLaVidaLoca)").argument("[target]", '"today" (default), "live", a date, a match id, "next", or "
|
|
6221
|
+
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(
|
|
5130
6222
|
"[team]",
|
|
5131
|
-
'team code for "next" (default: $CLAUDINHO_TEAM),
|
|
6223
|
+
'team code for "next" (default: $CLAUDINHO_TEAM), group letter for "table", or stage for "bracket"'
|
|
5132
6224
|
).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) => {
|
|
5133
6225
|
try {
|
|
5134
6226
|
await cmdShare(target, team, opts, ctxFrom(cmd));
|