@arikajs/cli 0.0.4 → 0.0.6

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 (230) hide show
  1. package/README.md +99 -6
  2. package/dist/bin/arika.js +2 -2
  3. package/dist/bin/arika.js.map +1 -1
  4. package/dist/src/ApplicationLoader.d.ts +5 -0
  5. package/dist/src/ApplicationLoader.d.ts.map +1 -1
  6. package/dist/src/ApplicationLoader.js +24 -2
  7. package/dist/src/ApplicationLoader.js.map +1 -1
  8. package/dist/src/Bootstrap.d.ts.map +1 -1
  9. package/dist/src/Bootstrap.js +35 -0
  10. package/dist/src/Bootstrap.js.map +1 -1
  11. package/dist/src/Commands/AuthApiInstallCommand.d.ts +24 -0
  12. package/dist/src/Commands/AuthApiInstallCommand.d.ts.map +1 -0
  13. package/dist/src/Commands/AuthApiInstallCommand.js +751 -0
  14. package/dist/src/Commands/AuthApiInstallCommand.js.map +1 -0
  15. package/dist/src/Commands/AuthInstallCommand.d.ts +7 -0
  16. package/dist/src/Commands/AuthInstallCommand.d.ts.map +1 -0
  17. package/dist/src/Commands/AuthInstallCommand.js +46 -0
  18. package/dist/src/Commands/AuthInstallCommand.js.map +1 -0
  19. package/dist/src/Commands/AuthWebInstallCommand.d.ts +31 -0
  20. package/dist/src/Commands/AuthWebInstallCommand.d.ts.map +1 -0
  21. package/dist/src/Commands/AuthWebInstallCommand.js +1100 -0
  22. package/dist/src/Commands/AuthWebInstallCommand.js.map +1 -0
  23. package/dist/src/Commands/BenchmarkCommand.d.ts +7 -0
  24. package/dist/src/Commands/BenchmarkCommand.d.ts.map +1 -0
  25. package/dist/src/Commands/BenchmarkCommand.js +25 -0
  26. package/dist/src/Commands/BenchmarkCommand.js.map +1 -0
  27. package/dist/src/Commands/CacheClearCommand.d.ts +7 -0
  28. package/dist/src/Commands/CacheClearCommand.d.ts.map +1 -0
  29. package/dist/src/Commands/CacheClearCommand.js +33 -0
  30. package/dist/src/Commands/CacheClearCommand.js.map +1 -0
  31. package/dist/src/Commands/CacheTableCommand.d.ts.map +1 -1
  32. package/dist/src/Commands/CacheTableCommand.js +21 -9
  33. package/dist/src/Commands/CacheTableCommand.js.map +1 -1
  34. package/dist/src/Commands/ConfigCacheCommand.d.ts +7 -0
  35. package/dist/src/Commands/ConfigCacheCommand.d.ts.map +1 -0
  36. package/dist/src/Commands/ConfigCacheCommand.js +86 -0
  37. package/dist/src/Commands/ConfigCacheCommand.js.map +1 -0
  38. package/dist/src/Commands/ConfigClearCommand.d.ts +7 -0
  39. package/dist/src/Commands/ConfigClearCommand.d.ts.map +1 -0
  40. package/dist/src/Commands/ConfigClearCommand.js +29 -0
  41. package/dist/src/Commands/ConfigClearCommand.js.map +1 -0
  42. package/dist/src/Commands/DocsGenerateCommand.d.ts +0 -1
  43. package/dist/src/Commands/DocsGenerateCommand.d.ts.map +1 -1
  44. package/dist/src/Commands/DocsGenerateCommand.js +68 -77
  45. package/dist/src/Commands/DocsGenerateCommand.js.map +1 -1
  46. package/dist/src/Commands/EnvValidateCommand.d.ts +7 -0
  47. package/dist/src/Commands/EnvValidateCommand.d.ts.map +1 -0
  48. package/dist/src/Commands/EnvValidateCommand.js +51 -0
  49. package/dist/src/Commands/EnvValidateCommand.js.map +1 -0
  50. package/dist/src/Commands/ListCommand.d.ts.map +1 -1
  51. package/dist/src/Commands/ListCommand.js +15 -8
  52. package/dist/src/Commands/ListCommand.js.map +1 -1
  53. package/dist/src/Commands/MakeCommand.d.ts +7 -0
  54. package/dist/src/Commands/MakeCommand.d.ts.map +1 -0
  55. package/dist/src/Commands/MakeCommand.js +110 -0
  56. package/dist/src/Commands/MakeCommand.js.map +1 -0
  57. package/dist/src/Commands/MakeCommandCommand.d.ts +20 -0
  58. package/dist/src/Commands/MakeCommandCommand.d.ts.map +1 -0
  59. package/dist/src/Commands/MakeCommandCommand.js +82 -0
  60. package/dist/src/Commands/MakeCommandCommand.js.map +1 -0
  61. package/dist/src/Commands/MakeControllerCommand.d.ts +17 -0
  62. package/dist/src/Commands/MakeControllerCommand.d.ts.map +1 -0
  63. package/dist/src/Commands/MakeControllerCommand.js +90 -0
  64. package/dist/src/Commands/MakeControllerCommand.js.map +1 -0
  65. package/dist/src/Commands/MakeEventCommand.d.ts +8 -0
  66. package/dist/src/Commands/MakeEventCommand.d.ts.map +1 -0
  67. package/dist/src/Commands/MakeEventCommand.js +48 -0
  68. package/dist/src/Commands/MakeEventCommand.js.map +1 -0
  69. package/dist/src/Commands/MakeJobCommand.d.ts +8 -0
  70. package/dist/src/Commands/MakeJobCommand.d.ts.map +1 -0
  71. package/dist/src/Commands/MakeJobCommand.js +55 -0
  72. package/dist/src/Commands/MakeJobCommand.js.map +1 -0
  73. package/dist/src/Commands/MakeListenerCommand.d.ts +8 -0
  74. package/dist/src/Commands/MakeListenerCommand.d.ts.map +1 -0
  75. package/dist/src/Commands/MakeListenerCommand.js +55 -0
  76. package/dist/src/Commands/MakeListenerCommand.js.map +1 -0
  77. package/dist/src/Commands/MakeMiddlewareCommand.d.ts +17 -0
  78. package/dist/src/Commands/MakeMiddlewareCommand.d.ts.map +1 -0
  79. package/dist/src/Commands/MakeMiddlewareCommand.js +69 -0
  80. package/dist/src/Commands/MakeMiddlewareCommand.js.map +1 -0
  81. package/dist/src/Commands/MakeMigrationCommand.js +4 -4
  82. package/dist/src/Commands/MakeMigrationCommand.js.map +1 -1
  83. package/dist/src/Commands/MakeModelCommand.d.ts +26 -0
  84. package/dist/src/Commands/MakeModelCommand.d.ts.map +1 -0
  85. package/dist/src/Commands/MakeModelCommand.js +193 -0
  86. package/dist/src/Commands/MakeModelCommand.js.map +1 -0
  87. package/dist/src/Commands/MakeProviderCommand.d.ts +17 -0
  88. package/dist/src/Commands/MakeProviderCommand.d.ts.map +1 -0
  89. package/dist/src/Commands/MakeProviderCommand.js +72 -0
  90. package/dist/src/Commands/MakeProviderCommand.js.map +1 -0
  91. package/dist/src/Commands/MakeViewCommand.d.ts +7 -0
  92. package/dist/src/Commands/MakeViewCommand.d.ts.map +1 -0
  93. package/dist/src/Commands/MakeViewCommand.js +37 -0
  94. package/dist/src/Commands/MakeViewCommand.js.map +1 -0
  95. package/dist/src/Commands/MigrateFreshCommand.d.ts +10 -0
  96. package/dist/src/Commands/MigrateFreshCommand.d.ts.map +1 -0
  97. package/dist/src/Commands/MigrateFreshCommand.js +129 -0
  98. package/dist/src/Commands/MigrateFreshCommand.js.map +1 -0
  99. package/dist/src/Commands/NewCommand.d.ts.map +1 -1
  100. package/dist/src/Commands/NewCommand.js +92 -24
  101. package/dist/src/Commands/NewCommand.js.map +1 -1
  102. package/dist/src/Commands/QueueFailedCommand.d.ts +7 -0
  103. package/dist/src/Commands/QueueFailedCommand.d.ts.map +1 -0
  104. package/dist/src/Commands/QueueFailedCommand.js +30 -0
  105. package/dist/src/Commands/QueueFailedCommand.js.map +1 -0
  106. package/dist/src/Commands/QueueFailedTableCommand.d.ts +7 -0
  107. package/dist/src/Commands/QueueFailedTableCommand.d.ts.map +1 -0
  108. package/dist/src/Commands/QueueFailedTableCommand.js +55 -0
  109. package/dist/src/Commands/QueueFailedTableCommand.js.map +1 -0
  110. package/dist/src/Commands/QueueFlushCommand.d.ts +7 -0
  111. package/dist/src/Commands/QueueFlushCommand.d.ts.map +1 -0
  112. package/dist/src/Commands/QueueFlushCommand.js +21 -0
  113. package/dist/src/Commands/QueueFlushCommand.js.map +1 -0
  114. package/dist/src/Commands/QueueRetryCommand.d.ts +7 -0
  115. package/dist/src/Commands/QueueRetryCommand.d.ts.map +1 -0
  116. package/dist/src/Commands/QueueRetryCommand.js +36 -0
  117. package/dist/src/Commands/QueueRetryCommand.js.map +1 -0
  118. package/dist/src/Commands/QueueTableCommand.d.ts.map +1 -1
  119. package/dist/src/Commands/QueueTableCommand.js +19 -13
  120. package/dist/src/Commands/QueueTableCommand.js.map +1 -1
  121. package/dist/src/Commands/QueueWorkCommand.d.ts +8 -0
  122. package/dist/src/Commands/QueueWorkCommand.d.ts.map +1 -0
  123. package/dist/src/Commands/QueueWorkCommand.js +88 -0
  124. package/dist/src/Commands/QueueWorkCommand.js.map +1 -0
  125. package/dist/src/Commands/RouteListCommand.d.ts +7 -0
  126. package/dist/src/Commands/RouteListCommand.d.ts.map +1 -0
  127. package/dist/src/Commands/RouteListCommand.js +108 -0
  128. package/dist/src/Commands/RouteListCommand.js.map +1 -0
  129. package/dist/src/Commands/ScheduleRunCommand.d.ts +9 -0
  130. package/dist/src/Commands/ScheduleRunCommand.d.ts.map +1 -0
  131. package/dist/src/Commands/ScheduleRunCommand.js +80 -0
  132. package/dist/src/Commands/ScheduleRunCommand.js.map +1 -0
  133. package/dist/src/Commands/ScheduleWorkCommand.d.ts +9 -0
  134. package/dist/src/Commands/ScheduleWorkCommand.d.ts.map +1 -0
  135. package/dist/src/Commands/ScheduleWorkCommand.js +81 -0
  136. package/dist/src/Commands/ScheduleWorkCommand.js.map +1 -0
  137. package/dist/src/Commands/ServeCommand.d.ts +1 -0
  138. package/dist/src/Commands/ServeCommand.d.ts.map +1 -1
  139. package/dist/src/Commands/ServeCommand.js +111 -21
  140. package/dist/src/Commands/ServeCommand.js.map +1 -1
  141. package/dist/src/TemplateManager.d.ts +4 -0
  142. package/dist/src/TemplateManager.d.ts.map +1 -1
  143. package/dist/src/TemplateManager.js +35 -6
  144. package/dist/src/TemplateManager.js.map +1 -1
  145. package/dist/templates/app/.env.example +47 -0
  146. package/dist/templates/app/README.md +62 -0
  147. package/dist/templates/app/app/Exceptions/Handler.ts +19 -0
  148. package/dist/templates/app/app/Http/Controllers/UserController.ts +90 -0
  149. package/dist/templates/app/app/Http/Kernel.ts +43 -0
  150. package/dist/templates/app/app/Http/Middleware/Authenticate.ts +10 -0
  151. package/dist/templates/app/app/Http/Middleware/EnsureEmailIsVerified.ts +18 -0
  152. package/dist/templates/app/app/Http/Middleware/ExampleMiddleware.ts +12 -0
  153. package/dist/templates/app/app/Http/Middleware/RedirectIfAuthenticated.ts +18 -0
  154. package/dist/templates/app/app/Http/Middleware/TrimStrings.ts +12 -0
  155. package/dist/templates/app/app/Http/Middleware/TrustProxies.ts +23 -0
  156. package/dist/templates/app/app/Http/Middleware/VerifyCsrfToken.ts +10 -0
  157. package/dist/templates/app/app/Models/User.ts +15 -0
  158. package/dist/templates/app/app/Providers/AppServiceProvider.ts +17 -0
  159. package/dist/templates/app/app/Providers/RouteServiceProvider.ts +35 -0
  160. package/dist/templates/app/bootstrap/app.ts +41 -0
  161. package/dist/templates/app/config/app.ts +10 -0
  162. package/dist/templates/app/config/cache.ts +44 -0
  163. package/dist/templates/app/config/database.ts +63 -0
  164. package/dist/templates/app/config/filesystems.ts +35 -0
  165. package/dist/templates/app/config/http.ts +6 -0
  166. package/dist/templates/app/config/logging.ts +37 -0
  167. package/dist/templates/app/config/mail.ts +29 -0
  168. package/dist/templates/app/config/queue.ts +42 -0
  169. package/{templates/app/database/migrations/0001_create_users_table.ts → dist/templates/app/database/migrations/2024_01_01_000001_create_users_table.ts} +3 -1
  170. package/dist/templates/app/database/migrations/2024_01_01_000002_create_password_resets_table.ts +22 -0
  171. package/dist/templates/app/database/migrations/2024_01_01_000003_create_failed_jobs_table.ts +25 -0
  172. package/dist/templates/app/package.json +22 -0
  173. package/dist/templates/app/package.json.backup +22 -0
  174. package/dist/templates/app/public/assets/img/favicon.png +0 -0
  175. package/dist/templates/app/public/assets/img/logo.png +0 -0
  176. package/dist/templates/app/resources/views/errors/401.ark.html +320 -0
  177. package/dist/templates/app/resources/views/errors/403.ark.html +320 -0
  178. package/dist/templates/app/resources/views/errors/404.ark.html +320 -0
  179. package/dist/templates/app/resources/views/errors/419.ark.html +320 -0
  180. package/dist/templates/app/resources/views/errors/429.ark.html +320 -0
  181. package/dist/templates/app/resources/views/errors/500.ark.html +320 -0
  182. package/dist/templates/app/resources/views/errors/503.ark.html +320 -0
  183. package/dist/templates/app/resources/views/welcome.ark.html +846 -0
  184. package/dist/templates/app/routes/api.ts +39 -0
  185. package/dist/templates/app/routes/web.ts +10 -0
  186. package/dist/templates/app/server.ts +15 -0
  187. package/dist/templates/app/tsconfig.json +27 -0
  188. package/package.json +16 -10
  189. package/templates/app/.env.example +2 -2
  190. package/templates/app/README.md +62 -0
  191. package/templates/app/app/Exceptions/Handler.ts +19 -0
  192. package/templates/app/app/Http/Controllers/UserController.ts +90 -0
  193. package/templates/app/app/Http/Kernel.ts +39 -14
  194. package/templates/app/app/Http/Middleware/Authenticate.ts +10 -0
  195. package/templates/app/app/Http/Middleware/EnsureEmailIsVerified.ts +18 -0
  196. package/templates/app/app/Http/Middleware/ExampleMiddleware.ts +12 -0
  197. package/templates/app/app/Http/Middleware/RedirectIfAuthenticated.ts +18 -0
  198. package/templates/app/app/Http/Middleware/TrimStrings.ts +12 -0
  199. package/templates/app/app/Http/Middleware/TrustProxies.ts +23 -0
  200. package/templates/app/app/Http/Middleware/VerifyCsrfToken.ts +10 -0
  201. package/templates/app/app/Models/User.ts +5 -5
  202. package/templates/app/app/Providers/AppServiceProvider.ts +17 -0
  203. package/templates/app/app/Providers/RouteServiceProvider.ts +35 -0
  204. package/templates/app/bootstrap/app.ts +30 -2
  205. package/templates/app/config/app.ts +7 -6
  206. package/templates/app/config/cache.ts +14 -7
  207. package/templates/app/config/database.ts +48 -21
  208. package/templates/app/config/filesystems.ts +11 -9
  209. package/templates/app/config/http.ts +3 -2
  210. package/templates/app/config/logging.ts +6 -4
  211. package/templates/app/config/mail.ts +10 -8
  212. package/templates/app/config/queue.ts +6 -4
  213. package/templates/app/database/migrations/2024_01_01_000001_create_users_table.ts +25 -0
  214. package/templates/app/database/migrations/2024_01_01_000002_create_password_resets_table.ts +22 -0
  215. package/templates/app/database/migrations/2024_01_01_000003_create_failed_jobs_table.ts +25 -0
  216. package/templates/app/package.json +4 -3
  217. package/templates/app/package.json.backup +22 -0
  218. package/templates/app/public/assets/img/favicon.png +0 -0
  219. package/templates/app/public/assets/img/logo.png +0 -0
  220. package/templates/app/resources/views/welcome.ark.html +846 -0
  221. package/templates/app/routes/api.ts +8 -3
  222. package/templates/app/routes/web.ts +8 -4
  223. package/templates/app/server.ts +3 -4
  224. package/templates/app/tsconfig.json +12 -0
  225. package/dist/tests/Cli.test.d.ts +0 -2
  226. package/dist/tests/Cli.test.d.ts.map +0 -1
  227. package/dist/tests/Cli.test.js +0 -16
  228. package/dist/tests/Cli.test.js.map +0 -1
  229. package/templates/app/app/Controllers/UserController.ts +0 -88
  230. package/templates/app/resources/views/welcome.html +0 -470
@@ -0,0 +1,108 @@
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
+ exports.RouteListCommand = void 0;
40
+ const console_1 = require("@arikajs/console");
41
+ const path_1 = __importDefault(require("path"));
42
+ const fs_1 = __importDefault(require("fs"));
43
+ class RouteListCommand extends console_1.Command {
44
+ constructor() {
45
+ super(...arguments);
46
+ this.signature = 'route:list';
47
+ this.description = 'List all registered routes';
48
+ }
49
+ async handle() {
50
+ const cwd = process.cwd();
51
+ // Dynamically load the user's app Router/RouteRegistry.
52
+ // We do this by importing their routes directly.
53
+ // Arika standard apps have routes in: routes/web.ts and routes/api.ts
54
+ const webRoutes = path_1.default.join(cwd, 'routes', 'web.ts');
55
+ const apiRoutes = path_1.default.join(cwd, 'routes', 'api.ts');
56
+ try {
57
+ if (fs_1.default.existsSync(webRoutes)) {
58
+ await Promise.resolve(`${webRoutes}`).then(s => __importStar(require(s)));
59
+ }
60
+ if (fs_1.default.existsSync(apiRoutes)) {
61
+ await Promise.resolve(`${apiRoutes}`).then(s => __importStar(require(s)));
62
+ }
63
+ }
64
+ catch (e) {
65
+ this.error('Could not load application routes. Make sure you are running this command from the root of an ArikaJS application.');
66
+ this.error(e.message);
67
+ return;
68
+ }
69
+ // Now that the routes are imported, the RouteRegistry will have them.
70
+ // But the CLI needs to import Router from the user's project to get the exact instance,
71
+ // or since it's a singleton, we can grab it if it's installed locally.
72
+ try {
73
+ const { RouteRegistry } = await Promise.resolve(`${path_1.default.join(cwd, 'node_modules', '@arikajs', 'router')}`).then(s => __importStar(require(s)));
74
+ const routes = RouteRegistry.getInstance().getRoutes();
75
+ if (!routes || routes.length === 0) {
76
+ this.info('No routes found.');
77
+ return;
78
+ }
79
+ const tableData = routes.map((r) => {
80
+ const methodStr = typeof r.method === 'string' ? r.method : r.method.join('|');
81
+ let action = 'Closure';
82
+ if (Array.isArray(r.handler) && r.handler.length === 2) {
83
+ action = `${r.handler[0].name || 'Controller'}@${r.handler[1]}`;
84
+ }
85
+ else if (r.handler && typeof r.handler === 'object' && r.handler.action) {
86
+ action = r.handler.action.name || 'Closure';
87
+ }
88
+ else if (typeof r.handler === 'function' && r.handler.name) {
89
+ action = r.handler.name;
90
+ }
91
+ return [
92
+ methodStr.toUpperCase(),
93
+ r.path,
94
+ r.name || '',
95
+ action,
96
+ r.middleware && r.middleware.length ? r.middleware.map((m) => m.name || 'Middleware').join(', ') : ''
97
+ ];
98
+ });
99
+ this.table(['Method', 'URI', 'Name', 'Action', 'Middleware'], tableData);
100
+ this.success(`\nFound ${routes.length} total routes.`);
101
+ }
102
+ catch (e) {
103
+ this.error('Could not resolve @arikajs/router. Are you in an ArikaJS project?');
104
+ }
105
+ }
106
+ }
107
+ exports.RouteListCommand = RouteListCommand;
108
+ //# sourceMappingURL=RouteListCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteListCommand.js","sourceRoot":"","sources":["../../../src/Commands/RouteListCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@arikajs/console';
2
+ import { Scheduler } from '@arikajs/scheduler';
3
+ export declare class ScheduleRunCommand extends Command {
4
+ signature: string;
5
+ description: string;
6
+ handle(): Promise<void>;
7
+ protected loadSchedule(scheduler: Scheduler): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=ScheduleRunCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleRunCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/ScheduleRunCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,qBAAa,kBAAmB,SAAQ,OAAO;IACpC,SAAS,EAAE,MAAM,CAAkB;IACnC,WAAW,EAAE,MAAM,CAA6B;IAE1C,MAAM;cAiBH,YAAY,CAAC,SAAS,EAAE,SAAS;CAoBpD"}
@@ -0,0 +1,80 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ScheduleRunCommand = void 0;
37
+ const console_1 = require("@arikajs/console");
38
+ const scheduler_1 = require("@arikajs/scheduler");
39
+ const path = __importStar(require("path"));
40
+ const fs = __importStar(require("fs"));
41
+ class ScheduleRunCommand extends console_1.Command {
42
+ constructor() {
43
+ super(...arguments);
44
+ this.signature = 'schedule:run';
45
+ this.description = 'Run the scheduled tasks';
46
+ }
47
+ async handle() {
48
+ this.info('Running scheduled tasks...');
49
+ try {
50
+ const scheduler = this.container.make(scheduler_1.Scheduler);
51
+ // Try to load user defined schedule
52
+ await this.loadSchedule(scheduler);
53
+ await scheduler.run();
54
+ this.success('Scheduled tasks ran successfully.');
55
+ }
56
+ catch (error) {
57
+ this.error(`Failed to run scheduled tasks: ${error.message}`);
58
+ }
59
+ }
60
+ async loadSchedule(scheduler) {
61
+ const schedulePaths = [
62
+ path.join(process.cwd(), 'app/Console/Kernel.ts'),
63
+ path.join(process.cwd(), 'app/Console/Kernel.js'),
64
+ path.join(process.cwd(), 'schedule.ts'),
65
+ path.join(process.cwd(), 'schedule.js'),
66
+ ];
67
+ for (const filePath of schedulePaths) {
68
+ if (fs.existsSync(filePath)) {
69
+ const scheduleModule = await Promise.resolve(`${filePath}`).then(s => __importStar(require(s)));
70
+ const defineSchedule = scheduleModule.default || scheduleModule;
71
+ if (typeof defineSchedule === 'function') {
72
+ scheduler.define(defineSchedule);
73
+ return;
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
79
+ exports.ScheduleRunCommand = ScheduleRunCommand;
80
+ //# sourceMappingURL=ScheduleRunCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleRunCommand.js","sourceRoot":"","sources":["../../../src/Commands/ScheduleRunCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8CAA2C;AAC3C,kDAA+C;AAC/C,2CAA6B;AAC7B,uCAAyB;AAEzB,MAAa,kBAAmB,SAAQ,iBAAO;IAA/C;;QACW,cAAS,GAAW,cAAc,CAAC;QACnC,gBAAW,GAAW,yBAAyB,CAAC;IAuC3D,CAAC;IArCU,KAAK,CAAC,MAAM;QACf,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAExC,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAS,CAAC,CAAC;YAEjD,oCAAoC;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAEnC,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC;YAEtB,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,SAAoB;QAC7C,MAAM,aAAa,GAAG;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;SAC1C,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,MAAM,cAAc,GAAG,yBAAa,QAAQ,uCAAC,CAAC;gBAC9C,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC;gBAEhE,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;oBACvC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBACjC,OAAO;gBACX,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAzCD,gDAyCC"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@arikajs/console';
2
+ import { Scheduler } from '@arikajs/scheduler';
3
+ export declare class ScheduleWorkCommand extends Command {
4
+ signature: string;
5
+ description: string;
6
+ handle(): Promise<void>;
7
+ protected loadSchedule(scheduler: Scheduler): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=ScheduleWorkCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleWorkCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/ScheduleWorkCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAU,MAAM,oBAAoB,CAAC;AAIvD,qBAAa,mBAAoB,SAAQ,OAAO;IACrC,SAAS,EAAE,MAAM,CAAmB;IACpC,WAAW,EAAE,MAAM,CAAgC;IAE7C,MAAM;cAiBH,YAAY,CAAC,SAAS,EAAE,SAAS;CAqBpD"}
@@ -0,0 +1,81 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ScheduleWorkCommand = void 0;
37
+ const console_1 = require("@arikajs/console");
38
+ const scheduler_1 = require("@arikajs/scheduler");
39
+ const path = __importStar(require("path"));
40
+ const fs = __importStar(require("fs"));
41
+ class ScheduleWorkCommand extends console_1.Command {
42
+ constructor() {
43
+ super(...arguments);
44
+ this.signature = 'schedule:work';
45
+ this.description = 'Start the scheduler worker';
46
+ }
47
+ async handle() {
48
+ this.info('Starting scheduler worker...');
49
+ try {
50
+ const scheduler = this.container.make(scheduler_1.Scheduler);
51
+ // Try to load user defined schedule
52
+ await this.loadSchedule(scheduler);
53
+ const worker = new scheduler_1.Worker(scheduler);
54
+ await worker.start();
55
+ }
56
+ catch (error) {
57
+ this.error(`Scheduler worker failed: ${error.message}`);
58
+ }
59
+ }
60
+ async loadSchedule(scheduler) {
61
+ const schedulePaths = [
62
+ path.join(process.cwd(), 'app/Console/Kernel.ts'),
63
+ path.join(process.cwd(), 'app/Console/Kernel.js'),
64
+ path.join(process.cwd(), 'schedule.ts'),
65
+ path.join(process.cwd(), 'schedule.js'),
66
+ ];
67
+ for (const filePath of schedulePaths) {
68
+ if (fs.existsSync(filePath)) {
69
+ // Determine if we need to use tsx/ts-node for .ts files
70
+ const scheduleModule = await Promise.resolve(`${filePath}`).then(s => __importStar(require(s)));
71
+ const defineSchedule = scheduleModule.default || scheduleModule;
72
+ if (typeof defineSchedule === 'function') {
73
+ scheduler.define(defineSchedule);
74
+ return;
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ exports.ScheduleWorkCommand = ScheduleWorkCommand;
81
+ //# sourceMappingURL=ScheduleWorkCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleWorkCommand.js","sourceRoot":"","sources":["../../../src/Commands/ScheduleWorkCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8CAA2C;AAC3C,kDAAuD;AACvD,2CAA6B;AAC7B,uCAAyB;AAEzB,MAAa,mBAAoB,SAAQ,iBAAO;IAAhD;;QACW,cAAS,GAAW,eAAe,CAAC;QACpC,gBAAW,GAAW,4BAA4B,CAAC;IAwC9D,CAAC;IAtCU,KAAK,CAAC,MAAM;QACf,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAE1C,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAS,CAAC,CAAC;YAEjD,oCAAoC;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAEnC,MAAM,MAAM,GAAG,IAAI,kBAAM,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAEzB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,SAAoB;QAC7C,MAAM,aAAa,GAAG;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;SAC1C,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,wDAAwD;gBACxD,MAAM,cAAc,GAAG,yBAAa,QAAQ,uCAAC,CAAC;gBAC9C,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC;gBAEhE,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;oBACvC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBACjC,OAAO;gBACX,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AA1CD,kDA0CC"}
@@ -2,6 +2,7 @@ import { Command } from '@arikajs/console';
2
2
  export declare class ServeCommand extends Command {
3
3
  signature: string;
4
4
  description: string;
5
+ private log;
5
6
  handle(): Promise<void>;
6
7
  }
7
8
  //# sourceMappingURL=ServeCommand.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ServeCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/ServeCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAK3C,qBAAa,YAAa,SAAQ,OAAO;IAC9B,SAAS,SAAW;IACpB,WAAW,SAAqD;IAE1D,MAAM;CAiDtB"}
1
+ {"version":3,"file":"ServeCommand.d.ts","sourceRoot":"","sources":["../../../src/Commands/ServeCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAK3C,qBAAa,YAAa,SAAQ,OAAO;IAC9B,SAAS,SAAoD;IAC7D,WAAW,SAAqD;IAEvE,OAAO,CAAC,GAAG;IAWE,MAAM;CA0ItB"}
@@ -11,12 +11,24 @@ const fs_1 = __importDefault(require("fs"));
11
11
  class ServeCommand extends console_1.Command {
12
12
  constructor() {
13
13
  super(...arguments);
14
- this.signature = 'serve';
14
+ this.signature = 'serve {--port=3000} {--host=localhost} {--dev}';
15
15
  this.description = 'Serve the application on the development server';
16
16
  }
17
+ log(level, message) {
18
+ const now = new Date();
19
+ const timestamp = now.getFullYear() + '-' +
20
+ String(now.getMonth() + 1).padStart(2, '0') + '-' +
21
+ String(now.getDate()).padStart(2, '0') + ' ' +
22
+ String(now.getHours()).padStart(2, '0') + ':' +
23
+ String(now.getMinutes()).padStart(2, '0') + ':' +
24
+ String(now.getSeconds()).padStart(2, '0');
25
+ console.log(`[${timestamp}] ${level}: ${message}`);
26
+ }
17
27
  async handle() {
18
28
  const root = process.cwd();
19
29
  const pkgPath = path_1.default.join(root, 'package.json');
30
+ const port = this.option('port');
31
+ const host = this.option('host');
20
32
  if (!fs_1.default.existsSync(pkgPath)) {
21
33
  this.error('No package.json found. Make sure you are in an ArikaJS project root.');
22
34
  return;
@@ -27,32 +39,110 @@ class ServeCommand extends console_1.Command {
27
39
  this.error(`Could not find ${serverFile} in the current directory.`);
28
40
  return;
29
41
  }
30
- this.info(`Starting ArikaJS development server...`);
42
+ this.writeln('');
43
+ this.info(' ArikaJS Development Server');
44
+ this.comment(` Local: http://${host}:${port}`);
45
+ this.writeln('');
31
46
  const command = isTypeScript ? 'npx' : 'node';
32
- const args = isTypeScript ? ['--yes', 'tsx', 'watch', serverFile] : [serverFile];
33
- if (isTypeScript) {
34
- this.comment('Using tsx to run TypeScript server with hot-reload...');
35
- }
36
- const server = (0, child_process_1.spawn)(command, args, {
37
- cwd: root,
38
- stdio: 'inherit',
39
- shell: true,
40
- env: { ...process.env, PROJECT_ROOT: root }
41
- });
42
- return new Promise((resolve, reject) => {
47
+ const args = isTypeScript ? ['--yes', 'tsx', 'watch', '--clear-screen=false', '-r', 'tsconfig-paths/register', serverFile] : [serverFile];
48
+ let watcher = null;
49
+ let server = null;
50
+ let isExiting = false;
51
+ let isRestarting = false;
52
+ const startServer = () => {
53
+ if (isExiting)
54
+ return;
55
+ server = (0, child_process_1.spawn)(command, args, {
56
+ cwd: root,
57
+ stdio: 'inherit',
58
+ shell: process.platform === 'win32',
59
+ env: { ...process.env, PORT: port, HOST: host, PROJECT_ROOT: root }
60
+ });
43
61
  server.on('close', (code) => {
44
- if (code === 0) {
45
- resolve();
46
- }
47
- else {
62
+ server = null;
63
+ if (!isExiting && !isRestarting && code !== 0 && code !== null) {
48
64
  this.error(`Server exited with code ${code}`);
49
- resolve(); // Resolve anyway so the CLI can exit gracefully
50
65
  }
51
66
  });
52
- process.on('SIGINT', () => {
53
- server.kill('SIGINT');
54
- resolve();
67
+ };
68
+ const stopServer = async () => {
69
+ if (!server)
70
+ return;
71
+ return new Promise((resolve) => {
72
+ const currentServer = server;
73
+ let resolved = false;
74
+ currentServer.once('close', () => {
75
+ if (!resolved) {
76
+ resolved = true;
77
+ resolve();
78
+ }
79
+ });
80
+ try {
81
+ currentServer.kill('SIGTERM');
82
+ setTimeout(() => {
83
+ if (!resolved) {
84
+ try {
85
+ currentServer.kill('SIGKILL');
86
+ }
87
+ catch (e) { }
88
+ resolved = true;
89
+ resolve();
90
+ }
91
+ }, 1000);
92
+ }
93
+ catch (e) {
94
+ if (!resolved) {
95
+ resolved = true;
96
+ resolve();
97
+ }
98
+ }
55
99
  });
100
+ };
101
+ const cleanup = async () => {
102
+ if (isExiting)
103
+ return;
104
+ isExiting = true;
105
+ if (watcher)
106
+ watcher.close();
107
+ await stopServer();
108
+ };
109
+ if (isTypeScript) {
110
+ this.comment(' [System] Hot-reloading enabled (watching code, config & resources)');
111
+ const watchExtensions = ['.ts', '.js', '.json', '.ark.html', '.env'];
112
+ const ignoreDirs = ['node_modules', '.git', 'dist', 'storage'];
113
+ watcher = fs_1.default.watch(root, { recursive: true }, async (event, filename) => {
114
+ if (!filename || isRestarting || isExiting)
115
+ return;
116
+ const ext = path_1.default.extname(filename);
117
+ const isWatchedFile = watchExtensions.includes(ext) || path_1.default.basename(filename) === '.env';
118
+ const isIgnored = ignoreDirs.some(dir => filename.startsWith(dir + path_1.default.sep) || filename === dir);
119
+ if (isWatchedFile && !isIgnored) {
120
+ isRestarting = true;
121
+ this.log('INFO', `File changed: ${filename}`);
122
+ setTimeout(async () => {
123
+ this.log('INFO', 'Restarting server...');
124
+ await stopServer();
125
+ // Small delay for OS port release
126
+ setTimeout(() => {
127
+ startServer();
128
+ setTimeout(() => {
129
+ this.log('INFO', 'Server restarted successfully.');
130
+ isRestarting = false;
131
+ }, 500);
132
+ }, 300);
133
+ }, 600);
134
+ }
135
+ });
136
+ }
137
+ // Initial start
138
+ startServer();
139
+ return new Promise((resolve) => {
140
+ const signalHandler = async () => {
141
+ await cleanup();
142
+ resolve();
143
+ };
144
+ process.once('SIGINT', signalHandler);
145
+ process.once('SIGTERM', signalHandler);
56
146
  });
57
147
  }
58
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServeCommand.js","sourceRoot":"","sources":["../../../src/Commands/ServeCommand.ts"],"names":[],"mappings":";;;;;;AACA,8CAA2C;AAC3C,iDAAsC;AACtC,gDAAwB;AACxB,4CAAoB;AAEpB,MAAa,YAAa,SAAQ,iBAAO;IAAzC;;QACW,cAAS,GAAG,OAAO,CAAC;QACpB,gBAAW,GAAG,iDAAiD,CAAC;IAmD3E,CAAC;IAjDU,KAAK,CAAC,MAAM;QACf,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAEhD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;YACnF,OAAO;QACX,CAAC;QAED,MAAM,YAAY,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAE5D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,kBAAkB,UAAU,4BAA4B,CAAC,CAAC;YACrE,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAEjF,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,IAAI;YACT,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;SAC9C,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACb,OAAO,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;oBAC9C,OAAO,EAAE,CAAC,CAAC,gDAAgD;gBAC/D,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AArDD,oCAqDC"}
1
+ {"version":3,"file":"ServeCommand.js","sourceRoot":"","sources":["../../../src/Commands/ServeCommand.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@ export declare class TemplateManager {
9
9
  * Copy template files to the target directory.
10
10
  */
11
11
  copyTemplate(templatePath: string, targetDir: string, appName: string): void;
12
+ /**
13
+ * Rename migration files in the target directory to use the current date.
14
+ */
15
+ private renameMigrations;
12
16
  /**
13
17
  * Create .env and .env.example if they don't exist.
14
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateManager.d.ts","sourceRoot":"","sources":["../../src/TemplateManager.ts"],"names":[],"mappings":"AAOA,qBAAa,eAAe;IACxB,OAAO,CAAC,YAAY,CAAS;;IAO7B;;OAEG;IACI,mBAAmB,IAAI,MAAM;IAUpC;;OAEG;IACI,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOnF;;OAEG;IACI,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAoBtE,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,mBAAmB;CAkE9B"}
1
+ {"version":3,"file":"TemplateManager.d.ts","sourceRoot":"","sources":["../../src/TemplateManager.ts"],"names":[],"mappings":"AAOA,qBAAa,eAAe;IACxB,OAAO,CAAC,YAAY,CAAS;;IAO7B;;OAEG;IACI,mBAAmB,IAAI,MAAM;IAUpC;;OAEG;IACI,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAUnF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;OAEG;IACI,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAoBtE,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,mBAAmB;CAsE9B"}
@@ -10,7 +10,7 @@ const crypto_1 = require("crypto");
10
10
  class TemplateManager {
11
11
  constructor() {
12
12
  // Templates are located relative to the dist/src directory when running
13
- this.templatesDir = path_1.default.resolve(__dirname, '../../templates');
13
+ this.templatesDir = path_1.default.resolve(__dirname, '../templates');
14
14
  }
15
15
  /**
16
16
  * Resolve the template directory path.
@@ -27,9 +27,35 @@ class TemplateManager {
27
27
  */
28
28
  copyTemplate(templatePath, targetDir, appName) {
29
29
  this.copyRecursiveSync(templatePath, targetDir);
30
+ // Rename migrations to today's date
31
+ this.renameMigrations(targetDir);
30
32
  // Post-process files if needed (e.g., replacing placeholders)
31
33
  this.processPlaceholders(targetDir, appName);
32
34
  }
35
+ /**
36
+ * Rename migration files in the target directory to use the current date.
37
+ */
38
+ renameMigrations(targetDir) {
39
+ const migrationsDir = path_1.default.join(targetDir, 'database/migrations');
40
+ if (!fs_1.default.existsSync(migrationsDir))
41
+ return;
42
+ const files = fs_1.default.readdirSync(migrationsDir);
43
+ const date = new Date();
44
+ const timestamp = date.getFullYear().toString() + '_' +
45
+ (date.getMonth() + 1).toString().padStart(2, '0') + '_' +
46
+ date.getDate().toString().padStart(2, '0') + '_' +
47
+ date.getHours().toString().padStart(2, '0') +
48
+ date.getMinutes().toString().padStart(2, '0');
49
+ files.forEach((file, index) => {
50
+ // Check if file looks like a migration (starts with a date pattern)
51
+ if (/^\d{4}_\d{2}_\d{2}_\d{6}_/.test(file) || file.startsWith('2024_01_01')) {
52
+ const suffix = file.split('_').slice(4).join('_');
53
+ const newTimestamp = timestamp + (date.getSeconds() + index).toString().padStart(2, '0');
54
+ const newName = `${newTimestamp}_${suffix}`;
55
+ fs_1.default.renameSync(path_1.default.join(migrationsDir, file), path_1.default.join(migrationsDir, newName));
56
+ }
57
+ });
58
+ }
33
59
  /**
34
60
  * Create .env and .env.example if they don't exist.
35
61
  */
@@ -38,7 +64,7 @@ class TemplateManager {
38
64
  const envPath = path_1.default.join(targetDir, '.env');
39
65
  if (fs_1.default.existsSync(examplePath) && !fs_1.default.existsSync(envPath)) {
40
66
  let content = fs_1.default.readFileSync(examplePath, 'utf8');
41
- content = content.replace(/APP_NAME=.*/, `APP_NAME=${appName}`);
67
+ content = content.replace(/APP_NAME=.*/, `APP_NAME=ArikaJs`);
42
68
  // Automatically generate app key
43
69
  const appKey = 'base64:' + (0, crypto_1.randomBytes)(32).toString('base64');
44
70
  if (content.includes('APP_KEY=')) {
@@ -75,7 +101,7 @@ class TemplateManager {
75
101
  // Replace app name
76
102
  pkg.name = appName;
77
103
  // Handle local @arikajs dependencies for development
78
- // templatesDir is /path/to/cli/templates
104
+ // templatesDir is /path/to/cli/dist/templates
79
105
  // ArikaJs root is /path/to/
80
106
  const devWorkspaceRoot = path_1.default.resolve(this.templatesDir, '../../../');
81
107
  const handleDeps = (deps) => {
@@ -96,8 +122,11 @@ class TemplateManager {
96
122
  else if (dep === 'arikajs') {
97
123
  depName = 'arikajs';
98
124
  }
99
- if (depName && process.env.ARIKA_DEV === 'true') {
100
- const localPath = path_1.default.join(devWorkspaceRoot, depName);
125
+ if (depName) {
126
+ let localPath = path_1.default.join(devWorkspaceRoot, depName);
127
+ if (!fs_1.default.existsSync(localPath)) {
128
+ localPath = path_1.default.join(devWorkspaceRoot, 'packages', depName);
129
+ }
101
130
  if (fs_1.default.existsSync(localPath)) {
102
131
  // Calculate relative path from target directory to local package
103
132
  let relativePath = path_1.default.relative(targetDir, localPath);
@@ -119,7 +148,7 @@ class TemplateManager {
119
148
  if (fs_1.default.existsSync(viewsDir)) {
120
149
  const files = fs_1.default.readdirSync(viewsDir);
121
150
  files.forEach(file => {
122
- if (file.endsWith('.html')) {
151
+ if (file.endsWith('.html') || file.endsWith('.ark.html')) {
123
152
  const filePath = path_1.default.join(viewsDir, file);
124
153
  let content = fs_1.default.readFileSync(filePath, 'utf8');
125
154
  content = content.replace(/{{name}}/g, appName);
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateManager.js","sourceRoot":"","sources":["../../src/TemplateManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateManager.js","sourceRoot":"","sources":["../../src/TemplateManager.ts"],"names":[],"mappings":"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"}