@mshowes/brackets-manager 1.8.1

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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/dist/base/getter.d.ts +272 -0
  4. package/dist/base/getter.d.ts.map +1 -0
  5. package/dist/base/getter.js +545 -0
  6. package/dist/base/getter.js.map +1 -0
  7. package/dist/base/stage/creator.d.ts +269 -0
  8. package/dist/base/stage/creator.d.ts.map +1 -0
  9. package/dist/base/stage/creator.js +735 -0
  10. package/dist/base/stage/creator.js.map +1 -0
  11. package/dist/base/updater.d.ts +121 -0
  12. package/dist/base/updater.d.ts.map +1 -0
  13. package/dist/base/updater.js +323 -0
  14. package/dist/base/updater.js.map +1 -0
  15. package/dist/create.d.ts +25 -0
  16. package/dist/create.d.ts.map +1 -0
  17. package/dist/create.js +55 -0
  18. package/dist/create.js.map +1 -0
  19. package/dist/delete.d.ts +33 -0
  20. package/dist/delete.d.ts.map +1 -0
  21. package/dist/delete.js +57 -0
  22. package/dist/delete.js.map +1 -0
  23. package/dist/find.d.ts +60 -0
  24. package/dist/find.d.ts.map +1 -0
  25. package/dist/find.js +196 -0
  26. package/dist/find.js.map +1 -0
  27. package/dist/get.d.ts +121 -0
  28. package/dist/get.d.ts.map +1 -0
  29. package/dist/get.js +420 -0
  30. package/dist/get.js.map +1 -0
  31. package/dist/helpers.d.ts +804 -0
  32. package/dist/helpers.d.ts.map +1 -0
  33. package/dist/helpers.js +1897 -0
  34. package/dist/helpers.js.map +1 -0
  35. package/dist/index.d.ts +11 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +21 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/manager.d.ts +60 -0
  40. package/dist/manager.d.ts.map +1 -0
  41. package/dist/manager.js +189 -0
  42. package/dist/manager.js.map +1 -0
  43. package/dist/ordering.d.ts +7 -0
  44. package/dist/ordering.d.ts.map +1 -0
  45. package/dist/ordering.js +147 -0
  46. package/dist/ordering.js.map +1 -0
  47. package/dist/reset.d.ts +27 -0
  48. package/dist/reset.d.ts.map +1 -0
  49. package/dist/reset.js +82 -0
  50. package/dist/reset.js.map +1 -0
  51. package/dist/types.d.ts +260 -0
  52. package/dist/types.d.ts.map +1 -0
  53. package/dist/types.js +3 -0
  54. package/dist/types.js.map +1 -0
  55. package/dist/update.d.ts +111 -0
  56. package/dist/update.d.ts.map +1 -0
  57. package/dist/update.js +265 -0
  58. package/dist/update.js.map +1 -0
  59. package/package.json +67 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Corentin Girard
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # brackets-manager.js
2
+
3
+ [![npm](https://img.shields.io/npm/v/brackets-manager.svg)](https://www.npmjs.com/package/brackets-manager)
4
+ [![Downloads](https://img.shields.io/npm/dt/brackets-manager.svg)](https://www.npmjs.com/package/brackets-manager)
5
+ [![Package Quality](https://packagequality.com/shield/brackets-manager.svg)](https://packagequality.com/#?package=brackets-manager)
6
+
7
+ A simple library to manage tournament brackets (round-robin, single elimination, double elimination).
8
+
9
+ It contains all the logic needed to manage tournaments.
10
+
11
+ # Features
12
+
13
+ - [BYE](https://en.wikipedia.org/wiki/Bye_%28sports%29) supported: only during creation (for seeding and balancing).
14
+ - Forfeit supported: only during updates.
15
+ - Match supported (locked, waiting, ready, running, completed, archived).
16
+ - Multiple stages per tournament.
17
+ - So you can first have a round-robin stage (which will give you a seeding), then an elimination stage.
18
+
19
+ # Interface
20
+
21
+ - This library doesn't come with a GUI to create and update tournaments.
22
+ - You can use [brackets-viewer.js](https://github.com/Drarig29/brackets-viewer.js) to display the current state of a stage.
23
+ - It is designed to be used with any type of storage (JSON, in-memory, SQL, Redis, and more).
24
+ - Some storage implementations are already available (see the [documentation](https://drarig29.github.io/brackets-docs/user-guide/storage/)).
25
+
26
+ # Getting Started
27
+
28
+ For more information, see the [documentation](https://drarig29.github.io/brackets-docs/getting-started/).
29
+
30
+ ```js
31
+ const { JsonDatabase } = require('brackets-json-db');
32
+ const { BracketsManager } = require('brackets-manager');
33
+
34
+ const storage = new JsonDatabase();
35
+ const manager = new BracketsManager(storage);
36
+
37
+ // Create an elimination stage for tournament `3`.
38
+ await manager.create.stage({
39
+ tournamentId: 3,
40
+ name: 'Elimination stage',
41
+ type: 'double_elimination',
42
+ seeding: ['Team 1', 'Team 2', 'Team 3', 'Team 4'],
43
+ settings: { grandFinal: 'double' },
44
+ });
45
+
46
+ await manager.update.match({
47
+ id: 0, // First match of winner bracket (round 1)
48
+ opponent1: { score: 16, result: 'win' },
49
+ opponent2: { score: 12 },
50
+ });
51
+ ```
52
+
53
+ Rendered with the [viewer](https://github.com/Drarig29/brackets-viewer.js):
54
+
55
+ <img width="581" alt="image" src="https://user-images.githubusercontent.com/9317502/232905749-195c4f40-527c-4f17-a639-82f639432ed9.png">
56
+
57
+ As you can see, the [manager](https://drarig29.github.io/brackets-docs/reference/manager/classes/BracketsManager.html) is composed of submodules, which themselves have methods:
58
+ - [`create`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Create.html) module: [`manager.create.stage()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Create.html#stage)
59
+ - [`get`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Get.html) module: [`manager.get.seeding()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Get.html#seeding), [`manager.get.finalStandings()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Get.html#finalStandings), ...
60
+ - [`update`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Update.html) module: [`manager.update.match()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Update.html#match), [`manager.update.confirmSeeding()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Update.html#confirmSeeding), ...
61
+ - [`reset`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Reset.html) module: [`manager.reset.seeding()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Reset.html#seeding), [`manager.reset.matchGame()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Reset.html#matchResults), ...
62
+ - [`delete`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Delete.html) module: [`manager.delete.stage()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Delete.html#stage)
63
+ - [`find`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Find.html) module: [`manager.find.match()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Find.html#match), [`manager.find.nextMatches()`](https://drarig29.github.io/brackets-docs/reference/manager/classes/_internal_.Find.html#nextMatches), ...
64
+ - [`storage`](https://drarig29.github.io/brackets-docs/reference/manager/interfaces/Storage.html) module: this gives you access to the abstract storage interface. Use it as a last resort.
65
+
66
+ You can navigate the API documentation here: [`BracketsManager` class documentation](https://drarig29.github.io/brackets-docs/reference/manager/classes/BracketsManager.html)
67
+
68
+ All the helpers defined by the library are available [here](https://drarig29.github.io/brackets-docs/reference/manager/modules/helpers.html):
69
+
70
+ ```js
71
+ const { helpers } = require('brackets-manager');
72
+ ```
73
+
74
+ # Credits
75
+
76
+ This library has been created to be used by the [Nantarena](https://nantarena.net/).
77
+
78
+ It has been inspired by:
79
+
80
+ - [Toornament](https://www.toornament.com/en_US/) (configuration, API and data format)
81
+ - [Challonge's bracket generator](https://challonge.com/tournaments/bracket_generator)
82
+ - [jQuery Bracket](http://www.aropupu.fi/bracket/) (feature examples)
@@ -0,0 +1,272 @@
1
+ import { DeepPartial, Storage } from '../types';
2
+ import { Group, Match, MatchGame, Round, SeedOrdering, Stage, StageType, GroupType, Id } from 'brackets-model';
3
+ import { RoundPositionalInfo } from '../types';
4
+ import { StageCreator } from './stage/creator';
5
+ export declare class BaseGetter {
6
+ protected readonly storage: Storage;
7
+ /**
8
+ * Creates an instance of a Storage getter.
9
+ *
10
+ * @param storage The implementation of Storage.
11
+ */
12
+ constructor(storage: Storage);
13
+ /**
14
+ * Gets all the rounds that contain ordered participants.
15
+ *
16
+ * @param stage The stage to get rounds from.
17
+ */
18
+ protected getOrderedRounds(stage: Stage): Promise<Round[]>;
19
+ /**
20
+ * Gets all the rounds that contain ordered participants in a single elimination stage.
21
+ *
22
+ * @param stageId ID of the stage.
23
+ */
24
+ private getOrderedRoundsSingleElimination;
25
+ /**
26
+ * Gets all the rounds that contain ordered participants in a double elimination stage.
27
+ *
28
+ * @param stageId ID of the stage.
29
+ */
30
+ private getOrderedRoundsDoubleElimination;
31
+ /**
32
+ * Gets the positional information (number in group and total number of rounds in group) of a round based on its id.
33
+ *
34
+ * @param roundId ID of the round.
35
+ */
36
+ protected getRoundPositionalInfo(roundId: Id): Promise<RoundPositionalInfo>;
37
+ /**
38
+ * Gets the matches leading to the given match.
39
+ *
40
+ * @param match The current match.
41
+ * @param matchLocation Location of the current match.
42
+ * @param stage The parent stage.
43
+ * @param roundNumber Number of the round.
44
+ */
45
+ protected getPreviousMatches(match: Match, matchLocation: GroupType, stage: Stage, roundNumber: number): Promise<Match[]>;
46
+ /**
47
+ * Gets the matches leading to the given match, which is in a final group (consolation final or grand final).
48
+ *
49
+ * @param match The current match.
50
+ * @param stage The parent stage.
51
+ * @param roundNumber Number of the current round.
52
+ */
53
+ private getPreviousMatchesFinal;
54
+ /**
55
+ * Gets the matches leading to the given match, which is in a final group (consolation final).
56
+ *
57
+ * @param match The current match.
58
+ * @param stage The parent stage.
59
+ */
60
+ private getPreviousMatchesFinalSingleElimination;
61
+ /**
62
+ * Gets the matches leading to the given match, which is in a final group (grand final).
63
+ *
64
+ * @param match The current match.
65
+ * @param roundNumber Number of the current round.
66
+ */
67
+ private getPreviousMatchesFinalDoubleElimination;
68
+ /**
69
+ * Gets the matches leading to a given match from the loser bracket.
70
+ *
71
+ * @param match The current match.
72
+ * @param stage The parent stage.
73
+ * @param roundNumber Number of the round.
74
+ */
75
+ private getPreviousMatchesLB;
76
+ /**
77
+ * Gets the matches leading to a given match in a major round (every round of upper bracket or specific ones in lower bracket).
78
+ *
79
+ * @param match The current match.
80
+ * @param roundNumber Number of the round.
81
+ */
82
+ private getMatchesBeforeMajorRound;
83
+ /**
84
+ * Gets the matches leading to a given match in the first round of the loser bracket.
85
+ *
86
+ * @param match The current match.
87
+ * @param winnerBracketId ID of the winner bracket.
88
+ * @param roundNumberWB The number of the previous round in the winner bracket.
89
+ */
90
+ private getMatchesBeforeFirstRoundLB;
91
+ /**
92
+ * Gets the matches leading to a given match in a minor round of the loser bracket.
93
+ *
94
+ * @param match The current match.
95
+ * @param winnerBracketId ID of the winner bracket.
96
+ * @param roundNumber Number of the current round.
97
+ * @param roundNumberWB The number of the previous round in the winner bracket.
98
+ */
99
+ private getMatchesBeforeMinorRoundLB;
100
+ /**
101
+ * Gets the match(es) where the opponents of the current match will go just after.
102
+ *
103
+ * @param match The current match.
104
+ * @param matchLocation Location of the current match.
105
+ * @param stage The parent stage.
106
+ * @param roundNumber The number of the current round.
107
+ * @param roundCount Count of rounds.
108
+ */
109
+ protected getNextMatches(match: Match, matchLocation: GroupType, stage: Stage, roundNumber: number, roundCount: number): Promise<(Match | null)[]>;
110
+ /**
111
+ * Gets the match(es) where the opponents of the current match of winner bracket will go just after.
112
+ *
113
+ * @param match The current match.
114
+ * @param stage The parent stage.
115
+ * @param roundNumber The number of the current round.
116
+ * @param roundCount Count of rounds.
117
+ */
118
+ private getNextMatchesWB;
119
+ /**
120
+ * Gets the match(es) where the opponents of the current match of an upper bracket will go just after.
121
+ *
122
+ * @param match The current match.
123
+ * @param stage The parent stage.
124
+ * @param roundNumber The number of the current round.
125
+ * @param roundCount Count of rounds.
126
+ */
127
+ private getNextMatchesUpperBracket;
128
+ /**
129
+ * Gets the match(es) where the opponents of the current match of the unique bracket of a single elimination will go just after.
130
+ *
131
+ * @param match The current match.
132
+ * @param stageType Type of the stage.
133
+ * @param roundNumber The number of the current round.
134
+ * @param roundCount Count of rounds.
135
+ */
136
+ private getNextMatchesUpperBracketSingleElimination;
137
+ /**
138
+ * Gets the match(es) where the opponents of the current match of the unique bracket of a double elimination will go just after.
139
+ *
140
+ * @param match The current match.
141
+ * @param stageType Type of the stage.
142
+ * @param roundNumber The number of the current round.
143
+ * @param roundCount Count of rounds.
144
+ */
145
+ private getNextMatchesUpperBracketDoubleElimination;
146
+ /**
147
+ * Gets the match(es) where the opponents of the current match of loser bracket will go just after.
148
+ *
149
+ * @param match The current match.
150
+ * @param stage The parent stage.
151
+ * @param roundNumber The number of the current round.
152
+ * @param roundCount Count of rounds.
153
+ */
154
+ private getNextMatchesLB;
155
+ /**
156
+ * Gets the first match of the final group (consolation final or grand final).
157
+ *
158
+ * @param finalGroupId ID of the final group.
159
+ */
160
+ private getFinalGroupFirstMatch;
161
+ /**
162
+ * Gets the consolation final in a double elimination tournament.
163
+ *
164
+ * @param finalGroupId ID of the final group.
165
+ */
166
+ private getConsolationFinalMatchDoubleElimination;
167
+ /**
168
+ * Gets the match following the current match, which is in the final group (consolation final or grand final).
169
+ *
170
+ * @param match The current match.
171
+ * @param stage The parent stage.
172
+ * @param roundNumber The number of the current round.
173
+ * @param roundCount The count of rounds.
174
+ */
175
+ private getNextMatchesFinal;
176
+ /**
177
+ * Gets the match where the opponents of the current match of a winner bracket's major round will go just after.
178
+ *
179
+ * @param match The current match.
180
+ * @param roundNumber The number of the current round.
181
+ */
182
+ private getMatchAfterMajorRoundLB;
183
+ /**
184
+ * Gets the match where the opponents of the current match of a winner bracket's minor round will go just after.
185
+ *
186
+ * @param match The current match.
187
+ * @param roundNumber The number of the current round.
188
+ */
189
+ private getMatchAfterMinorRoundLB;
190
+ /**
191
+ * Returns the good seeding ordering based on the stage's type.
192
+ *
193
+ * @param stageType The type of the stage.
194
+ * @param create A reference to a Create instance.
195
+ */
196
+ protected static getSeedingOrdering(stageType: StageType, create: StageCreator): SeedOrdering;
197
+ /**
198
+ * Returns the matches which contain the seeding of a stage based on its type.
199
+ *
200
+ * @param stageId ID of the stage.
201
+ * @param stageType The type of the stage.
202
+ */
203
+ protected getSeedingMatches(stageId: Id, stageType: StageType): Promise<Match[] | null>;
204
+ /**
205
+ * Gets the first round of the upper bracket.
206
+ *
207
+ * @param stageId ID of the stage.
208
+ */
209
+ private getUpperBracketFirstRound;
210
+ /**
211
+ * Gets the last round of a group.
212
+ *
213
+ * @param groupId ID of the group.
214
+ */
215
+ private getLastRound;
216
+ /**
217
+ * Returns the id of the final group (containing consolation final, or grand final, or both).
218
+ *
219
+ * @param stageId ID of the stage.
220
+ * @param stageType Type of the stage.
221
+ */
222
+ private getFinalGroupId;
223
+ /**
224
+ * Gets the upper bracket (the only bracket if single elimination or the winner bracket in double elimination).
225
+ *
226
+ * @param stageId ID of the stage.
227
+ */
228
+ protected getUpperBracket(stageId: Id): Promise<Group>;
229
+ /**
230
+ * Gets the loser bracket.
231
+ *
232
+ * @param stageId ID of the stage.
233
+ */
234
+ protected getLoserBracket(stageId: Id): Promise<Group | null>;
235
+ /**
236
+ * Gets the corresponding match in the next round ("diagonal match") the usual way.
237
+ *
238
+ * Just like from Round 1 to Round 2 in a single elimination stage.
239
+ *
240
+ * @param groupId ID of the group.
241
+ * @param roundNumber Number of the round in its parent group.
242
+ * @param matchNumber Number of the match in its parent round.
243
+ */
244
+ private getDiagonalMatch;
245
+ /**
246
+ * Gets the corresponding match in the next round ("parallel match") the "major round to minor round" way.
247
+ *
248
+ * Just like from Round 1 to Round 2 in the loser bracket of a double elimination stage.
249
+ *
250
+ * @param groupId ID of the group.
251
+ * @param roundNumber Number of the round in its parent group.
252
+ * @param matchNumber Number of the match in its parent round.
253
+ */
254
+ private getParallelMatch;
255
+ /**
256
+ * Finds a match in a given group. The match must have the given number in a round of which the number in group is given.
257
+ *
258
+ * **Example:** In group of id 1, give me the 4th match in the 3rd round.
259
+ *
260
+ * @param groupId ID of the group.
261
+ * @param roundNumber Number of the round in its parent group.
262
+ * @param matchNumber Number of the match in its parent round.
263
+ */
264
+ protected findMatch(groupId: Id, roundNumber: number, matchNumber: number): Promise<Match>;
265
+ /**
266
+ * Finds a match game based on its `id` or based on the combination of its `parent_id` and `number`.
267
+ *
268
+ * @param game Values to change in a match game.
269
+ */
270
+ protected findMatchGame(game: DeepPartial<MatchGame>): Promise<MatchGame>;
271
+ }
272
+ //# sourceMappingURL=getter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getter.d.ts","sourceRoot":"","sources":["../../src/base/getter.ts"],"names":[],"mappings":"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"}