@aoi-js/aka 0.0.3 → 0.0.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aoi-js/aka",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "packageManager": "yarn@4.0.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -28,6 +28,7 @@
28
28
  "@typescript-eslint/eslint-plugin": "^6.19.0",
29
29
  "@typescript-eslint/parser": "^6.19.0",
30
30
  "eslint": "^8.56.0",
31
+ "pino-pretty": "^10.3.1",
31
32
  "prettier": "^3.2.4",
32
33
  "typescript": "^5.3.3",
33
34
  "undici-types": "^6.4.0"
@@ -40,6 +41,7 @@
40
41
  },
41
42
  "scripts": {
42
43
  "build": "tsc",
43
- "prepack": "run build"
44
+ "prepack": "run build",
45
+ "dev": "aka | pino-pretty"
44
46
  }
45
47
  }
package/lib/calc/base.js DELETED
@@ -1,11 +0,0 @@
1
- export class RanklistCalculator {
2
- db;
3
- client;
4
- logger;
5
- constructor(db, client, logger) {
6
- this.db = db;
7
- this.client = client;
8
- this.logger = logger;
9
- }
10
- }
11
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/calc/base.ts"],"names":[],"mappings":"AASA,MAAM,OAAgB,kBAAkB;IAE1B;IACA;IACA;IAHZ,YACY,EAAS,EACT,MAAiB,EACjB,MAAc;QAFd,OAAE,GAAF,EAAE,CAAO;QACT,WAAM,GAAN,MAAM,CAAW;QACjB,WAAM,GAAN,MAAM,CAAQ;IACvB,CAAC;CAIL"}
package/lib/calc/basic.js DELETED
@@ -1,96 +0,0 @@
1
- import { RanklistCalculator } from './base.js';
2
- export class BasicCalculator extends RanklistCalculator {
3
- topstars = 0;
4
- warnings = '';
5
- async loadConfig(dict) {
6
- const topstars = +dict.topstars;
7
- if (!Number.isInteger(topstars) || topstars < 0 || topstars > 20) {
8
- this.warnings += 'topstars must be an integer between 0 and 20\n';
9
- }
10
- else {
11
- this.topstars = topstars;
12
- }
13
- return {
14
- shouldSyncParticipants: true,
15
- shouldSyncSolutions: !!this.topstars
16
- };
17
- }
18
- async calculate(contestId, taskId) {
19
- const problems = await this.client.problems(contestId, taskId);
20
- const problemIdList = problems
21
- .sort((a, b) => a.settings.slug.localeCompare(b.settings.slug))
22
- .map((p) => p._id);
23
- const participants = await this.db.participants.find({ contestId }).toArray();
24
- const participantRecords = participants
25
- .map(({ userId, tags, results }) => ({
26
- userId,
27
- tags,
28
- scores: problemIdList.map((pid) => results[pid]?.lastSolution.score ?? 0)
29
- }))
30
- .map((record) => ({
31
- ...record,
32
- totalScore: record.scores.reduce((a, b) => a + b, 0)
33
- }))
34
- .sort((a, b) => b.totalScore - a.totalScore)
35
- .map((record, index) => ({
36
- ...record,
37
- rank: index + 1
38
- }));
39
- participantRecords.forEach((record, index, arr) => {
40
- if (index > 0 && record.totalScore === arr[index - 1].totalScore) {
41
- record.rank = arr[index - 1].rank;
42
- }
43
- });
44
- let topstar;
45
- if (this.topstars) {
46
- const topstarUserIdList = participantRecords
47
- .slice(0, this.topstars)
48
- .filter((record) => record.totalScore > 0)
49
- .map((p) => p.userId);
50
- topstar = {
51
- list: await Promise.all(topstarUserIdList.map(async (userId) => {
52
- const solutions = await this.db.solutions
53
- .find({ contestId, userId })
54
- .sort({ completedAt: 1 })
55
- .toArray();
56
- const currentScores = Object.create(null);
57
- const mutations = [];
58
- for (const { problemId, score, submittedAt } of solutions) {
59
- currentScores[problemId] = score;
60
- mutations.push({
61
- score: Object.values(currentScores).reduce((a, b) => a + b, 0),
62
- ts: submittedAt
63
- });
64
- }
65
- return { userId, mutations };
66
- }))
67
- };
68
- }
69
- return {
70
- topstar,
71
- participant: {
72
- list: participantRecords.map(({ userId, rank, tags, scores, totalScore }) => ({
73
- userId,
74
- rank,
75
- tags,
76
- columns: [
77
- ...scores.map((score) => ({ content: `${score}` })),
78
- { content: `${totalScore}` }
79
- ]
80
- })),
81
- columns: [
82
- ...problems.map(({ title, settings: { slug } }) => ({
83
- name: slug,
84
- description: title
85
- })),
86
- { name: 'Total', description: 'Total Score' }
87
- ]
88
- },
89
- metadata: {
90
- generatedAt: Date.now(),
91
- description: 'Basic ranklist generated'
92
- }
93
- };
94
- }
95
- }
96
- //# sourceMappingURL=basic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/calc/basic.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { Logger } from 'pino';
2
- import { AkaClient } from '../client.js';
3
- import { AkaDb } from '../db.js';
4
- import { RanklistCalculator } from './base.js';
5
- import { BasicCalculator } from './basic.js';
6
- import { PlusCalculator } from './plus.js';
7
- export declare const calculators: {
8
- basic: typeof BasicCalculator;
9
- plus: typeof PlusCalculator;
10
- };
11
- export declare function getCalculator(db: AkaDb, client: AkaClient, logger: Logger, dict: Record<string, string>): RanklistCalculator | null;
package/lib/calc/index.js DELETED
@@ -1,13 +0,0 @@
1
- import { BasicCalculator } from './basic.js';
2
- import { PlusCalculator } from './plus.js';
3
- export const calculators = {
4
- basic: BasicCalculator,
5
- plus: PlusCalculator
6
- };
7
- export function getCalculator(db, client, logger, dict) {
8
- const type = dict.type ?? 'basic';
9
- if (!Object.hasOwn(calculators, type))
10
- return null;
11
- return new calculators[type](db, client, logger);
12
- }
13
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/calc/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,cAAc;CACrB,CAAA;AAED,MAAM,UAAU,aAAa,CAC3B,EAAS,EACT,MAAiB,EACjB,MAAc,EACd,IAA4B;IAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAA;IACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAClD,OAAO,IAAI,WAAW,CAAC,IAAgC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAC9E,CAAC"}
@@ -1,28 +0,0 @@
1
- import { IRanklist } from '../client.js';
2
- import { IRanklistSyncOptions, RanklistCalculator } from './base.js';
3
- declare const reduceMethods: readonly ["override", "max", "min"];
4
- type ReduceMethod = (typeof reduceMethods)[number];
5
- declare const totalReduceMethods: readonly ["sum", "max", "min"];
6
- type TotalReduceMethod = (typeof totalReduceMethods)[number];
7
- export declare class PlusCalculator extends RanklistCalculator {
8
- topstars: number;
9
- warnings: string;
10
- participantTagWhitelist?: string[];
11
- participantTagBlacklist?: string[];
12
- problemTagWhitelist?: string[];
13
- problemTagBlacklist?: string[];
14
- problemSlugFilter?: RegExp;
15
- problemTitleFilter?: RegExp;
16
- scoreReduceMethod: ReduceMethod;
17
- totalReduceMethod: TotalReduceMethod;
18
- private _reduceScore;
19
- private _reduceTotal;
20
- loadConfig(dict: Record<string, string>): Promise<IRanklistSyncOptions>;
21
- private _loadTotalReduceConfig;
22
- private _loadScoreReduceConfig;
23
- private _loadFilterConfig;
24
- private _getProblems;
25
- private _getParticipants;
26
- calculate(contestId: string, taskId: string): Promise<IRanklist>;
27
- }
28
- export {};
package/lib/calc/plus.js DELETED
@@ -1,228 +0,0 @@
1
- import { RanklistCalculator } from './base.js';
2
- const reduceMethods = ['override', 'max', 'min'];
3
- const totalReduceMethods = ['sum', 'max', 'min'];
4
- export class PlusCalculator extends RanklistCalculator {
5
- topstars = 0;
6
- warnings = '';
7
- participantTagWhitelist;
8
- participantTagBlacklist;
9
- problemTagWhitelist;
10
- problemTagBlacklist;
11
- problemSlugFilter;
12
- problemTitleFilter;
13
- scoreReduceMethod = 'override';
14
- totalReduceMethod = 'sum';
15
- _reduceScore = (a, b) => b;
16
- _reduceTotal = (a, b) => a + b;
17
- async loadConfig(dict) {
18
- const topstars = +dict.topstars;
19
- if (!Number.isInteger(topstars) || topstars < 0 || topstars > 20) {
20
- this.warnings += 'topstars must be an integer between 0 and 20\n';
21
- }
22
- else {
23
- this.topstars = topstars;
24
- }
25
- this._loadFilterConfig(dict);
26
- this._loadScoreReduceConfig(dict);
27
- this._loadTotalReduceConfig(dict);
28
- return {
29
- shouldSyncParticipants: true,
30
- shouldSyncSolutions: !!this.topstars || this.scoreReduceMethod !== 'override'
31
- };
32
- }
33
- _loadTotalReduceConfig(dict) {
34
- if (dict.totalReduceMethod) {
35
- if (totalReduceMethods.includes(dict.totalReduceMethod)) {
36
- this.totalReduceMethod = dict.totalReduceMethod;
37
- switch (this.totalReduceMethod) {
38
- case 'sum':
39
- this._reduceTotal = (a, b) => a + b;
40
- break;
41
- case 'max':
42
- this._reduceTotal = Math.max;
43
- break;
44
- case 'min':
45
- this._reduceTotal = Math.min;
46
- break;
47
- }
48
- }
49
- else {
50
- this.warnings += `totalReduceMethod must be one of ${totalReduceMethods.join(', ')}\n`;
51
- }
52
- }
53
- }
54
- _loadScoreReduceConfig(dict) {
55
- if (dict.scoreReduceMethod) {
56
- if (reduceMethods.includes(dict.scoreReduceMethod)) {
57
- this.scoreReduceMethod = dict.scoreReduceMethod;
58
- switch (this.scoreReduceMethod) {
59
- case 'override':
60
- this._reduceScore = (a, b) => b;
61
- break;
62
- case 'max':
63
- this._reduceScore = Math.max;
64
- break;
65
- case 'min':
66
- this._reduceScore = Math.min;
67
- break;
68
- }
69
- }
70
- else {
71
- this.warnings += `scoreReduceMethod must be one of ${reduceMethods.join(', ')}\n`;
72
- }
73
- }
74
- }
75
- _loadFilterConfig(dict) {
76
- if (dict.participantTagWhitelist) {
77
- this.participantTagWhitelist = dict.participantTagWhitelist.split(',');
78
- }
79
- if (dict.participantTagBlacklist) {
80
- this.participantTagBlacklist = dict.participantTagBlacklist.split(',');
81
- }
82
- if (dict.problemTagWhitelist) {
83
- this.problemTagWhitelist = dict.problemTagWhitelist.split(',');
84
- }
85
- if (dict.problemTagBlacklist) {
86
- this.problemTagBlacklist = dict.problemTagBlacklist.split(',');
87
- }
88
- if (dict.problemSlugFilter) {
89
- this.problemSlugFilter = new RegExp(dict.problemSlugFilter);
90
- }
91
- if (dict.problemTitleFilter) {
92
- this.problemTitleFilter = new RegExp(dict.problemTitleFilter);
93
- }
94
- }
95
- async _getProblems(contestId, taskId) {
96
- let problems = await this.client.problems(contestId, taskId);
97
- const { problemTagWhitelist, problemTagBlacklist, problemSlugFilter, problemTitleFilter } = this;
98
- if (problemTagWhitelist) {
99
- problems = problems.filter((p) => p.tags.some((t) => problemTagWhitelist.includes(t)));
100
- }
101
- if (problemTagBlacklist) {
102
- problems = problems.filter((p) => !p.tags.some((t) => problemTagBlacklist.includes(t)));
103
- }
104
- if (problemSlugFilter) {
105
- problems = problems.filter((p) => problemSlugFilter.test(p.settings.slug));
106
- }
107
- if (problemTitleFilter) {
108
- problems = problems.filter((p) => problemTitleFilter.test(p.title));
109
- }
110
- return problems;
111
- }
112
- async _getParticipants(contestId) {
113
- let participants = await this.db.participants.find({ contestId }).toArray();
114
- const { participantTagWhitelist, participantTagBlacklist } = this;
115
- if (participantTagWhitelist) {
116
- participants = participants.filter((p) => p.tags && p.tags.some((t) => participantTagWhitelist.includes(t)));
117
- }
118
- if (participantTagBlacklist) {
119
- participants = participants.filter((p) => !p.tags || !p.tags.some((t) => participantTagBlacklist.includes(t)));
120
- }
121
- return participants;
122
- }
123
- async calculate(contestId, taskId) {
124
- const problems = await this._getProblems(contestId, taskId);
125
- const problemIdList = problems
126
- .sort((a, b) => a.settings.slug.localeCompare(b.settings.slug))
127
- .map((p) => p._id);
128
- const participants = await this._getParticipants(contestId);
129
- const participantsWithScores = participants.map(({ userId, tags, results }) => ({
130
- userId,
131
- tags,
132
- scores: problemIdList.map((pid) => results[pid]?.lastSolution.score ?? 0)
133
- }));
134
- if (this.scoreReduceMethod !== 'override') {
135
- // We need to manually calculate the scores
136
- const scores = new Map();
137
- const cursor = this.db.solutions.find({ contestId, problemId: { $in: problemIdList } });
138
- for await (const solution of cursor) {
139
- const { userId, problemId, score } = solution;
140
- if (!scores.has(userId)) {
141
- scores.set(userId, Object.create(null));
142
- }
143
- const userScores = scores.get(userId);
144
- if (Object.hasOwn(userScores, problemId)) {
145
- userScores[problemId] = this._reduceScore(userScores[problemId], score);
146
- }
147
- else {
148
- userScores[problemId] = score;
149
- }
150
- }
151
- for (const participant of participantsWithScores) {
152
- const userScores = scores.get(participant.userId) ?? Object.create(null);
153
- participant.scores = problemIdList.map((pid) => userScores[pid] ?? 0);
154
- }
155
- }
156
- const participantRecords = participantsWithScores
157
- .map((record) => ({
158
- ...record,
159
- totalScore: record.scores.reduce((a, b) => this._reduceTotal(a, b), 0)
160
- }))
161
- .sort((a, b) => b.totalScore - a.totalScore)
162
- .map((record, index) => ({
163
- ...record,
164
- rank: index + 1
165
- }));
166
- participantRecords.forEach((record, index, arr) => {
167
- if (index > 0 && record.totalScore === arr[index - 1].totalScore) {
168
- record.rank = arr[index - 1].rank;
169
- }
170
- });
171
- let topstar;
172
- if (this.topstars) {
173
- const topstarUserIdList = participantRecords
174
- .slice(0, this.topstars)
175
- .filter((record) => record.totalScore > 0)
176
- .map((p) => p.userId);
177
- topstar = {
178
- list: await Promise.all(topstarUserIdList.map(async (userId) => {
179
- const solutions = await this.db.solutions
180
- .find({ contestId, userId, problemId: { $in: problemIdList } })
181
- .sort({ completedAt: 1 })
182
- .toArray();
183
- const currentScores = Object.create(null);
184
- const mutations = [];
185
- for (const { problemId, score, submittedAt } of solutions) {
186
- if (Object.hasOwn(currentScores, problemId)) {
187
- currentScores[problemId] = this._reduceScore(currentScores[problemId], score);
188
- }
189
- else {
190
- currentScores[problemId] = score;
191
- }
192
- mutations.push({
193
- score: Object.values(currentScores).reduce((a, b) => this._reduceTotal(a, b), 0),
194
- ts: submittedAt
195
- });
196
- }
197
- return { userId, mutations };
198
- }))
199
- };
200
- }
201
- return {
202
- topstar,
203
- participant: {
204
- list: participantRecords.map(({ userId, rank, tags, scores, totalScore }) => ({
205
- userId,
206
- rank,
207
- tags,
208
- columns: [
209
- ...scores.map((score) => ({ content: `${score}` })),
210
- { content: `${totalScore}` }
211
- ]
212
- })),
213
- columns: [
214
- ...problems.map(({ title, settings: { slug } }) => ({
215
- name: slug,
216
- description: title
217
- })),
218
- { name: 'Total', description: 'Total Score' }
219
- ]
220
- },
221
- metadata: {
222
- generatedAt: Date.now(),
223
- description: 'Basic ranklist generated'
224
- }
225
- };
226
- }
227
- }
228
- //# sourceMappingURL=plus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plus.js","sourceRoot":"","sources":["../../src/calc/plus.ts"],"names":[],"mappings":"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"}
package/lib/client.js DELETED
@@ -1,57 +0,0 @@
1
- import ky from 'ky';
2
- import metadata from '../package.json' assert { type: 'json' };
3
- export class AkaClient {
4
- config;
5
- http;
6
- constructor(config) {
7
- this.config = config;
8
- this.http = ky.create({
9
- prefixUrl: config.server,
10
- headers: {
11
- 'X-AOI-Runner-Id': config.runnerId,
12
- 'X-AOI-Runner-Key': config.runnerKey,
13
- 'User-Agent': `Aka/${metadata.version}`
14
- }
15
- });
16
- }
17
- async poll() {
18
- return this.http.post('api/runner/ranklist/poll').json();
19
- }
20
- async complete(contestId, taskId, payload) {
21
- return this.http
22
- .post(`api/runner/ranklist/task/${contestId}/${taskId}/complete`, { json: payload })
23
- .json();
24
- }
25
- async problems(contestId, taskId) {
26
- return this.http.get(`api/runner/ranklist/task/${contestId}/${taskId}/problems`).json();
27
- }
28
- async participants(contestId, taskId, since, lastId) {
29
- return this.http
30
- .get(`api/runner/ranklist/task/${contestId}/${taskId}/participants`, {
31
- searchParams: {
32
- since,
33
- lastId
34
- }
35
- })
36
- .json();
37
- }
38
- async solutions(contestId, taskId, since, lastId) {
39
- return this.http
40
- .get(`api/runner/ranklist/task/${contestId}/${taskId}/solutions`, {
41
- searchParams: {
42
- since,
43
- lastId
44
- }
45
- })
46
- .json();
47
- }
48
- async uploadUrls(contestId, taskId) {
49
- return this.http.get(`api/runner/ranklist/task/${contestId}/${taskId}/uploadUrls`).json();
50
- }
51
- async uploadRanklist(url, ranklist) {
52
- return ky.put(url, {
53
- json: ranklist
54
- });
55
- }
56
- }
57
- //# sourceMappingURL=client.js.map
package/lib/client.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,MAAM,IAAI,CAAA;AACxC,OAAO,QAAQ,MAAM,iBAAiB,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,CAAA;AA2F9D,MAAM,OAAO,SAAS;IAEA;IADpB,IAAI,CAAY;IAChB,YAAoB,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;QAC1C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,OAAO,EAAE;gBACP,iBAAiB,EAAE,MAAM,CAAC,QAAQ;gBAClC,kBAAkB,EAAE,MAAM,CAAC,SAAS;gBACpC,YAAY,EAAE,OAAO,QAAQ,CAAC,OAAO,EAAE;aACxC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAalD,CAAA;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,MAAc,EAAE,OAAsC;QACtF,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,4BAA4B,SAAS,IAAI,MAAM,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;aACnF,IAAI,EAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,MAAc;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,WAAW,CAAC,CAAC,IAAI,EAYlF,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,MAAc,EAAE,KAAa,EAAE,MAAc;QACjF,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,eAAe,EAAE;YACnE,YAAY,EAAE;gBACZ,KAAK;gBACL,MAAM;aACP;SACF,CAAC;aACD,IAAI,EAAkB,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,KAAa,EAAE,MAAc;QAC9E,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,YAAY,EAAE;YAChE,YAAY,EAAE;gBACZ,KAAK;gBACL,MAAM;aACP;SACF,CAAC;aACD,IAAI,EAAe,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,aAAa,CAAC,CAAC,IAAI,EAKpF,CAAA;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,QAAmB;QACnD,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;YACjB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;IACJ,CAAC;CACF"}
package/lib/db.js DELETED
@@ -1,16 +0,0 @@
1
- import { MongoClient } from 'mongodb';
2
- export class AkaDb {
3
- config;
4
- mongo;
5
- db;
6
- participants;
7
- solutions;
8
- constructor(config) {
9
- this.config = config;
10
- this.mongo = new MongoClient(config.mongoUrl);
11
- this.db = this.mongo.db('aka');
12
- this.participants = this.db.collection('participants');
13
- this.solutions = this.db.collection('solutions');
14
- }
15
- }
16
- //# sourceMappingURL=db.js.map
package/lib/db.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAOrC,MAAM,OAAO,KAAK;IAMI;IALpB,KAAK,CAAA;IACL,EAAE,CAAA;IACF,YAAY,CAAA;IACZ,SAAS,CAAA;IAET,YAAoB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC7C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAuC,cAAc,CAAC,CAAA;QAC5F,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAoC,WAAW,CAAC,CAAA;IACrF,CAAC;CACF"}
package/lib/index.js DELETED
@@ -1,121 +0,0 @@
1
- import dotenv from 'dotenv';
2
- import { AkaClient } from './client.js';
3
- import { getCalculator } from './calc/index.js';
4
- import { AkaDb } from './db.js';
5
- import { pino } from 'pino';
6
- import { wait } from './utils.js';
7
- export class Aka {
8
- config;
9
- client;
10
- db;
11
- logger;
12
- constructor(config) {
13
- this.config = config;
14
- this.client = new AkaClient(config.client);
15
- this.db = new AkaDb(config.db);
16
- this.logger = pino();
17
- }
18
- async syncSolutions(contestId, taskId, limit) {
19
- this.logger.info({ contestId, taskId }, `Start to sync solutions with limit=${limit}`);
20
- const last = await this.db.solutions.findOne({ contestId }, { sort: { completedAt: -1, _id: -1 } });
21
- let since = 0, lastId = '00000000-0000-0000-0000-000000000000';
22
- if (last) {
23
- since = last.completedAt;
24
- lastId = last._id;
25
- }
26
- for (;;) {
27
- this.logger.info({ contestId, taskId }, `Sync solutions from since=${since} lastId=${lastId}`);
28
- const solutions = await this.client.solutions(contestId, taskId, since, lastId);
29
- for (const solution of solutions) {
30
- await this.db.solutions.updateOne({ _id: solution._id }, { $set: { ...solution, contestId } }, { upsert: true });
31
- }
32
- if (!solutions.length) {
33
- this.logger.info({ contestId, taskId }, `No more solutions`);
34
- break;
35
- }
36
- since = solutions[solutions.length - 1].completedAt;
37
- lastId = solutions[solutions.length - 1]._id;
38
- if (since >= limit) {
39
- this.logger.info({ contestId, taskId }, `Reach limit=${limit}`);
40
- break;
41
- }
42
- }
43
- return Math.max(since, limit);
44
- }
45
- async syncParticipants(contestId, taskId, limit) {
46
- this.logger.info({ contestId, taskId }, `Start to sync participants with limit=${limit}`);
47
- const last = await this.db.participants.findOne({ contestId }, { sort: { updatedAt: -1, _id: -1 } });
48
- let since = 0, lastId = '00000000-0000-0000-0000-000000000000';
49
- if (last) {
50
- since = last.updatedAt;
51
- lastId = last._id;
52
- }
53
- for (;;) {
54
- this.logger.info({ contestId, taskId }, `Sync participants from since=${since} lastId=${lastId}`);
55
- const participants = await this.client.participants(contestId, taskId, since, lastId);
56
- for (const participant of participants) {
57
- await this.db.participants.updateOne({ _id: participant._id }, { $set: { ...participant, contestId } }, { upsert: true });
58
- }
59
- if (!participants.length) {
60
- this.logger.info({ contestId, taskId }, `No more participants`);
61
- break;
62
- }
63
- since = participants[participants.length - 1].updatedAt;
64
- lastId = participants[participants.length - 1]._id;
65
- if (since >= limit) {
66
- this.logger.info({ contestId, taskId }, `Reach limit=${limit}`);
67
- break;
68
- }
69
- }
70
- return Math.max(since, limit);
71
- }
72
- async poll() {
73
- const { contestId, taskId, ranklistUpdatedAt, ranklists } = await this.client.poll();
74
- if (!contestId)
75
- return false;
76
- this.logger.info({ contestId, taskId }, `Poll ${ranklists.length} ranklists at ${ranklistUpdatedAt}`);
77
- let limit = ranklistUpdatedAt;
78
- const configDicts = ranklists.map((r) => dotenv.parse(r.settings.config ?? ''));
79
- const calculators = configDicts.map((dict) => getCalculator(this.db, this.client, this.logger, dict));
80
- const syncOptions = await Promise.all(calculators.map(async (calc, i) => calc && (await calc.loadConfig(configDicts[i])))).then((list) => list.filter((opt) => !!opt));
81
- const shouldSyncParticipants = syncOptions.some((opt) => opt.shouldSyncParticipants);
82
- const shouldSyncSolutions = syncOptions.some((opt) => opt.shouldSyncSolutions);
83
- if (shouldSyncParticipants) {
84
- limit = await this.syncParticipants(contestId, taskId, limit);
85
- }
86
- if (shouldSyncSolutions) {
87
- limit = await this.syncSolutions(contestId, taskId, limit);
88
- }
89
- this.logger.info({ contestId, taskId }, `Sync done, calculate ${ranklists.length} ranklists`);
90
- const urls = await this.client.uploadUrls(contestId, taskId);
91
- const urlDict = Object.fromEntries(urls.map(({ key, url }) => [key, url]));
92
- await Promise.all(ranklists.map(async (ranklist, index) => {
93
- const calculator = calculators[index];
94
- const url = urlDict[ranklist.key];
95
- if (!calculator || !url) {
96
- this.logger.warn({ contestId, taskId, key: ranklist.key }, `No calculator or url`);
97
- return;
98
- }
99
- const result = await calculator.calculate(contestId, taskId);
100
- await this.client.uploadRanklist(url, result);
101
- }));
102
- await this.client.complete(contestId, taskId, { ranklistUpdatedAt: limit });
103
- return true;
104
- }
105
- async start() {
106
- this.logger.info(`Start to poll`);
107
- for (;;) {
108
- try {
109
- const success = await this.poll();
110
- if (!success) {
111
- await wait(1000);
112
- }
113
- }
114
- catch (err) {
115
- this.logger.error(err);
116
- await wait(1000);
117
- }
118
- }
119
- }
120
- }
121
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/utils.js DELETED
@@ -1,4 +0,0 @@
1
- export function wait(ms) {
2
- return new Promise((resolve) => setTimeout(resolve, ms));
3
- }
4
- //# sourceMappingURL=utils.js.map
package/lib/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,EAAU;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC"}