kythia-core 0.12.3-beta → 0.12.5-beta

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 (91) hide show
  1. package/dist/Kythia.d.ts.map +1 -1
  2. package/dist/Kythia.js +5 -8
  3. package/dist/Kythia.js.map +1 -1
  4. package/dist/KythiaClient.d.ts.map +1 -1
  5. package/dist/KythiaClient.js +7 -0
  6. package/dist/KythiaClient.js.map +1 -1
  7. package/dist/cli/Command.d.ts.map +1 -1
  8. package/dist/cli/Command.js +4 -5
  9. package/dist/cli/Command.js.map +1 -1
  10. package/dist/cli/commands/CacheClearCommand.d.ts +0 -1
  11. package/dist/cli/commands/CacheClearCommand.d.ts.map +1 -1
  12. package/dist/cli/commands/CacheClearCommand.js +5 -2
  13. package/dist/cli/commands/CacheClearCommand.js.map +1 -1
  14. package/dist/cli/commands/LangTranslateCommand.d.ts +0 -1
  15. package/dist/cli/commands/LangTranslateCommand.d.ts.map +1 -1
  16. package/dist/cli/commands/LangTranslateCommand.js +6 -3
  17. package/dist/cli/commands/LangTranslateCommand.js.map +1 -1
  18. package/dist/cli/commands/MakeMigrationCommand.js +1 -1
  19. package/dist/cli/commands/MakeModelCommand.js +1 -1
  20. package/dist/cli/utils/db.d.ts +1 -2
  21. package/dist/cli/utils/db.d.ts.map +1 -1
  22. package/dist/cli/utils/db.js +9 -6
  23. package/dist/cli/utils/db.js.map +1 -1
  24. package/dist/database/KythiaMigrator.d.ts.map +1 -1
  25. package/dist/database/KythiaMigrator.js.map +1 -1
  26. package/dist/database/KythiaModel.d.ts.map +1 -1
  27. package/dist/database/KythiaModel.js +0 -1
  28. package/dist/database/KythiaModel.js.map +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/managers/AddonManager.d.ts +1 -1
  32. package/dist/managers/AddonManager.d.ts.map +1 -1
  33. package/dist/managers/AddonManager.js +154 -45
  34. package/dist/managers/AddonManager.js.map +1 -1
  35. package/dist/managers/EventManager.d.ts.map +1 -1
  36. package/dist/managers/EventManager.js +73 -26
  37. package/dist/managers/EventManager.js.map +1 -1
  38. package/dist/managers/InteractionManager.d.ts +0 -4
  39. package/dist/managers/InteractionManager.d.ts.map +1 -1
  40. package/dist/managers/InteractionManager.js +198 -186
  41. package/dist/managers/InteractionManager.js.map +1 -1
  42. package/dist/managers/MiddlewareManager.d.ts.map +1 -1
  43. package/dist/managers/MiddlewareManager.js +65 -32
  44. package/dist/managers/MiddlewareManager.js.map +1 -1
  45. package/dist/managers/ShutdownManager.d.ts.map +1 -1
  46. package/dist/managers/ShutdownManager.js +109 -81
  47. package/dist/managers/ShutdownManager.js.map +1 -1
  48. package/dist/managers/TelemetryManager.d.ts +1 -1
  49. package/dist/managers/TelemetryManager.d.ts.map +1 -1
  50. package/dist/managers/TelemetryManager.js +99 -53
  51. package/dist/managers/TelemetryManager.js.map +1 -1
  52. package/dist/managers/TranslatorManager.d.ts +8 -2
  53. package/dist/managers/TranslatorManager.d.ts.map +1 -1
  54. package/dist/managers/TranslatorManager.js +83 -56
  55. package/dist/managers/TranslatorManager.js.map +1 -1
  56. package/dist/types/AddonManager.d.ts +1 -0
  57. package/dist/types/AddonManager.d.ts.map +1 -1
  58. package/dist/types/DiscordHelpers.d.ts +0 -3
  59. package/dist/types/DiscordHelpers.d.ts.map +1 -1
  60. package/dist/types/InteractionManager.d.ts +0 -3
  61. package/dist/types/InteractionManager.d.ts.map +1 -1
  62. package/dist/types/KythiaContainer.d.ts +2 -3
  63. package/dist/types/KythiaContainer.d.ts.map +1 -1
  64. package/dist/types/KythiaLogger.d.ts +2 -2
  65. package/dist/types/KythiaLogger.d.ts.map +1 -1
  66. package/dist/types/TranslatorManager.d.ts +4 -1
  67. package/dist/types/TranslatorManager.d.ts.map +1 -1
  68. package/dist/utils/InteractionFactory.d.ts +5 -0
  69. package/dist/utils/InteractionFactory.d.ts.map +1 -0
  70. package/dist/utils/InteractionFactory.js +334 -0
  71. package/dist/utils/InteractionFactory.js.map +1 -0
  72. package/dist/utils/discord.d.ts +1 -2
  73. package/dist/utils/discord.d.ts.map +1 -1
  74. package/dist/utils/discord.js +1 -35
  75. package/dist/utils/discord.js.map +1 -1
  76. package/dist/utils/index.d.ts +3 -0
  77. package/dist/utils/index.d.ts.map +1 -1
  78. package/dist/utils/index.js +2 -0
  79. package/dist/utils/index.js.map +1 -1
  80. package/dist/utils/logger.d.ts.map +1 -1
  81. package/dist/utils/logger.js +59 -8
  82. package/dist/utils/logger.js.map +1 -1
  83. package/package.json +4 -5
  84. package/dist/middlewares/teamOnly.d.ts +0 -4
  85. package/dist/middlewares/teamOnly.d.ts.map +0 -1
  86. package/dist/middlewares/teamOnly.js +0 -26
  87. package/dist/middlewares/teamOnly.js.map +0 -1
  88. package/dist/middlewares/voteLocked.d.ts +0 -4
  89. package/dist/middlewares/voteLocked.d.ts.map +0 -1
  90. package/dist/middlewares/voteLocked.js +0 -52
  91. package/dist/middlewares/voteLocked.js.map +0 -1
@@ -15,44 +15,72 @@ class MiddlewareManager {
15
15
  this.middlewares = [];
16
16
  }
17
17
  async loadMiddlewares() {
18
- this.middlewares = [];
19
- const coreMiddlewarePath = node_path_1.default.join(__dirname, '..', 'middlewares');
20
- if (node_fs_1.default.existsSync(coreMiddlewarePath)) {
21
- await this._loadFromPath(coreMiddlewarePath);
22
- }
23
- else {
24
- this.logger.warn(`⚠️ Core middlewares path not found: ${coreMiddlewarePath}`);
18
+ try {
19
+ this.middlewares = [];
20
+ const coreMiddlewarePath = node_path_1.default.join(__dirname, '..', 'middlewares');
21
+ if (node_fs_1.default.existsSync(coreMiddlewarePath)) {
22
+ await this._loadFromPath(coreMiddlewarePath, 'core');
23
+ }
24
+ else {
25
+ this.logger.warn(`⚠️ Core middlewares path not found: ${coreMiddlewarePath}`);
26
+ }
27
+ const appRoot = this.container.appRoot || process.cwd();
28
+ const userPaths = [
29
+ node_path_1.default.join(appRoot, 'src', 'middlewares'),
30
+ node_path_1.default.join(appRoot, 'middlewares'),
31
+ ];
32
+ for (const userPath of userPaths) {
33
+ if (node_fs_1.default.existsSync(userPath) && userPath !== coreMiddlewarePath) {
34
+ await this._loadFromPath(userPath, 'bot');
35
+ }
36
+ }
37
+ this.middlewares.sort((a, b) => (a.priority || 10) - (b.priority || 10));
38
+ this.logger.info(`🛡️ Total Loaded: ${this.middlewares.length} middlewares.`);
25
39
  }
26
- const appRoot = this.container.appRoot || process.cwd();
27
- const userMiddlewarePath = node_path_1.default.join(appRoot, 'src', 'middlewares');
28
- if (node_fs_1.default.existsSync(userMiddlewarePath) &&
29
- userMiddlewarePath !== coreMiddlewarePath) {
30
- await this._loadFromPath(userMiddlewarePath);
40
+ catch (error) {
41
+ this.logger.error('Failed to load middlewares:', error);
42
+ this.container.telemetry?.report('error', 'Middleware Loading Failed', {
43
+ message: error.message,
44
+ stack: error.stack,
45
+ });
31
46
  }
32
- this.middlewares.sort((a, b) => (a.priority || 10) - (b.priority || 10));
33
- this.logger.info(`🛡️ Total Loaded: ${this.middlewares.length} middlewares.`);
34
47
  }
35
- async _loadFromPath(dirPath) {
36
- const files = node_fs_1.default
37
- .readdirSync(dirPath)
38
- .filter((f) => (f.endsWith('.js') || f.endsWith('.ts')) && !f.endsWith('.d.ts'));
39
- let loadedCount = 0;
40
- for (const file of files) {
41
- try {
42
- const middleware = require(node_path_1.default.join(dirPath, file));
43
- const mw = middleware.default || middleware;
44
- if (!mw.name || typeof mw.execute !== 'function') {
45
- this.logger.warn(`⚠️ Middleware ${file} invalid structure. Skipping.`);
46
- continue;
48
+ async _loadFromPath(dirPath, source) {
49
+ try {
50
+ const files = node_fs_1.default
51
+ .readdirSync(dirPath)
52
+ .filter((f) => (f.endsWith('.js') || f.endsWith('.ts')) && !f.endsWith('.d.ts'));
53
+ let loadedCount = 0;
54
+ for (const file of files) {
55
+ try {
56
+ const middleware = require(node_path_1.default.join(dirPath, file));
57
+ const mw = middleware.default || middleware;
58
+ if (!mw.name || typeof mw.execute !== 'function') {
59
+ this.logger.warn(`⚠️ Middleware ${file} invalid structure. Skipping.`);
60
+ continue;
61
+ }
62
+ this.middlewares.push(mw);
63
+ loadedCount++;
64
+ }
65
+ catch (err) {
66
+ this.logger.error(`❌ Failed to load middleware ${file}:`, err);
67
+ this.container.telemetry?.report('error', `Middleware Load Failed: [${file}]`, {
68
+ message: err.message,
69
+ stack: err.stack,
70
+ source,
71
+ });
47
72
  }
48
- this.middlewares.push(mw);
49
- loadedCount++;
50
- }
51
- catch (err) {
52
- this.logger.error(`❌ Failed to load middleware ${file}:`, err);
53
73
  }
74
+ this.logger.info(`🛡️ Loaded ${loadedCount} middlewares from ${source}`);
75
+ }
76
+ catch (error) {
77
+ this.logger.error(`Failed to read middleware directory [${dirPath}]:`, error);
78
+ this.container.telemetry?.report('error', `Middleware Directory Read Failed: [${dirPath}]`, {
79
+ message: error.message,
80
+ stack: error.stack,
81
+ source,
82
+ });
54
83
  }
55
- this.logger.info(`🛡️ Loaded ${loadedCount} middlewares.`);
56
84
  }
57
85
  async handle(interaction, command) {
58
86
  for (const middleware of this.middlewares) {
@@ -63,6 +91,11 @@ class MiddlewareManager {
63
91
  }
64
92
  catch (err) {
65
93
  this.logger.error(`❌ Error in middleware ${middleware.name}:`, err);
94
+ this.container.telemetry?.report('error', `Middleware Execution Failed: [${middleware.name}]`, {
95
+ message: err.message,
96
+ stack: err.stack,
97
+ command: command.name,
98
+ });
66
99
  return false;
67
100
  }
68
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MiddlewareManager.js","sourceRoot":"","sources":["../../src/managers/MiddlewareManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MiddlewareManager.js","sourceRoot":"","sources":["../../src/managers/MiddlewareManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ShutdownManager.d.ts","sourceRoot":"","sources":["../../src/managers/ShutdownManager.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,MAAM,UAAU,CAAC;AAElB,qBAAa,eAAgB,YAAW,gBAAgB;IACvD,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,6BAA6B,CAAe;IACpD,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,gBAAgB,CAAU;gBAOtB,EACX,MAAM,EACN,SAAS,GACT,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,eAAe,CAAA;KAAE;IAkBvD,+BAA+B,IAAI,IAAI;IA+BvC,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAkB5C,4BAA4B,IAAI,IAAI;IA0GpC,UAAU,IAAI,IAAI;IASlB,uBAAuB,IAAI,MAAM;IAQjC,wBAAwB,IAAI,MAAM;IASlC,YAAY,IAAI,IAAI;CAQpB"}
1
+ {"version":3,"file":"ShutdownManager.d.ts","sourceRoot":"","sources":["../../src/managers/ShutdownManager.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,MAAM,UAAU,CAAC;AAElB,qBAAa,eAAgB,YAAW,gBAAgB;IACvD,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,6BAA6B,CAAe;IACpD,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,gBAAgB,CAAU;gBAOtB,EACX,MAAM,EACN,SAAS,GACT,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,eAAe,CAAA;KAAE;IAkBvD,+BAA+B,IAAI,IAAI;IA2CvC,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAkB5C,4BAA4B,IAAI,IAAI;IAuIpC,UAAU,IAAI,IAAI;IASlB,uBAAuB,IAAI,MAAM;IAQjC,wBAAwB,IAAI,MAAM;IASlC,YAAY,IAAI,IAAI;CAQpB"}
@@ -23,22 +23,31 @@ class ShutdownManager {
23
23
  this.logger = this.container.logger;
24
24
  }
25
25
  initializeGlobalIntervalTracker() {
26
- if (!this._activeIntervals)
27
- this._activeIntervals = new Set();
28
- const originalSetInterval = global.setInterval;
29
- const originalClearInterval = global.clearInterval;
30
- global.setInterval = (callback, ms, ...args) => {
31
- const intervalId = originalSetInterval(callback, ms, ...args);
32
- this._activeIntervals.add(intervalId);
33
- return intervalId;
34
- };
35
- global.clearInterval = (intervalId) => {
36
- if (intervalId) {
37
- originalClearInterval(intervalId);
38
- this._activeIntervals.delete(intervalId);
39
- }
40
- };
41
- this.logger.info('✅ Global setInterval/clearInterval has been patched for tracking.');
26
+ try {
27
+ if (!this._activeIntervals)
28
+ this._activeIntervals = new Set();
29
+ const originalSetInterval = global.setInterval;
30
+ const originalClearInterval = global.clearInterval;
31
+ global.setInterval = (callback, ms, ...args) => {
32
+ const intervalId = originalSetInterval(callback, ms, ...args);
33
+ this._activeIntervals.add(intervalId);
34
+ return intervalId;
35
+ };
36
+ global.clearInterval = (intervalId) => {
37
+ if (intervalId) {
38
+ originalClearInterval(intervalId);
39
+ this._activeIntervals.delete(intervalId);
40
+ }
41
+ };
42
+ this.logger.info('✅ Global setInterval/clearInterval has been patched for tracking.');
43
+ }
44
+ catch (error) {
45
+ this.logger.error('Failed to initialize global interval tracker:', error);
46
+ this.container.telemetry?.report('error', 'Global Interval Tracker Initialization Failed', {
47
+ message: error.message,
48
+ stack: error.stack,
49
+ });
50
+ }
42
51
  }
43
52
  disableRecursively(components) {
44
53
  return components.map((comp) => {
@@ -52,78 +61,97 @@ class ShutdownManager {
52
61
  });
53
62
  }
54
63
  initializeShutdownCollectors() {
55
- if (!this._messagesWithActiveCollectors)
56
- this._messagesWithActiveCollectors = new Set();
57
- if (!this._collectorPatched) {
58
- const DiscordMessage = require('discord.js').Message;
59
- const origCreateCollector = DiscordMessage.prototype.createMessageComponentCollector;
60
- const botInstance = this;
61
- DiscordMessage.prototype.createMessageComponentCollector = function (...args) {
62
- const collector = origCreateCollector.apply(this, args);
63
- if (botInstance._messagesWithActiveCollectors) {
64
- botInstance._messagesWithActiveCollectors.add(this);
65
- }
66
- collector.once('end', () => {
64
+ try {
65
+ if (!this._messagesWithActiveCollectors)
66
+ this._messagesWithActiveCollectors = new Set();
67
+ if (!this._collectorPatched) {
68
+ const DiscordMessage = require('discord.js').Message;
69
+ const origCreateCollector = DiscordMessage.prototype.createMessageComponentCollector;
70
+ const botInstance = this;
71
+ DiscordMessage.prototype.createMessageComponentCollector = function (...args) {
72
+ const collector = origCreateCollector.apply(this, args);
67
73
  if (botInstance._messagesWithActiveCollectors) {
68
- botInstance._messagesWithActiveCollectors.delete(this);
69
- }
70
- });
71
- return collector;
72
- };
73
- this._collectorPatched = true;
74
- this.logger.info('✅ Corrected collector-based component tracking has been patched.');
75
- }
76
- if (!this._cleanupAttached) {
77
- const cleanupAndFlush = async (callback) => {
78
- this.logger.info('🛑 Graceful shutdown initiated...');
79
- if (this._activeIntervals && this._activeIntervals.size > 0) {
80
- this.logger.info(`🛑 Halting ${this._activeIntervals.size} active global intervals...`);
81
- for (const intervalId of this._activeIntervals) {
82
- clearInterval(intervalId);
74
+ botInstance._messagesWithActiveCollectors.add(this);
83
75
  }
84
- }
85
- const messagesToProcess = this._messagesWithActiveCollectors;
86
- if (messagesToProcess && messagesToProcess.size > 0) {
87
- this.logger.info(`🛑 Disabling components on up to ${messagesToProcess.size} messages.`);
88
- const editPromises = [];
89
- for (const msg of messagesToProcess) {
90
- if (!msg.editable || !msg.components || msg.components.length === 0)
91
- continue;
92
- try {
93
- const rawComponents = msg.components.map((c) => c.toJSON());
94
- const disabledComponents = this.disableRecursively(rawComponents);
95
- editPromises.push(msg.edit({ components: disabledComponents }).catch(() => { }));
76
+ collector.once('end', () => {
77
+ if (botInstance._messagesWithActiveCollectors) {
78
+ botInstance._messagesWithActiveCollectors.delete(this);
79
+ }
80
+ });
81
+ return collector;
82
+ };
83
+ this._collectorPatched = true;
84
+ this.logger.info('✅ Corrected collector-based component tracking has been patched.');
85
+ }
86
+ if (!this._cleanupAttached) {
87
+ const cleanupAndFlush = async (callback) => {
88
+ this.logger.info('🛑 Graceful shutdown initiated...');
89
+ if (this._activeIntervals && this._activeIntervals.size > 0) {
90
+ this.logger.info(`🛑 Halting ${this._activeIntervals.size} active global intervals...`);
91
+ for (const intervalId of this._activeIntervals) {
92
+ clearInterval(intervalId);
96
93
  }
97
- catch (error) {
98
- this.logger.error(error);
94
+ }
95
+ const messagesToProcess = this._messagesWithActiveCollectors;
96
+ if (messagesToProcess && messagesToProcess.size > 0) {
97
+ this.logger.info(`🛑 Disabling components on up to ${messagesToProcess.size} messages.`);
98
+ const editPromises = [];
99
+ for (const msg of messagesToProcess) {
100
+ if (!msg.editable ||
101
+ !msg.components ||
102
+ msg.components.length === 0)
103
+ continue;
104
+ try {
105
+ const rawComponents = msg.components.map((c) => c.toJSON());
106
+ const disabledComponents = this.disableRecursively(rawComponents);
107
+ editPromises.push(msg.edit({ components: disabledComponents }).catch(() => { }));
108
+ }
109
+ catch (error) {
110
+ this.logger.error(error);
111
+ }
99
112
  }
113
+ await Promise.allSettled(editPromises);
100
114
  }
101
- await Promise.allSettled(editPromises);
102
- }
103
- this.logger.info(' Component cleanup complete.');
104
- this.logger.info('🚰 Flushing remaining logs...');
105
- this.logger.on('finish', () => {
106
- console.log('⏳ Logger has flushed. Kythia is now safely shutting down.');
107
- if (callback)
108
- callback();
115
+ this.logger.info('✅ Component cleanup complete.');
116
+ this.logger.info('🚰 Flushing remaining logs...');
117
+ this.logger.on('finish', () => {
118
+ console.log(' Logger has flushed. Kythia is now safely shutting down.');
119
+ if (callback)
120
+ callback();
121
+ });
122
+ this.logger.end();
123
+ setTimeout(() => {
124
+ console.log('⏳ Logger flush timeout. Forcing exit.');
125
+ if (callback)
126
+ callback();
127
+ }, 4000);
128
+ };
129
+ (0, async_exit_hook_1.default)(cleanupAndFlush);
130
+ process.on('unhandledRejection', (error) => {
131
+ this.logger.error('‼️ UNHANDLED PROMISE REJECTION:', error);
132
+ this.container.telemetry?.report('error', 'Unhandled Promise Rejection', {
133
+ message: error.message,
134
+ stack: error.stack,
135
+ });
109
136
  });
110
- this.logger.end();
111
- setTimeout(() => {
112
- console.log(' Logger flush timeout. Forcing exit.');
113
- if (callback)
114
- callback();
115
- }, 4000);
116
- };
117
- (0, async_exit_hook_1.default)(cleanupAndFlush);
118
- process.on('unhandledRejection', (error) => {
119
- this.logger.error('‼️ UNHANDLED PROMISE REJECTION:', error);
120
- });
121
- process.on('uncaughtException', (error) => {
122
- this.logger.error('‼️ UNCAUGHT EXCEPTION! Bot will shutdown.', error);
123
- process.exit(1);
137
+ process.on('uncaughtException', (error) => {
138
+ this.logger.error('‼️ UNCAUGHT EXCEPTION! Bot will shutdown.', error);
139
+ this.container.telemetry?.report('error', 'Uncaught Exception', {
140
+ message: error.message,
141
+ stack: error.stack,
142
+ });
143
+ process.exit(1);
144
+ });
145
+ this._cleanupAttached = true;
146
+ this.logger.info('🛡️ Graceful shutdown and error handlers are now active.');
147
+ }
148
+ }
149
+ catch (error) {
150
+ this.logger.error('Failed to initialize shutdown collectors:', error);
151
+ this.container.telemetry?.report('error', 'Shutdown Collector Initialization Failed', {
152
+ message: error.message,
153
+ stack: error.stack,
124
154
  });
125
- this._cleanupAttached = true;
126
- this.logger.info('🛡️ Graceful shutdown and error handlers are now active.');
127
155
  }
128
156
  }
129
157
  initialize() {
@@ -1 +1 @@
1
- {"version":3,"file":"ShutdownManager.js","sourceRoot":"","sources":["../../src/managers/ShutdownManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShutdownManager.js","sourceRoot":"","sources":["../../src/managers/ShutdownManager.ts"],"names":[],"mappings":"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"}
@@ -11,12 +11,12 @@ export declare class TelemetryManager {
11
11
  private version;
12
12
  private config;
13
13
  private logQueue;
14
- private flushInterval;
15
14
  private networkFailures;
16
15
  private readonly MAX_NETWORK_FAILURES;
17
16
  private heartbeatInterval;
18
17
  private readonly _e;
19
18
  private readonly _t;
19
+ flushInterval: NodeJS.Timeout | undefined;
20
20
  private get _ep();
21
21
  private get _tp();
22
22
  constructor(options: TelemetryOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"TelemetryManager.d.ts","sourceRoot":"","sources":["../../src/managers/TelemetryManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE5E,UAAU,gBAAgB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACtB;AASD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAA+B;IAEpD,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAE1C,OAAO,CAAC,iBAAiB,CAA+B;IAExD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAC6E;IAEhG,OAAO,CAAC,QAAQ,CAAC,EAAE,CACiF;IAEpG,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,GAAG,GAEd;gBAEW,OAAO,EAAE,gBAAgB;IAOrC,OAAO,CAAC,aAAa;IAeR,YAAY,IAAI,OAAO,CACnC,OAAO,GAAG,SAAS,GAAG,eAAe,GAAG,cAAc,CACtD;IA+CY,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAKhC,MAAM,CACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAChC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,GAAG;YAcD,KAAK;IAkBZ,cAAc;IASd,cAAc;CA0CrB"}
1
+ {"version":3,"file":"TelemetryManager.d.ts","sourceRoot":"","sources":["../../src/managers/TelemetryManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE5E,UAAU,gBAAgB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACtB;AASD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,QAAQ,CAAsB;IAEtC,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAE1C,OAAO,CAAC,iBAAiB,CAA+B;IAExD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAC6E;IAEhG,OAAO,CAAC,QAAQ,CAAC,EAAE,CACiF;IAEpG,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAE1C,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,GAAG,GAEd;gBAEW,OAAO,EAAE,gBAAgB;IAOrC,OAAO,CAAC,aAAa;IA8BR,YAAY,IAAI,OAAO,CACnC,OAAO,GAAG,SAAS,GAAG,eAAe,GAAG,cAAc,CACtD;IA+CY,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAKhC,MAAM,CACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAChC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,GAAG;YAmBD,KAAK;IAkBZ,cAAc;IAiBd,cAAc;CA0DrB"}
@@ -12,12 +12,12 @@ class TelemetryManager {
12
12
  version;
13
13
  config;
14
14
  logQueue = [];
15
- flushInterval = null;
16
15
  networkFailures = 0;
17
16
  MAX_NETWORK_FAILURES = 6;
18
17
  heartbeatInterval = null;
19
18
  _e = 'aHR0cHM6Ly9reXRoaWEtbGljZW5zZS56dXVsaXppbHV1ei53b3JrZXJzLmRldi9hcGkvdjEvbGljZW5zZS92ZXJpZnk=';
20
19
  _t = 'aHR0cHM6Ly9reXRoaWEtbGljZW5zZS56dXVsaXppbHV1ei53b3JrZXJzLmRldi9hcGkvdjEvbGljZW5zZS90ZWxlbWV0cnk=';
20
+ flushInterval;
21
21
  get _ep() {
22
22
  return Buffer.from(this._e, 'base64').toString('utf-8');
23
23
  }
@@ -31,17 +31,31 @@ class TelemetryManager {
31
31
  this.config = options.config;
32
32
  }
33
33
  getSystemSpec() {
34
- const cpus = node_os_1.default.cpus();
35
- const ramTotal = `${(node_os_1.default.totalmem() / 1024 / 1024 / 1024).toFixed(2)} GB`;
36
- return {
37
- platform: `${node_os_1.default.type()} ${node_os_1.default.release()} (${node_os_1.default.arch()})`,
38
- hostname: node_os_1.default.hostname(),
39
- cpu: cpus.length > 0 ? cpus[0].model : 'Unknown CPU',
40
- cores: cpus.length,
41
- ram: ramTotal,
42
- nodeVersion: process.version,
43
- botVersion: this.version,
44
- };
34
+ try {
35
+ const cpus = node_os_1.default.cpus();
36
+ const ramTotal = `${(node_os_1.default.totalmem() / 1024 / 1024 / 1024).toFixed(2)} GB`;
37
+ return {
38
+ platform: `${node_os_1.default.type()} ${node_os_1.default.release()} (${node_os_1.default.arch()})`,
39
+ hostname: node_os_1.default.hostname(),
40
+ cpu: cpus.length > 0 ? cpus[0].model : 'Unknown CPU',
41
+ cores: cpus.length,
42
+ ram: ramTotal,
43
+ nodeVersion: process.version,
44
+ botVersion: this.version,
45
+ };
46
+ }
47
+ catch (error) {
48
+ this.logger.error('Failed to get system specs:', error);
49
+ return {
50
+ platform: 'Unknown',
51
+ hostname: 'Unknown',
52
+ cpu: 'Unknown',
53
+ cores: 0,
54
+ ram: 'Unknown',
55
+ nodeVersion: process.version,
56
+ botVersion: this.version,
57
+ };
58
+ }
45
59
  }
46
60
  async verifyStatus() {
47
61
  try {
@@ -86,14 +100,19 @@ class TelemetryManager {
86
100
  return status === 'VALID';
87
101
  }
88
102
  report(level, message, metadata) {
89
- this.logQueue.push({
90
- level,
91
- message,
92
- metadata: metadata ? JSON.stringify(metadata) : null,
93
- timestamp: Date.now(),
94
- });
95
- if (this.logQueue.length >= 50) {
96
- this.flush();
103
+ try {
104
+ this.logQueue.push({
105
+ level,
106
+ message,
107
+ metadata: metadata ? JSON.stringify(metadata) : null,
108
+ timestamp: Date.now(),
109
+ });
110
+ if (this.logQueue.length >= 50) {
111
+ this.flush();
112
+ }
113
+ }
114
+ catch (error) {
115
+ this.logger.warn('Failed to queue telemetry log:', error);
97
116
  }
98
117
  }
99
118
  async flush() {
@@ -112,43 +131,70 @@ class TelemetryManager {
112
131
  }
113
132
  }
114
133
  startAutoFlush() {
115
- this.flushInterval = setInterval(() => {
116
- this.flush();
117
- }, 5 * 60 * 1000);
134
+ try {
135
+ this.flushInterval = setInterval(() => {
136
+ this.flush();
137
+ }, 5 * 60 * 1000);
138
+ }
139
+ catch (error) {
140
+ this.logger.error('Failed to start auto flush:', error);
141
+ this.report('error', 'Auto Flush Start Failed', {
142
+ message: error.message,
143
+ stack: error.stack,
144
+ });
145
+ }
118
146
  }
119
147
  startHeartbeat() {
120
- if (this.heartbeatInterval)
121
- clearInterval(this.heartbeatInterval);
122
- const minMs = 10 * 60 * 1000;
123
- const maxMs = 20 * 60 * 1000;
124
- const randomMs = Math.floor(Math.random() * (maxMs - minMs + 1)) + minMs;
125
- this.heartbeatInterval = setInterval(async () => {
126
- this.logger.debug('💓 Checking License Status...');
127
- const status = await this.verifyStatus();
128
- if (status === 'VALID') {
129
- if (this.networkFailures > 0) {
130
- this.logger.info('✅ Reconnected to License Server!');
148
+ try {
149
+ if (this.heartbeatInterval)
150
+ clearInterval(this.heartbeatInterval);
151
+ const minMs = 10 * 60 * 1000;
152
+ const maxMs = 20 * 60 * 1000;
153
+ const randomMs = Math.floor(Math.random() * (maxMs - minMs + 1)) + minMs;
154
+ this.heartbeatInterval = setInterval(async () => {
155
+ try {
156
+ this.logger.debug('💓 Checking License Status...');
157
+ const status = await this.verifyStatus();
158
+ if (status === 'VALID') {
159
+ if (this.networkFailures > 0) {
160
+ this.logger.info('✅ Reconnected to License Server!');
161
+ }
162
+ this.networkFailures = 0;
163
+ }
164
+ else if (status === 'INVALID') {
165
+ this.logger.error('💀 LICENSE REVOKED/INVALID. SHUTTING DOWN.');
166
+ await this.report('error', 'License Revoked (Heartbeat Check)');
167
+ await this.flush();
168
+ process.exit(1);
169
+ }
170
+ else if (status === 'NETWORK_ERROR' || status === 'SERVER_ERROR') {
171
+ this.networkFailures++;
172
+ const msg = status === 'SERVER_ERROR'
173
+ ? `⚠️ License Server Error (5xx). Attempt ${this.networkFailures}/${this.MAX_NETWORK_FAILURES}`
174
+ : `⚠️ Cannot reach license server. Attempt ${this.networkFailures}/${this.MAX_NETWORK_FAILURES}`;
175
+ this.logger.warn(msg);
176
+ if (this.networkFailures >= this.MAX_NETWORK_FAILURES) {
177
+ this.logger.error('💀 Unable to verify license for too long. Shutting down for security.');
178
+ process.exit(1);
179
+ }
180
+ }
131
181
  }
132
- this.networkFailures = 0;
133
- }
134
- else if (status === 'INVALID') {
135
- this.logger.error('💀 LICENSE REVOKED/INVALID. SHUTTING DOWN.');
136
- await this.report('error', 'License Revoked (Heartbeat Check)');
137
- await this.flush();
138
- process.exit(1);
139
- }
140
- else if (status === 'NETWORK_ERROR' || status === 'SERVER_ERROR') {
141
- this.networkFailures++;
142
- const msg = status === 'SERVER_ERROR'
143
- ? `⚠️ License Server Error (5xx). Attempt ${this.networkFailures}/${this.MAX_NETWORK_FAILURES}`
144
- : `⚠️ Cannot reach license server. Attempt ${this.networkFailures}/${this.MAX_NETWORK_FAILURES}`;
145
- this.logger.warn(msg);
146
- if (this.networkFailures >= this.MAX_NETWORK_FAILURES) {
147
- this.logger.error('💀 Unable to verify license for too long. Shutting down for security.');
148
- process.exit(1);
182
+ catch (innerError) {
183
+ this.logger.error('Error during heartbeat check:', innerError);
184
+ this.report('error', 'Heartbeat Check Failed', {
185
+ message: innerError.message,
186
+ stack: innerError.stack,
187
+ });
149
188
  }
150
- }
151
- }, randomMs);
189
+ }, randomMs);
190
+ }
191
+ catch (error) {
192
+ this.logger.error('Failed to start heartbeat:', error);
193
+ this.report('error', 'Heartbeat Start Failed', {
194
+ message: error.message,
195
+ stack: error.stack,
196
+ });
197
+ }
152
198
  }
153
199
  }
154
200
  exports.TelemetryManager = TelemetryManager;