-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
38 lines (32 loc) · 1011 Bytes
/
index.ts
File metadata and controls
38 lines (32 loc) · 1011 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
export {
ChallengesService,
ParticipantsService,
ReviewsService,
SubmissionService,
AccessibleChallengesService,
JudgesService,
} from "./services";
import { Transformer } from "./models";
import { transformers } from "../../config/challenges-platform/transformers";
import { BaseTransformer } from "./models/Transformer";
class ChallengesPlatform {
transformers: { [name: string]: typeof Transformer };
constructor(transformers: { [name: string]: typeof Transformer }) {
this.transformers = { ...transformers };
}
addTransformer(name: string, transformer: typeof Transformer) {
this.transformers[name] = transformer;
}
findTransformer(name: string): typeof Transformer {
if (name === "base") {
return BaseTransformer;
}
if (!this.transformers[name]) {
throw new Error(`Transformer not found: ${name}`);
}
return this.transformers[name];
}
}
export const challengesPlatform: ChallengesPlatform = new ChallengesPlatform(
transformers,
);