@voltro/plugin-leaderboards 0.0.0-stage → 0.87.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/CHANGELOG.md +24329 -0
- package/LICENSE +61 -0
- package/README.md +1087 -2
- package/SECURITY.md +56 -0
- package/THIRD-PARTY-NOTICES.md +5007 -0
- package/dist/administration.js +5 -0
- package/dist/bracketAdmission.js +294 -0
- package/dist/bracketAdmissionPolicy.js +22 -0
- package/dist/bracketInstallation.js +133 -0
- package/dist/bracketMatchPorts.js +5 -0
- package/dist/bracketMatches.js +546 -0
- package/dist/brackets.d.ts +149 -0
- package/dist/brackets.js +379 -0
- package/dist/bucketStore.js +93 -0
- package/dist/buckets.js +9 -0
- package/dist/errors.d.ts +13 -0
- package/dist/errors.js +17 -0
- package/dist/glicko2.js +72 -0
- package/dist/index.d.ts +1208 -0
- package/dist/index.js +15 -0
- package/dist/inspect.js +84 -0
- package/dist/json.js +39 -0
- package/dist/leaderboard.d.ts +49 -0
- package/dist/leaderboard.js +57 -0
- package/dist/leagueSchedule.js +40 -0
- package/dist/leagues.js +31 -0
- package/dist/openskill.js +74 -0
- package/dist/plugin.js +338 -0
- package/dist/portLifetime.js +67 -0
- package/dist/ports.d.ts +294 -0
- package/dist/ports.js +7 -0
- package/dist/rankQuery.js +24 -0
- package/dist/ranking.d.ts +42 -0
- package/dist/ranking.js +71 -0
- package/dist/rating.d.ts +103 -0
- package/dist/rating.js +50 -0
- package/dist/ratingPools.js +134 -0
- package/dist/ratingStore.js +334 -0
- package/dist/ratingStrategies.js +108 -0
- package/dist/records.d.ts +116 -0
- package/dist/records.js +88 -0
- package/dist/rpc.d.ts +321 -0
- package/dist/rpc.js +306 -0
- package/dist/score.d.ts +13 -0
- package/dist/score.js +27 -0
- package/dist/server.d.ts +1477 -0
- package/dist/server.js +17 -0
- package/dist/service.js +949 -0
- package/dist/subjectFences.js +44 -0
- package/dist/tables.entity.js +188 -0
- package/dist/testing.d.ts +872 -0
- package/dist/testing.js +368 -0
- package/dist/tournament-app/tournament.advance.workflow.server.tsx +3 -0
- package/dist/tournament-app/tournament.advance.workflow.tsx +12 -0
- package/dist/tournament-app/tournament.stage.workflow.server.tsx +3 -0
- package/dist/tournament-app/tournament.stage.workflow.tsx +10 -0
- package/dist/tournamentInstallation.js +168 -0
- package/dist/tournamentPrizes.js +34 -0
- package/dist/tournamentStage.js +151 -0
- package/dist/tournamentStagePorts.js +5 -0
- package/dist/tournamentWorkflow.js +101 -0
- package/dist/tournamentWorkflowSchemas.js +54 -0
- package/dist/tournaments.d.ts +32 -0
- package/dist/tournaments.js +21 -0
- package/dist/web.d.ts +175 -0
- package/dist/web.js +17 -0
- package/package.json +113 -4
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { leaderboardError as e } from "./errors.js";
|
|
2
|
+
import { canonicalLeaderboardJson as t } from "./json.js";
|
|
3
|
+
import { leaderboardSubjectsTable as n } from "./tables.entity.js";
|
|
4
|
+
import { createHash as r } from "node:crypto";
|
|
5
|
+
import { eq as i, queryFor as a } from "@voltro/database";
|
|
6
|
+
//#region src/subjectFences.ts
|
|
7
|
+
var o = (o) => {
|
|
8
|
+
let s = (e, n) => "lbo_" + r("sha256").update(t([e, n])).digest("hex").slice(0, 56), c = async (e, t) => {
|
|
9
|
+
let r = s(e, t);
|
|
10
|
+
try {
|
|
11
|
+
await o.insertIgnore(n.tableName, {
|
|
12
|
+
id: r,
|
|
13
|
+
tenantId: e,
|
|
14
|
+
subjectId: t,
|
|
15
|
+
erased: !1,
|
|
16
|
+
admission: 0
|
|
17
|
+
}, { conflictColumns: ["id"] });
|
|
18
|
+
} catch (e) {
|
|
19
|
+
if (!(await o.query(a(n).where(i("id", r)).limit(1).descriptor))[0]) throw e;
|
|
20
|
+
}
|
|
21
|
+
}, l = async (t, r, o, c = !1) => {
|
|
22
|
+
let l = s(r, o);
|
|
23
|
+
if (await t.updateMany(n.tableName, { admission: 0 }, { where: i("id", l) }) !== 1) throw e("unavailable");
|
|
24
|
+
let u = (await t.query(a(n).where(i("id", l)).limit(1).forUpdate().descriptor))[0], d = u?.erased === !0 || u?.erased === 1;
|
|
25
|
+
if (!u || u.tenantId !== r || u.subjectId !== o && !(c && u.subjectId === null && d)) throw e(d ? "erased" : "unavailable");
|
|
26
|
+
if (!c && d) throw e("erased");
|
|
27
|
+
return u;
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
seedSubject: c,
|
|
31
|
+
subjectFence: l,
|
|
32
|
+
eraseSubjectFence: async (t, r) => {
|
|
33
|
+
await c(t, r), await o.transactional(async (i) => {
|
|
34
|
+
let a = await l(i, t, r, !0);
|
|
35
|
+
if (!await i.update(n.tableName, String(a.id), {
|
|
36
|
+
subjectId: null,
|
|
37
|
+
erased: !0
|
|
38
|
+
})) throw e("unavailable");
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
//#endregion
|
|
44
|
+
export { o as makeLeaderboardSubjectFences };
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { BOARDS_TABLE as e, PERIODS_TABLE as t, RECORDS_TABLE as n, SUBJECTS_TABLE as r, SUBMISSIONS_TABLE as i, TOURNAMENTS_TABLE as a, TOURNAMENT_ENTRIES_TABLE as o } from "./records.js";
|
|
2
|
+
import { bigint as s, boolean as c, id as l, integer as u, json as d, table as f, text as p, timestamp as m } from "@voltro/database";
|
|
3
|
+
//#region src/tables.entity.ts
|
|
4
|
+
var h = () => p().maxLength(256).externalId().sensitive("pii"), g = f(e, {
|
|
5
|
+
id: l({ prefix: "lbb" }),
|
|
6
|
+
tenantId: h(),
|
|
7
|
+
name: p().maxLength(256).safe(),
|
|
8
|
+
periodId: p().maxLength(64).safe(),
|
|
9
|
+
config: d().safe(),
|
|
10
|
+
admission: u().serverOnly(),
|
|
11
|
+
updatedAt: m().safe()
|
|
12
|
+
}).index(["tenantId", "name"]), _ = f(n, {
|
|
13
|
+
id: l({ prefix: "lbr" }),
|
|
14
|
+
tenantId: h(),
|
|
15
|
+
board: p().maxLength(256).safe(),
|
|
16
|
+
periodId: p().maxLength(64).safe(),
|
|
17
|
+
ownerId: p().maxLength(256).externalId().sensitive("pii"),
|
|
18
|
+
score: s().safe(),
|
|
19
|
+
subscore: s().safe(),
|
|
20
|
+
numSubmits: u().safe(),
|
|
21
|
+
metadata: d().sensitive("pii"),
|
|
22
|
+
updatedAt: m().safe(),
|
|
23
|
+
bucket: p().maxLength(64).nullable().safe()
|
|
24
|
+
}).index("voltro_lb_records_rank_idx", [
|
|
25
|
+
"tenantId",
|
|
26
|
+
"board",
|
|
27
|
+
"periodId",
|
|
28
|
+
"score",
|
|
29
|
+
"subscore",
|
|
30
|
+
"updatedAt"
|
|
31
|
+
]).index(["tenantId", "ownerId"]).index([
|
|
32
|
+
"tenantId",
|
|
33
|
+
"board",
|
|
34
|
+
"periodId",
|
|
35
|
+
"bucket"
|
|
36
|
+
]), v = f(t, {
|
|
37
|
+
id: l({ prefix: "lbp" }),
|
|
38
|
+
tenantId: h(),
|
|
39
|
+
board: p().maxLength(256).safe(),
|
|
40
|
+
startsAt: m().safe(),
|
|
41
|
+
endsAt: m().nullable().safe(),
|
|
42
|
+
state: p().maxLength(16).oneOf([
|
|
43
|
+
"active",
|
|
44
|
+
"closed",
|
|
45
|
+
"archived"
|
|
46
|
+
]).safe(),
|
|
47
|
+
summary: d().sensitive("pii"),
|
|
48
|
+
previousPeriodId: p().maxLength(64).nullable().safe(),
|
|
49
|
+
requestKey: p().maxLength(64).nullable().serverOnly()
|
|
50
|
+
}).index([
|
|
51
|
+
"tenantId",
|
|
52
|
+
"board",
|
|
53
|
+
"startsAt"
|
|
54
|
+
]), y = f(i, {
|
|
55
|
+
id: l({ prefix: "lbs" }),
|
|
56
|
+
tenantId: h(),
|
|
57
|
+
board: p().maxLength(256).safe(),
|
|
58
|
+
periodId: p().maxLength(64).safe(),
|
|
59
|
+
ownerId: p().maxLength(256).externalId().sensitive("pii"),
|
|
60
|
+
requestKey: p().maxLength(64).serverOnly(),
|
|
61
|
+
record: d().sensitive("pii"),
|
|
62
|
+
roomId: p().maxLength(256).nullable().sensitive("pii"),
|
|
63
|
+
matchId: p().maxLength(256).nullable().sensitive("pii"),
|
|
64
|
+
at: m().safe(),
|
|
65
|
+
tournamentId: p().maxLength(256).nullable().safe()
|
|
66
|
+
}).index(["tenantId", "ownerId"]).index([
|
|
67
|
+
"tenantId",
|
|
68
|
+
"board",
|
|
69
|
+
"periodId"
|
|
70
|
+
]), b = f(r, {
|
|
71
|
+
id: l({ prefix: "lbo" }),
|
|
72
|
+
tenantId: h(),
|
|
73
|
+
subjectId: p().maxLength(256).nullable().externalId().sensitive("pii"),
|
|
74
|
+
erased: c().serverOnly(),
|
|
75
|
+
admission: u().serverOnly()
|
|
76
|
+
}).index(["tenantId", "subjectId"]), x = f(a, {
|
|
77
|
+
id: l({ prefix: "lbt" }),
|
|
78
|
+
tenantId: h(),
|
|
79
|
+
name: p().maxLength(256).safe(),
|
|
80
|
+
board: p().maxLength(256).safe(),
|
|
81
|
+
periodId: p().maxLength(64).safe(),
|
|
82
|
+
config: d().safe(),
|
|
83
|
+
admission: u().serverOnly(),
|
|
84
|
+
numEntries: u().serverOnly()
|
|
85
|
+
}).index(["tenantId", "name"]).index(["tenantId", "board"]), S = f(o, {
|
|
86
|
+
id: l({ prefix: "lbe" }),
|
|
87
|
+
tenantId: h(),
|
|
88
|
+
tournamentId: p().maxLength(64).safe(),
|
|
89
|
+
ownerId: p().maxLength(256).externalId().sensitive("pii"),
|
|
90
|
+
joinedAt: m().safe(),
|
|
91
|
+
attemptsLeft: u().safe()
|
|
92
|
+
}).index(["tenantId", "ownerId"]).index(["tenantId", "tournamentId"]), C = f("_voltro_lb_rating_pools", {
|
|
93
|
+
id: l({ prefix: "lbrp" }),
|
|
94
|
+
tenantId: h(),
|
|
95
|
+
name: p().maxLength(256).safe(),
|
|
96
|
+
config: d().safe(),
|
|
97
|
+
admission: u().serverOnly()
|
|
98
|
+
}).index(["tenantId", "name"]), w = f("_voltro_lb_ratings", {
|
|
99
|
+
id: l({ prefix: "lbrr" }),
|
|
100
|
+
tenantId: h(),
|
|
101
|
+
pool: p().maxLength(256).safe(),
|
|
102
|
+
ownerId: p().maxLength(256).externalId().sensitive("pii"),
|
|
103
|
+
state: d().sensitive("pii"),
|
|
104
|
+
games: u().safe(),
|
|
105
|
+
updatedAt: m().safe()
|
|
106
|
+
}).index(["tenantId", "pool"]).index(["tenantId", "ownerId"]), T = f("_voltro_lb_rating_matches", {
|
|
107
|
+
id: l({ prefix: "lbrm" }),
|
|
108
|
+
tenantId: h(),
|
|
109
|
+
pool: p().maxLength(256).safe(),
|
|
110
|
+
matchId: p().maxLength(256).nullable().sensitive("pii"),
|
|
111
|
+
requestKey: p().maxLength(64).serverOnly(),
|
|
112
|
+
state: p().maxLength(16).oneOf([
|
|
113
|
+
"prepared",
|
|
114
|
+
"applied",
|
|
115
|
+
"erased"
|
|
116
|
+
]).serverOnly(),
|
|
117
|
+
input: d().nullable().sensitive("pii"),
|
|
118
|
+
participants: u().safe(),
|
|
119
|
+
preparedAt: m().safe(),
|
|
120
|
+
appliedAt: m().nullable().safe()
|
|
121
|
+
}).index([
|
|
122
|
+
"tenantId",
|
|
123
|
+
"pool",
|
|
124
|
+
"state"
|
|
125
|
+
]), E = f("_voltro_lb_rating_results", {
|
|
126
|
+
id: l({ prefix: "lbrs" }),
|
|
127
|
+
tenantId: h(),
|
|
128
|
+
pool: p().maxLength(256).safe(),
|
|
129
|
+
matchKey: p().maxLength(64).serverOnly(),
|
|
130
|
+
ownerId: p().maxLength(256).externalId().sensitive("pii"),
|
|
131
|
+
previous: d().sensitive("pii"),
|
|
132
|
+
current: d().sensitive("pii"),
|
|
133
|
+
at: m().safe()
|
|
134
|
+
}).index(["tenantId", "ownerId"]).index([
|
|
135
|
+
"tenantId",
|
|
136
|
+
"pool",
|
|
137
|
+
"matchKey"
|
|
138
|
+
]), D = f("_voltro_lb_bucket_assignments", {
|
|
139
|
+
id: l({ prefix: "lbba" }),
|
|
140
|
+
tenantId: h(),
|
|
141
|
+
board: p().maxLength(256).safe(),
|
|
142
|
+
periodId: p().maxLength(64).safe(),
|
|
143
|
+
ownerId: p().maxLength(256).externalId().sensitive("pii"),
|
|
144
|
+
bucket: p().maxLength(64).safe(),
|
|
145
|
+
ordinal: u().safe(),
|
|
146
|
+
groupKey: p().maxLength(64).serverOnly(),
|
|
147
|
+
group: p().maxLength(256).nullable().sensitive("pii"),
|
|
148
|
+
assignedAt: m().safe()
|
|
149
|
+
}).index(["tenantId", "ownerId"]).index("voltro_lb_bucket_assignments_group_idx", [
|
|
150
|
+
"tenantId",
|
|
151
|
+
"board",
|
|
152
|
+
"periodId",
|
|
153
|
+
"groupKey"
|
|
154
|
+
]), O = f("_voltro_lb_league_members", {
|
|
155
|
+
id: l({ prefix: "lblm" }),
|
|
156
|
+
tenantId: h(),
|
|
157
|
+
league: p().maxLength(256).safe(),
|
|
158
|
+
ownerId: p().maxLength(256).externalId().sensitive("pii"),
|
|
159
|
+
division: p().maxLength(256).safe(),
|
|
160
|
+
updatedAt: m().safe()
|
|
161
|
+
}).index(["tenantId", "ownerId"]).index("voltro_lb_league_members_division_idx", [
|
|
162
|
+
"tenantId",
|
|
163
|
+
"league",
|
|
164
|
+
"division"
|
|
165
|
+
]).index("voltro_lb_league_members_league_idx", ["league", "tenantId"]), k = f("_voltro_lb_league_rolls", {
|
|
166
|
+
id: l({ prefix: "lblr" }),
|
|
167
|
+
tenantId: h(),
|
|
168
|
+
league: p().maxLength(256).safe(),
|
|
169
|
+
movements: d().sensitive("pii"),
|
|
170
|
+
at: m().safe()
|
|
171
|
+
}).index(["tenantId", "league"]), A = [
|
|
172
|
+
g,
|
|
173
|
+
_,
|
|
174
|
+
v,
|
|
175
|
+
y,
|
|
176
|
+
b,
|
|
177
|
+
x,
|
|
178
|
+
S,
|
|
179
|
+
C,
|
|
180
|
+
w,
|
|
181
|
+
T,
|
|
182
|
+
E,
|
|
183
|
+
D,
|
|
184
|
+
O,
|
|
185
|
+
k
|
|
186
|
+
];
|
|
187
|
+
//#endregion
|
|
188
|
+
export { g as leaderboardBoardsTable, D as leaderboardBucketAssignmentsTable, O as leaderboardLeagueMembersTable, k as leaderboardLeagueRollsTable, v as leaderboardPeriodsTable, T as leaderboardRatingMatchesTable, C as leaderboardRatingPoolsTable, E as leaderboardRatingResultsTable, w as leaderboardRatingsTable, _ as leaderboardRecordsTable, b as leaderboardSubjectsTable, y as leaderboardSubmissionsTable, A as leaderboardTables, S as leaderboardTournamentEntriesTable, x as leaderboardTournamentsTable };
|