kythia-core 0.11.0-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 -94
  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 -367
  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 -1557
  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 -815
  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,92 @@
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 node_path_1 = __importDefault(require("node:path"));
8
+ const picocolors_1 = __importDefault(require("picocolors"));
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ class NamespaceCommand extends Command_1.default {
11
+ signature = 'dev:namespace';
12
+ description = 'Add or update JSDoc @namespace headers in command files';
13
+ async handle() {
14
+ console.log(picocolors_1.default.cyan('🚀 Starting namespace annotation process...'));
15
+ const rootDir = process.cwd();
16
+ function findJsFilesRecursive(dir) {
17
+ let results = [];
18
+ if (!node_fs_1.default.existsSync(dir))
19
+ return results;
20
+ const list = node_fs_1.default.readdirSync(dir, { withFileTypes: true });
21
+ for (const file of list) {
22
+ if (file.name === 'node_modules' || file.name === '.git')
23
+ continue;
24
+ const fullPath = node_path_1.default.join(dir, file.name);
25
+ if (file.isDirectory()) {
26
+ results = results.concat(findJsFilesRecursive(fullPath));
27
+ }
28
+ else if (file.name.endsWith('.js') || file.name.endsWith('.ts')) {
29
+ results.push(fullPath);
30
+ }
31
+ }
32
+ return results;
33
+ }
34
+ function getFileType(filePath) {
35
+ const fileName = node_path_1.default.basename(filePath);
36
+ const parentDirName = node_path_1.default.basename(node_path_1.default.dirname(filePath));
37
+ const grandParentDirName = node_path_1.default.basename(node_path_1.default.dirname(node_path_1.default.dirname(filePath)));
38
+ if (fileName === '_command.js' || fileName === '_command.ts')
39
+ return 'Command Group Definition';
40
+ if (fileName === '_group.js' || fileName === '_group.ts')
41
+ return 'Subcommand Group Definition';
42
+ if (parentDirName === 'commands' || grandParentDirName === 'commands')
43
+ return 'Command';
44
+ if (parentDirName === 'events')
45
+ return 'Event Handler';
46
+ if (parentDirName === 'helpers')
47
+ return 'Helper Script';
48
+ if (parentDirName === 'models')
49
+ return 'Database Model';
50
+ if (parentDirName === 'migrations')
51
+ return 'Database Migration';
52
+ if (parentDirName === 'tasks')
53
+ return 'Scheduled Task';
54
+ return 'Module';
55
+ }
56
+ let filesToProcess = [];
57
+ const addonsPath = node_path_1.default.join(rootDir, 'addons');
58
+ if (node_fs_1.default.existsSync(addonsPath)) {
59
+ console.log(picocolors_1.default.dim('🔎 Scanning addons...'));
60
+ filesToProcess = filesToProcess.concat(findJsFilesRecursive(addonsPath));
61
+ }
62
+ const pkg = require(node_path_1.default.join(rootDir, 'package.json'));
63
+ const currentYear = new Date().getFullYear();
64
+ filesToProcess.forEach((filePath) => {
65
+ const relativePath = node_path_1.default.relative(rootDir, filePath).replace(/\\/g, '/');
66
+ const fileType = getFileType(filePath);
67
+ const newHeader = `/**
68
+ * @namespace: ${relativePath}
69
+ * @type: ${fileType}
70
+ * @copyright © ${currentYear} kenndeclouv
71
+ * @assistant chaa & graa
72
+ * @version ${pkg.version}
73
+ */`;
74
+ const content = node_fs_1.default.readFileSync(filePath, 'utf8');
75
+ const headerRegex = /\/\*\*[\s\S]*?namespace:[\s\S]*?\*\//;
76
+ let newContent;
77
+ if (headerRegex.test(content)) {
78
+ newContent = content.replace(headerRegex, newHeader.trim());
79
+ }
80
+ else {
81
+ newContent = `${newHeader}\n\n${content}`;
82
+ }
83
+ if (newContent.trim() !== content.trim()) {
84
+ node_fs_1.default.writeFileSync(filePath, newContent, 'utf8');
85
+ console.log(picocolors_1.default.green(`🔄 Updated: ${relativePath}`));
86
+ }
87
+ });
88
+ console.log(picocolors_1.default.green('\n✅ Namespace annotation complete!'));
89
+ }
90
+ }
91
+ exports.default = NamespaceCommand;
92
+ //# sourceMappingURL=NamespaceCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamespaceCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/NamespaceCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import Command from '../Command';
2
+ export default class StructureCommand extends Command {
3
+ signature: string;
4
+ description: string;
5
+ handle(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=StructureCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructureCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/StructureCommand.ts"],"names":[],"mappings":"AAiBA,OAAO,OAAO,MAAM,YAAY,CAAC;AAKjC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IAC7C,SAAS,SAAmB;IAC5B,WAAW,SAAqD;IAE1D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAyCpC"}
@@ -0,0 +1,51 @@
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 node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const picocolors_1 = __importDefault(require("picocolors"));
10
+ class StructureCommand extends Command_1.default {
11
+ signature = 'gen:structure';
12
+ description = 'Generate project structure to temp/structure.md';
13
+ async handle() {
14
+ const rootDir = process.cwd();
15
+ const outputDir = node_path_1.default.join(rootDir, 'temp');
16
+ const outputFile = node_path_1.default.join(outputDir, 'structure.md');
17
+ const exclude = [
18
+ '.git',
19
+ '.vscode',
20
+ 'node_modules',
21
+ 'dist',
22
+ 'logs',
23
+ '.husky',
24
+ '.yalc',
25
+ ];
26
+ function generateTree(dir, prefix = '') {
27
+ const items = node_fs_1.default
28
+ .readdirSync(dir)
29
+ .filter((item) => !exclude.includes(item));
30
+ let tree = '';
31
+ items.forEach((item, index) => {
32
+ const fullPath = node_path_1.default.join(dir, item);
33
+ const isLast = index === items.length - 1;
34
+ const connector = isLast ? '└── ' : '├── ';
35
+ tree += `${prefix}${connector}${item}\n`;
36
+ if (node_fs_1.default.statSync(fullPath).isDirectory()) {
37
+ tree += generateTree(fullPath, prefix + (isLast ? ' ' : '│ '));
38
+ }
39
+ });
40
+ return tree;
41
+ }
42
+ if (!node_fs_1.default.existsSync(outputDir)) {
43
+ node_fs_1.default.mkdirSync(outputDir, { recursive: true });
44
+ }
45
+ const tree = generateTree(rootDir);
46
+ node_fs_1.default.writeFileSync(outputFile, tree, 'utf8');
47
+ console.log(picocolors_1.default.green(`✅ Project structure saved to: ${outputFile}`));
48
+ }
49
+ }
50
+ exports.default = StructureCommand;
51
+ //# sourceMappingURL=StructureCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructureCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/StructureCommand.ts"],"names":[],"mappings":";;;;;AAiBA,yDAAiC;AACjC,sDAAyB;AACzB,0DAA6B;AAC7B,4DAA4B;AAE5B,MAAqB,gBAAiB,SAAQ,iBAAO;IAC7C,SAAS,GAAG,eAAe,CAAC;IAC5B,WAAW,GAAG,iDAAiD,CAAC;IAEhE,KAAK,CAAC,MAAM;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG;YACf,MAAM;YACN,SAAS;YACT,cAAc;YACd,MAAM;YACN,MAAM;YACN,QAAQ;YACR,OAAO;SACP,CAAC;QAEF,SAAS,YAAY,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE;YAC7C,MAAM,KAAK,GAAG,iBAAE;iBACd,WAAW,CAAC,GAAG,CAAC;iBAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC7B,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC3C,IAAI,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,IAAI,CAAC;gBAEzC,IAAI,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACzC,IAAI,IAAI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrE,CAAC;YACF,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,iBAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACnC,iBAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,oBAAE,CAAC,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;CACD;AA7CD,mCA6CC"}
@@ -0,0 +1,7 @@
1
+ import Command from '../Command';
2
+ export default class UpversionCommand extends Command {
3
+ signature: string;
4
+ description: string;
5
+ handle(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=UpversionCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpversionCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/UpversionCommand.ts"],"names":[],"mappings":"AAkBA,OAAO,OAAO,MAAM,YAAY,CAAC;AAKjC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IAC7C,SAAS,SAAgB;IACzB,WAAW,SAA4D;IAEjE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAiEpC"}
@@ -0,0 +1,68 @@
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 node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const picocolors_1 = __importDefault(require("picocolors"));
10
+ class UpversionCommand extends Command_1.default {
11
+ signature = 'version:up';
12
+ description = 'Update @version in JSDoc headers to match package.json';
13
+ async handle() {
14
+ const rootDir = process.cwd();
15
+ const pkgPath = node_path_1.default.join(rootDir, 'package.json');
16
+ if (!node_fs_1.default.existsSync(pkgPath)) {
17
+ console.error(picocolors_1.default.red('❌ package.json not found!'));
18
+ process.exit(1);
19
+ }
20
+ const pkg = require(pkgPath);
21
+ const version = pkg.version;
22
+ console.log(picocolors_1.default.cyan(`✨ Using version from package.json: ${version}`));
23
+ const ignoredPaths = [
24
+ 'node_modules',
25
+ '.git',
26
+ '.env',
27
+ 'dist',
28
+ 'obfuscate.js',
29
+ '.yalc',
30
+ ];
31
+ function getAllJsFiles(dir, fileList = []) {
32
+ const files = node_fs_1.default.readdirSync(dir);
33
+ files.forEach((file) => {
34
+ const fullPath = node_path_1.default.join(dir, file);
35
+ if (ignoredPaths.includes(node_path_1.default.basename(fullPath)))
36
+ return;
37
+ const stat = node_fs_1.default.statSync(fullPath);
38
+ if (stat.isDirectory()) {
39
+ getAllJsFiles(fullPath, fileList);
40
+ }
41
+ else if (file.endsWith('.js') || file.endsWith('.ts')) {
42
+ fileList.push(fullPath);
43
+ }
44
+ });
45
+ return fileList;
46
+ }
47
+ const jsFiles = getAllJsFiles(rootDir);
48
+ const versionRegex = /(@version\s+)v?[\d.\-a-zA-Z]+/g;
49
+ let updatedCount = 0;
50
+ jsFiles.forEach((file) => {
51
+ try {
52
+ const originalContent = node_fs_1.default.readFileSync(file, 'utf8');
53
+ const newContent = originalContent.replace(versionRegex, `$1${version}`);
54
+ if (originalContent !== newContent) {
55
+ node_fs_1.default.writeFileSync(file, newContent, 'utf8');
56
+ console.log(picocolors_1.default.green(`✅ Updated: ${node_path_1.default.relative(rootDir, file)}`));
57
+ updatedCount++;
58
+ }
59
+ }
60
+ catch (err) {
61
+ console.error(picocolors_1.default.red(`❌ Failed to process: ${file}`), err.message);
62
+ }
63
+ });
64
+ console.log(picocolors_1.default.green(`\n🎉 Version update complete! (${updatedCount} files changed)`));
65
+ }
66
+ }
67
+ exports.default = UpversionCommand;
68
+ //# sourceMappingURL=UpversionCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpversionCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/UpversionCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const Command_1 = __importDefault(require("./Command"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const node_fs_1 = __importDefault(require("node:fs"));
11
+ const pc = require('picocolors');
12
+ const { version } = require('../../package.json');
13
+ const program = new commander_1.Command();
14
+ program
15
+ .name('kythia')
16
+ .description(pc.cyan('🌸 Kythia Framework CLI'))
17
+ .version(version);
18
+ const commandsDir = node_path_1.default.join(__dirname, 'commands');
19
+ if (node_fs_1.default.existsSync(commandsDir)) {
20
+ const commandFiles = node_fs_1.default
21
+ .readdirSync(commandsDir)
22
+ .filter((file) => (file.endsWith('.js') || file.endsWith('.ts')) &&
23
+ !file.endsWith('.d.ts'));
24
+ for (const file of commandFiles) {
25
+ const filePath = node_path_1.default.join(commandsDir, file);
26
+ try {
27
+ const moduleExport = require(filePath);
28
+ const CommandClass = moduleExport.default || moduleExport;
29
+ if (typeof CommandClass === 'function' &&
30
+ CommandClass.prototype instanceof Command_1.default) {
31
+ const commandInstance = new CommandClass();
32
+ commandInstance.register(program);
33
+ }
34
+ else if (typeof CommandClass.register === 'function') {
35
+ CommandClass.register(program);
36
+ }
37
+ }
38
+ catch (err) {
39
+ console.error(pc.red(`❌ Failed to load command ${file}:`), err);
40
+ }
41
+ }
42
+ }
43
+ program.parse(process.argv);
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;AAqBA,yCAAoC;AACpC,wDAAoC;AACpC,0DAA6B;AAC7B,sDAAyB;AAEzB,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAIjC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACL,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;KAC/C,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnB,MAAM,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAErD,IAAI,iBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;IAChC,MAAM,YAAY,GAAG,iBAAE;SACrB,WAAW,CAAC,WAAW,CAAC;SAExB,MAAM,CACN,CAAC,IAAI,EAAE,EAAE,CACR,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACxB,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC;YAEJ,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAGvC,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC;YAG1D,IACC,OAAO,YAAY,KAAK,UAAU;gBAClC,YAAY,CAAC,SAAS,YAAY,iBAAW,EAC5C,CAAC;gBACF,MAAM,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC3C,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;iBAAM,IAAI,OAAO,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAExD,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;AACF,CAAC;AAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import 'dotenv/config';
2
+ import { Umzug } from 'umzug';
3
+ import { type QueryInterface } from 'sequelize';
4
+ import KythiaStorage from '../../database/KythiaStorage';
5
+ declare const sequelize: import("sequelize").Sequelize;
6
+ declare const storage: KythiaStorage;
7
+ declare const umzug: Umzug<QueryInterface>;
8
+ export { sequelize, umzug, storage };
9
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/db.ts"],"names":[],"mappings":"AAoBA,OAAO,eAAe,CAAC;AAGvB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAK3D,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAezD,QAAA,MAAM,SAAS,+BAAkC,CAAC;AAkClD,QAAA,MAAM,OAAO,eAAmC,CAAC;AAoCjD,QAAA,MAAM,KAAK,uBAkBT,CAAC;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,90 @@
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.storage = exports.umzug = exports.sequelize = void 0;
7
+ require("dotenv/config");
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const umzug_1 = require("umzug");
11
+ const sequelize_1 = require("sequelize");
12
+ const pc = require('picocolors');
13
+ const KythiaSequelize_1 = __importDefault(require("../../database/KythiaSequelize"));
14
+ const KythiaStorage_1 = __importDefault(require("../../database/KythiaStorage"));
15
+ const configPath = node_path_1.default.resolve(process.cwd(), 'kythia.config.js');
16
+ if (!node_fs_1.default.existsSync(configPath)) {
17
+ console.error('❌ kythia.config.js not found in root directory!');
18
+ process.exit(1);
19
+ }
20
+ const config = require(configPath);
21
+ const sequelize = (0, KythiaSequelize_1.default)(config);
22
+ exports.sequelize = sequelize;
23
+ function getMigrationFiles() {
24
+ const rootDir = process.cwd();
25
+ const addonsDir = node_path_1.default.join(rootDir, 'addons');
26
+ if (!node_fs_1.default.existsSync(addonsDir))
27
+ return [];
28
+ const migrationFiles = [];
29
+ const addonFolders = node_fs_1.default
30
+ .readdirSync(addonsDir)
31
+ .filter((f) => node_fs_1.default.statSync(node_path_1.default.join(addonsDir, f)).isDirectory());
32
+ for (const addon of addonFolders) {
33
+ const migrationDir = node_path_1.default.join(addonsDir, addon, 'database', 'migrations');
34
+ if (node_fs_1.default.existsSync(migrationDir)) {
35
+ const files = node_fs_1.default
36
+ .readdirSync(migrationDir)
37
+ .filter((f) => f.endsWith('.js') || f.endsWith('.ts'))
38
+ .map((f) => ({
39
+ name: f,
40
+ path: node_path_1.default.join(migrationDir, f),
41
+ }));
42
+ migrationFiles.push(...files);
43
+ }
44
+ }
45
+ return migrationFiles.sort((a, b) => a.name.localeCompare(b.name));
46
+ }
47
+ const storage = new KythiaStorage_1.default({ sequelize });
48
+ exports.storage = storage;
49
+ const umzugLogger = {
50
+ info: (event) => {
51
+ if (typeof event === 'object') {
52
+ if (event.event === 'migrated') {
53
+ console.log(pc.green(`✅ Migrated: ${event.name} `) +
54
+ pc.gray(`(${event.durationSeconds}s)`));
55
+ }
56
+ else if (event.event === 'reverting') {
57
+ console.log(pc.yellow(`↩️ Reverting: ${event.name}`));
58
+ }
59
+ else if (event.event === 'reverted') {
60
+ console.log(pc.red(`❌ Reverted: ${event.name} `) +
61
+ pc.gray(`(${event.durationSeconds}s)`));
62
+ }
63
+ }
64
+ else {
65
+ console.log(pc.dim(event));
66
+ }
67
+ },
68
+ warn: (msg) => console.warn(pc.yellow(`⚠️ ${typeof msg === 'object' ? JSON.stringify(msg) : msg}`)),
69
+ error: (msg) => console.error(pc.red(`🔥 ${typeof msg === 'object' ? JSON.stringify(msg) : msg}`)),
70
+ debug: (msg) => console.debug(pc.gray(`🐛 ${typeof msg === 'object' ? JSON.stringify(msg) : msg}`)),
71
+ };
72
+ const umzug = new umzug_1.Umzug({
73
+ migrations: getMigrationFiles().map((m) => ({
74
+ name: m.name,
75
+ path: m.path,
76
+ up: async ({ context }) => {
77
+ const migration = require(m.path);
78
+ return migration.up(context, sequelize_1.DataTypes);
79
+ },
80
+ down: async ({ context }) => {
81
+ const migration = require(m.path);
82
+ return migration.down(context, sequelize_1.DataTypes);
83
+ },
84
+ })),
85
+ context: sequelize.getQueryInterface(),
86
+ storage: storage,
87
+ logger: umzugLogger,
88
+ });
89
+ exports.umzug = umzug;
90
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/cli/utils/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { KythiaMigratorFunction } from '../types/KythiaMigrator';
2
+ declare const KythiaMigrator: KythiaMigratorFunction;
3
+ export = KythiaMigrator;
4
+ //# sourceMappingURL=KythiaMigrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KythiaMigrator.d.ts","sourceRoot":"","sources":["../../src/database/KythiaMigrator.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAoCtE,QAAA,MAAM,cAAc,EAAE,sBAkErB,CAAC;AAEF,SAAS,cAAc,CAAC"}
@@ -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
+ const KythiaStorage = require("./KythiaStorage");
6
+ const sequelize_1 = require("sequelize");
7
+ const umzug_1 = require("umzug");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ function getMigrationFiles(rootDir) {
11
+ const addonsDir = node_path_1.default.join(rootDir, 'addons');
12
+ if (!node_fs_1.default.existsSync(addonsDir))
13
+ return [];
14
+ const migrationFiles = [];
15
+ const addonFolders = node_fs_1.default
16
+ .readdirSync(addonsDir)
17
+ .filter((f) => node_fs_1.default.statSync(node_path_1.default.join(addonsDir, f)).isDirectory());
18
+ for (const addon of addonFolders) {
19
+ const migrationDir = node_path_1.default.join(addonsDir, addon, 'database', 'migrations');
20
+ if (node_fs_1.default.existsSync(migrationDir)) {
21
+ const files = node_fs_1.default
22
+ .readdirSync(migrationDir)
23
+ .filter((f) => f.endsWith('.js'))
24
+ .map((f) => ({
25
+ name: f,
26
+ path: node_path_1.default.join(migrationDir, f),
27
+ folder: migrationDir,
28
+ }));
29
+ migrationFiles.push(...files);
30
+ }
31
+ }
32
+ return migrationFiles.sort((a, b) => a.name.localeCompare(b.name));
33
+ }
34
+ const KythiaMigrator = async ({ sequelize, container, logger, }) => {
35
+ const rootDir = container.appRoot;
36
+ const migrations = getMigrationFiles(rootDir);
37
+ if (migrations.length === 0) {
38
+ logger.info('📭 No migrations found in addons.');
39
+ return;
40
+ }
41
+ const umzugLogger = {
42
+ info: (event) => {
43
+ if (typeof event === 'object') {
44
+ if (event.event === 'migrating') {
45
+ }
46
+ else if (event.event === 'migrated') {
47
+ logger.info(`✅ Migrated: ${event.name}`);
48
+ }
49
+ }
50
+ else {
51
+ logger.info(event);
52
+ }
53
+ },
54
+ warn: (msg) => logger.warn(msg),
55
+ error: (msg) => logger.error(msg),
56
+ debug: (msg) => logger.debug(msg),
57
+ };
58
+ const umzug = new umzug_1.Umzug({
59
+ migrations: migrations.map((m) => ({
60
+ name: m.name,
61
+ path: m.path,
62
+ up: async ({ context }) => {
63
+ const migration = require(m.path);
64
+ return migration.up(context, sequelize_1.DataTypes);
65
+ },
66
+ down: async ({ context }) => {
67
+ const migration = require(m.path);
68
+ return migration.down(context, sequelize_1.DataTypes);
69
+ },
70
+ })),
71
+ context: sequelize.getQueryInterface(),
72
+ storage: new KythiaStorage({ sequelize }),
73
+ logger: umzugLogger,
74
+ });
75
+ logger.info(`🚜 Checking migrations for ${migrations.length} files...`);
76
+ try {
77
+ const pending = await umzug.pending();
78
+ if (pending.length > 0) {
79
+ const executed = await umzug.up();
80
+ if (executed.length > 0) {
81
+ logger.info(`✨ Successfully applied ${executed.length} migrations.`);
82
+ }
83
+ }
84
+ else {
85
+ logger.info('✨ Database is already up to date.');
86
+ }
87
+ }
88
+ catch (error) {
89
+ logger.error('🔥 Migration Failed:', error);
90
+ process.exit(1);
91
+ }
92
+ };
93
+ module.exports = KythiaMigrator;
94
+ //# sourceMappingURL=KythiaMigrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KythiaMigrator.js","sourceRoot":"","sources":["../../src/database/KythiaMigrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { Model, DataTypes, type Sequelize, type InitOptions, type ModelAttributes } from 'sequelize';
2
+ import { LRUCache } from 'lru-cache';
3
+ import type { Redis } from 'ioredis';
4
+ import type { KythiaConfig } from '../types/KythiaConfig';
5
+ import type { CacheStats, KythiaModelDependencies, CacheEntry, KythiaModelStructure } from '../types/KythiaModel';
6
+ export declare class KythiaModel<T extends object = any, TCreationAttributes extends object = T> extends Model<T, TCreationAttributes> {
7
+ static client: any;
8
+ static redis: Redis | undefined;
9
+ static isRedisConnected: boolean;
10
+ static logger: any;
11
+ static config: KythiaConfig | {};
12
+ static CACHE_VERSION: string;
13
+ static localCache: LRUCache<string, {
14
+ data: any;
15
+ expires: number;
16
+ }, unknown>;
17
+ static localNegativeCache: Set<string>;
18
+ static MAX_LOCAL_CACHE_SIZE: number;
19
+ static DEFAULT_TTL: number;
20
+ static lastRedisOpts: string[] | null;
21
+ static reconnectTimeout: NodeJS.Timeout | null;
22
+ static lastAutoReconnectTs: number;
23
+ static pendingQueries: Map<string, Promise<any>>;
24
+ static cacheStats: CacheStats;
25
+ static redisErrorTimestamps: number[];
26
+ static isShardMode: boolean;
27
+ static _redisFallbackURLs: any[];
28
+ static _redisCurrentIndex: number;
29
+ static _redisFailedIndexes: Set<number>;
30
+ static _justFailedOver: boolean;
31
+ static fillable?: string[];
32
+ static guarded?: string[];
33
+ static structure?: KythiaModelStructure;
34
+ static table?: string;
35
+ static cacheKeys?: any[];
36
+ static CACHE_KEYS?: any[];
37
+ static CACHE_TTL?: number;
38
+ static customInvalidationTags?: string[];
39
+ static init(attributes: ModelAttributes<any, any>, options: InitOptions<any>): any;
40
+ static autoBoot(sequelize: Sequelize): Promise<typeof KythiaModel | undefined>;
41
+ static _mapDbTypeToSequelize(dbType: string): DataTypes.AbstractDataTypeConstructor;
42
+ static _setupLaravelHooks(): void;
43
+ static setDependencies({ logger, config, redis, redisOptions, }: KythiaModelDependencies): void;
44
+ static _trackRedisError(err: any): void;
45
+ static _tryRedisFailover(): boolean;
46
+ static _closeCurrentRedis(): void;
47
+ static initializeRedis(redisOptions?: any): Redis | null | undefined;
48
+ static _makeRetryStrategy(): (times: number) => number | null;
49
+ static _setupRedisEventHandlers(): void;
50
+ static _scheduleReconnect(): void;
51
+ static getCacheKey(queryIdentifier: any): string;
52
+ static normalizeQueryOptions(data: any): any;
53
+ static _generateSmartTags(instance: any): string[];
54
+ static setCacheEntry(cacheKeyOrQuery: any, data: any, ttl?: number, tags?: string[]): Promise<void>;
55
+ static getCachedEntry(cacheKeyOrQuery: any, includeOptions?: any): Promise<CacheEntry>;
56
+ static clearCache(keys: any): Promise<void>;
57
+ static _redisSetCacheEntry(cacheKey: string, data: any, ttl: number, tags?: string[]): Promise<void>;
58
+ static _redisGetCachedEntry(cacheKey: string, includeOptions: any): Promise<CacheEntry>;
59
+ static _redisClearCache(cacheKey: string): Promise<void>;
60
+ static invalidateByTags(tags: string[]): Promise<void>;
61
+ static _mapSetCacheEntry(cacheKey: string, data: any, ttl: number): void;
62
+ static _mapGetCachedEntry(cacheKey: string, includeOptions: any): CacheEntry;
63
+ static _mapClearCache(cacheKey: string): void;
64
+ static _mapClearAllModelCache(): void;
65
+ static _normalizeFindOptions(options: any): any;
66
+ static getCache(keys: any, options?: any): Promise<any>;
67
+ static getAllCache(options?: any): Promise<any>;
68
+ static scheduleAdd(keySuffix: string, score: number, value: string): Promise<void>;
69
+ static scheduleRemove(keySuffix: string, value: string): Promise<void>;
70
+ static scheduleGetExpired(keySuffix: string, scoreLimit?: number): Promise<string[]>;
71
+ static scheduleClear(keySuffix: string): Promise<void>;
72
+ static findOrCreateWithCache(options: any): Promise<any>;
73
+ static countWithCache(options?: any, ttl?: number): Promise<any>;
74
+ saveAndUpdateCache(): Promise<this>;
75
+ static clearNegativeCache(keys: any): Promise<void>;
76
+ static aggregateWithCache(options?: any, cacheOptions?: any): Promise<any>;
77
+ static initializeCacheHooks(): void;
78
+ static attachHooksToAllModels(sequelizeInstance: Sequelize, client: any): void;
79
+ static touchParent(childInstance: any, foreignKeyField: string, ParentModel: typeof KythiaModel, timestampField?: string): Promise<void>;
80
+ static setupParentTouch(foreignKeyField: string, ParentModel: typeof KythiaModel, timestampField?: string): void;
81
+ }
82
+ export default KythiaModel;
83
+ //# sourceMappingURL=KythiaModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KythiaModel.d.ts","sourceRoot":"","sources":["../../src/database/KythiaModel.ts"],"names":[],"mappings":"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"}