kythia-core 0.11.1-beta → 0.12.0-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 (260) hide show
  1. package/dist/Kythia.d.ts +45 -0
  2. package/dist/Kythia.d.ts.map +1 -0
  3. package/dist/Kythia.js +443 -0
  4. package/dist/Kythia.js.map +1 -0
  5. package/dist/KythiaClient.d.ts +3 -0
  6. package/dist/KythiaClient.d.ts.map +1 -0
  7. package/dist/KythiaClient.js +69 -0
  8. package/dist/KythiaClient.js.map +1 -0
  9. package/dist/cli/Command.d.ts +9 -0
  10. package/dist/cli/Command.d.ts.map +1 -0
  11. package/dist/cli/Command.js +19 -0
  12. package/dist/cli/Command.js.map +1 -0
  13. package/dist/cli/commands/CacheClearCommand.d.ts +8 -0
  14. package/dist/cli/commands/CacheClearCommand.d.ts.map +1 -0
  15. package/dist/cli/commands/CacheClearCommand.js +94 -0
  16. package/dist/cli/commands/CacheClearCommand.js.map +1 -0
  17. package/dist/cli/commands/LangCheckCommand.d.ts +7 -0
  18. package/dist/cli/commands/LangCheckCommand.d.ts.map +1 -0
  19. package/dist/cli/commands/LangCheckCommand.js +345 -0
  20. package/dist/cli/commands/LangCheckCommand.js.map +1 -0
  21. package/dist/cli/commands/LangTranslateCommand.d.ts +8 -0
  22. package/dist/cli/commands/LangTranslateCommand.d.ts.map +1 -0
  23. package/dist/cli/commands/LangTranslateCommand.js +221 -0
  24. package/dist/cli/commands/LangTranslateCommand.js.map +1 -0
  25. package/dist/cli/commands/MakeMigrationCommand.d.ts +7 -0
  26. package/dist/cli/commands/MakeMigrationCommand.d.ts.map +1 -0
  27. package/dist/cli/commands/MakeMigrationCommand.js +55 -0
  28. package/dist/cli/commands/MakeMigrationCommand.js.map +1 -0
  29. package/dist/cli/commands/MakeModelCommand.d.ts +7 -0
  30. package/dist/cli/commands/MakeModelCommand.d.ts.map +1 -0
  31. package/dist/cli/commands/MakeModelCommand.js +56 -0
  32. package/dist/cli/commands/MakeModelCommand.js.map +1 -0
  33. package/dist/cli/commands/MigrateCommand.d.ts +14 -0
  34. package/dist/cli/commands/MigrateCommand.d.ts.map +1 -0
  35. package/dist/cli/commands/MigrateCommand.js +190 -0
  36. package/dist/cli/commands/MigrateCommand.js.map +1 -0
  37. package/dist/cli/commands/NamespaceCommand.d.ts +7 -0
  38. package/dist/cli/commands/NamespaceCommand.d.ts.map +1 -0
  39. package/dist/cli/commands/NamespaceCommand.js +92 -0
  40. package/dist/cli/commands/NamespaceCommand.js.map +1 -0
  41. package/dist/cli/commands/StructureCommand.d.ts +7 -0
  42. package/dist/cli/commands/StructureCommand.d.ts.map +1 -0
  43. package/dist/cli/commands/StructureCommand.js +51 -0
  44. package/dist/cli/commands/StructureCommand.js.map +1 -0
  45. package/dist/cli/commands/UpversionCommand.d.ts +7 -0
  46. package/dist/cli/commands/UpversionCommand.d.ts.map +1 -0
  47. package/dist/cli/commands/UpversionCommand.js +68 -0
  48. package/dist/cli/commands/UpversionCommand.js.map +1 -0
  49. package/dist/cli/index.d.ts +3 -0
  50. package/dist/cli/index.d.ts.map +1 -0
  51. package/dist/cli/index.js +44 -0
  52. package/dist/cli/index.js.map +1 -0
  53. package/dist/cli/utils/db.d.ts +9 -0
  54. package/dist/cli/utils/db.d.ts.map +1 -0
  55. package/dist/cli/utils/db.js +90 -0
  56. package/dist/cli/utils/db.js.map +1 -0
  57. package/dist/database/KythiaMigrator.d.ts +4 -0
  58. package/dist/database/KythiaMigrator.d.ts.map +1 -0
  59. package/dist/database/KythiaMigrator.js +94 -0
  60. package/dist/database/KythiaMigrator.js.map +1 -0
  61. package/dist/database/KythiaModel.d.ts +83 -0
  62. package/dist/database/KythiaModel.d.ts.map +1 -0
  63. package/dist/database/KythiaModel.js +1121 -0
  64. package/dist/database/KythiaModel.js.map +1 -0
  65. package/dist/database/KythiaSequelize.d.ts +4 -0
  66. package/dist/database/KythiaSequelize.d.ts.map +1 -0
  67. package/dist/database/KythiaSequelize.js +99 -0
  68. package/dist/database/KythiaSequelize.js.map +1 -0
  69. package/dist/database/KythiaStorage.d.ts +21 -0
  70. package/dist/database/KythiaStorage.d.ts.map +1 -0
  71. package/dist/database/KythiaStorage.js +80 -0
  72. package/dist/database/KythiaStorage.js.map +1 -0
  73. package/dist/database/ModelLoader.d.ts +4 -0
  74. package/dist/database/ModelLoader.d.ts.map +1 -0
  75. package/dist/database/ModelLoader.js +54 -0
  76. package/dist/database/ModelLoader.js.map +1 -0
  77. package/dist/index.d.ts +10 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +36 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/lang/en.json +85 -0
  82. package/dist/managers/AddonManager.d.ts +45 -0
  83. package/dist/managers/AddonManager.d.ts.map +1 -0
  84. package/dist/managers/AddonManager.js +932 -0
  85. package/dist/managers/AddonManager.js.map +1 -0
  86. package/dist/managers/EventManager.d.ts +19 -0
  87. package/dist/managers/EventManager.d.ts.map +1 -0
  88. package/dist/managers/EventManager.js +55 -0
  89. package/dist/managers/EventManager.js.map +1 -0
  90. package/dist/managers/InteractionManager.d.ts +41 -0
  91. package/dist/managers/InteractionManager.d.ts.map +1 -0
  92. package/dist/managers/InteractionManager.js +441 -0
  93. package/dist/managers/InteractionManager.js.map +1 -0
  94. package/dist/managers/MiddlewareManager.d.ts +14 -0
  95. package/dist/managers/MiddlewareManager.d.ts.map +1 -0
  96. package/dist/managers/MiddlewareManager.js +75 -0
  97. package/dist/managers/MiddlewareManager.js.map +1 -0
  98. package/dist/managers/ShutdownManager.d.ts +22 -0
  99. package/dist/managers/ShutdownManager.d.ts.map +1 -0
  100. package/dist/managers/ShutdownManager.js +151 -0
  101. package/dist/managers/ShutdownManager.js.map +1 -0
  102. package/dist/managers/TranslatorManager.d.ts +19 -0
  103. package/dist/managers/TranslatorManager.d.ts.map +1 -0
  104. package/dist/managers/TranslatorManager.js +118 -0
  105. package/dist/managers/TranslatorManager.js.map +1 -0
  106. package/dist/middlewares/botPermissions.d.ts +4 -0
  107. package/dist/middlewares/botPermissions.d.ts.map +1 -0
  108. package/dist/middlewares/botPermissions.js +28 -0
  109. package/dist/middlewares/botPermissions.js.map +1 -0
  110. package/dist/middlewares/cooldown.d.ts +4 -0
  111. package/dist/middlewares/cooldown.d.ts.map +1 -0
  112. package/dist/middlewares/cooldown.js +42 -0
  113. package/dist/middlewares/cooldown.js.map +1 -0
  114. package/dist/middlewares/isInMainGuild.d.ts +4 -0
  115. package/dist/middlewares/isInMainGuild.d.ts.map +1 -0
  116. package/dist/middlewares/isInMainGuild.js +52 -0
  117. package/dist/middlewares/isInMainGuild.js.map +1 -0
  118. package/dist/middlewares/ownerOnly.d.ts +4 -0
  119. package/dist/middlewares/ownerOnly.d.ts.map +1 -0
  120. package/dist/middlewares/ownerOnly.js +24 -0
  121. package/dist/middlewares/ownerOnly.js.map +1 -0
  122. package/dist/middlewares/teamOnly.d.ts +4 -0
  123. package/dist/middlewares/teamOnly.d.ts.map +1 -0
  124. package/dist/middlewares/teamOnly.js +26 -0
  125. package/dist/middlewares/teamOnly.js.map +1 -0
  126. package/dist/middlewares/userPermissions.d.ts +4 -0
  127. package/dist/middlewares/userPermissions.d.ts.map +1 -0
  128. package/dist/middlewares/userPermissions.js +28 -0
  129. package/dist/middlewares/userPermissions.js.map +1 -0
  130. package/dist/middlewares/voteLocked.d.ts +4 -0
  131. package/dist/middlewares/voteLocked.d.ts.map +1 -0
  132. package/dist/middlewares/voteLocked.js +50 -0
  133. package/dist/middlewares/voteLocked.js.map +1 -0
  134. package/dist/structures/BaseCommand.d.ts +23 -0
  135. package/dist/structures/BaseCommand.d.ts.map +1 -0
  136. package/dist/structures/BaseCommand.js +42 -0
  137. package/dist/structures/BaseCommand.js.map +1 -0
  138. package/dist/types/AddonManager.d.ts +58 -0
  139. package/dist/types/AddonManager.d.ts.map +1 -0
  140. package/dist/types/AddonManager.js +3 -0
  141. package/dist/types/AddonManager.js.map +1 -0
  142. package/dist/types/DiscordHelpers.d.ts +7 -0
  143. package/dist/types/DiscordHelpers.d.ts.map +1 -0
  144. package/dist/types/DiscordHelpers.js +3 -0
  145. package/dist/types/DiscordHelpers.js.map +1 -0
  146. package/dist/types/EventManager.d.ts +10 -0
  147. package/dist/types/EventManager.d.ts.map +1 -0
  148. package/dist/types/EventManager.js +3 -0
  149. package/dist/types/EventManager.js.map +1 -0
  150. package/dist/types/InteractionManager.d.ts +35 -0
  151. package/dist/types/InteractionManager.d.ts.map +1 -0
  152. package/dist/types/InteractionManager.js +3 -0
  153. package/dist/types/InteractionManager.js.map +1 -0
  154. package/dist/types/KythiaClient.d.ts +9 -0
  155. package/dist/types/KythiaClient.d.ts.map +1 -0
  156. package/dist/types/KythiaClient.js +3 -0
  157. package/dist/types/KythiaClient.js.map +1 -0
  158. package/dist/types/KythiaConfig.d.ts +291 -0
  159. package/dist/types/KythiaConfig.d.ts.map +1 -0
  160. package/dist/types/KythiaConfig.js +3 -0
  161. package/dist/types/KythiaConfig.js.map +1 -0
  162. package/dist/types/KythiaContainer.d.ts +38 -0
  163. package/dist/types/KythiaContainer.d.ts.map +1 -0
  164. package/dist/types/KythiaContainer.js +3 -0
  165. package/dist/types/KythiaContainer.js.map +1 -0
  166. package/dist/types/KythiaLogger.d.ts +5 -0
  167. package/dist/types/KythiaLogger.d.ts.map +1 -0
  168. package/dist/types/KythiaLogger.js +3 -0
  169. package/dist/types/KythiaLogger.js.map +1 -0
  170. package/dist/types/KythiaMigrator.d.ts +9 -0
  171. package/dist/types/KythiaMigrator.d.ts.map +1 -0
  172. package/dist/types/KythiaMigrator.js +3 -0
  173. package/dist/types/KythiaMigrator.js.map +1 -0
  174. package/dist/types/KythiaModel.d.ts +31 -0
  175. package/dist/types/KythiaModel.d.ts.map +1 -0
  176. package/dist/types/KythiaModel.js +3 -0
  177. package/dist/types/KythiaModel.js.map +1 -0
  178. package/dist/types/KythiaOptions.d.ts +13 -0
  179. package/dist/types/KythiaOptions.d.ts.map +1 -0
  180. package/dist/types/KythiaOptions.js +3 -0
  181. package/dist/types/KythiaOptions.js.map +1 -0
  182. package/dist/types/KythiaSequelize.d.ts +13 -0
  183. package/dist/types/KythiaSequelize.d.ts.map +1 -0
  184. package/dist/types/KythiaSequelize.js +3 -0
  185. package/dist/types/KythiaSequelize.js.map +1 -0
  186. package/dist/types/KythiaStorage.d.ts +22 -0
  187. package/dist/types/KythiaStorage.d.ts.map +1 -0
  188. package/dist/types/KythiaStorage.js +3 -0
  189. package/dist/types/KythiaStorage.js.map +1 -0
  190. package/dist/types/MiddlewareManager.d.ts +14 -0
  191. package/dist/types/MiddlewareManager.d.ts.map +1 -0
  192. package/dist/types/MiddlewareManager.js +3 -0
  193. package/dist/types/MiddlewareManager.js.map +1 -0
  194. package/dist/types/ModelLoader.d.ts +8 -0
  195. package/dist/types/ModelLoader.d.ts.map +1 -0
  196. package/dist/types/ModelLoader.js +3 -0
  197. package/dist/types/ModelLoader.js.map +1 -0
  198. package/dist/types/ShutdownManager.d.ts +15 -0
  199. package/dist/types/ShutdownManager.d.ts.map +1 -0
  200. package/dist/types/ShutdownManager.js +3 -0
  201. package/dist/types/ShutdownManager.js.map +1 -0
  202. package/dist/types/TranslatorManager.d.ts +16 -0
  203. package/dist/types/TranslatorManager.d.ts.map +1 -0
  204. package/dist/types/TranslatorManager.js +3 -0
  205. package/dist/types/TranslatorManager.js.map +1 -0
  206. package/dist/types/index.d.ts +13 -0
  207. package/dist/types/index.d.ts.map +1 -0
  208. package/dist/types/index.js +29 -0
  209. package/dist/types/index.js.map +1 -0
  210. package/dist/utils/color.d.ts +15 -0
  211. package/dist/utils/color.d.ts.map +1 -0
  212. package/dist/utils/color.js +156 -0
  213. package/dist/utils/color.js.map +1 -0
  214. package/dist/utils/discord.d.ts +8 -0
  215. package/dist/utils/discord.d.ts.map +1 -0
  216. package/dist/utils/discord.js +53 -0
  217. package/dist/utils/discord.js.map +1 -0
  218. package/dist/utils/formatter.d.ts +3 -0
  219. package/dist/utils/formatter.d.ts.map +1 -0
  220. package/dist/utils/formatter.js +89 -0
  221. package/dist/utils/formatter.js.map +1 -0
  222. package/dist/utils/index.d.ts +12 -0
  223. package/dist/utils/index.d.ts.map +1 -0
  224. package/dist/utils/index.js +54 -0
  225. package/dist/utils/index.js.map +1 -0
  226. package/dist/utils/logger.d.ts +5 -0
  227. package/dist/utils/logger.d.ts.map +1 -0
  228. package/dist/utils/logger.js +150 -0
  229. package/dist/utils/logger.js.map +1 -0
  230. package/package.json +28 -6
  231. package/src/lang/en.json +85 -0
  232. package/changelog.md +0 -53
  233. package/index.js +0 -15
  234. package/src/Kythia.js +0 -556
  235. package/src/KythiaClient.js +0 -93
  236. package/src/cli/Command.js +0 -68
  237. package/src/cli/commands/CacheClearCommand.js +0 -136
  238. package/src/cli/commands/LangCheckCommand.js +0 -396
  239. package/src/cli/commands/LangTranslateCommand.js +0 -336
  240. package/src/cli/commands/MakeMigrationCommand.js +0 -82
  241. package/src/cli/commands/MakeModelCommand.js +0 -81
  242. package/src/cli/commands/MigrateCommand.js +0 -259
  243. package/src/cli/commands/NamespaceCommand.js +0 -112
  244. package/src/cli/commands/StructureCommand.js +0 -70
  245. package/src/cli/commands/UpversionCommand.js +0 -94
  246. package/src/cli/index.js +0 -69
  247. package/src/cli/utils/db.js +0 -117
  248. package/src/database/KythiaMigrator.js +0 -116
  249. package/src/database/KythiaModel.js +0 -1586
  250. package/src/database/KythiaSequelize.js +0 -128
  251. package/src/database/KythiaStorage.js +0 -117
  252. package/src/database/ModelLoader.js +0 -79
  253. package/src/managers/AddonManager.js +0 -1219
  254. package/src/managers/EventManager.js +0 -104
  255. package/src/managers/InteractionManager.js +0 -869
  256. package/src/managers/ShutdownManager.js +0 -218
  257. package/src/structures/BaseCommand.js +0 -53
  258. package/src/utils/color.js +0 -180
  259. package/src/utils/formatter.js +0 -99
  260. package/src/utils/index.js +0 -4
@@ -0,0 +1,94 @@
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
+ const Command_1 = __importDefault(require("../Command"));
7
+ const picocolors_1 = __importDefault(require("picocolors"));
8
+ const node_readline_1 = __importDefault(require("node:readline"));
9
+ const ioredis_1 = __importDefault(require("ioredis"));
10
+ require("dotenv/config");
11
+ function askQuestion(query) {
12
+ const rl = node_readline_1.default.createInterface({
13
+ input: process.stdin,
14
+ output: process.stdout,
15
+ });
16
+ return new Promise((resolve) => rl.question(query, (ans) => {
17
+ rl.close();
18
+ resolve(ans);
19
+ }));
20
+ }
21
+ class CacheClearCommand extends Command_1.default {
22
+ signature = 'cache:clear';
23
+ description = 'Flush Redis cache (supports multi-instance selection)';
24
+ async handle() {
25
+ console.log(picocolors_1.default.dim('🔍 Detecting Redis configuration...'));
26
+ const redisUrlsRaw = process.env.REDIS_URLS;
27
+ if (!redisUrlsRaw) {
28
+ console.error(picocolors_1.default.red('❌ REDIS_URLS not found in .env'));
29
+ process.exit(1);
30
+ }
31
+ const urls = redisUrlsRaw
32
+ .split(',')
33
+ .map((u) => u.trim())
34
+ .filter((u) => u.length > 0);
35
+ if (urls.length === 0) {
36
+ console.error(picocolors_1.default.red('❌ No valid Redis URLs found.'));
37
+ process.exit(1);
38
+ }
39
+ let targets = [];
40
+ if (urls.length === 1) {
41
+ targets = [urls[0]];
42
+ console.log(picocolors_1.default.cyan(`🎯 Target: ${targets[0]}`));
43
+ }
44
+ else {
45
+ console.log(picocolors_1.default.yellow(`⚠️ Multiple Redis instances detected (${urls.length}):`));
46
+ console.log(picocolors_1.default.dim('---------------------------------------------------'));
47
+ console.log(`0. ${picocolors_1.default.bgRed(picocolors_1.default.white(' FLUSH ALL INSTANCES '))}`);
48
+ urls.forEach((url, index) => {
49
+ const maskedUrl = url.replace(/:([^@]+)@/, ':****@');
50
+ console.log(`${index + 1}. ${maskedUrl}`);
51
+ });
52
+ console.log(picocolors_1.default.dim('---------------------------------------------------'));
53
+ const answer = await askQuestion(picocolors_1.default.cyan('Select target to flush (number): '));
54
+ const choice = parseInt(answer, 10);
55
+ if (Number.isNaN(choice) || choice < 0 || choice > urls.length) {
56
+ console.error(picocolors_1.default.red('❌ Invalid selection.'));
57
+ process.exit(1);
58
+ }
59
+ if (choice === 0) {
60
+ targets = urls;
61
+ }
62
+ else {
63
+ targets = [urls[choice - 1]];
64
+ }
65
+ }
66
+ const confirm = await askQuestion(picocolors_1.default.bgRed(picocolors_1.default.white(' DANGER ')) +
67
+ picocolors_1.default.yellow(` Are you sure you want to FLUSHALL ${targets.length} instance(s)? (y/n): `));
68
+ if (confirm.toLowerCase() !== 'y' && confirm.toLowerCase() !== 'yes') {
69
+ console.log(picocolors_1.default.cyan('🛡️ Operation cancelled.'));
70
+ process.exit(0);
71
+ }
72
+ console.log('');
73
+ for (const url of targets) {
74
+ const masked = url.replace(/:([^@]+)@/, ':****@');
75
+ try {
76
+ console.log(picocolors_1.default.dim(`🔌 Connecting to ${masked}...`));
77
+ const redis = new ioredis_1.default(url, {
78
+ maxRetriesPerRequest: 1,
79
+ retryStrategy: () => null,
80
+ });
81
+ await redis.flushall();
82
+ console.log(picocolors_1.default.green(`✅ FLUSHALL Success: ${masked}`));
83
+ redis.quit();
84
+ }
85
+ catch (err) {
86
+ console.error(picocolors_1.default.red(`❌ Failed to flush ${masked}: ${err.message}`));
87
+ }
88
+ }
89
+ console.log(picocolors_1.default.green('\n✨ Cache clearing process completed.'));
90
+ process.exit(0);
91
+ }
92
+ }
93
+ exports.default = CacheClearCommand;
94
+ //# sourceMappingURL=CacheClearCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheClearCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/CacheClearCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import Command from '../Command';
2
+ export default class LangCheckCommand extends Command {
3
+ signature: string;
4
+ description: string;
5
+ handle(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=LangCheckCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LangCheckCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/LangCheckCommand.ts"],"names":[],"mappings":"AAkBA,OAAO,OAAO,MAAM,YAAY,CAAC;AA6CjC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IAC7C,SAAS,SAAgB;IACzB,WAAW,SACmD;IAExD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAqUpC"}
@@ -0,0 +1,345 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const Command_1 = __importDefault(require("../Command"));
40
+ const node_fs_1 = __importDefault(require("node:fs"));
41
+ const node_path_1 = __importDefault(require("node:path"));
42
+ const glob_1 = require("glob");
43
+ const parser = __importStar(require("@babel/parser"));
44
+ const traverse_1 = __importDefault(require("@babel/traverse"));
45
+ function deepMerge(target, source) {
46
+ if (typeof target !== 'object' || target === null)
47
+ return source;
48
+ if (typeof source !== 'object' || source === null)
49
+ return source;
50
+ for (const key of Object.keys(source)) {
51
+ if (source[key] instanceof Object &&
52
+ target[key] instanceof Object &&
53
+ !Array.isArray(source[key])) {
54
+ target[key] = deepMerge(target[key], source[key]);
55
+ }
56
+ else {
57
+ target[key] = source[key];
58
+ }
59
+ }
60
+ return target;
61
+ }
62
+ function getAllKeys(obj, allDefinedKeys, prefix = '') {
63
+ Object.keys(obj).forEach((key) => {
64
+ if (key === '_value' || key === 'text') {
65
+ if (Object.keys(obj).length === 1)
66
+ return;
67
+ if (prefix)
68
+ allDefinedKeys.add(prefix);
69
+ return;
70
+ }
71
+ const fullKey = prefix ? `${prefix}.${key}` : key;
72
+ if (typeof obj[key] === 'object' && obj[key] !== null) {
73
+ if (key !== 'jobs' && key !== 'shop') {
74
+ getAllKeys(obj[key], allDefinedKeys, fullKey);
75
+ }
76
+ else {
77
+ allDefinedKeys.add(fullKey);
78
+ }
79
+ }
80
+ else {
81
+ allDefinedKeys.add(fullKey);
82
+ }
83
+ });
84
+ }
85
+ class LangCheckCommand extends Command_1.default {
86
+ signature = 'lang:check';
87
+ description = 'Lint translation key usage in code and language files (AST-based)';
88
+ async handle() {
89
+ const PROJECT_ROOT = process.cwd();
90
+ const SCAN_DIRECTORIES = ['addons', 'src'];
91
+ const DEFAULT_LANG = 'en';
92
+ const IGNORE_PATTERNS = [
93
+ '**/node_modules/**',
94
+ '**/dist/**',
95
+ '**/tests/**',
96
+ '**/assets/**',
97
+ '**/dashboard/web/public/**',
98
+ '**/temp/**',
99
+ '**/leetMap.js',
100
+ '**/generate_*.js',
101
+ '**/refactor_*.js',
102
+ '**/undo_*.js',
103
+ '**/*.d.ts',
104
+ ];
105
+ const locales = {};
106
+ const usedStaticKeys = new Set();
107
+ const usedDynamicKeys = new Set();
108
+ const unanalyzableKeys = new Set();
109
+ let filesScanned = 0;
110
+ let filesWithErrors = 0;
111
+ console.log('--- Kythia AST Translation Linter ---');
112
+ function hasNestedKey(obj, pathExpr) {
113
+ if (!obj || !pathExpr)
114
+ return false;
115
+ const parts = pathExpr.split('.');
116
+ let current = obj;
117
+ for (const part of parts) {
118
+ if (typeof current !== 'object' ||
119
+ current === null ||
120
+ !Object.hasOwn(current, part)) {
121
+ return false;
122
+ }
123
+ current = current[part];
124
+ }
125
+ return true;
126
+ }
127
+ function _loadLocales() {
128
+ console.log(`\n🔍 Searching for language files in: ${PROJECT_ROOT}`);
129
+ try {
130
+ const langFiles = glob_1.glob.sync('**/lang/*.json', {
131
+ cwd: PROJECT_ROOT,
132
+ ignore: ['**/node_modules/**', '**/dist/**'],
133
+ absolute: true,
134
+ });
135
+ if (langFiles.length === 0) {
136
+ console.error('\x1b[31m%s\x1b[0m', '❌ No .json files found in any lang folder.');
137
+ return false;
138
+ }
139
+ let loadedCount = 0;
140
+ for (const file of langFiles) {
141
+ if (file.includes('_flat') || file.includes('_FLAT'))
142
+ continue;
143
+ const filename = node_path_1.default.basename(file);
144
+ const lang = filename.replace('.json', '');
145
+ const content = node_fs_1.default.readFileSync(file, 'utf8');
146
+ try {
147
+ const parsed = JSON.parse(content);
148
+ if (!locales[lang]) {
149
+ locales[lang] = parsed;
150
+ }
151
+ else {
152
+ locales[lang] = deepMerge(locales[lang], parsed);
153
+ }
154
+ loadedCount++;
155
+ }
156
+ catch (jsonError) {
157
+ console.error(`\x1b[31m%s\x1b[0m`, `❌ Failed to parse JSON: ${node_path_1.default.relative(PROJECT_ROOT, file)} - ${jsonError.message}`);
158
+ filesWithErrors++;
159
+ }
160
+ }
161
+ console.log(` > Successfully loaded ${loadedCount} language files.`);
162
+ if (!locales[DEFAULT_LANG]) {
163
+ console.error(`\x1b[31m%s\x1b[0m`, `❌ Default language (${DEFAULT_LANG}) not found in any loaded files!`);
164
+ return false;
165
+ }
166
+ return true;
167
+ }
168
+ catch (error) {
169
+ console.error('\x1b[31m%s\x1b[0m', `❌ Failed to load language files: ${error.message}`);
170
+ return false;
171
+ }
172
+ }
173
+ if (!_loadLocales()) {
174
+ console.error('\x1b[31mCannot proceed (language files invalid).\x1b[0m');
175
+ process.exit(1);
176
+ }
177
+ console.log(`\nScanning .js/.ts files in: ${SCAN_DIRECTORIES.join(', ')}...`);
178
+ SCAN_DIRECTORIES.forEach((dirName) => {
179
+ const dirPath = node_path_1.default.join(PROJECT_ROOT, dirName);
180
+ const files = glob_1.glob.sync(`${dirPath}/**/*.{js,ts}`, {
181
+ ignore: IGNORE_PATTERNS,
182
+ dot: true,
183
+ });
184
+ files.forEach((filePath) => {
185
+ filesScanned++;
186
+ process.stdout.write(`\rScanning: ${filesScanned} files...`);
187
+ try {
188
+ const code = node_fs_1.default.readFileSync(filePath, 'utf8');
189
+ const ast = parser.parse(code, {
190
+ sourceType: 'module',
191
+ plugins: [
192
+ 'typescript',
193
+ 'jsx',
194
+ 'classProperties',
195
+ 'objectRestSpread',
196
+ ],
197
+ errorRecovery: true,
198
+ });
199
+ (0, traverse_1.default)(ast, {
200
+ CallExpression(nodePath) {
201
+ const node = nodePath.node;
202
+ if (node.callee.type === 'Identifier' &&
203
+ node.callee.name === 't') {
204
+ if (node.arguments.length >= 2) {
205
+ const keyArg = node.arguments[1];
206
+ if (keyArg.type === 'StringLiteral') {
207
+ usedStaticKeys.add(keyArg.value);
208
+ }
209
+ else if (keyArg.type === 'TemplateLiteral') {
210
+ let pattern = '';
211
+ keyArg.quasis.forEach((quasi, _i) => {
212
+ pattern += quasi.value.raw;
213
+ if (!quasi.tail) {
214
+ pattern += '*';
215
+ }
216
+ });
217
+ pattern = pattern.replace(/_/g, '.');
218
+ usedDynamicKeys.add(pattern);
219
+ }
220
+ else if (keyArg.type === 'BinaryExpression' &&
221
+ keyArg.operator === '+') {
222
+ if (keyArg.left.type === 'StringLiteral') {
223
+ const pattern = `${keyArg.left.value.replace(/_/g, '.')}*`;
224
+ usedDynamicKeys.add(pattern);
225
+ }
226
+ else {
227
+ unanalyzableKeys.add(`Complex (+) at ${node_path_1.default.relative(PROJECT_ROOT, filePath)}:${node.loc?.start.line}`);
228
+ }
229
+ }
230
+ else {
231
+ unanalyzableKeys.add(`Variable/Other at ${node_path_1.default.relative(PROJECT_ROOT, filePath)}:${node.loc?.start.line}`);
232
+ }
233
+ }
234
+ }
235
+ },
236
+ });
237
+ }
238
+ catch (parseError) {
239
+ if (parseError.message.includes('Unexpected token')) {
240
+ console.warn(`\n\x1b[33m[WARN] Syntax Error parsing ${node_path_1.default.relative(PROJECT_ROOT, filePath)}:${parseError.loc?.line} - ${parseError.message}\x1b[0m`);
241
+ }
242
+ else {
243
+ console.error(`\n\x1b[31m[ERROR] Failed to parse ${node_path_1.default.relative(PROJECT_ROOT, filePath)}: ${parseError.message}\x1b[0m`);
244
+ }
245
+ filesWithErrors++;
246
+ }
247
+ });
248
+ });
249
+ process.stdout.write(`${'\r'.padEnd(process.stdout.columns || 60)}\r`);
250
+ console.log(`\nScan completed. Total ${filesScanned} files processed.`);
251
+ console.log(` > Found \x1b[33m${usedStaticKeys.size}\x1b[0m static keys.`);
252
+ console.log(` > Found \x1b[33m${usedDynamicKeys.size}\x1b[0m dynamic key patterns (check manually!).`);
253
+ if (unanalyzableKeys.size > 0) {
254
+ console.log(` > \x1b[31m${unanalyzableKeys.size}\x1b[0m t() calls could not be analyzed (variable/complex).`);
255
+ }
256
+ console.log('\nVerifying static keys against language files...');
257
+ let totalMissingStatic = 0;
258
+ for (const lang in locales) {
259
+ const missingInLang = [];
260
+ for (const staticKey of usedStaticKeys) {
261
+ if (!hasNestedKey(locales[lang], staticKey)) {
262
+ missingInLang.push(staticKey);
263
+ }
264
+ }
265
+ if (missingInLang.length > 0) {
266
+ console.log(`\n❌ \x1b[31m[${lang.toUpperCase()}] Found ${missingInLang.length} missing static keys:\x1b[0m`);
267
+ missingInLang.sort().forEach((key) => {
268
+ console.log(` - ${key}`);
269
+ });
270
+ totalMissingStatic += missingInLang.length;
271
+ filesWithErrors++;
272
+ }
273
+ else {
274
+ console.log(`\n✅ \x1b[32m[${lang.toUpperCase()}] All static keys found!\x1b[0m`);
275
+ }
276
+ }
277
+ if (usedDynamicKeys.size > 0) {
278
+ console.log(`\n\n⚠️ \x1b[33mDynamic Key Patterns Detected (Check Manually):\x1b[0m`);
279
+ [...usedDynamicKeys].sort().forEach((pattern) => {
280
+ console.log(` - ${pattern}`);
281
+ });
282
+ console.log(` (Ensure all possible keys from these patterns exist in the language files)`);
283
+ }
284
+ if (unanalyzableKeys.size > 0) {
285
+ console.log(`\n\n⚠️ \x1b[31mComplex/Unanalyzable t() Calls (Check Manually):\x1b[0m`);
286
+ [...unanalyzableKeys].sort().forEach((loc) => {
287
+ console.log(` - ${loc}`);
288
+ });
289
+ }
290
+ console.log(`\nChecking UNUSED keys (based on ${DEFAULT_LANG}.json)...`);
291
+ const defaultLocale = locales[DEFAULT_LANG];
292
+ const allDefinedKeys = new Set();
293
+ if (defaultLocale) {
294
+ try {
295
+ getAllKeys(defaultLocale, allDefinedKeys);
296
+ }
297
+ catch (e) {
298
+ console.error('Error collecting defined keys:', e);
299
+ }
300
+ const unusedKeys = [];
301
+ for (const definedKey of allDefinedKeys) {
302
+ if (!usedStaticKeys.has(definedKey)) {
303
+ let matchedByDynamic = false;
304
+ for (const dynamicPattern of usedDynamicKeys) {
305
+ const regexPattern = `^${dynamicPattern
306
+ .replace(/\./g, '\\.')
307
+ .replace(/\*/g, '[^.]+?')}$`;
308
+ if (new RegExp(regexPattern).test(definedKey)) {
309
+ matchedByDynamic = true;
310
+ break;
311
+ }
312
+ }
313
+ if (!matchedByDynamic) {
314
+ unusedKeys.push(definedKey);
315
+ }
316
+ }
317
+ }
318
+ if (unusedKeys.length > 0) {
319
+ console.log(`\n⚠️ \x1b[33mFound ${unusedKeys.length} UNUSED keys in ${DEFAULT_LANG}.json (don't match static/dynamic patterns):\x1b[0m`);
320
+ unusedKeys.sort().forEach((key) => {
321
+ console.log(` - ${key}`);
322
+ });
323
+ }
324
+ else {
325
+ console.log(`\n✅ \x1b[32m[${DEFAULT_LANG.toUpperCase()}] No unused keys found.\x1b[0m`);
326
+ }
327
+ }
328
+ else {
329
+ console.warn(`\n\x1b[33m[WARN] Cannot check unused keys because ${DEFAULT_LANG}.json failed to load.\x1b[0m`);
330
+ }
331
+ console.log('\n--- Done ---');
332
+ if (filesWithErrors > 0 || totalMissingStatic > 0) {
333
+ console.log(`\x1b[31mTotal ${totalMissingStatic} missing static key errors + ${filesWithErrors - totalMissingStatic} file errors found. Please fix them.\x1b[0m`);
334
+ process.exit(1);
335
+ }
336
+ else {
337
+ console.log('\x1b[32mCongratulations! Language files (for static keys) are already synced with the code.\x1b[0m');
338
+ if (usedDynamicKeys.size > 0 || unanalyzableKeys.size > 0) {
339
+ console.log("\x1b[33mHowever, don't forget to manually check the reported dynamic/complex keys above!\x1b[0m");
340
+ }
341
+ }
342
+ }
343
+ }
344
+ exports.default = LangCheckCommand;
345
+ //# sourceMappingURL=LangCheckCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LangCheckCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/LangCheckCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import 'dotenv/config';
2
+ import Command from '../Command';
3
+ export default class LangTranslateCommand extends Command {
4
+ signature: string;
5
+ description: string;
6
+ handle(_options: Record<string, any>, target: string): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=LangTranslateCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LangTranslateCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/LangTranslateCommand.ts"],"names":[],"mappings":"AAkBA,OAAO,eAAe,CAAC;AAIvB,OAAO,OAAO,MAAM,YAAY,CAAC;AAGjC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,OAAO;IACjD,SAAS,SAA6B;IACtC,WAAW,SAA0D;IAE/D,MAAM,CAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;CAoThB"}