@weekendgoals/weekendgoals-common 1.2162.31319149261 → 1.2163.31433212367
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/dist/classification/global-rank.d.ts +69 -7
- package/dist/classification/global-rank.d.ts.map +1 -1
- package/dist/classification/global-rank.js +96 -7
- package/dist/classification/global-rank.js.map +1 -1
- package/dist/classification/world-tournament-order.d.ts +37 -0
- package/dist/classification/world-tournament-order.d.ts.map +1 -0
- package/dist/classification/world-tournament-order.js +304 -0
- package/dist/classification/world-tournament-order.js.map +1 -0
- package/dist/matching/league-display-names.d.ts +3 -2
- package/dist/matching/league-display-names.d.ts.map +1 -1
- package/dist/matching/league-display-names.js +3 -2
- package/dist/matching/league-display-names.js.map +1 -1
- package/dist/matching/normalize.d.ts.map +1 -1
- package/dist/matching/normalize.js +3 -2
- package/dist/matching/normalize.js.map +1 -1
- package/dist/matching/opta-league-match.d.ts +3 -2
- package/dist/matching/opta-league-match.d.ts.map +1 -1
- package/dist/matching/opta-league-match.js +3 -2
- package/dist/matching/opta-league-match.js.map +1 -1
- package/dist/models/countries/index.d.ts +27 -27
- package/dist/models/leagues/index.d.ts +18 -18
- package/dist/models/matches/index.d.ts +9 -9
- package/dist/models/teams/index.d.ts +18 -18
- package/dist/models/venues/index.d.ts +27 -27
- package/package.json +1 -1
|
@@ -26,14 +26,25 @@
|
|
|
26
26
|
* rename is a migration across two collections. See the LEA-8 status entry for
|
|
27
27
|
* the call-site list.
|
|
28
28
|
*
|
|
29
|
-
* ## One
|
|
29
|
+
* ## One derivation, two callers
|
|
30
30
|
*
|
|
31
|
-
* `
|
|
32
|
-
*
|
|
33
|
-
* `
|
|
34
|
-
* `
|
|
35
|
-
*
|
|
36
|
-
*
|
|
31
|
+
* `deriveGlobalRanks` below is the rule, and it is the reason this module
|
|
32
|
+
* exists rather than a script owning it: **the reviewed
|
|
33
|
+
* `api-gateway/scripts/propose-league-global-ranks.ts` and
|
|
34
|
+
* `POST /ingest/leagues/rerank` must compute the same answer.** Two writers
|
|
35
|
+
* with two rules is exactly what LEA-8 removed — Opta's league feed numbered
|
|
36
|
+
* each of its two files from 1 while `reclassify-world-tournaments.ts`
|
|
37
|
+
* numbered the World tournaments from 1 per confederation, so 22 leagues sat
|
|
38
|
+
* at rank 1 and 28 (section, rank) pairs collided. Two writers sharing ONE
|
|
39
|
+
* derivation is a different thing: both compute the whole collection's ranks
|
|
40
|
+
* from the same evidence, so whichever ran last, the answer is the same.
|
|
41
|
+
*
|
|
42
|
+
* `POST /ingest/leagues/classify` still does not accept the field, and
|
|
43
|
+
* `reclassify-world-tournaments.ts` still does not write it. What changed at
|
|
44
|
+
* Q-4 is that the derivation is no longer only reachable by hand: `rating` is
|
|
45
|
+
* refreshed weekly and the ranks derived from it were as old as the last time
|
|
46
|
+
* someone ran a script — measured on production 2026-08-09, a weekly run
|
|
47
|
+
* refreshed 254 league ratings and moved 0 league ranks.
|
|
37
48
|
*/
|
|
38
49
|
import { Category } from "@weekendgoals/weekendgoals-types/dist/types";
|
|
39
50
|
/** The fields the namespace is built from. */
|
|
@@ -67,4 +78,55 @@ export interface GlobalRankCollision {
|
|
|
67
78
|
export declare function globalRankCollisions(leagues: RankableLeague[]): GlobalRankCollision[];
|
|
68
79
|
/** Ranked leagues that name no namespace, so their rank compares to nothing. */
|
|
69
80
|
export declare function rankedWithoutNamespace<T extends RankableLeague>(leagues: T[]): T[];
|
|
81
|
+
/** A row with enough of itself to be ordered as well as namespaced. */
|
|
82
|
+
export interface DerivableLeague extends RankableLeague {
|
|
83
|
+
name?: string;
|
|
84
|
+
externalId?: string;
|
|
85
|
+
rating?: number | null;
|
|
86
|
+
}
|
|
87
|
+
export interface GlobalRankDerivation<T> {
|
|
88
|
+
/** id → the rank the row should hold. A row absent from it holds none. */
|
|
89
|
+
ranks: Map<string, number>;
|
|
90
|
+
/** How many (scope, confederation, category) sections got a rank. */
|
|
91
|
+
sections: number;
|
|
92
|
+
/**
|
|
93
|
+
* Rows holding a rank that nothing orders — no `rating` and no entry in the
|
|
94
|
+
* curated World table. The derivation CLEARS these; a rank nothing can
|
|
95
|
+
* reproduce is worse than no rank, and the service's `?? 999` already
|
|
96
|
+
* expects a missing one.
|
|
97
|
+
*/
|
|
98
|
+
noEvidence: T[];
|
|
99
|
+
/**
|
|
100
|
+
* Rows that could be ordered but name no section, so their rank would
|
|
101
|
+
* compare to nothing. Left unranked and reported.
|
|
102
|
+
*/
|
|
103
|
+
noNamespace: T[];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The whole collection's `globalRank`, derived from the collection.
|
|
107
|
+
*
|
|
108
|
+
* The rule, unchanged since LEA-8 and stated here because two callers depend
|
|
109
|
+
* on it being one rule:
|
|
110
|
+
*
|
|
111
|
+
* - **Domestic sections order by `rating`, descending.** Opta's rating is the
|
|
112
|
+
* strength measure its own league ranking is computed from, so this
|
|
113
|
+
* reproduces Opta's order for every co-rated row while also placing a row
|
|
114
|
+
* rated in an older run — which the raw rank could not, and which is exactly
|
|
115
|
+
* how the collisions arose: a league that stopped resolving kept a number
|
|
116
|
+
* from a run its neighbours had moved past. Ties break on the rank held
|
|
117
|
+
* today, then the name, so a rerun over unchanged evidence is a no-op.
|
|
118
|
+
* - **International sections take only the ORDER from the curated World
|
|
119
|
+
* table** and are renumbered densely from 1. See `./world-tournament-order`
|
|
120
|
+
* for why the numbers in it are not the numbers stored.
|
|
121
|
+
* - **A row with neither evidence keeps no rank.**
|
|
122
|
+
*
|
|
123
|
+
* The two never mix — measured on the collection: 0 World rows carry an Opta
|
|
124
|
+
* `rating`, and 0 domestic ranked rows lack one. The comparator handles a
|
|
125
|
+
* mixed section anyway, rated rows leading.
|
|
126
|
+
*
|
|
127
|
+
* `idOf` is passed rather than assumed because the callers hold different
|
|
128
|
+
* shapes of the same row (a lean Mongo document, a DAO projection). It must be
|
|
129
|
+
* injective over `leagues` or two rows would claim one rank.
|
|
130
|
+
*/
|
|
131
|
+
export declare function deriveGlobalRanks<T extends DerivableLeague>(leagues: T[], idOf: (league: T) => string): GlobalRankDerivation<T>;
|
|
70
132
|
//# sourceMappingURL=global-rank.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-rank.d.ts","sourceRoot":"","sources":["../../src/classification/global-rank.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"global-rank.d.ts","sourceRoot":"","sources":["../../src/classification/global-rank.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AAGvE,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,GACrB,MAAM,GAAG,SAAS,CAIpB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,EAAE,GACxB,mBAAmB,EAAE,CAyBvB;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,cAAc,EAC7D,OAAO,EAAE,CAAC,EAAE,GACX,CAAC,EAAE,CAIL;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,0EAA0E;IAC1E,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,EAAE,CAAC,EAAE,CAAC;IAChB;;;OAGG;IACH,WAAW,EAAE,CAAC,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,eAAe,EACzD,OAAO,EAAE,CAAC,EAAE,EACZ,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAC1B,oBAAoB,CAAC,CAAC,CAAC,CA6CzB"}
|
|
@@ -27,19 +27,32 @@
|
|
|
27
27
|
* rename is a migration across two collections. See the LEA-8 status entry for
|
|
28
28
|
* the call-site list.
|
|
29
29
|
*
|
|
30
|
-
* ## One
|
|
30
|
+
* ## One derivation, two callers
|
|
31
31
|
*
|
|
32
|
-
* `
|
|
33
|
-
*
|
|
34
|
-
* `
|
|
35
|
-
* `
|
|
36
|
-
*
|
|
37
|
-
*
|
|
32
|
+
* `deriveGlobalRanks` below is the rule, and it is the reason this module
|
|
33
|
+
* exists rather than a script owning it: **the reviewed
|
|
34
|
+
* `api-gateway/scripts/propose-league-global-ranks.ts` and
|
|
35
|
+
* `POST /ingest/leagues/rerank` must compute the same answer.** Two writers
|
|
36
|
+
* with two rules is exactly what LEA-8 removed — Opta's league feed numbered
|
|
37
|
+
* each of its two files from 1 while `reclassify-world-tournaments.ts`
|
|
38
|
+
* numbered the World tournaments from 1 per confederation, so 22 leagues sat
|
|
39
|
+
* at rank 1 and 28 (section, rank) pairs collided. Two writers sharing ONE
|
|
40
|
+
* derivation is a different thing: both compute the whole collection's ranks
|
|
41
|
+
* from the same evidence, so whichever ran last, the answer is the same.
|
|
42
|
+
*
|
|
43
|
+
* `POST /ingest/leagues/classify` still does not accept the field, and
|
|
44
|
+
* `reclassify-world-tournaments.ts` still does not write it. What changed at
|
|
45
|
+
* Q-4 is that the derivation is no longer only reachable by hand: `rating` is
|
|
46
|
+
* refreshed weekly and the ranks derived from it were as old as the last time
|
|
47
|
+
* someone ran a script — measured on production 2026-08-09, a weekly run
|
|
48
|
+
* refreshed 254 league ratings and moved 0 league ranks.
|
|
38
49
|
*/
|
|
39
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
51
|
exports.globalRankNamespaceOf = globalRankNamespaceOf;
|
|
41
52
|
exports.globalRankCollisions = globalRankCollisions;
|
|
42
53
|
exports.rankedWithoutNamespace = rankedWithoutNamespace;
|
|
54
|
+
exports.deriveGlobalRanks = deriveGlobalRanks;
|
|
55
|
+
const world_tournament_order_1 = require("./world-tournament-order");
|
|
43
56
|
/**
|
|
44
57
|
* The section a league's `globalRank` counts inside, or `undefined` when the
|
|
45
58
|
* row cannot name one. An unclassified row has no section, so it can hold no
|
|
@@ -88,4 +101,80 @@ function globalRankCollisions(leagues) {
|
|
|
88
101
|
function rankedWithoutNamespace(leagues) {
|
|
89
102
|
return leagues.filter((l) => l.globalRank != null && !globalRankNamespaceOf(l));
|
|
90
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* The whole collection's `globalRank`, derived from the collection.
|
|
106
|
+
*
|
|
107
|
+
* The rule, unchanged since LEA-8 and stated here because two callers depend
|
|
108
|
+
* on it being one rule:
|
|
109
|
+
*
|
|
110
|
+
* - **Domestic sections order by `rating`, descending.** Opta's rating is the
|
|
111
|
+
* strength measure its own league ranking is computed from, so this
|
|
112
|
+
* reproduces Opta's order for every co-rated row while also placing a row
|
|
113
|
+
* rated in an older run — which the raw rank could not, and which is exactly
|
|
114
|
+
* how the collisions arose: a league that stopped resolving kept a number
|
|
115
|
+
* from a run its neighbours had moved past. Ties break on the rank held
|
|
116
|
+
* today, then the name, so a rerun over unchanged evidence is a no-op.
|
|
117
|
+
* - **International sections take only the ORDER from the curated World
|
|
118
|
+
* table** and are renumbered densely from 1. See `./world-tournament-order`
|
|
119
|
+
* for why the numbers in it are not the numbers stored.
|
|
120
|
+
* - **A row with neither evidence keeps no rank.**
|
|
121
|
+
*
|
|
122
|
+
* The two never mix — measured on the collection: 0 World rows carry an Opta
|
|
123
|
+
* `rating`, and 0 domestic ranked rows lack one. The comparator handles a
|
|
124
|
+
* mixed section anyway, rated rows leading.
|
|
125
|
+
*
|
|
126
|
+
* `idOf` is passed rather than assumed because the callers hold different
|
|
127
|
+
* shapes of the same row (a lean Mongo document, a DAO projection). It must be
|
|
128
|
+
* injective over `leagues` or two rows would claim one rank.
|
|
129
|
+
*/
|
|
130
|
+
function deriveGlobalRanks(leagues, idOf) {
|
|
131
|
+
const curated = (0, world_tournament_order_1.curatedWorldOrder)(world_tournament_order_1.ALL_RANKS);
|
|
132
|
+
const sections = new Map();
|
|
133
|
+
const noEvidence = [];
|
|
134
|
+
const noNamespace = [];
|
|
135
|
+
for (const league of leagues) {
|
|
136
|
+
const hasEvidence = league.rating != null || curated.has(String(league.externalId));
|
|
137
|
+
if (!hasEvidence) {
|
|
138
|
+
if (league.globalRank != null)
|
|
139
|
+
noEvidence.push(league);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
const namespace = globalRankNamespaceOf(league);
|
|
143
|
+
if (!namespace) {
|
|
144
|
+
noNamespace.push(league);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const held = sections.get(namespace);
|
|
148
|
+
if (held)
|
|
149
|
+
held.push(league);
|
|
150
|
+
else
|
|
151
|
+
sections.set(namespace, [league]);
|
|
152
|
+
}
|
|
153
|
+
const ranks = new Map();
|
|
154
|
+
for (const [, members] of sections) {
|
|
155
|
+
members.sort((a, b) => {
|
|
156
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
157
|
+
// Rated rows lead a mixed section; in practice none is mixed.
|
|
158
|
+
const ratingDiff = ((_a = b.rating) !== null && _a !== void 0 ? _a : -Infinity) - ((_b = a.rating) !== null && _b !== void 0 ? _b : -Infinity);
|
|
159
|
+
if (Number.isFinite(ratingDiff) && ratingDiff !== 0)
|
|
160
|
+
return ratingDiff;
|
|
161
|
+
if (a.rating != null && b.rating == null)
|
|
162
|
+
return -1;
|
|
163
|
+
if (a.rating == null && b.rating != null)
|
|
164
|
+
return 1;
|
|
165
|
+
const curatedDiff = ((_c = curated.get(String(a.externalId))) !== null && _c !== void 0 ? _c : Number.MAX_SAFE_INTEGER) -
|
|
166
|
+
((_d = curated.get(String(b.externalId))) !== null && _d !== void 0 ? _d : Number.MAX_SAFE_INTEGER);
|
|
167
|
+
if (curatedDiff !== 0)
|
|
168
|
+
return curatedDiff;
|
|
169
|
+
const heldDiff = ((_e = a.globalRank) !== null && _e !== void 0 ? _e : 9999) - ((_f = b.globalRank) !== null && _f !== void 0 ? _f : 9999);
|
|
170
|
+
if (heldDiff !== 0)
|
|
171
|
+
return heldDiff;
|
|
172
|
+
return ((_g = a.name) !== null && _g !== void 0 ? _g : "").localeCompare((_h = b.name) !== null && _h !== void 0 ? _h : "");
|
|
173
|
+
});
|
|
174
|
+
members.forEach((league, index) => {
|
|
175
|
+
ranks.set(idOf(league), index + 1);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return { ranks, sections: sections.size, noEvidence, noNamespace };
|
|
179
|
+
}
|
|
91
180
|
//# sourceMappingURL=global-rank.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-rank.js","sourceRoot":"","sources":["../../src/classification/global-rank.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"global-rank.js","sourceRoot":"","sources":["../../src/classification/global-rank.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The curated ORDER of the World tournaments — the ordering evidence for the
|
|
3
|
+
* rows Opta does not rate.
|
|
4
|
+
*
|
|
5
|
+
* It lived in `api-gateway/scripts/reclassify-world-tournaments.ts`, which is
|
|
6
|
+
* where it was authored and where it was once WRITTEN from. It is here because
|
|
7
|
+
* two things now need it and neither may keep a copy: the reviewed
|
|
8
|
+
* `propose-league-global-ranks.ts` and `POST /ingest/leagues/rerank`. A table
|
|
9
|
+
* that disagreed with itself across those two would put a different order on
|
|
10
|
+
* the homepage depending on which one ran last, which is the two-writer defect
|
|
11
|
+
* LEA-8 removed, one level up.
|
|
12
|
+
*
|
|
13
|
+
* **The numbers below are a sequence within their own group, not a value any
|
|
14
|
+
* league holds.** `deriveGlobalRanks` in `./global-rank` takes only the order
|
|
15
|
+
* from them and renumbers densely per `(scope, confederation, category)` —
|
|
16
|
+
* these groups are per (confederation, category), and rows have since moved
|
|
17
|
+
* category (LEA-10 re-derived ten women's youth competitions into
|
|
18
|
+
* `category: youth`), so the sections they land in now are different ones.
|
|
19
|
+
*/
|
|
20
|
+
export interface RankEntry {
|
|
21
|
+
externalId: string;
|
|
22
|
+
globalRank: number;
|
|
23
|
+
name: string;
|
|
24
|
+
}
|
|
25
|
+
export interface RankGroup {
|
|
26
|
+
confederation: string;
|
|
27
|
+
category: string;
|
|
28
|
+
entries: RankEntry[];
|
|
29
|
+
}
|
|
30
|
+
export declare const ALL_RANKS: RankGroup[];
|
|
31
|
+
/**
|
|
32
|
+
* `externalId` → its position inside its own curated group. Order only, and a
|
|
33
|
+
* duplicate keeps the first entry so the map is a function — a repeat would
|
|
34
|
+
* mean the table lists one competition twice.
|
|
35
|
+
*/
|
|
36
|
+
export declare function curatedWorldOrder(groups?: RankGroup[]): Map<string, number>;
|
|
37
|
+
//# sourceMappingURL=world-tournament-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"world-tournament-order.d.ts","sourceRoot":"","sources":["../../src/classification/world-tournament-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,EA6QhC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,GAAE,SAAS,EAAc,GAC9B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrB"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The curated ORDER of the World tournaments — the ordering evidence for the
|
|
4
|
+
* rows Opta does not rate.
|
|
5
|
+
*
|
|
6
|
+
* It lived in `api-gateway/scripts/reclassify-world-tournaments.ts`, which is
|
|
7
|
+
* where it was authored and where it was once WRITTEN from. It is here because
|
|
8
|
+
* two things now need it and neither may keep a copy: the reviewed
|
|
9
|
+
* `propose-league-global-ranks.ts` and `POST /ingest/leagues/rerank`. A table
|
|
10
|
+
* that disagreed with itself across those two would put a different order on
|
|
11
|
+
* the homepage depending on which one ran last, which is the two-writer defect
|
|
12
|
+
* LEA-8 removed, one level up.
|
|
13
|
+
*
|
|
14
|
+
* **The numbers below are a sequence within their own group, not a value any
|
|
15
|
+
* league holds.** `deriveGlobalRanks` in `./global-rank` takes only the order
|
|
16
|
+
* from them and renumbers densely per `(scope, confederation, category)` —
|
|
17
|
+
* these groups are per (confederation, category), and rows have since moved
|
|
18
|
+
* category (LEA-10 re-derived ten women's youth competitions into
|
|
19
|
+
* `category: youth`), so the sections they land in now are different ones.
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.ALL_RANKS = void 0;
|
|
23
|
+
exports.curatedWorldOrder = curatedWorldOrder;
|
|
24
|
+
exports.ALL_RANKS = [
|
|
25
|
+
// --- GLOBAL ---
|
|
26
|
+
{
|
|
27
|
+
confederation: "GLOBAL", category: "men", entries: [
|
|
28
|
+
{ externalId: "1", globalRank: 1, name: "World Cup" },
|
|
29
|
+
{ externalId: "15", globalRank: 2, name: "FIFA Club World Cup" },
|
|
30
|
+
{ externalId: "1168", globalRank: 3, name: "FIFA Intercontinental Cup" },
|
|
31
|
+
{ externalId: "480", globalRank: 4, name: "Olympics Men" },
|
|
32
|
+
{ externalId: "768", globalRank: 5, name: "Arab Club Champions Cup" },
|
|
33
|
+
{ externalId: "860", globalRank: 6, name: "Arab Cup" },
|
|
34
|
+
{ externalId: "30", globalRank: 7, name: "World Cup - Qualification Asia" },
|
|
35
|
+
{ externalId: "37", globalRank: 8, name: "World Cup - Qualification Intercontinental Play-offs" },
|
|
36
|
+
{ externalId: "1186", globalRank: 9, name: "FIFA Club World Cup - Play-In" },
|
|
37
|
+
{ externalId: "26", globalRank: 10, name: "International Champions Cup" },
|
|
38
|
+
{ externalId: "10", globalRank: 11, name: "Friendlies" },
|
|
39
|
+
{ externalId: "667", globalRank: 12, name: "Friendlies Clubs" },
|
|
40
|
+
{ externalId: "937", globalRank: 13, name: "Emirates Cup" },
|
|
41
|
+
{ externalId: "769", globalRank: 14, name: "Premier League Asia Trophy" },
|
|
42
|
+
{ externalId: "1105", globalRank: 15, name: "Olympics - Intercontinental Play-offs" },
|
|
43
|
+
{ externalId: "1016", globalRank: 16, name: "CAC Games" },
|
|
44
|
+
{ externalId: "941", globalRank: 17, name: "Islamic Solidarity Games" },
|
|
45
|
+
{ externalId: "919", globalRank: 18, name: "Mediterranean Games" },
|
|
46
|
+
{ externalId: "1045", globalRank: 19, name: "Pan American Games" },
|
|
47
|
+
{ externalId: "1213", globalRank: 20, name: "Kings World Cup Nations" },
|
|
48
|
+
{ externalId: "21", globalRank: 21, name: "Confederations Cup" },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
confederation: "GLOBAL", category: "women", entries: [
|
|
53
|
+
{ externalId: "8", globalRank: 1, name: "World Cup - Women" },
|
|
54
|
+
{ externalId: "524", globalRank: 2, name: "Olympics Women" },
|
|
55
|
+
{ externalId: "1217", globalRank: 3, name: "Fifa Women Champions Cup" },
|
|
56
|
+
{ externalId: "945", globalRank: 4, name: "International Champions Cup - Women" },
|
|
57
|
+
{ externalId: "666", globalRank: 5, name: "Friendlies Women" },
|
|
58
|
+
{ externalId: "882", globalRank: 6, name: "Olympics Women - Qualification Asia" },
|
|
59
|
+
{ externalId: "920", globalRank: 7, name: "World Cup - U20 - Women" },
|
|
60
|
+
{ externalId: "950", globalRank: 8, name: "World Cup - U17 - Women" },
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
confederation: "GLOBAL", category: "youth", entries: [
|
|
65
|
+
{ externalId: "490", globalRank: 1, name: "World Cup - U20" },
|
|
66
|
+
{ externalId: "587", globalRank: 2, name: "World Cup - U17" },
|
|
67
|
+
{ externalId: "934", globalRank: 3, name: "Arab Championship - U20" },
|
|
68
|
+
{ externalId: "1039", globalRank: 4, name: "Premier League International Cup" },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
// --- UEFA ---
|
|
72
|
+
{
|
|
73
|
+
confederation: "UEFA", category: "men", entries: [
|
|
74
|
+
{ externalId: "2", globalRank: 1, name: "UEFA Champions League" },
|
|
75
|
+
{ externalId: "3", globalRank: 2, name: "UEFA Europa League" },
|
|
76
|
+
{ externalId: "848", globalRank: 3, name: "UEFA Europa Conference League" },
|
|
77
|
+
{ externalId: "4", globalRank: 4, name: "Euro Championship" },
|
|
78
|
+
{ externalId: "5", globalRank: 5, name: "UEFA Nations League" },
|
|
79
|
+
{ externalId: "531", globalRank: 6, name: "UEFA Super Cup" },
|
|
80
|
+
{ externalId: "960", globalRank: 7, name: "Euro Championship - Qualification" },
|
|
81
|
+
{ externalId: "32", globalRank: 8, name: "World Cup - Qualification Europe" },
|
|
82
|
+
{ externalId: "913", globalRank: 9, name: "CONMEBOL - UEFA Finalissima" },
|
|
83
|
+
{ externalId: "1024", globalRank: 10, name: "UEFA - CONMEBOL - Club Challenge" },
|
|
84
|
+
{ externalId: "849", globalRank: 11, name: "Baltic Cup" },
|
|
85
|
+
{ externalId: "903", globalRank: 12, name: "The Atlantic Cup" },
|
|
86
|
+
{ externalId: "900", globalRank: 13, name: "Tipsport Malta Cup" },
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
confederation: "UEFA", category: "women", entries: [
|
|
91
|
+
{ externalId: "525", globalRank: 1, name: "UEFA Champions League Women" },
|
|
92
|
+
{ externalId: "743", globalRank: 2, name: "UEFA Championship - Women" },
|
|
93
|
+
{ externalId: "1040", globalRank: 3, name: "UEFA Nations League - Women" },
|
|
94
|
+
{ externalId: "1191", globalRank: 4, name: "UEFA Europa Cup - Women" },
|
|
95
|
+
{ externalId: "1083", globalRank: 5, name: "UEFA Championship - Women - Qualification" },
|
|
96
|
+
{ externalId: "880", globalRank: 6, name: "World Cup - Women - Qualification Europe" },
|
|
97
|
+
{ externalId: "902", globalRank: 7, name: "Algarve Cup" },
|
|
98
|
+
{ externalId: "918", globalRank: 8, name: "UEFA U19 Championship - Women" },
|
|
99
|
+
{ externalId: "1102", globalRank: 9, name: "UEFA U17 Championship - Women" },
|
|
100
|
+
{ externalId: "1013", globalRank: 10, name: "All-Island Cup - Women" },
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
confederation: "UEFA", category: "youth", entries: [
|
|
105
|
+
{ externalId: "14", globalRank: 1, name: "UEFA Youth League" },
|
|
106
|
+
{ externalId: "38", globalRank: 2, name: "UEFA U21 Championship" },
|
|
107
|
+
{ externalId: "493", globalRank: 3, name: "UEFA U19 Championship" },
|
|
108
|
+
{ externalId: "921", globalRank: 4, name: "UEFA U17 Championship" },
|
|
109
|
+
{ externalId: "850", globalRank: 5, name: "UEFA U21 Championship - Qualification" },
|
|
110
|
+
{ externalId: "893", globalRank: 6, name: "UEFA U19 Championship - Qualification" },
|
|
111
|
+
{ externalId: "886", globalRank: 7, name: "UEFA U17 Championship - Qualification" },
|
|
112
|
+
{ externalId: "914", globalRank: 8, name: "Tournoi Maurice Revello" },
|
|
113
|
+
{ externalId: "940", globalRank: 9, name: "COTIF Tournament" },
|
|
114
|
+
{ externalId: "890", globalRank: 10, name: "U20 Elite League" },
|
|
115
|
+
{ externalId: "910", globalRank: 11, name: "Youth Viareggio Cup" },
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
// --- CONMEBOL ---
|
|
119
|
+
{
|
|
120
|
+
confederation: "CONMEBOL", category: "men", entries: [
|
|
121
|
+
{ externalId: "13", globalRank: 1, name: "CONMEBOL Libertadores" },
|
|
122
|
+
{ externalId: "9", globalRank: 2, name: "Copa America" },
|
|
123
|
+
{ externalId: "11", globalRank: 3, name: "CONMEBOL Sudamericana" },
|
|
124
|
+
{ externalId: "541", globalRank: 4, name: "CONMEBOL Recopa" },
|
|
125
|
+
{ externalId: "34", globalRank: 5, name: "World Cup - Qualification South America" },
|
|
126
|
+
{ externalId: "1060", globalRank: 6, name: "CONMEBOL - Pre-Olympic Tournament" },
|
|
127
|
+
{ externalId: "1216", globalRank: 7, name: "Serie Rio De La Plata" },
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
confederation: "CONMEBOL", category: "women", entries: [
|
|
132
|
+
{ externalId: "926", globalRank: 1, name: "Copa America Femenina" },
|
|
133
|
+
{ externalId: "949", globalRank: 2, name: "CONMEBOL Libertadores Femenina" },
|
|
134
|
+
{ externalId: "1206", globalRank: 3, name: "CONMEBOL Nations League Women" },
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
confederation: "CONMEBOL", category: "youth", entries: [
|
|
139
|
+
{ externalId: "773", globalRank: 1, name: "Sudamericano U20" },
|
|
140
|
+
{ externalId: "540", globalRank: 2, name: "CONMEBOL Libertadores U20" },
|
|
141
|
+
{ externalId: "970", globalRank: 3, name: "CONMEBOL - U17" },
|
|
142
|
+
{ externalId: "1085", globalRank: 4, name: "CONMEBOL U20 Femenino" },
|
|
143
|
+
{ externalId: "1081", globalRank: 5, name: "CONMEBOL - U17 Femenino" },
|
|
144
|
+
{ externalId: "951", globalRank: 6, name: "South American Youth Games" },
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
// --- AFC ---
|
|
148
|
+
{
|
|
149
|
+
confederation: "AFC", category: "men", entries: [
|
|
150
|
+
{ externalId: "17", globalRank: 1, name: "AFC Champions League" },
|
|
151
|
+
{ externalId: "7", globalRank: 2, name: "Asian Cup" },
|
|
152
|
+
{ externalId: "18", globalRank: 3, name: "AFC Cup" },
|
|
153
|
+
{ externalId: "35", globalRank: 4, name: "Asian Cup - Qualification" },
|
|
154
|
+
{ externalId: "23", globalRank: 5, name: "EAFF E-1 Football Championship" },
|
|
155
|
+
{ externalId: "24", globalRank: 6, name: "ASEAN Championship" },
|
|
156
|
+
{ externalId: "25", globalRank: 7, name: "Gulf Cup of Nations" },
|
|
157
|
+
{ externalId: "28", globalRank: 8, name: "SAFF Championship" },
|
|
158
|
+
{ externalId: "1008", globalRank: 9, name: "CAFA Nations Cup" },
|
|
159
|
+
{ externalId: "803", globalRank: 10, name: "Asian Games" },
|
|
160
|
+
{ externalId: "911", globalRank: 11, name: "Southeast Asian Games" },
|
|
161
|
+
{ externalId: "807", globalRank: 12, name: "AFC Challenge Cup" },
|
|
162
|
+
{ externalId: "1132", globalRank: 13, name: "AFC Challenge League" },
|
|
163
|
+
{ externalId: "1129", globalRank: 14, name: "ASEAN Club Championship" },
|
|
164
|
+
{ externalId: "1162", globalRank: 15, name: "AGCFF Gulf Champions League" },
|
|
165
|
+
{ externalId: "1169", globalRank: 16, name: "EAFF E-1 Football Championship - Qualification" },
|
|
166
|
+
{ externalId: "766", globalRank: 17, name: "China Cup" },
|
|
167
|
+
{ externalId: "1038", globalRank: 18, name: "King's Cup" },
|
|
168
|
+
{ externalId: "916", globalRank: 19, name: "Kirin Cup" },
|
|
169
|
+
{ externalId: "1123", globalRank: 20, name: "Qatar-UAE Super Cup" },
|
|
170
|
+
{ externalId: "1089", globalRank: 21, name: "UAE-Qatar - Super Shield" },
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
confederation: "AFC", category: "women", entries: [
|
|
175
|
+
{ externalId: "897", globalRank: 1, name: "Asian Cup Women" },
|
|
176
|
+
{ externalId: "1140", globalRank: 2, name: "AFC Women's Champions League" },
|
|
177
|
+
{ externalId: "894", globalRank: 3, name: "Asian Cup Women - Qualification" },
|
|
178
|
+
{ externalId: "1070", globalRank: 4, name: "AFC U20 Asian Cup - Women" },
|
|
179
|
+
{ externalId: "1101", globalRank: 5, name: "AFC U17 Asian Cup - Women" },
|
|
180
|
+
{ externalId: "1189", globalRank: 6, name: "Asean Championship Women" },
|
|
181
|
+
{ externalId: "1188", globalRank: 7, name: "EAFF E-1 Football Championship - Women" },
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
confederation: "AFC", category: "youth", entries: [
|
|
186
|
+
{ externalId: "532", globalRank: 1, name: "AFC U23 Asian Cup" },
|
|
187
|
+
{ externalId: "965", globalRank: 2, name: "AFC U20 Asian Cup" },
|
|
188
|
+
{ externalId: "1012", globalRank: 3, name: "AFC U17 Asian Cup" },
|
|
189
|
+
{ externalId: "952", globalRank: 4, name: "AFC U23 Asian Cup - Qualification" },
|
|
190
|
+
{ externalId: "1153", globalRank: 5, name: "AFC U20 Asian Cup - Qualification" },
|
|
191
|
+
{ externalId: "1161", globalRank: 6, name: "AFC U17 Asian Cup - Qualification" },
|
|
192
|
+
{ externalId: "908", globalRank: 7, name: "ASEAN Championship U23" },
|
|
193
|
+
{ externalId: "928", globalRank: 8, name: "ASEAN Championship U19" },
|
|
194
|
+
{ externalId: "1208", globalRank: 9, name: "Arabian Gulf Cup U23" },
|
|
195
|
+
{ externalId: "1077", globalRank: 10, name: "WAFF Championship U23" },
|
|
196
|
+
],
|
|
197
|
+
},
|
|
198
|
+
// --- CONCACAF ---
|
|
199
|
+
{
|
|
200
|
+
confederation: "CONCACAF", category: "men", entries: [
|
|
201
|
+
{ externalId: "16", globalRank: 1, name: "CONCACAF Champions League" },
|
|
202
|
+
{ externalId: "22", globalRank: 2, name: "CONCACAF Gold Cup" },
|
|
203
|
+
{ externalId: "536", globalRank: 3, name: "CONCACAF Nations League" },
|
|
204
|
+
{ externalId: "772", globalRank: 4, name: "Leagues Cup" },
|
|
205
|
+
{ externalId: "767", globalRank: 5, name: "CONCACAF League" },
|
|
206
|
+
{ externalId: "858", globalRank: 6, name: "CONCACAF Gold Cup - Qualification" },
|
|
207
|
+
{ externalId: "808", globalRank: 7, name: "CONCACAF Nations League - Qualification" },
|
|
208
|
+
{ externalId: "31", globalRank: 8, name: "World Cup - Qualification CONCACAF" },
|
|
209
|
+
{ externalId: "885", globalRank: 9, name: "Campeones Cup" },
|
|
210
|
+
{ externalId: "805", globalRank: 10, name: "Copa Centroamericana" },
|
|
211
|
+
{ externalId: "804", globalRank: 11, name: "Caribbean Cup" },
|
|
212
|
+
{ externalId: "856", globalRank: 12, name: "CONCACAF Caribbean Club Championship" },
|
|
213
|
+
{ externalId: "534", globalRank: 13, name: "CONCACAF Caribbean Club Shield" },
|
|
214
|
+
{ externalId: "1028", globalRank: 14, name: "Concacaf Central American Cup" },
|
|
215
|
+
{ externalId: "1207", globalRank: 15, name: "CONCACAF Series" },
|
|
216
|
+
{ externalId: "881", globalRank: 16, name: "Olympics Men - Qualification Concacaf" },
|
|
217
|
+
],
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
confederation: "CONCACAF", category: "women", entries: [
|
|
221
|
+
{ externalId: "1057", globalRank: 1, name: "CONCACAF Gold Cup - Women" },
|
|
222
|
+
{ externalId: "1136", globalRank: 2, name: "CONCACAF W Champions Cup" },
|
|
223
|
+
{ externalId: "927", globalRank: 3, name: "World Cup - Women - Qualification Concacaf" },
|
|
224
|
+
{ externalId: "904", globalRank: 4, name: "SheBelieves Cup" },
|
|
225
|
+
{ externalId: "1046", globalRank: 5, name: "CONCACAF Gold Cup - Qualification - Women" },
|
|
226
|
+
{ externalId: "1001", globalRank: 6, name: "CONCACAF Women U20" },
|
|
227
|
+
{ externalId: "912", globalRank: 7, name: "CONCACAF Women U17" },
|
|
228
|
+
],
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
confederation: "CONCACAF", category: "youth", entries: [
|
|
232
|
+
{ externalId: "537", globalRank: 1, name: "CONCACAF U20" },
|
|
233
|
+
{ externalId: "963", globalRank: 2, name: "CONCACAF U17" },
|
|
234
|
+
{ externalId: "1066", globalRank: 3, name: "CONCACAF U20 - Qualification" },
|
|
235
|
+
],
|
|
236
|
+
},
|
|
237
|
+
// --- CAF ---
|
|
238
|
+
{
|
|
239
|
+
confederation: "CAF", category: "men", entries: [
|
|
240
|
+
{ externalId: "12", globalRank: 1, name: "CAF Champions League" },
|
|
241
|
+
{ externalId: "6", globalRank: 2, name: "Africa Cup of Nations" },
|
|
242
|
+
{ externalId: "20", globalRank: 3, name: "CAF Confederation Cup" },
|
|
243
|
+
{ externalId: "36", globalRank: 4, name: "Africa Cup of Nations - Qualification" },
|
|
244
|
+
{ externalId: "533", globalRank: 5, name: "CAF Super Cup" },
|
|
245
|
+
{ externalId: "19", globalRank: 6, name: "African Nations Championship" },
|
|
246
|
+
{ externalId: "1043", globalRank: 7, name: "African Football League" },
|
|
247
|
+
{ externalId: "1163", globalRank: 8, name: "African Nations Championship - Qualification" },
|
|
248
|
+
{ externalId: "29", globalRank: 9, name: "World Cup - Qualification Africa" },
|
|
249
|
+
{ externalId: "859", globalRank: 10, name: "COSAFA Cup" },
|
|
250
|
+
{ externalId: "535", globalRank: 11, name: "CECAFA Senior Challenge Cup" },
|
|
251
|
+
{ externalId: "869", globalRank: 12, name: "CECAFA Club Cup" },
|
|
252
|
+
{ externalId: "1072", globalRank: 13, name: "All Africa Games" },
|
|
253
|
+
],
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
confederation: "CAF", category: "women", entries: [
|
|
257
|
+
{ externalId: "922", globalRank: 1, name: "Africa Cup of Nations - Women" },
|
|
258
|
+
{ externalId: "1164", globalRank: 2, name: "CAF Women's Champions League" },
|
|
259
|
+
{ externalId: "1047", globalRank: 3, name: "Olympics Women - Qualification CAF" },
|
|
260
|
+
],
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
confederation: "CAF", category: "youth", entries: [
|
|
264
|
+
{ externalId: "538", globalRank: 1, name: "Africa Cup of Nations U20" },
|
|
265
|
+
{ externalId: "1015", globalRank: 2, name: "CAF U23 Cup of Nations" },
|
|
266
|
+
{ externalId: "973", globalRank: 3, name: "CAF Cup of Nations - U17" },
|
|
267
|
+
{ externalId: "953", globalRank: 4, name: "Africa U23 Cup of Nations - Qualification" },
|
|
268
|
+
{ externalId: "1159", globalRank: 5, name: "CECAFA U20 Championship" },
|
|
269
|
+
{ externalId: "771", globalRank: 6, name: "COSAFA U20 Championship" },
|
|
270
|
+
],
|
|
271
|
+
},
|
|
272
|
+
// --- OFC ---
|
|
273
|
+
{
|
|
274
|
+
confederation: "OFC", category: "men", entries: [
|
|
275
|
+
{ externalId: "27", globalRank: 1, name: "OFC Champions League" },
|
|
276
|
+
{ externalId: "806", globalRank: 2, name: "OFC Nations Cup" },
|
|
277
|
+
{ externalId: "1214", globalRank: 3, name: "Ofc Pro League" },
|
|
278
|
+
{ externalId: "770", globalRank: 4, name: "Pacific Games" },
|
|
279
|
+
{ externalId: "33", globalRank: 5, name: "World Cup - Qualification Oceania" },
|
|
280
|
+
],
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
confederation: "OFC", category: "youth", entries: [
|
|
284
|
+
{ externalId: "1122", globalRank: 1, name: "OFC U19 Championship" },
|
|
285
|
+
],
|
|
286
|
+
},
|
|
287
|
+
];
|
|
288
|
+
/**
|
|
289
|
+
* `externalId` → its position inside its own curated group. Order only, and a
|
|
290
|
+
* duplicate keeps the first entry so the map is a function — a repeat would
|
|
291
|
+
* mean the table lists one competition twice.
|
|
292
|
+
*/
|
|
293
|
+
function curatedWorldOrder(groups = exports.ALL_RANKS) {
|
|
294
|
+
const order = new Map();
|
|
295
|
+
for (const group of groups) {
|
|
296
|
+
for (const entry of group.entries) {
|
|
297
|
+
if (!order.has(entry.externalId)) {
|
|
298
|
+
order.set(entry.externalId, entry.globalRank);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return order;
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=world-tournament-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"world-tournament-order.js","sourceRoot":"","sources":["../../src/classification/world-tournament-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -117,8 +117,9 @@ export declare function renameRejectionOf(proposed: string, ctx: RenameContext):
|
|
|
117
117
|
* `normalize(name)::normalizeCountry(country)`. A miss is not retried: the row
|
|
118
118
|
* goes to `notFound` and is absent from the payload posted to
|
|
119
119
|
* `/ingest/leagues/classify`, so `rating` quietly stops being refreshed for
|
|
120
|
-
* that league — and
|
|
121
|
-
*
|
|
120
|
+
* that league — and `globalRank` is derived from that `rating`, so the
|
|
121
|
+
* position ordering every homepage section goes stale with it, on the weekly
|
|
122
|
+
* schedule since Q-4 rather than whenever a script was next run by hand. (The
|
|
122
123
|
* payload has carried no `globalRank` since LEA-8, and no `alternateNames`
|
|
123
124
|
* since Q-3.)
|
|
124
125
|
*
|