t3core 1.0.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.
Files changed (114) hide show
  1. package/README.md +69 -0
  2. package/dist/eslint.config.d.mts +2 -0
  3. package/dist/eslint.config.mjs +86 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +5 -0
  6. package/dist/src/app.d.ts +1 -0
  7. package/dist/src/app.js +9 -0
  8. package/dist/src/core/Board.d.ts +34 -0
  9. package/dist/src/core/Board.js +51 -0
  10. package/dist/src/core/Game.d.ts +42 -0
  11. package/dist/src/core/Game.js +83 -0
  12. package/dist/src/core/constants/index.d.ts +2 -0
  13. package/dist/src/core/constants/index.js +14 -0
  14. package/dist/src/core/index.d.ts +30 -0
  15. package/dist/src/core/index.js +14 -0
  16. package/dist/src/core/tests/gameCore.test.d.ts +1 -0
  17. package/dist/src/core/tests/gameCore.test.js +50 -0
  18. package/dist/src/core/tests/getWinnerFromFields.test.d.ts +1 -0
  19. package/dist/src/core/tests/getWinnerFromFields.test.js +24 -0
  20. package/dist/src/core/types/Board.d.ts +9 -0
  21. package/dist/src/core/types/Board.js +2 -0
  22. package/dist/src/core/types/Game.d.ts +21 -0
  23. package/dist/src/core/types/Game.js +2 -0
  24. package/dist/src/core/types/Symbol.d.ts +3 -0
  25. package/dist/src/core/types/Symbol.js +2 -0
  26. package/dist/src/core/utils/getWinnerFromFields.d.ts +2 -0
  27. package/dist/src/core/utils/getWinnerFromFields.js +16 -0
  28. package/dist/src/ui/components/Header/Header.d.ts +1 -0
  29. package/dist/src/ui/components/Header/Header.js +20 -0
  30. package/dist/src/ui/components/Header/index.d.ts +1 -0
  31. package/dist/src/ui/components/Header/index.js +17 -0
  32. package/dist/src/ui/components/UserInput/UserInput.d.ts +2 -0
  33. package/dist/src/ui/components/UserInput/UserInput.js +20 -0
  34. package/dist/src/ui/components/UserInput/index.d.ts +1 -0
  35. package/dist/src/ui/components/UserInput/index.js +17 -0
  36. package/dist/src/ui/features/game/components/Board/Board.d.ts +1 -0
  37. package/dist/src/ui/features/game/components/Board/Board.js +21 -0
  38. package/dist/src/ui/features/game/components/Board/index.d.ts +1 -0
  39. package/dist/src/ui/features/game/components/Board/index.js +17 -0
  40. package/dist/src/ui/features/game/components/GameEntryMessage/GameEntryMessage.d.ts +1 -0
  41. package/dist/src/ui/features/game/components/GameEntryMessage/GameEntryMessage.js +22 -0
  42. package/dist/src/ui/features/game/components/GameEntryMessage/index.d.ts +1 -0
  43. package/dist/src/ui/features/game/components/GameEntryMessage/index.js +17 -0
  44. package/dist/src/ui/features/game/components/GameHeader/GameHeader.d.ts +1 -0
  45. package/dist/src/ui/features/game/components/GameHeader/GameHeader.js +17 -0
  46. package/dist/src/ui/features/game/components/GameHeader/index.d.ts +1 -0
  47. package/dist/src/ui/features/game/components/GameHeader/index.js +17 -0
  48. package/dist/src/ui/features/game/components/GameStatusMessage/GameStatusMessage.d.ts +1 -0
  49. package/dist/src/ui/features/game/components/GameStatusMessage/GameStatusMessage.js +28 -0
  50. package/dist/src/ui/features/game/components/GameStatusMessage/index.d.ts +1 -0
  51. package/dist/src/ui/features/game/components/GameStatusMessage/index.js +17 -0
  52. package/dist/src/ui/features/game/components/PlayerEntry/PlayerEntry.d.ts +1 -0
  53. package/dist/src/ui/features/game/components/PlayerEntry/PlayerEntry.js +37 -0
  54. package/dist/src/ui/features/game/components/PlayerEntry/index.d.ts +1 -0
  55. package/dist/src/ui/features/game/components/PlayerEntry/index.js +17 -0
  56. package/dist/src/ui/features/game/components/PlayerEntry/utils/getPlayerAnswer.d.ts +1 -0
  57. package/dist/src/ui/features/game/components/PlayerEntry/utils/getPlayerAnswer.js +34 -0
  58. package/dist/src/ui/features/game/components/PlayerEntry/utils/playAgain.d.ts +1 -0
  59. package/dist/src/ui/features/game/components/PlayerEntry/utils/playAgain.js +20 -0
  60. package/dist/src/ui/features/game/components/PlayerEntry/utils/validatePlayerEntry.d.ts +1 -0
  61. package/dist/src/ui/features/game/components/PlayerEntry/utils/validatePlayerEntry.js +18 -0
  62. package/dist/src/ui/features/game/services/gameSession.d.ts +3 -0
  63. package/dist/src/ui/features/game/services/gameSession.js +19 -0
  64. package/dist/src/ui/features/game/util/colorLabelSymbol.d.ts +2 -0
  65. package/dist/src/ui/features/game/util/colorLabelSymbol.js +15 -0
  66. package/dist/src/ui/features/menu/components/MenuEntry/MenuEntry.d.ts +1 -0
  67. package/dist/src/ui/features/menu/components/MenuEntry/MenuEntry.js +36 -0
  68. package/dist/src/ui/features/menu/components/MenuEntry/index.d.ts +1 -0
  69. package/dist/src/ui/features/menu/components/MenuEntry/index.js +17 -0
  70. package/dist/src/ui/features/menu/components/MenuHeader/MenuHeader.d.ts +1 -0
  71. package/dist/src/ui/features/menu/components/MenuHeader/MenuHeader.js +18 -0
  72. package/dist/src/ui/features/menu/components/MenuHeader/index.d.ts +1 -0
  73. package/dist/src/ui/features/menu/components/MenuHeader/index.js +17 -0
  74. package/dist/src/ui/features/menu/components/MenuOptions/MenuOptions.d.ts +1 -0
  75. package/dist/src/ui/features/menu/components/MenuOptions/MenuOptions.js +18 -0
  76. package/dist/src/ui/features/menu/components/MenuOptions/index.d.ts +1 -0
  77. package/dist/src/ui/features/menu/components/MenuOptions/index.js +17 -0
  78. package/dist/src/ui/features/menu/constants/menuItems.d.ts +4 -0
  79. package/dist/src/ui/features/menu/constants/menuItems.js +8 -0
  80. package/dist/src/ui/features/settings/components/SettingsEntry/SettingsEntry.d.ts +1 -0
  81. package/dist/src/ui/features/settings/components/SettingsEntry/SettingsEntry.js +42 -0
  82. package/dist/src/ui/features/settings/components/SettingsEntry/index.d.ts +1 -0
  83. package/dist/src/ui/features/settings/components/SettingsEntry/index.js +17 -0
  84. package/dist/src/ui/features/settings/components/SettingsHeader/SettingsHeader.d.ts +1 -0
  85. package/dist/src/ui/features/settings/components/SettingsHeader/SettingsHeader.js +18 -0
  86. package/dist/src/ui/features/settings/components/SettingsHeader/index.d.ts +1 -0
  87. package/dist/src/ui/features/settings/components/SettingsHeader/index.js +17 -0
  88. package/dist/src/ui/features/settings/components/SettingsOptions/SettingsOptions.d.ts +1 -0
  89. package/dist/src/ui/features/settings/components/SettingsOptions/SettingsOptions.js +34 -0
  90. package/dist/src/ui/features/settings/components/SettingsOptions/index.d.ts +1 -0
  91. package/dist/src/ui/features/settings/components/SettingsOptions/index.js +17 -0
  92. package/dist/src/ui/features/settings/constants/settingsOptions.d.ts +8 -0
  93. package/dist/src/ui/features/settings/constants/settingsOptions.js +7 -0
  94. package/dist/src/ui/global/settings.global.d.ts +12 -0
  95. package/dist/src/ui/global/settings.global.js +24 -0
  96. package/dist/src/ui/navigation/index.d.ts +3 -0
  97. package/dist/src/ui/navigation/index.js +27 -0
  98. package/dist/src/ui/navigation/routes.d.ts +6 -0
  99. package/dist/src/ui/navigation/routes.js +8 -0
  100. package/dist/src/ui/screens/Game.screen.d.ts +1 -0
  101. package/dist/src/ui/screens/Game.screen.js +20 -0
  102. package/dist/src/ui/screens/Menu.screen.d.ts +1 -0
  103. package/dist/src/ui/screens/Menu.screen.js +25 -0
  104. package/dist/src/ui/screens/Settings.screen.d.ts +1 -0
  105. package/dist/src/ui/screens/Settings.screen.js +16 -0
  106. package/dist/src/ui/utils/beepAndClear.d.ts +1 -0
  107. package/dist/src/ui/utils/beepAndClear.js +9 -0
  108. package/dist/src/ui/utils/beepSound.d.ts +1 -0
  109. package/dist/src/ui/utils/beepSound.js +10 -0
  110. package/dist/src/ui/utils/styledLabel.d.ts +9 -0
  111. package/dist/src/ui/utils/styledLabel.js +76 -0
  112. package/dist/vitest.config.d.mts +2 -0
  113. package/dist/vitest.config.mjs +6 -0
  114. package/package.json +59 -0
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SettingsEntry = void 0;
13
+ const UserInput_1 = require("../../../../../ui/components/UserInput");
14
+ const settings_global_1 = require("../../../../../ui/global/settings.global");
15
+ const navigation_1 = require("../../../../../ui/navigation");
16
+ const routes_1 = require("../../../../../ui/navigation/routes");
17
+ const styledLabel_1 = require("../../../../../ui/utils/styledLabel");
18
+ const entryMessage = () => {
19
+ console.log(`${(0, styledLabel_1.styledLabel)("Select option from the list (1-4)", { color: "white" })}`);
20
+ console.log(`${(0, styledLabel_1.styledLabel)('Press "q" to back to the main menu', { textStyle: "dim" })}`);
21
+ console.log("\t");
22
+ };
23
+ const SettingsEntry = () => __awaiter(void 0, void 0, void 0, function* () {
24
+ entryMessage();
25
+ const answer = yield (0, UserInput_1.UserInput)("Enter your choice: ");
26
+ console.log(answer);
27
+ switch (answer) {
28
+ case "1":
29
+ (0, settings_global_1.toggleBeep)();
30
+ break;
31
+ case "2":
32
+ (0, settings_global_1.toggleStyle)();
33
+ break;
34
+ case "3":
35
+ (0, settings_global_1.resetSettings)();
36
+ break;
37
+ case "q":
38
+ return (0, navigation_1.goToMenu)();
39
+ }
40
+ (0, navigation_1.navigateTo)(routes_1.ROUTES.SETTINGS);
41
+ });
42
+ exports.SettingsEntry = SettingsEntry;
@@ -0,0 +1 @@
1
+ export * from "./SettingsEntry";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SettingsEntry"), exports);
@@ -0,0 +1 @@
1
+ export declare const SettingsHeader: () => void;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingsHeader = void 0;
4
+ const styledLabel_1 = require("../../../../../ui/utils/styledLabel");
5
+ const SettingsHeader = () => {
6
+ console.log("\t");
7
+ const mainMenuLabel = (0, styledLabel_1.styledLabel)("SETTINGS", {
8
+ color: "red",
9
+ textStyle: "bold",
10
+ });
11
+ const border = (0, styledLabel_1.styledLabel)("=================", {
12
+ color: "magenta",
13
+ textStyle: "dim",
14
+ });
15
+ console.log(`${border} ${mainMenuLabel} ${border}`);
16
+ console.log("\t");
17
+ };
18
+ exports.SettingsHeader = SettingsHeader;
@@ -0,0 +1 @@
1
+ export * from "./SettingsHeader";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SettingsHeader"), exports);
@@ -0,0 +1 @@
1
+ export declare const SettingsOptions: () => void;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingsOptions = void 0;
4
+ const settings_global_1 = require("../../../../../ui/global/settings.global");
5
+ const styledLabel_1 = require("../../../../../ui/utils/styledLabel");
6
+ const settingsOptions_1 = require("../../constants/settingsOptions");
7
+ const SettingsOptions = () => {
8
+ const settings = (0, settings_global_1.getSettings)();
9
+ settingsOptions_1.SETTINGS_OPTIONS.forEach((item) => {
10
+ const itemNumber = (0, styledLabel_1.styledLabel)(item.id, {
11
+ color: "lightYellow",
12
+ textStyle: "bold",
13
+ });
14
+ const itemLabel = (0, styledLabel_1.styledLabel)(item.label, {
15
+ color: "lightMagenta",
16
+ });
17
+ const setting = settings[item.key];
18
+ const value = setting
19
+ ? (0, styledLabel_1.styledLabel)("ON", { color: "lightGreen" })
20
+ : (0, styledLabel_1.styledLabel)("OFF", { color: "lightRed" });
21
+ const itemValue = value ? ` - ${value}` : "";
22
+ console.log(`[${itemNumber}] ${itemLabel}${itemValue}`);
23
+ });
24
+ const resetToDefault = `[${(0, styledLabel_1.styledLabel)((settingsOptions_1.SETTINGS_OPTIONS.length + 1).toString(), {
25
+ color: "lightYellow",
26
+ textStyle: "bold",
27
+ })}] ${(0, styledLabel_1.styledLabel)("Reset to default", {
28
+ color: "grey",
29
+ })}`;
30
+ console.log("\t");
31
+ console.log(resetToDefault);
32
+ console.log("\t");
33
+ };
34
+ exports.SettingsOptions = SettingsOptions;
@@ -0,0 +1 @@
1
+ export * from "./SettingsOptions";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SettingsOptions"), exports);
@@ -0,0 +1,8 @@
1
+ import type { SettingsKey } from "../../../../ui/global/settings.global";
2
+ type Option = {
3
+ id: string;
4
+ label: string;
5
+ key: SettingsKey;
6
+ };
7
+ export declare const SETTINGS_OPTIONS: Option[];
8
+ export {};
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SETTINGS_OPTIONS = void 0;
4
+ exports.SETTINGS_OPTIONS = [
5
+ { id: "1", label: "Sound", key: "beep" },
6
+ { id: "2", label: "Style", key: "style" },
7
+ ];
@@ -0,0 +1,12 @@
1
+ export type Settings = {
2
+ beep: boolean;
3
+ style: boolean;
4
+ };
5
+ export type SettingsKey = keyof Settings;
6
+ export declare const getSettings: () => {
7
+ beep: boolean;
8
+ style: boolean;
9
+ };
10
+ export declare const resetSettings: () => void;
11
+ export declare const toggleBeep: () => void;
12
+ export declare const toggleStyle: () => void;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toggleStyle = exports.toggleBeep = exports.resetSettings = exports.getSettings = void 0;
4
+ const initialSettings = {
5
+ beep: true,
6
+ style: true,
7
+ };
8
+ let settings = Object.assign({}, initialSettings);
9
+ const getSettings = () => {
10
+ return settings;
11
+ };
12
+ exports.getSettings = getSettings;
13
+ const resetSettings = () => {
14
+ settings = Object.assign({}, initialSettings);
15
+ };
16
+ exports.resetSettings = resetSettings;
17
+ const toggleBeep = () => {
18
+ settings.beep = !settings.beep;
19
+ };
20
+ exports.toggleBeep = toggleBeep;
21
+ const toggleStyle = () => {
22
+ settings.style = !settings.style;
23
+ };
24
+ exports.toggleStyle = toggleStyle;
@@ -0,0 +1,3 @@
1
+ import type { Routes } from "./routes";
2
+ export declare const navigateTo: (route: Routes) => void;
3
+ export declare const goToMenu: () => void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.goToMenu = exports.navigateTo = void 0;
4
+ const Game_screen_1 = require("../screens/Game.screen");
5
+ const Menu_screen_1 = require("../screens/Menu.screen");
6
+ const Settings_screen_1 = require("../screens/Settings.screen");
7
+ const routes_1 = require("./routes");
8
+ const navigateTo = (route) => {
9
+ switch (route) {
10
+ case routes_1.ROUTES.MENU:
11
+ (0, Menu_screen_1.MenuScreen)();
12
+ break;
13
+ case routes_1.ROUTES.GAME:
14
+ (0, Game_screen_1.GameScreen)();
15
+ break;
16
+ case routes_1.ROUTES.SETTINGS:
17
+ (0, Settings_screen_1.SettingsScreen)();
18
+ break;
19
+ default:
20
+ throw new Error(`Unknown route: ${route}`);
21
+ }
22
+ };
23
+ exports.navigateTo = navigateTo;
24
+ const goToMenu = () => {
25
+ return (0, exports.navigateTo)(routes_1.ROUTES.MENU);
26
+ };
27
+ exports.goToMenu = goToMenu;
@@ -0,0 +1,6 @@
1
+ export declare const ROUTES: {
2
+ readonly MENU: "menu";
3
+ readonly GAME: "game";
4
+ readonly SETTINGS: "settings";
5
+ };
6
+ export type Routes = (typeof ROUTES)[keyof typeof ROUTES];
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ROUTES = void 0;
4
+ exports.ROUTES = {
5
+ MENU: "menu",
6
+ GAME: "game",
7
+ SETTINGS: "settings",
8
+ };
@@ -0,0 +1 @@
1
+ export declare const GameScreen: () => void;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GameScreen = void 0;
4
+ const Board_1 = require("../../ui/features/game/components/Board");
5
+ const GameEntryMessage_1 = require("../../ui/features/game/components/GameEntryMessage");
6
+ const GameStatusMessage_1 = require("../../ui/features/game/components/GameStatusMessage");
7
+ const PlayerEntry_1 = require("../../ui/features/game/components/PlayerEntry");
8
+ const Header_1 = require("../components/Header");
9
+ const GameHeader_1 = require("../features/game/components/GameHeader");
10
+ const beepAndClear_1 = require("../utils/beepAndClear");
11
+ const GameScreen = () => {
12
+ (0, beepAndClear_1.beepAndClear)();
13
+ (0, Header_1.Header)();
14
+ (0, GameHeader_1.GameHeader)();
15
+ (0, GameEntryMessage_1.GameEntryMessage)();
16
+ (0, Board_1.Board)();
17
+ (0, GameStatusMessage_1.GameStatusMessage)();
18
+ (0, PlayerEntry_1.PlayerEntry)(exports.GameScreen);
19
+ };
20
+ exports.GameScreen = GameScreen;
@@ -0,0 +1 @@
1
+ export declare const MenuScreen: () => Promise<void>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MenuScreen = void 0;
13
+ const Header_1 = require("../components/Header");
14
+ const MenuEntry_1 = require("../features/menu/components/MenuEntry");
15
+ const MenuHeader_1 = require("../features/menu/components/MenuHeader");
16
+ const MenuOptions_1 = require("../features/menu/components/MenuOptions");
17
+ const beepAndClear_1 = require("../utils/beepAndClear");
18
+ const MenuScreen = () => __awaiter(void 0, void 0, void 0, function* () {
19
+ (0, beepAndClear_1.beepAndClear)();
20
+ (0, Header_1.Header)();
21
+ (0, MenuHeader_1.MenuHeader)();
22
+ (0, MenuOptions_1.MenuOptions)();
23
+ (0, MenuEntry_1.MenuEntry)();
24
+ });
25
+ exports.MenuScreen = MenuScreen;
@@ -0,0 +1 @@
1
+ export declare const SettingsScreen: () => void;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingsScreen = void 0;
4
+ const Header_1 = require("../components/Header");
5
+ const SettingsEntry_1 = require("../features/settings/components/SettingsEntry");
6
+ const SettingsHeader_1 = require("../features/settings/components/SettingsHeader");
7
+ const SettingsOptions_1 = require("../features/settings/components/SettingsOptions");
8
+ const beepAndClear_1 = require("../utils/beepAndClear");
9
+ const SettingsScreen = () => {
10
+ (0, beepAndClear_1.beepAndClear)();
11
+ (0, Header_1.Header)();
12
+ (0, SettingsHeader_1.SettingsHeader)();
13
+ (0, SettingsOptions_1.SettingsOptions)();
14
+ (0, SettingsEntry_1.SettingsEntry)();
15
+ };
16
+ exports.SettingsScreen = SettingsScreen;
@@ -0,0 +1 @@
1
+ export declare const beepAndClear: () => void;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.beepAndClear = void 0;
4
+ const beepSound_1 = require("./beepSound");
5
+ const beepAndClear = () => {
6
+ (0, beepSound_1.beepSound)();
7
+ console.clear();
8
+ };
9
+ exports.beepAndClear = beepAndClear;
@@ -0,0 +1 @@
1
+ export declare const beepSound: () => void;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.beepSound = void 0;
4
+ const settings_global_1 = require("../global/settings.global");
5
+ const beepSound = () => {
6
+ if ((0, settings_global_1.getSettings)().beep) {
7
+ process.stdout.write("\x07");
8
+ }
9
+ };
10
+ exports.beepSound = beepSound;
@@ -0,0 +1,9 @@
1
+ type Colors = "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "black" | "default" | "grey" | "lightRed" | "lightGreen" | "lightYellow" | "lightBlue" | "lightMagenta" | "lightCyan" | "lightWhite";
2
+ type TextStyles = "default" | "bold" | "dim" | "italic" | "underline" | "inverse" | "hidden" | "strikethrough";
3
+ type StyledLabelOptions = {
4
+ color?: Colors;
5
+ backgroundColor?: Colors;
6
+ textStyle?: TextStyles;
7
+ };
8
+ export declare const styledLabel: (label: string | number, options?: StyledLabelOptions) => string;
9
+ export {};
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.styledLabel = void 0;
4
+ const settings_global_1 = require("../../ui/global/settings.global");
5
+ const colorCodes = new Map([
6
+ ["default", 0],
7
+ ["black", 30],
8
+ ["red", 31],
9
+ ["green", 32],
10
+ ["yellow", 33],
11
+ ["blue", 34],
12
+ ["magenta", 35],
13
+ ["cyan", 36],
14
+ ["white", 37],
15
+ ["grey", 90],
16
+ ["lightRed", 91],
17
+ ["lightGreen", 92],
18
+ ["lightYellow", 93],
19
+ ["lightBlue", 94],
20
+ ["lightMagenta", 95],
21
+ ["lightCyan", 96],
22
+ ["lightWhite", 97],
23
+ ]);
24
+ const backgroundColorCodes = new Map([
25
+ ["default", 0],
26
+ ["grey", 40],
27
+ ["red", 41],
28
+ ["green", 42],
29
+ ["yellow", 43],
30
+ ["blue", 44],
31
+ ["magenta", 45],
32
+ ["cyan", 46],
33
+ ["white", 47],
34
+ ["grey", 100],
35
+ ["lightRed", 101],
36
+ ["lightGreen", 102],
37
+ ["lightYellow", 103],
38
+ ["lightBlue", 104],
39
+ ["lightMagenta", 105],
40
+ ["lightCyan", 106],
41
+ ["lightWhite", 107],
42
+ ]);
43
+ const textStyleCodes = new Map([
44
+ ["default", 0],
45
+ ["bold", 1],
46
+ ["dim", 2],
47
+ ["italic", 3],
48
+ ["underline", 4],
49
+ ["inverse", 7],
50
+ ["hidden", 8],
51
+ ["strikethrough", 9],
52
+ ]);
53
+ const styledLabel = (label, options) => {
54
+ var _a, _b, _c;
55
+ if (!(0, settings_global_1.getSettings)().style) {
56
+ return label.toString();
57
+ }
58
+ const colorCode = colorCodes.get((_a = options === null || options === void 0 ? void 0 : options.color) !== null && _a !== void 0 ? _a : "default");
59
+ const backgroundColorCode = backgroundColorCodes.get((_b = options === null || options === void 0 ? void 0 : options.backgroundColor) !== null && _b !== void 0 ? _b : "default");
60
+ const textStyleCode = textStyleCodes.get((_c = options === null || options === void 0 ? void 0 : options.textStyle) !== null && _c !== void 0 ? _c : "default");
61
+ const styles = [];
62
+ if (colorCode) {
63
+ styles.push(colorCode);
64
+ }
65
+ if (backgroundColorCode) {
66
+ styles.push(backgroundColorCode);
67
+ }
68
+ if (textStyleCode) {
69
+ styles.push(textStyleCode);
70
+ }
71
+ if (styles.length === 0) {
72
+ return label.toString();
73
+ }
74
+ return `\x1b[${styles.join(";")}m${label}\x1b[0m`;
75
+ };
76
+ exports.styledLabel = styledLabel;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from "vitest/config";
2
+ export default defineConfig({
3
+ test: {
4
+ exclude: ["**/node_modules/**", "**/dist/**"],
5
+ },
6
+ });
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "t3core",
3
+ "version": "1.0.0",
4
+ "description": "tic tac toe core - tttc - t3c",
5
+ "main": "dist/index.js",
6
+ "scripts": {
7
+ "start": "node -r tsconfig-paths/register -r ts-node/register index.ts",
8
+ "dev": "ts-node-dev -r tsconfig-paths/register --respawn index.ts",
9
+ "build": "tsc && tsc-alias && chmod +x dist/index.js",
10
+ "test": "vitest",
11
+ "lint": "eslint ./src/**/*.ts",
12
+ "ts:check": "tsc --noEmit",
13
+ "publish:package": "npm version patch && npm publish"
14
+ },
15
+ "keywords": [
16
+ "tic-tac-toe",
17
+ "game",
18
+ "typescript",
19
+ "nodejs"
20
+ ],
21
+ "author": "tengosc",
22
+ "license": "ISC",
23
+ "type": "commonjs",
24
+ "engines": {
25
+ "node": ">=16.0.0"
26
+ },
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/src/core/index.d.ts",
30
+ "require": "./dist/src/core/index.js",
31
+ "default": "./dist/src/core/index.js"
32
+ },
33
+ "./package.json": "./package.json"
34
+ },
35
+ "types": "./dist/src/core/index.d.ts",
36
+ "bin": {
37
+ "tic-tac-toe-core": "dist/index.js"
38
+ },
39
+ "files": [
40
+ "dist"
41
+ ],
42
+ "devDependencies": {
43
+ "@eslint/js": "^10.0.1",
44
+ "@types/node": "^25.6.0",
45
+ "eslint": "^10.3.0",
46
+ "eslint-import-resolver-typescript": "^4.4.4",
47
+ "eslint-plugin-import-x": "^4.16.2",
48
+ "eslint-plugin-perfectionist": "^5.9.0",
49
+ "globals": "^17.6.0",
50
+ "jiti": "^2.6.1",
51
+ "ts-node": "^10.9.2",
52
+ "ts-node-dev": "^2.0.0",
53
+ "tsc-alias": "^1.8.17",
54
+ "tsconfig-paths": "^4.2.0",
55
+ "typescript": "^6.0.3",
56
+ "typescript-eslint": "^8.59.1",
57
+ "vitest": "^4.1.5"
58
+ }
59
+ }