@oathompsonjones/mini-games 1.0.6 → 1.0.9

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.
@@ -9,7 +9,8 @@ import Board from "./board.js";
9
9
  import Console from "../../console.js";
10
10
  /**
11
11
  * The default rendering function for TicTacToe.
12
- * @param controller The controller to render.
12
+ * @template T - The type of the game ID.
13
+ * @param controller - The controller to render.
13
14
  */
14
15
  function defaultRender(controller) {
15
16
  Console.clear();
@@ -18,21 +19,26 @@ function defaultRender(controller) {
18
19
  if (winner !== false)
19
20
  Console.writeLine(winner === null ? "It's a tie!" : `Player ${winner + 1} wins!`);
20
21
  }
22
+ /**
23
+ * A game of TicTacToe.
24
+ * @template T - The type of the game ID.
25
+ */
21
26
  let TicTacToe = class TicTacToe extends Base {
22
27
  /**
23
28
  * Creates a new TicTacToe game.
24
- * @param playerOneType The type of player one.
25
- * @param playerTwoType The type of player two.
26
- * @param options The options for the game.
29
+ * @param playerOneType - The type of player one (human or CPU).
30
+ * @param playerTwoType - The type of player two (human or CPU).
31
+ * @param options - The options for the game.
27
32
  */
28
33
  constructor(playerOneType, playerTwoType, options) {
29
- super([playerOneType, playerTwoType], new Board(), options?.renderer ?? defaultRender, options?.id, options?.onEnd, options?.onInvalidInput);
34
+ super([playerOneType, playerTwoType], new Board(), options.renderer ?? defaultRender, options.id, options.onEnd, options.onInvalidInput);
30
35
  }
31
36
  /**
32
37
  * Calculates the CPU's move.
33
- * @param difficulty The difficulty of the CPU.
34
- * @param algorithm The algorithm to use.
38
+ * @param difficulty - The difficulty of the CPU.
39
+ * @param algorithm - The algorithm to use.
35
40
  * @returns The CPU's move.
41
+ * @throws {Error} An error if the difficulty is invalid.
36
42
  */
37
43
  determineCPUMove(difficulty, algorithm = "alphabeta") {
38
44
  const { emptyCells } = this.board;
@@ -53,10 +59,11 @@ let TicTacToe = class TicTacToe extends Base {
53
59
  }
54
60
  /**
55
61
  * Finds the optimal move for the current player.
56
- * @param algorithm The algorithm to use.
57
- * @param maxDepth The maximum depth to search.
58
- * @param randomMove The move to return if the board is empty.
59
- * @returns The optimal move.
62
+ * @param algorithm - The algorithm to use.
63
+ * @param algorithm.algorithm - The algorithm to use.
64
+ * @param algorithm.randomMove - The move to return if the board is empty.
65
+ * @returns The optimal move for the current player.
66
+ * @throws {Error} An error if the algorithm is invalid.
60
67
  */
61
68
  findOptimalMove({ algorithm, randomMove } = { algorithm: "alphabeta", randomMove: { x: 2, y: 2 } }) {
62
69
  if (this.board.isEmpty)
@@ -67,7 +74,6 @@ let TicTacToe = class TicTacToe extends Base {
67
74
  };
68
75
  TicTacToe = __decorate([
69
76
  Game
70
- /** A game of TicTacToe. */
71
77
  ], TicTacToe);
72
78
  export default TicTacToe;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nYW1lcy90aWN0YWN0b2UvY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUd2Qzs7O0dBR0c7QUFDSCxTQUFTLGFBQWEsQ0FBQyxVQUFxQjtJQUN4QyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBRXBDLElBQUksTUFBTSxLQUFLLEtBQUs7UUFDaEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUYsQ0FBQztBQUljLElBQU0sU0FBUyxHQUFmLE1BQU0sU0FBVSxTQUFRLElBQUk7SUFDdkM7Ozs7O09BS0c7SUFDSCxZQUFtQixhQUF5QixFQUFFLGFBQXlCLEVBQUUsT0FBZ0M7UUFDckcsS0FBSyxDQUNELENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxFQUM5QixJQUFJLEtBQUssRUFBRSxFQUNYLE9BQU8sRUFBRSxRQUFRLElBQUksYUFBYSxFQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUNYLE9BQU8sRUFBRSxLQUFLLEVBQ2QsT0FBTyxFQUFFLGNBQWMsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGdCQUFnQixDQUFDLFVBQXFDLEVBQUUsWUFBdUIsV0FBVztRQUM3RixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFFLENBQUM7UUFDOUUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxlQUFlO2dCQUNoQixPQUFPLFdBQVcsQ0FBQztZQUN2QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxLQUFLLFdBQVc7Z0JBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxVQUFVLENBQUM7WUFDdEI7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsS0FHMUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ2xCLE9BQU8sVUFBVSxDQUFDO1FBRXRCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBRWxDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0NBQ0osQ0FBQTtBQTdEb0IsU0FBUztJQUY3QixJQUFJO0lBQ0wsMkJBQTJCO0dBQ04sU0FBUyxDQTZEN0I7ZUE3RG9CLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFsZ29yaXRobSwgR2FtZUNvbnN0cnVjdG9yT3B0aW9ucywgUGxheWVyVHlwZSB9IGZyb20gXCIuLi8uLi9iYXNlL2NvbnRyb2xsZXIuanNcIjtcbmltcG9ydCBCYXNlLCB7IEdhbWUgfSBmcm9tIFwiLi4vLi4vYmFzZS9jb250cm9sbGVyLmpzXCI7XG5pbXBvcnQgQm9hcmQgZnJvbSBcIi4vYm9hcmQuanNcIjtcbmltcG9ydCBDb25zb2xlIGZyb20gXCIuLi8uLi9jb25zb2xlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uIH0gZnJvbSBcIi4uLy4uL2Jhc2UvYm9hcmQuanNcIjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCByZW5kZXJpbmcgZnVuY3Rpb24gZm9yIFRpY1RhY1RvZS5cbiAqIEBwYXJhbSBjb250cm9sbGVyIFRoZSBjb250cm9sbGVyIHRvIHJlbmRlci5cbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFJlbmRlcihjb250cm9sbGVyOiBUaWNUYWNUb2UpOiB2b2lkIHtcbiAgICBDb25zb2xlLmNsZWFyKCk7XG4gICAgQ29uc29sZS53cml0ZUxpbmUoY29udHJvbGxlci5ib2FyZC50b1N0cmluZyhmYWxzZSkpO1xuICAgIGNvbnN0IHsgd2lubmVyIH0gPSBjb250cm9sbGVyLmJvYXJkO1xuXG4gICAgaWYgKHdpbm5lciAhPT0gZmFsc2UpXG4gICAgICAgIENvbnNvbGUud3JpdGVMaW5lKHdpbm5lciA9PT0gbnVsbCA/IFwiSXQncyBhIHRpZSFcIiA6IGBQbGF5ZXIgJHt3aW5uZXIgKyAxfSB3aW5zIWApO1xufVxuXG5AR2FtZVxuLyoqIEEgZ2FtZSBvZiBUaWNUYWNUb2UuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaWNUYWNUb2UgZXh0ZW5kcyBCYXNlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRpY1RhY1RvZSBnYW1lLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJPbmVUeXBlIFRoZSB0eXBlIG9mIHBsYXllciBvbmUuXG4gICAgICogQHBhcmFtIHBsYXllclR3b1R5cGUgVGhlIHR5cGUgb2YgcGxheWVyIHR3by5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIGdhbWUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBsYXllck9uZVR5cGU6IFBsYXllclR5cGUsIHBsYXllclR3b1R5cGU6IFBsYXllclR5cGUsIG9wdGlvbnM/OiBHYW1lQ29uc3RydWN0b3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgW3BsYXllck9uZVR5cGUsIHBsYXllclR3b1R5cGVdLFxuICAgICAgICAgICAgbmV3IEJvYXJkKCksXG4gICAgICAgICAgICBvcHRpb25zPy5yZW5kZXJlciA/PyBkZWZhdWx0UmVuZGVyLFxuICAgICAgICAgICAgb3B0aW9ucz8uaWQsXG4gICAgICAgICAgICBvcHRpb25zPy5vbkVuZCxcbiAgICAgICAgICAgIG9wdGlvbnM/Lm9uSW52YWxpZElucHV0LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIENQVSdzIG1vdmUuXG4gICAgICogQHBhcmFtIGRpZmZpY3VsdHkgVGhlIGRpZmZpY3VsdHkgb2YgdGhlIENQVS5cbiAgICAgKiBAcGFyYW0gYWxnb3JpdGhtIFRoZSBhbGdvcml0aG0gdG8gdXNlLlxuICAgICAqIEByZXR1cm5zIFRoZSBDUFUncyBtb3ZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZXRlcm1pbmVDUFVNb3ZlKGRpZmZpY3VsdHk6IE9taXQ8UGxheWVyVHlwZSwgXCJodW1hblwiPiwgYWxnb3JpdGhtOiBBbGdvcml0aG0gPSBcImFscGhhYmV0YVwiKTogUG9zaXRpb24ge1xuICAgICAgICBjb25zdCB7IGVtcHR5Q2VsbHMgfSA9IHRoaXMuYm9hcmQ7XG4gICAgICAgIGNvbnN0IHJhbmRvbU1vdmUgPSBlbXB0eUNlbGxzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGVtcHR5Q2VsbHMubGVuZ3RoKV0hO1xuICAgICAgICBjb25zdCBvcHRpbWFsTW92ZSA9IHRoaXMuZmluZE9wdGltYWxNb3ZlKHsgYWxnb3JpdGhtLCByYW5kb21Nb3ZlIH0pO1xuXG4gICAgICAgIHN3aXRjaCAoZGlmZmljdWx0eSkge1xuICAgICAgICAgICAgY2FzZSBcImltcG9zc2libGVDUFVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW1hbE1vdmU7XG4gICAgICAgICAgICBjYXNlIFwiaGFyZENQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpIDwgMC44ID8gb3B0aW1hbE1vdmUgOiByYW5kb21Nb3ZlO1xuICAgICAgICAgICAgY2FzZSBcIm1lZGl1bUNQVVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpIDwgMC41ID8gb3B0aW1hbE1vdmUgOiByYW5kb21Nb3ZlO1xuICAgICAgICAgICAgY2FzZSBcImVhc3lDUFVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmFuZG9tTW92ZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkaWZmaWN1bHR5LlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIHRoZSBvcHRpbWFsIG1vdmUgZm9yIHRoZSBjdXJyZW50IHBsYXllci5cbiAgICAgKiBAcGFyYW0gYWxnb3JpdGhtIFRoZSBhbGdvcml0aG0gdG8gdXNlLlxuICAgICAqIEBwYXJhbSBtYXhEZXB0aCBUaGUgbWF4aW11bSBkZXB0aCB0byBzZWFyY2guXG4gICAgICogQHBhcmFtIHJhbmRvbU1vdmUgVGhlIG1vdmUgdG8gcmV0dXJuIGlmIHRoZSBib2FyZCBpcyBlbXB0eS5cbiAgICAgKiBAcmV0dXJucyBUaGUgb3B0aW1hbCBtb3ZlLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kT3B0aW1hbE1vdmUoeyBhbGdvcml0aG0sIHJhbmRvbU1vdmUgfToge1xuICAgICAgICBhbGdvcml0aG06IEFsZ29yaXRobTtcbiAgICAgICAgcmFuZG9tTW92ZTogUG9zaXRpb247XG4gICAgfSA9IHsgYWxnb3JpdGhtOiBcImFscGhhYmV0YVwiLCByYW5kb21Nb3ZlOiB7IHg6IDIsIHk6IDIgfSB9KTogUG9zaXRpb24ge1xuICAgICAgICBpZiAodGhpcy5ib2FyZC5pc0VtcHR5KVxuICAgICAgICAgICAgcmV0dXJuIHJhbmRvbU1vdmU7XG5cbiAgICAgICAgY29uc3QgbWluaW1heCA9IHRoaXNbYWxnb3JpdGhtXSgpO1xuXG4gICAgICAgIHJldHVybiBtaW5pbWF4Lm1vdmU7XG4gICAgfVxufVxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nYW1lcy90aWN0YWN0b2UvY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxPQUFPLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUd2Qzs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUksVUFBd0I7SUFDOUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUVwQyxJQUFJLE1BQU0sS0FBSyxLQUFLO1FBQ2hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRDs7O0dBR0c7QUFFWSxJQUFNLFNBQVMsR0FBZixNQUFNLFNBQWEsU0FBUSxJQUFPO0lBQzdDOzs7OztPQUtHO0lBQ0gsWUFBbUIsYUFBeUIsRUFBRSxhQUF5QixFQUFFLE9BQWtDO1FBQ3ZHLEtBQUssQ0FDRCxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFDOUIsSUFBSSxLQUFLLEVBQUUsRUFDWCxPQUFPLENBQUMsUUFBUSxJQUFJLGFBQWEsRUFDakMsT0FBTyxDQUFDLEVBQUUsRUFDVixPQUFPLENBQUMsS0FBSyxFQUNiLE9BQU8sQ0FBQyxjQUFjLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZ0JBQWdCLENBQUMsVUFBcUMsRUFBRSxZQUF1QixXQUFXO1FBQzdGLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUUsQ0FBQztRQUM5RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFcEUsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNqQixLQUFLLGVBQWU7Z0JBQ2hCLE9BQU8sV0FBVyxDQUFDO1lBQ3ZCLEtBQUssU0FBUztnQkFDVixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzFELEtBQUssV0FBVztnQkFDWixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzFELEtBQUssU0FBUztnQkFDVixPQUFPLFVBQVUsQ0FBQztZQUN0QjtnQkFDSSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsS0FHMUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ2xCLE9BQU8sVUFBVSxDQUFDO1FBRXRCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBRWxDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0NBQ0osQ0FBQTtBQS9Eb0IsU0FBUztJQUQ3QixJQUFJO0dBQ2dCLFNBQVMsQ0ErRDdCO2VBL0RvQixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbGdvcml0aG0sIEdhbWVDb25zdHJ1Y3Rvck9wdGlvbnMsIFBsYXllclR5cGUgfSBmcm9tIFwiLi4vLi4vYmFzZS9jb250cm9sbGVyLmpzXCI7XG5pbXBvcnQgQmFzZSwgeyBHYW1lIH0gZnJvbSBcIi4uLy4uL2Jhc2UvY29udHJvbGxlci5qc1wiO1xuaW1wb3J0IEJvYXJkIGZyb20gXCIuL2JvYXJkLmpzXCI7XG5pbXBvcnQgQ29uc29sZSBmcm9tIFwiLi4vLi4vY29uc29sZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQb3NpdGlvbiB9IGZyb20gXCIuLi8uLi9iYXNlL2JvYXJkLmpzXCI7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcmVuZGVyaW5nIGZ1bmN0aW9uIGZvciBUaWNUYWNUb2UuXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBnYW1lIElELlxuICogQHBhcmFtIGNvbnRyb2xsZXIgLSBUaGUgY29udHJvbGxlciB0byByZW5kZXIuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRSZW5kZXI8VD4oY29udHJvbGxlcjogVGljVGFjVG9lPFQ+KTogdm9pZCB7XG4gICAgQ29uc29sZS5jbGVhcigpO1xuICAgIENvbnNvbGUud3JpdGVMaW5lKGNvbnRyb2xsZXIuYm9hcmQudG9TdHJpbmcoZmFsc2UpKTtcbiAgICBjb25zdCB7IHdpbm5lciB9ID0gY29udHJvbGxlci5ib2FyZDtcblxuICAgIGlmICh3aW5uZXIgIT09IGZhbHNlKVxuICAgICAgICBDb25zb2xlLndyaXRlTGluZSh3aW5uZXIgPT09IG51bGwgPyBcIkl0J3MgYSB0aWUhXCIgOiBgUGxheWVyICR7d2lubmVyICsgMX0gd2lucyFgKTtcbn1cblxuLyoqXG4gKiBBIGdhbWUgb2YgVGljVGFjVG9lLlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgZ2FtZSBJRC5cbiAqL1xuQEdhbWVcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpY1RhY1RvZTxUPiBleHRlbmRzIEJhc2U8VD4ge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgVGljVGFjVG9lIGdhbWUuXG4gICAgICogQHBhcmFtIHBsYXllck9uZVR5cGUgLSBUaGUgdHlwZSBvZiBwbGF5ZXIgb25lIChodW1hbiBvciBDUFUpLlxuICAgICAqIEBwYXJhbSBwbGF5ZXJUd29UeXBlIC0gVGhlIHR5cGUgb2YgcGxheWVyIHR3byAoaHVtYW4gb3IgQ1BVKS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZ2FtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGxheWVyT25lVHlwZTogUGxheWVyVHlwZSwgcGxheWVyVHdvVHlwZTogUGxheWVyVHlwZSwgb3B0aW9uczogR2FtZUNvbnN0cnVjdG9yT3B0aW9uczxUPikge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIFtwbGF5ZXJPbmVUeXBlLCBwbGF5ZXJUd29UeXBlXSxcbiAgICAgICAgICAgIG5ldyBCb2FyZCgpLFxuICAgICAgICAgICAgb3B0aW9ucy5yZW5kZXJlciA/PyBkZWZhdWx0UmVuZGVyLFxuICAgICAgICAgICAgb3B0aW9ucy5pZCxcbiAgICAgICAgICAgIG9wdGlvbnMub25FbmQsXG4gICAgICAgICAgICBvcHRpb25zLm9uSW52YWxpZElucHV0LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIENQVSdzIG1vdmUuXG4gICAgICogQHBhcmFtIGRpZmZpY3VsdHkgLSBUaGUgZGlmZmljdWx0eSBvZiB0aGUgQ1BVLlxuICAgICAqIEBwYXJhbSBhbGdvcml0aG0gLSBUaGUgYWxnb3JpdGhtIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyBUaGUgQ1BVJ3MgbW92ZS5cbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gQW4gZXJyb3IgaWYgdGhlIGRpZmZpY3VsdHkgaXMgaW52YWxpZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGV0ZXJtaW5lQ1BVTW92ZShkaWZmaWN1bHR5OiBPbWl0PFBsYXllclR5cGUsIFwiaHVtYW5cIj4sIGFsZ29yaXRobTogQWxnb3JpdGhtID0gXCJhbHBoYWJldGFcIik6IFBvc2l0aW9uIHtcbiAgICAgICAgY29uc3QgeyBlbXB0eUNlbGxzIH0gPSB0aGlzLmJvYXJkO1xuICAgICAgICBjb25zdCByYW5kb21Nb3ZlID0gZW1wdHlDZWxsc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBlbXB0eUNlbGxzLmxlbmd0aCldITtcbiAgICAgICAgY29uc3Qgb3B0aW1hbE1vdmUgPSB0aGlzLmZpbmRPcHRpbWFsTW92ZSh7IGFsZ29yaXRobSwgcmFuZG9tTW92ZSB9KTtcblxuICAgICAgICBzd2l0Y2ggKGRpZmZpY3VsdHkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJpbXBvc3NpYmxlQ1BVXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGltYWxNb3ZlO1xuICAgICAgICAgICAgY2FzZSBcImhhcmRDUFVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSA8IDAuOCA/IG9wdGltYWxNb3ZlIDogcmFuZG9tTW92ZTtcbiAgICAgICAgICAgIGNhc2UgXCJtZWRpdW1DUFVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSA8IDAuNSA/IG9wdGltYWxNb3ZlIDogcmFuZG9tTW92ZTtcbiAgICAgICAgICAgIGNhc2UgXCJlYXN5Q1BVXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhbmRvbU1vdmU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGlmZmljdWx0eS5cIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyB0aGUgb3B0aW1hbCBtb3ZlIGZvciB0aGUgY3VycmVudCBwbGF5ZXIuXG4gICAgICogQHBhcmFtIGFsZ29yaXRobSAtIFRoZSBhbGdvcml0aG0gdG8gdXNlLlxuICAgICAqIEBwYXJhbSBhbGdvcml0aG0uYWxnb3JpdGhtIC0gVGhlIGFsZ29yaXRobSB0byB1c2UuXG4gICAgICogQHBhcmFtIGFsZ29yaXRobS5yYW5kb21Nb3ZlIC0gVGhlIG1vdmUgdG8gcmV0dXJuIGlmIHRoZSBib2FyZCBpcyBlbXB0eS5cbiAgICAgKiBAcmV0dXJucyBUaGUgb3B0aW1hbCBtb3ZlIGZvciB0aGUgY3VycmVudCBwbGF5ZXIuXG4gICAgICogQHRocm93cyB7RXJyb3J9IEFuIGVycm9yIGlmIHRoZSBhbGdvcml0aG0gaXMgaW52YWxpZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmluZE9wdGltYWxNb3ZlKHsgYWxnb3JpdGhtLCByYW5kb21Nb3ZlIH06IHtcbiAgICAgICAgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgICAgIHJhbmRvbU1vdmU6IFBvc2l0aW9uO1xuICAgIH0gPSB7IGFsZ29yaXRobTogXCJhbHBoYWJldGFcIiwgcmFuZG9tTW92ZTogeyB4OiAyLCB5OiAyIH0gfSk6IFBvc2l0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuYm9hcmQuaXNFbXB0eSlcbiAgICAgICAgICAgIHJldHVybiByYW5kb21Nb3ZlO1xuXG4gICAgICAgIGNvbnN0IG1pbmltYXggPSB0aGlzW2FsZ29yaXRobV0oKTtcblxuICAgICAgICByZXR1cm4gbWluaW1heC5tb3ZlO1xuICAgIH1cbn1cbiJdfQ==
package/eslint.config.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import createConfig from "@oathompsonjones/eslint-config";
2
2
 
3
- export default createConfig("./tsconfig.json");
3
+ export default createConfig();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oathompsonjones/mini-games",
3
- "version": "1.0.6",
3
+ "version": "1.0.9",
4
4
  "description": "A selection of MiniGames. You will soon be able to play these games on [my website](https://oathompsonjones.co.uk/arcade).",
5
5
  "repository": {
6
6
  "url": "https://github.com/oathompsonjones/MiniGames.git"
@@ -12,14 +12,13 @@
12
12
  "author": "oathompsonjones",
13
13
  "license": "MIT",
14
14
  "devDependencies": {
15
- "@oathompsonjones/eslint-config": "^1.0.10",
16
- "@oathompsonjones/ts-config": "^0.0.31",
17
- "@types/node": "^20.11.10",
18
- "typescript": "^5.3.3",
19
- "vitest": "^1.2.2"
15
+ "@oathompsonjones/eslint-config": "^1.5.5",
16
+ "@oathompsonjones/ts-config": "^0.0.35",
17
+ "@types/node": "^25.3.3",
18
+ "typescript": "^5.9.3"
20
19
  },
21
20
  "dependencies": {
22
- "eventemitter3": "^5.0.1"
21
+ "eventemitter3": "^5.0.4"
23
22
  },
24
23
  "scripts": {
25
24
  "lint": "eslint .",
@@ -1,68 +0,0 @@
1
- diff --git a/index.d.ts b/index.d.ts
2
- index fab37fd606a62cd2dc81ff0b8007a26447916438..f020700e65e7de0ba58c51a08eea54da505b07a9 100644
3
- --- a/index.d.ts
4
- +++ b/index.d.ts
5
- @@ -81,7 +81,7 @@ declare class EventEmitter<
6
-
7
- declare namespace EventEmitter {
8
- export interface ListenerFn<Args extends any[] = any[]> {
9
- - (...args: Args): void;
10
- + (...args: Args): any;
11
- }
12
-
13
- export interface EventEmitterStatic {
14
- @@ -96,7 +96,7 @@ declare namespace EventEmitter {
15
- * ```
16
- * interface EventTypes {
17
- * 'event-with-parameters': any[]
18
- - * 'event-with-example-handler': (...args: any[]) => void
19
- + * 'event-with-example-handler': (...args: any[]) => any
20
- * }
21
- * ```
22
- */
23
- @@ -107,7 +107,7 @@ declare namespace EventEmitter {
24
- : keyof T;
25
-
26
- export type ArgumentMap<T extends object> = {
27
- - [K in keyof T]: T[K] extends (...args: any[]) => void
28
- + [K in keyof T]: T[K] extends (...args: any[]) => any
29
- ? Parameters<T[K]>
30
- : T[K] extends any[]
31
- ? T[K]
32
- @@ -118,10 +118,10 @@ declare namespace EventEmitter {
33
- T extends ValidEventTypes,
34
- K extends EventNames<T>
35
- > = T extends string | symbol
36
- - ? (...args: any[]) => void
37
- + ? (...args: any[]) => any
38
- : (
39
- ...args: ArgumentMap<Exclude<T, string | symbol>>[Extract<K, keyof T>]
40
- - ) => void;
41
- + ) => any;
42
-
43
- export type EventArgs<
44
- T extends ValidEventTypes,
45
- diff --git a/node_modules/.vitest/deps/_metadata.json b/node_modules/.vitest/deps/_metadata.json
46
- new file mode 100644
47
- index 0000000000000000000000000000000000000000..2fd1ba52f100dc9c1f021bd113efc6619f56ce18
48
- --- /dev/null
49
- +++ b/node_modules/.vitest/deps/_metadata.json
50
- @@ -0,0 +1,8 @@
51
- +{
52
- + "hash": "23f13a44",
53
- + "configHash": "8c6e2c97",
54
- + "lockfileHash": "e3b0c442",
55
- + "browserHash": "6a74185e",
56
- + "optimized": {},
57
- + "chunks": {}
58
- +}
59
-
60
- diff --git a/node_modules/.vitest/deps/package.json b/node_modules/.vitest/deps/package.json
61
- new file mode 100644
62
- index 0000000000000000000000000000000000000000..3dbc1ca591c0557e35b6004aeba250e6a70b56e3
63
- --- /dev/null
64
- +++ b/node_modules/.vitest/deps/package.json
65
- @@ -0,0 +1,3 @@
66
- +{
67
- + "type": "module"
68
- +}