pet-terminal 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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +268 -0
  3. package/dist/commands/care.d.ts +3 -0
  4. package/dist/commands/care.d.ts.map +1 -0
  5. package/dist/commands/care.js +103 -0
  6. package/dist/commands/care.js.map +1 -0
  7. package/dist/commands/clean.d.ts +3 -0
  8. package/dist/commands/clean.d.ts.map +1 -0
  9. package/dist/commands/clean.js +105 -0
  10. package/dist/commands/clean.js.map +1 -0
  11. package/dist/commands/feed.d.ts +3 -0
  12. package/dist/commands/feed.d.ts.map +1 -0
  13. package/dist/commands/feed.js +106 -0
  14. package/dist/commands/feed.js.map +1 -0
  15. package/dist/commands/git.d.ts +3 -0
  16. package/dist/commands/git.d.ts.map +1 -0
  17. package/dist/commands/git.js +138 -0
  18. package/dist/commands/git.js.map +1 -0
  19. package/dist/commands/heal.d.ts +3 -0
  20. package/dist/commands/heal.d.ts.map +1 -0
  21. package/dist/commands/heal.js +106 -0
  22. package/dist/commands/heal.js.map +1 -0
  23. package/dist/commands/init.d.ts +3 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +89 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/inventory.d.ts +3 -0
  28. package/dist/commands/inventory.d.ts.map +1 -0
  29. package/dist/commands/inventory.js +113 -0
  30. package/dist/commands/inventory.js.map +1 -0
  31. package/dist/commands/play.d.ts +3 -0
  32. package/dist/commands/play.d.ts.map +1 -0
  33. package/dist/commands/play.js +110 -0
  34. package/dist/commands/play.js.map +1 -0
  35. package/dist/commands/shop.d.ts +3 -0
  36. package/dist/commands/shop.d.ts.map +1 -0
  37. package/dist/commands/shop.js +197 -0
  38. package/dist/commands/shop.js.map +1 -0
  39. package/dist/commands/sleep.d.ts +3 -0
  40. package/dist/commands/sleep.d.ts.map +1 -0
  41. package/dist/commands/sleep.js +48 -0
  42. package/dist/commands/sleep.js.map +1 -0
  43. package/dist/commands/status.d.ts +3 -0
  44. package/dist/commands/status.d.ts.map +1 -0
  45. package/dist/commands/status.js +98 -0
  46. package/dist/commands/status.js.map +1 -0
  47. package/dist/commands/sync.d.ts +3 -0
  48. package/dist/commands/sync.d.ts.map +1 -0
  49. package/dist/commands/sync.js +66 -0
  50. package/dist/commands/sync.js.map +1 -0
  51. package/dist/commands/tutorial.d.ts +3 -0
  52. package/dist/commands/tutorial.d.ts.map +1 -0
  53. package/dist/commands/tutorial.js +210 -0
  54. package/dist/commands/tutorial.js.map +1 -0
  55. package/dist/core/auto-care.d.ts +63 -0
  56. package/dist/core/auto-care.d.ts.map +1 -0
  57. package/dist/core/auto-care.js +295 -0
  58. package/dist/core/auto-care.js.map +1 -0
  59. package/dist/core/config.d.ts +89 -0
  60. package/dist/core/config.d.ts.map +1 -0
  61. package/dist/core/config.js +195 -0
  62. package/dist/core/config.js.map +1 -0
  63. package/dist/core/database.d.ts +29 -0
  64. package/dist/core/database.d.ts.map +1 -0
  65. package/dist/core/database.js +81 -0
  66. package/dist/core/database.js.map +1 -0
  67. package/dist/core/inventory.d.ts +63 -0
  68. package/dist/core/inventory.d.ts.map +1 -0
  69. package/dist/core/inventory.js +140 -0
  70. package/dist/core/inventory.js.map +1 -0
  71. package/dist/core/level-system.d.ts +32 -0
  72. package/dist/core/level-system.d.ts.map +1 -0
  73. package/dist/core/level-system.js +76 -0
  74. package/dist/core/level-system.js.map +1 -0
  75. package/dist/core/pet.d.ts +123 -0
  76. package/dist/core/pet.d.ts.map +1 -0
  77. package/dist/core/pet.js +781 -0
  78. package/dist/core/pet.js.map +1 -0
  79. package/dist/core/shop.d.ts +93 -0
  80. package/dist/core/shop.d.ts.map +1 -0
  81. package/dist/core/shop.js +205 -0
  82. package/dist/core/shop.js.map +1 -0
  83. package/dist/core/time-decay.d.ts +30 -0
  84. package/dist/core/time-decay.d.ts.map +1 -0
  85. package/dist/core/time-decay.js +149 -0
  86. package/dist/core/time-decay.js.map +1 -0
  87. package/dist/core/welcome.d.ts +31 -0
  88. package/dist/core/welcome.d.ts.map +1 -0
  89. package/dist/core/welcome.js +180 -0
  90. package/dist/core/welcome.js.map +1 -0
  91. package/dist/index.d.ts +3 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +80 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/monitor/git-monitor.d.ts +90 -0
  96. package/dist/monitor/git-monitor.d.ts.map +1 -0
  97. package/dist/monitor/git-monitor.js +342 -0
  98. package/dist/monitor/git-monitor.js.map +1 -0
  99. package/dist/types/auto-care.d.ts +86 -0
  100. package/dist/types/auto-care.d.ts.map +1 -0
  101. package/dist/types/auto-care.js +15 -0
  102. package/dist/types/auto-care.js.map +1 -0
  103. package/dist/types/config.d.ts +42 -0
  104. package/dist/types/config.d.ts.map +1 -0
  105. package/dist/types/config.js +24 -0
  106. package/dist/types/config.js.map +1 -0
  107. package/dist/types/git.d.ts +68 -0
  108. package/dist/types/git.d.ts.map +1 -0
  109. package/dist/types/git.js +14 -0
  110. package/dist/types/git.js.map +1 -0
  111. package/dist/types/items.d.ts +41 -0
  112. package/dist/types/items.d.ts.map +1 -0
  113. package/dist/types/items.js +286 -0
  114. package/dist/types/items.js.map +1 -0
  115. package/dist/types/pet.d.ts +42 -0
  116. package/dist/types/pet.d.ts.map +1 -0
  117. package/dist/types/pet.js +16 -0
  118. package/dist/types/pet.js.map +1 -0
  119. package/dist/types/species.d.ts +30 -0
  120. package/dist/types/species.d.ts.map +1 -0
  121. package/dist/types/species.js +164 -0
  122. package/dist/types/species.js.map +1 -0
  123. package/dist/types/stats.d.ts +22 -0
  124. package/dist/types/stats.d.ts.map +1 -0
  125. package/dist/types/stats.js +18 -0
  126. package/dist/types/stats.js.map +1 -0
  127. package/dist/types/time.d.ts +30 -0
  128. package/dist/types/time.d.ts.map +1 -0
  129. package/dist/types/time.js +79 -0
  130. package/dist/types/time.js.map +1 -0
  131. package/dist/ui/ascii-art.d.ts +4 -0
  132. package/dist/ui/ascii-art.d.ts.map +1 -0
  133. package/dist/ui/ascii-art.js +170 -0
  134. package/dist/ui/ascii-art.js.map +1 -0
  135. package/dist/ui/display.d.ts +11 -0
  136. package/dist/ui/display.d.ts.map +1 -0
  137. package/dist/ui/display.js +93 -0
  138. package/dist/ui/display.js.map +1 -0
  139. package/dist/ui/help.d.ts +17 -0
  140. package/dist/ui/help.d.ts.map +1 -0
  141. package/dist/ui/help.js +280 -0
  142. package/dist/ui/help.js.map +1 -0
  143. package/dist/ui/progress-bar.d.ts +9 -0
  144. package/dist/ui/progress-bar.d.ts.map +1 -0
  145. package/dist/ui/progress-bar.js +57 -0
  146. package/dist/ui/progress-bar.js.map +1 -0
  147. package/package.json +61 -0
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const shopCommand: Command;
3
+ //# sourceMappingURL=shop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shop.d.ts","sourceRoot":"","sources":["../../src/commands/shop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,eAAO,MAAM,WAAW,SAAsB,CAAC"}
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.shopCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const database_1 = require("../core/database");
12
+ const pet_1 = require("../core/pet");
13
+ const shop_1 = require("../core/shop");
14
+ const display_1 = require("../ui/display");
15
+ const items_1 = require("../types/items");
16
+ const getChalkColor = (color) => {
17
+ switch (color) {
18
+ case 'white':
19
+ return chalk_1.default.white;
20
+ case 'blue':
21
+ return chalk_1.default.blue;
22
+ case 'magenta':
23
+ return chalk_1.default.magenta;
24
+ case 'yellow':
25
+ return chalk_1.default.yellow;
26
+ default:
27
+ return chalk_1.default.white;
28
+ }
29
+ };
30
+ exports.shopCommand = new commander_1.Command('shop');
31
+ exports.shopCommand
32
+ .alias('store')
33
+ .description('Visit the pet shop to buy items')
34
+ .action(async () => {
35
+ const db = new database_1.Database(path_1.default.join(process.cwd(), 'data', 'pet.json'));
36
+ if (!db.hasPet()) {
37
+ console.log(chalk_1.default.yellow("You don't have a pet yet!"));
38
+ console.log(chalk_1.default.gray('Use "pet init" to create one.'));
39
+ return;
40
+ }
41
+ const pet = await pet_1.Pet.loadOrCreate(db);
42
+ const shop = (0, shop_1.getShop)();
43
+ // Show shop header with player's coins
44
+ const coins = pet.getCoins();
45
+ console.log('');
46
+ console.log((0, display_1.drawHeader)('🏪 PET SHOP', 44));
47
+ console.log('');
48
+ console.log(chalk_1.default.yellow.bold(`Your Coins: ${shop_1.Shop.formatCoins(coins)}`));
49
+ console.log(chalk_1.default.gray(shop_1.Shop.getShopDescription()));
50
+ console.log('');
51
+ console.log((0, display_1.drawDivider)(44));
52
+ // Get items grouped by category
53
+ const itemsByCategory = shop.getShopItemsByCategory();
54
+ // Display items by category
55
+ for (const [category, items] of itemsByCategory.entries()) {
56
+ console.log('');
57
+ console.log(chalk_1.default.cyan.bold(` ${category}`));
58
+ console.log(chalk_1.default.gray(' ' + '-'.repeat(40)));
59
+ for (const shopItem of items) {
60
+ const { item, price } = shopItem;
61
+ const rarityColor = (0, items_1.getRarityColor)(item.rarity);
62
+ const rarityIcon = (0, items_1.getRarityIcon)(item.rarity);
63
+ const colorFn = getChalkColor(rarityColor);
64
+ const canAfford = shop.canAfford(item.id, coins);
65
+ const maxAffordable = shop.maxAffordable(item.id, coins);
66
+ const statusText = canAfford
67
+ ? chalk_1.default.green(`✓ Can buy x${maxAffordable}`)
68
+ : chalk_1.default.red(`✗ Too expensive`);
69
+ console.log(` ${colorFn(item.emoji)} ${chalk_1.default.bold(item.name)} ${rarityIcon}`);
70
+ console.log(chalk_1.default.gray(` Price: ${chalk_1.default.yellow(price + ' 🪙')} ${statusText}`));
71
+ console.log(chalk_1.default.gray(` ${item.description}`));
72
+ // Show effects
73
+ const effects = [];
74
+ if (item.effect.hunger)
75
+ effects.push(`${item.effect.hunger > 0 ? '+' : ''}${item.effect.hunger} hunger`);
76
+ if (item.effect.happiness)
77
+ effects.push(`${item.effect.happiness > 0 ? '+' : ''}${item.effect.happiness} happy`);
78
+ if (item.effect.health)
79
+ effects.push(`${item.effect.health > 0 ? '+' : ''}${item.effect.health} health`);
80
+ if (item.effect.cleanliness)
81
+ effects.push(`${item.effect.cleanliness > 0 ? '+' : ''}${item.effect.cleanliness} clean`);
82
+ if (item.effect.energy)
83
+ effects.push(`${item.effect.energy > 0 ? '+' : ''}${item.effect.energy} energy`);
84
+ if (effects.length > 0) {
85
+ console.log(chalk_1.default.gray(` Effects: ${effects.join(', ')}`));
86
+ }
87
+ console.log('');
88
+ }
89
+ }
90
+ console.log((0, display_1.drawDivider)(44));
91
+ // Ask if user wants to buy something
92
+ const { wantsToBuy } = await inquirer_1.default.prompt([
93
+ {
94
+ type: 'confirm',
95
+ name: 'wantsToBuy',
96
+ message: 'Would you like to buy something?',
97
+ default: false,
98
+ },
99
+ ]);
100
+ if (!wantsToBuy) {
101
+ console.log('');
102
+ console.log(chalk_1.default.gray('Thanks for visiting! Come back soon!'));
103
+ console.log('');
104
+ return;
105
+ }
106
+ // Let user choose category first
107
+ const { category } = await inquirer_1.default.prompt([
108
+ {
109
+ type: 'list',
110
+ name: 'category',
111
+ message: 'Which category?',
112
+ choices: Array.from(itemsByCategory.keys()),
113
+ },
114
+ ]);
115
+ // Filter items by chosen category
116
+ const categoryItems = itemsByCategory.get(category) || [];
117
+ // Create choices for items in this category
118
+ const itemChoices = categoryItems
119
+ .filter((shopItem) => shop.canAfford(shopItem.item.id, coins))
120
+ .map((shopItem) => ({
121
+ name: `${shopItem.item.emoji} ${shopItem.item.name} - ${shopItem.price} 🪙`,
122
+ value: shopItem.item.id,
123
+ }));
124
+ if (itemChoices.length === 0) {
125
+ console.log('');
126
+ console.log(chalk_1.default.yellow("You can't afford any items in this category!"));
127
+ console.log('');
128
+ return;
129
+ }
130
+ // Let user choose item
131
+ const { itemId } = await inquirer_1.default.prompt([
132
+ {
133
+ type: 'list',
134
+ name: 'itemId',
135
+ message: 'What would you like to buy?',
136
+ choices: itemChoices,
137
+ },
138
+ ]);
139
+ // Ask quantity
140
+ const maxQty = shop.maxAffordable(itemId, coins);
141
+ const { quantity } = await inquirer_1.default.prompt([
142
+ {
143
+ type: 'number',
144
+ name: 'quantity',
145
+ message: `How many? (max ${maxQty})`,
146
+ default: 1,
147
+ validate: (input) => {
148
+ const num = parseInt(input.toString());
149
+ if (isNaN(num) || num < 1) {
150
+ return 'Please enter a valid number';
151
+ }
152
+ if (num > maxQty) {
153
+ return `You can only afford ${maxQty}`;
154
+ }
155
+ return true;
156
+ },
157
+ },
158
+ ]);
159
+ const qty = parseInt(quantity.toString());
160
+ const totalPrice = shop.getItemPrice(itemId) * qty;
161
+ // Confirm purchase
162
+ const { confirm } = await inquirer_1.default.prompt([
163
+ {
164
+ type: 'confirm',
165
+ name: 'confirm',
166
+ message: `Buy ${qty}x for ${totalPrice} 🪙?`,
167
+ default: true,
168
+ },
169
+ ]);
170
+ if (!confirm) {
171
+ console.log('');
172
+ console.log(chalk_1.default.gray('Purchase cancelled.'));
173
+ console.log('');
174
+ return;
175
+ }
176
+ // Process purchase
177
+ if (pet.spendCoins(totalPrice)) {
178
+ pet.addItem(itemId, qty);
179
+ const boughtItem = shop.getShopItem(itemId);
180
+ console.log('');
181
+ console.log((0, display_1.drawHeader)('RECEIPT', 36));
182
+ console.log('');
183
+ console.log(chalk_1.default.cyan(` ${boughtItem?.item.emoji} ${boughtItem?.item.name} x${qty}`));
184
+ console.log(chalk_1.default.gray(` Price: ${totalPrice} 🪙`));
185
+ console.log((0, display_1.drawDivider)(36));
186
+ console.log(chalk_1.default.yellow(` Remaining: ${shop_1.Shop.formatCoins(pet.getCoins())}`));
187
+ console.log('');
188
+ console.log(chalk_1.default.gray(' Thank you for your purchase!'));
189
+ console.log('');
190
+ }
191
+ else {
192
+ console.log('');
193
+ console.log(chalk_1.default.red('Something went wrong!'));
194
+ console.log('');
195
+ }
196
+ });
197
+ //# sourceMappingURL=shop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shop.js","sourceRoot":"","sources":["../../src/commands/shop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const sleepCommand: Command;
3
+ //# sourceMappingURL=sleep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/commands/sleep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SAAuB,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sleepCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const database_1 = require("../core/database");
11
+ const pet_1 = require("../core/pet");
12
+ const display_1 = require("../ui/display");
13
+ const ascii_art_1 = require("../ui/ascii-art");
14
+ exports.sleepCommand = new commander_1.Command('sleep');
15
+ exports.sleepCommand.description('Put your pet to sleep or wake them up').action(async () => {
16
+ const db = new database_1.Database(path_1.default.join(process.cwd(), 'data', 'pet.json'));
17
+ if (!db.hasPet()) {
18
+ console.log(chalk_1.default.yellow("You don't have a pet yet!"));
19
+ console.log(chalk_1.default.gray('Use "pet init" to create one.'));
20
+ return;
21
+ }
22
+ const pet = await pet_1.Pet.loadOrCreate(db);
23
+ const data = pet.getData();
24
+ const wasSleeping = data.isSleeping;
25
+ const result = pet.sleep();
26
+ console.log('');
27
+ console.log((0, display_1.drawHeader)(wasSleeping ? 'GOOD MORNING!' : 'TIME FOR BED'));
28
+ console.log('');
29
+ const newData = pet.getData();
30
+ console.log(chalk_1.default.green((0, ascii_art_1.getPetAscii)(newData.species, newData.mood, wasSleeping)));
31
+ console.log('');
32
+ console.log((0, display_1.drawDivider)(42));
33
+ console.log(chalk_1.default.cyan(result.message));
34
+ console.log((0, display_1.drawDivider)(42));
35
+ if (result.success && result.statChanges.length > 0) {
36
+ console.log('');
37
+ const lines = (0, display_1.drawStatChanges)(result.statChanges);
38
+ console.log(lines.join('\n'));
39
+ if (result.levelUp) {
40
+ console.log('');
41
+ console.log(chalk_1.default.yellow.bold(`Level ${result.newLevel} reached! 🎉`));
42
+ }
43
+ console.log('');
44
+ console.log(chalk_1.default.gray(`XP: +${result.xpGained}`));
45
+ }
46
+ console.log('');
47
+ });
48
+ //# sourceMappingURL=sleep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/commands/sleep.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,gDAAwB;AACxB,+CAA4C;AAC5C,qCAAkC;AAClC,2CAAyE;AACzE,+CAA8C;AAEjC,QAAA,YAAY,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC,CAAC;AAEjD,oBAAY,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;IAClF,MAAM,EAAE,GAAG,IAAI,mBAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAEtE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,SAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAE3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAU,EAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAA,uBAAW,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,IAAA,qBAAW,EAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,IAAA,qBAAW,EAAC,EAAE,CAAC,CAAC,CAAC;IAE7B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,KAAK,GAAG,IAAA,yBAAe,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,QAAQ,cAAc,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const statusCommand: Command;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,aAAa,SAAwB,CAAC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.statusCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const database_1 = require("../core/database");
11
+ const pet_1 = require("../core/pet");
12
+ const display_1 = require("../ui/display");
13
+ const ascii_art_1 = require("../ui/ascii-art");
14
+ const time_1 = require("../types/time");
15
+ const shop_1 = require("../core/shop");
16
+ exports.statusCommand = new commander_1.Command('status');
17
+ exports.statusCommand.description('Display your pet status').action(async () => {
18
+ const db = new database_1.Database(path_1.default.join(process.cwd(), 'data', 'pet.json'));
19
+ if (!db.hasPet()) {
20
+ console.log(chalk_1.default.yellow("You don't have a pet yet!"));
21
+ console.log(chalk_1.default.gray('Use "pet init" to create one.'));
22
+ return;
23
+ }
24
+ const pet = await pet_1.Pet.loadOrCreate(db);
25
+ const data = pet.getData();
26
+ console.log('');
27
+ console.log((0, display_1.drawHeader)(`${data.name} the ${data.species}`, 42));
28
+ console.log('');
29
+ console.log(chalk_1.default.green((0, ascii_art_1.getPetAscii)(data.species, data.mood, data.isSleeping)));
30
+ console.log('');
31
+ const statusText = data.isSleeping ? 'Sleeping' : 'Awake';
32
+ const statusEmoji = data.isSleeping ? '💤' : '⚡';
33
+ console.log(chalk_1.default.gray(`Status: ${statusEmoji} ${statusText}`));
34
+ console.log('');
35
+ // Show last interaction time
36
+ const lastInteractionTime = (0, time_1.getTimeAgo)(data.lastInteraction);
37
+ console.log(chalk_1.default.gray(`Last seen: ${lastInteractionTime.raw}`));
38
+ console.log('');
39
+ console.log((0, display_1.drawDivider)(42));
40
+ console.log((0, display_1.drawProgressBar)('Hunger', data.stats.hunger));
41
+ console.log((0, display_1.drawProgressBar)('Happiness', data.stats.happiness));
42
+ console.log((0, display_1.drawProgressBar)('Health', data.stats.health));
43
+ console.log((0, display_1.drawProgressBar)('Cleanliness', data.stats.cleanliness));
44
+ console.log((0, display_1.drawProgressBar)('Energy', data.stats.energy));
45
+ console.log((0, display_1.drawDivider)(42));
46
+ // Show warnings if pet needs care
47
+ if (pet.needsCare()) {
48
+ console.log('');
49
+ const warnings = [];
50
+ if (data.stats.hunger < 30)
51
+ warnings.push(chalk_1.default.red('🍖 Starving!'));
52
+ if (data.stats.happiness < 30)
53
+ warnings.push(chalk_1.default.yellow('😢 Depressed!'));
54
+ if (data.stats.health < 40)
55
+ warnings.push(chalk_1.default.red('💊 Unwell!'));
56
+ if (data.stats.cleanliness < 30)
57
+ warnings.push(chalk_1.default.yellow('🛁 Filthy!'));
58
+ if (data.stats.energy < 20)
59
+ warnings.push(chalk_1.default.yellow('😴 Exhausted!'));
60
+ console.log(chalk_1.default.bold.red('Needs attention:'));
61
+ console.log(warnings.join(' '));
62
+ }
63
+ console.log('');
64
+ console.log((0, display_1.drawXPBar)(data.experience, pet.getXPToNextLevel() + data.experience));
65
+ console.log('');
66
+ const levelTitle = pet.getLevelTitle();
67
+ console.log(chalk_1.default.gray(`Level: ${chalk_1.default.bold(data.level)} (${levelTitle}) Interactions: ${data.totalInteractions}`));
68
+ console.log('');
69
+ const moodEmoji = (0, display_1.getMoodEmoji)(data.mood);
70
+ const moodDesc = (0, display_1.getMoodDescription)(data.mood);
71
+ console.log(chalk_1.default.magenta(`Mood: ${moodEmoji} ${data.mood.toUpperCase()} - ${data.name} ${moodDesc}`));
72
+ console.log('');
73
+ // Display coins
74
+ const coins = pet.getCoins();
75
+ const todayCoins = pet.getTodayCoins();
76
+ console.log(chalk_1.default.yellow(`Coins: ${chalk_1.default.bold(shop_1.Shop.formatCoins(coins))}`));
77
+ if (todayCoins > 0) {
78
+ console.log(chalk_1.default.gray(`Today's earnings: +${todayCoins} 🪙`));
79
+ }
80
+ console.log('');
81
+ // Display Git stats
82
+ const gitStreak = pet.getGitStreak();
83
+ const gitCommits = pet.getGitCommitCount();
84
+ if (gitStreak > 0 || gitCommits > 0) {
85
+ console.log(chalk_1.default.gray(`Git Streak: ${chalk_1.default.bold.yellow(gitStreak + ' days')} 🔥`));
86
+ console.log(chalk_1.default.gray(`Total Commits: ${chalk_1.default.bold(gitCommits)} 📝`));
87
+ console.log('');
88
+ }
89
+ // Display suggestions (only if there are any)
90
+ const suggestions = pet.getSuggestions();
91
+ if (suggestions.length > 0) {
92
+ for (const suggestion of suggestions) {
93
+ console.log(chalk_1.default.gray(suggestion));
94
+ }
95
+ console.log('');
96
+ }
97
+ });
98
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const syncCommand: Command;
3
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SAAsB,CAAC"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.syncCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const database_1 = require("../core/database");
11
+ const pet_1 = require("../core/pet");
12
+ const display_1 = require("../ui/display");
13
+ const time_1 = require("../types/time");
14
+ exports.syncCommand = new commander_1.Command('sync');
15
+ exports.syncCommand.description('Sync time and show stat changes from offline decay').action(async () => {
16
+ const db = new database_1.Database(path_1.default.join(process.cwd(), 'data', 'pet.json'));
17
+ if (!db.hasPet()) {
18
+ console.log(chalk_1.default.yellow("You don't have a pet yet!"));
19
+ console.log(chalk_1.default.gray('Use "pet init" to create one.'));
20
+ return;
21
+ }
22
+ const pet = await pet_1.Pet.loadOrCreate(db);
23
+ const data = pet.getData();
24
+ const hoursPassed = pet.getHoursSinceUpdate();
25
+ console.log('');
26
+ console.log((0, display_1.drawHeader)('TIME SYNC'));
27
+ console.log('');
28
+ const timeAgo = (0, time_1.getTimeAgo)(data.lastUpdated);
29
+ console.log(chalk_1.default.gray(`Last updated: ${timeAgo.raw}`));
30
+ console.log(chalk_1.default.gray(`Time passed: ${(0, time_1.formatDuration)(hoursPassed)}`));
31
+ console.log('');
32
+ if (hoursPassed < 0.017) {
33
+ console.log(chalk_1.default.green('Your pet is up to date! No time has passed.'));
34
+ console.log('');
35
+ return;
36
+ }
37
+ // Force a new sync to show changes
38
+ const result = pet.syncTime();
39
+ if (result && result.statChanges.length > 0) {
40
+ console.log((0, display_1.drawDivider)(42));
41
+ console.log(chalk_1.default.yellow('Stat changes from time decay:'));
42
+ console.log((0, display_1.drawDivider)(42));
43
+ console.log('');
44
+ for (const change of result.statChanges) {
45
+ const sign = change.delta >= 0 ? '+' : '';
46
+ const color = change.delta >= 0 ? 'green' : 'red';
47
+ console.log(` ${change.stat.padEnd(12)} ${chalk_1.default.gray('→')} ${chalk_1.default[color](`${sign}${change.delta}`)}`);
48
+ }
49
+ console.log('');
50
+ console.log((0, display_1.drawDivider)(42));
51
+ if (result.warnings.length > 0) {
52
+ console.log('');
53
+ console.log(chalk_1.default.red.bold('Warnings:'));
54
+ for (const warning of result.warnings) {
55
+ console.log(` ${chalk_1.default.red('⚠')} ${warning}`);
56
+ }
57
+ }
58
+ console.log('');
59
+ console.log(chalk_1.default.gray('Type "pet status" to see current stats.'));
60
+ }
61
+ else {
62
+ console.log(chalk_1.default.green('No significant stat changes occurred.'));
63
+ }
64
+ console.log('');
65
+ });
66
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const tutorialCommand: Command;
3
+ //# sourceMappingURL=tutorial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tutorial.d.ts","sourceRoot":"","sources":["../../src/commands/tutorial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,eAAe,SAA0B,CAAC"}