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,280 @@
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.showQuickTips = exports.showDetailedHelp = exports.showGeneralHelp = exports.showCommandHelp = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const display_1 = require("./display");
9
+ /**
10
+ * All command help data
11
+ */
12
+ const COMMAND_HELP = {
13
+ init: {
14
+ name: 'init',
15
+ description: 'Create a new pet',
16
+ usage: 'pet init',
17
+ examples: [
18
+ 'pet init # Create your first pet',
19
+ ],
20
+ related: ['status', 'tutorial'],
21
+ },
22
+ status: {
23
+ name: 'status',
24
+ description: 'Display your pet\'s current status and stats',
25
+ usage: 'pet status',
26
+ examples: [
27
+ 'pet status # Check on your pet',
28
+ ],
29
+ related: ['sync', 'care'],
30
+ },
31
+ feed: {
32
+ name: 'feed',
33
+ description: 'Feed your pet to restore hunger',
34
+ usage: 'pet feed',
35
+ examples: [
36
+ 'pet feed # Feed your pet with available food',
37
+ ],
38
+ related: ['shop', 'inventory', 'care'],
39
+ },
40
+ play: {
41
+ name: 'play',
42
+ description: 'Play with your pet to increase happiness',
43
+ usage: 'pet play',
44
+ examples: [
45
+ 'pet play # Play with your pet',
46
+ ],
47
+ related: ['shop', 'inventory', 'care'],
48
+ },
49
+ clean: {
50
+ name: 'clean',
51
+ description: 'Clean your pet to restore cleanliness',
52
+ usage: 'pet clean',
53
+ examples: [
54
+ 'pet clean # Give your pet a bath',
55
+ ],
56
+ related: ['shop', 'inventory', 'care'],
57
+ },
58
+ heal: {
59
+ name: 'heal',
60
+ description: 'Heal your pet with medicine',
61
+ usage: 'pet heal',
62
+ examples: [
63
+ 'pet heal # Use medicine to heal your pet',
64
+ ],
65
+ related: ['shop', 'inventory', 'care'],
66
+ },
67
+ sleep: {
68
+ name: 'sleep',
69
+ description: 'Put your pet to sleep or wake them up',
70
+ usage: 'pet sleep',
71
+ examples: [
72
+ 'pet sleep # Toggle sleep state',
73
+ ],
74
+ related: ['status'],
75
+ },
76
+ care: {
77
+ name: 'care',
78
+ description: 'One-click care for all your pet\'s needs',
79
+ usage: 'pet care',
80
+ examples: [
81
+ 'pet care # Handle all care needs at once',
82
+ 'pet auto # Same as pet care',
83
+ 'pet all # Same as pet care',
84
+ ],
85
+ related: ['status', 'shop', 'inventory'],
86
+ },
87
+ inventory: {
88
+ name: 'inventory',
89
+ description: 'Display items in your inventory',
90
+ usage: 'pet inventory',
91
+ examples: [
92
+ 'pet inventory # Show all items',
93
+ 'pet inv # Short form',
94
+ 'pet items # Alternative alias',
95
+ ],
96
+ related: ['shop', 'feed', 'play', 'clean', 'heal'],
97
+ },
98
+ shop: {
99
+ name: 'shop',
100
+ description: 'Visit the pet shop to buy items',
101
+ usage: 'pet shop',
102
+ examples: [
103
+ 'pet shop # Open the shop',
104
+ 'pet store # Same as pet shop',
105
+ ],
106
+ related: ['inventory', 'git'],
107
+ },
108
+ git: {
109
+ name: 'git',
110
+ description: 'Check for new Git commits and earn rewards',
111
+ usage: 'pet git',
112
+ examples: [
113
+ 'pet git # Check for new commits',
114
+ 'pet commits # Same as pet git',
115
+ ],
116
+ related: ['shop', 'status'],
117
+ },
118
+ sync: {
119
+ name: 'sync',
120
+ description: 'Sync time and show stat changes from decay',
121
+ usage: 'pet sync',
122
+ examples: [
123
+ 'pet sync # Catch up on time passed',
124
+ ],
125
+ related: ['status'],
126
+ },
127
+ tutorial: {
128
+ name: 'tutorial',
129
+ description: 'Show the getting started tutorial',
130
+ usage: 'pet tutorial',
131
+ examples: [
132
+ 'pet tutorial # View the tutorial',
133
+ 'pet help # Same as pet tutorial',
134
+ 'pet guide # Same as pet tutorial',
135
+ ],
136
+ related: ['init'],
137
+ },
138
+ };
139
+ /**
140
+ * Show detailed help for a specific command
141
+ */
142
+ const showCommandHelp = (commandName) => {
143
+ const help = COMMAND_HELP[commandName];
144
+ if (!help) {
145
+ console.log(chalk_1.default.red(`Unknown command: ${commandName}`));
146
+ console.log(chalk_1.default.gray('Run "pet --help" to see all commands.'));
147
+ console.log('');
148
+ return;
149
+ }
150
+ console.log('');
151
+ console.log((0, display_1.drawHeader)(`PET ${commandName.toUpperCase()}`, 48));
152
+ console.log('');
153
+ // Description
154
+ console.log(chalk_1.default.white.bold('Description:'));
155
+ console.log(` ${help.description}`);
156
+ console.log('');
157
+ // Usage
158
+ console.log(chalk_1.default.white.bold('Usage:'));
159
+ console.log(chalk_1.default.cyan(` ${help.usage}`));
160
+ console.log('');
161
+ // Examples
162
+ if (help.examples.length > 0) {
163
+ console.log(chalk_1.default.white.bold('Examples:'));
164
+ for (const example of help.examples) {
165
+ console.log(chalk_1.default.cyan(` ${example}`));
166
+ }
167
+ console.log('');
168
+ }
169
+ // Related commands
170
+ if (help.related.length > 0) {
171
+ console.log(chalk_1.default.white.bold('Related Commands:'));
172
+ const relatedList = help.related.map(cmd => {
173
+ const cmdHelp = COMMAND_HELP[cmd];
174
+ return cmdHelp ? `${chalk_1.default.cyan(cmd)} - ${cmdHelp.description}` : chalk_1.default.cyan(cmd);
175
+ }).join('\n ');
176
+ console.log(` ${relatedList}`);
177
+ console.log('');
178
+ }
179
+ console.log((0, display_1.drawDivider)(48));
180
+ console.log('');
181
+ };
182
+ exports.showCommandHelp = showCommandHelp;
183
+ /**
184
+ * Show general help
185
+ */
186
+ const showGeneralHelp = () => {
187
+ console.log('');
188
+ console.log(chalk_1.default.cyan('╔═══════════════════════════════════════════════════════════╗'));
189
+ console.log(chalk_1.default.cyan('║') + chalk_1.default.yellow.bold(' 🐾 PET TERMINAL 🐾 Your Coding Companion ') + chalk_1.default.cyan(' ║'));
190
+ console.log(chalk_1.default.cyan('╚═══════════════════════════════════════════════════════════╝'));
191
+ console.log('');
192
+ console.log(chalk_1.default.gray('A terminal-based virtual pet that grows when you code.'));
193
+ console.log('');
194
+ console.log(chalk_1.default.white.bold('USAGE:'));
195
+ console.log(chalk_1.default.cyan(' pet <command>') + chalk_1.default.gray(' [options]'));
196
+ console.log('');
197
+ console.log(chalk_1.default.white.bold('COMMANDS:'));
198
+ console.log('');
199
+ // Group commands by category
200
+ const categories = {
201
+ 'Getting Started': ['init', 'status', 'tutorial'],
202
+ 'Care Commands': ['feed', 'play', 'clean', 'heal', 'sleep', 'care'],
203
+ 'Management': ['inventory', 'shop', 'sync'],
204
+ 'Git Integration': ['git'],
205
+ };
206
+ for (const [category, commands] of Object.entries(categories)) {
207
+ console.log(chalk_1.default.magenta.bold(` ${category}:`));
208
+ for (const cmd of commands) {
209
+ const help = COMMAND_HELP[cmd];
210
+ if (help) {
211
+ const aliases = getAliases(cmd);
212
+ const aliasStr = aliases.length > 0 ? chalk_1.default.gray(` (${aliases.join(', ')})`) : '';
213
+ console.log(` ${chalk_1.default.cyan(cmd.padEnd(12))}${aliasStr} ${help.description}`);
214
+ }
215
+ }
216
+ console.log('');
217
+ }
218
+ console.log(chalk_1.default.white.bold('OPTIONS:'));
219
+ console.log(' ' + chalk_1.default.cyan('-h, --help') + ' Show help for a command');
220
+ console.log(' ' + chalk_1.default.cyan('-v, --version') + ' Show version number');
221
+ console.log('');
222
+ console.log(chalk_1.default.white.bold('EXAMPLES:'));
223
+ console.log(chalk_1.default.cyan(' pet init') + chalk_1.default.gray(' # Create your first pet'));
224
+ console.log(chalk_1.default.cyan(' pet status') + chalk_1.default.gray(' # Check on your pet'));
225
+ console.log(chalk_1.default.cyan(' pet git') + chalk_1.default.gray(' # Earn rewards for commits'));
226
+ console.log(chalk_1.default.cyan(' pet care') + chalk_1.default.gray(' # One-click care'));
227
+ console.log('');
228
+ console.log(chalk_1.default.gray('For detailed help on a command:'));
229
+ console.log(chalk_1.default.cyan(' pet help <command>'));
230
+ console.log('');
231
+ console.log(chalk_1.default.gray('Type "pet tutorial" to see the getting started guide.'));
232
+ console.log('');
233
+ };
234
+ exports.showGeneralHelp = showGeneralHelp;
235
+ /**
236
+ * Get aliases for a command
237
+ */
238
+ const getAliases = (command) => {
239
+ const aliasMap = {
240
+ care: ['auto', 'all'],
241
+ inventory: ['inv', 'items'],
242
+ shop: ['store'],
243
+ git: ['commits'],
244
+ tutorial: ['help', 'guide'],
245
+ };
246
+ return aliasMap[command] || [];
247
+ };
248
+ /**
249
+ * Show enhanced help (general or command-specific)
250
+ */
251
+ const showDetailedHelp = (command) => {
252
+ if (command && COMMAND_HELP[command]) {
253
+ (0, exports.showCommandHelp)(command);
254
+ }
255
+ else {
256
+ (0, exports.showGeneralHelp)();
257
+ }
258
+ };
259
+ exports.showDetailedHelp = showDetailedHelp;
260
+ /**
261
+ * Show quick tips
262
+ */
263
+ const showQuickTips = () => {
264
+ const tips = [
265
+ '💡 Make Git commits to earn coins and XP for your pet!',
266
+ '💡 Use "pet care" for one-click care of all needs.',
267
+ '💡 Run "pet git" after coding sessions to collect rewards.',
268
+ '💡 Your pet gains stats automatically when you commit!',
269
+ '💡 Use "pet shop" to buy food, toys, and supplies.',
270
+ '💡 Keep a daily commit streak for bonus rewards!',
271
+ ];
272
+ console.log('');
273
+ console.log(chalk_1.default.magenta.bold(' Quick Tips:'));
274
+ for (const tip of tips) {
275
+ console.log(chalk_1.default.gray(` ${tip}`));
276
+ }
277
+ console.log('');
278
+ };
279
+ exports.showQuickTips = showQuickTips;
280
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/ui/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class ProgressBar {
2
+ private width;
3
+ constructor(width?: number);
4
+ render(value: number, max?: number): string;
5
+ private getColor;
6
+ renderWithLabel(label: string, value: number, max?: number): string;
7
+ renderXP(current: number, max: number): string;
8
+ }
9
+ //# sourceMappingURL=progress-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../src/ui/progress-bar.ts"],"names":[],"mappings":"AAiBA,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,GAAE,MAAW;IAI9B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAY,GAAG,MAAM;IAchD,OAAO,CAAC,QAAQ;IAOhB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAY,GAAG,MAAM;IAQxE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;CAI/C"}
@@ -0,0 +1,57 @@
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.ProgressBar = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const getChalkColor = (color) => {
9
+ switch (color) {
10
+ case 'green':
11
+ return chalk_1.default.green;
12
+ case 'yellow':
13
+ return chalk_1.default.yellow;
14
+ case 'orange':
15
+ return chalk_1.default.hex('#FFA500');
16
+ case 'red':
17
+ return chalk_1.default.red;
18
+ default:
19
+ return chalk_1.default.white;
20
+ }
21
+ };
22
+ class ProgressBar {
23
+ constructor(width = 20) {
24
+ this.width = width;
25
+ }
26
+ render(value, max = 100) {
27
+ const percentage = Math.min(100, (value / max) * 100);
28
+ const filled = Math.round((percentage / 100) * this.width);
29
+ const empty = this.width - filled;
30
+ const filledChar = '█';
31
+ const emptyChar = '░';
32
+ const color = this.getColor(percentage);
33
+ const colorFn = getChalkColor(color);
34
+ return colorFn(filledChar.repeat(filled)) + chalk_1.default.gray(emptyChar.repeat(empty));
35
+ }
36
+ getColor(percentage) {
37
+ if (percentage >= 80)
38
+ return 'green';
39
+ if (percentage >= 50)
40
+ return 'yellow';
41
+ if (percentage >= 30)
42
+ return 'orange';
43
+ return 'red';
44
+ }
45
+ renderWithLabel(label, value, max = 100) {
46
+ const bar = this.render(value, max);
47
+ const percentage = Math.round((value / max) * 100);
48
+ const valueStr = percentage.toString().padStart(3);
49
+ return `${label.padEnd(12)} ${bar} ${valueStr}%`;
50
+ }
51
+ renderXP(current, max) {
52
+ const bar = this.render(current, max);
53
+ return chalk_1.default.cyan(`XP: ${bar} ${current}/${max}`);
54
+ }
55
+ }
56
+ exports.ProgressBar = ProgressBar;
57
+ //# sourceMappingURL=progress-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.js","sourceRoot":"","sources":["../../src/ui/progress-bar.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAM,aAAa,GAAG,CAAC,KAAa,EAA8B,EAAE;IAClE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,eAAK,CAAC,KAAK,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,eAAK,CAAC,MAAM,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9B,KAAK,KAAK;YACR,OAAO,eAAK,CAAC,GAAG,CAAC;QACnB;YACE,OAAO,eAAK,CAAC,KAAK,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAa,WAAW;IAGtB,YAAY,QAAgB,EAAE;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc,GAAG;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QAElC,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,CAAC;QAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAErC,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IAEO,QAAQ,CAAC,UAAkB;QACjC,IAAI,UAAU,IAAI,EAAE;YAAE,OAAO,OAAO,CAAC;QACrC,IAAI,UAAU,IAAI,EAAE;YAAE,OAAO,QAAQ,CAAC;QACtC,IAAI,UAAU,IAAI,EAAE;YAAE,OAAO,QAAQ,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,KAAa,EAAE,MAAc,GAAG;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEnD,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,QAAQ,GAAG,CAAC;IACnD,CAAC;IAED,QAAQ,CAAC,OAAe,EAAE,GAAW;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtC,OAAO,eAAK,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;CACF;AAxCD,kCAwCC"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "pet-terminal",
3
+ "version": "1.0.0",
4
+ "description": "A terminal-based virtual pet that grows happier when you code",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "pet": "./dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "dev": "ts-node src/index.ts",
11
+ "build": "tsc",
12
+ "start": "node dist/index.js",
13
+ "lint": "eslint src --ext .ts",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "keywords": [
17
+ "pet",
18
+ "game",
19
+ "terminal",
20
+ "cli",
21
+ "virtual-pet",
22
+ "git",
23
+ "developer",
24
+ "productivity",
25
+ "fun"
26
+ ],
27
+ "author": "Lishang Xu <lessenx2002@gmail.com>",
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/lessen-xu/pet-terminal.git"
32
+ },
33
+ "bugs": {
34
+ "url": "https://github.com/lessen-xu/pet-terminal/issues"
35
+ },
36
+ "homepage": "https://github.com/lessen-xu/pet-terminal#readme",
37
+ "files": [
38
+ "dist",
39
+ "README.md",
40
+ "LICENSE"
41
+ ],
42
+ "dependencies": {
43
+ "chalk": "^4.1.2",
44
+ "commander": "^11.1.0",
45
+ "inquirer": "^8.2.5",
46
+ "lowdb": "^1.0.0"
47
+ },
48
+ "devDependencies": {
49
+ "@types/inquirer": "^8.2.10",
50
+ "@types/node": "^20.10.6",
51
+ "@typescript-eslint/eslint-plugin": "^6.17.0",
52
+ "@typescript-eslint/parser": "^6.17.0",
53
+ "eslint": "^8.56.0",
54
+ "prettier": "^3.1.1",
55
+ "ts-node": "^10.9.2",
56
+ "typescript": "^5.3.3"
57
+ },
58
+ "engines": {
59
+ "node": ">=14.0.0"
60
+ }
61
+ }