@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
@@ -1,10 +1,10 @@
1
- import { Route } from '@arikajs/router';
2
- import { UserController } from '../app/Controllers/UserController';
1
+ import { Route, Request, Response, app } from 'arikajs';
2
+ import { UserController } from '@Controllers/UserController';
3
3
 
4
4
  Route.get('/', () => {
5
5
  return {
6
6
  framework: 'ArikaJS',
7
- version: '1.0.0',
7
+ version: app().version(),
8
8
  type: 'Fullstack',
9
9
  language: 'TypeScript',
10
10
  status: 'Online',
@@ -32,3 +32,8 @@ Route.get('/users/:id', userController.show);
32
32
  Route.post('/users', userController.store);
33
33
  Route.put('/users/:id', userController.update);
34
34
  Route.delete('/users/:id', userController.destroy);
35
+
36
+ // Example of a protected API route
37
+ // Route.get('/me', (req: Request, res: Response) => {
38
+ // return req.auth.user();
39
+ // }).withMiddleware('auth:api');
@@ -1,6 +1,10 @@
1
+ import { Route, Request, Response, view } from 'arikajs';
1
2
 
2
- import { Route } from 'arikajs';
3
-
4
- Route.get('/', ({ view }: any) => {
5
- return view.render('welcome', { name: 'ArikaApp' });
3
+ Route.get('/', (req: Request, res: Response) => {
4
+ return view('welcome', { name: 'ArikaApp' });
6
5
  });
6
+
7
+ // Example of a protected route
8
+ // Route.get('/dashboard', (req: Request, res: Response) => {
9
+ // return view('dashboard');
10
+ // }).withMiddleware('auth');
@@ -1,16 +1,15 @@
1
1
  import app from './bootstrap/app';
2
- import { Log } from 'arikajs';
3
- import './routes/web';
2
+ import { Log, config } from 'arikajs';
4
3
 
5
4
  const start = async () => {
6
5
  // Start the application
7
6
  console.log('🚀 Starting ArikaJS application...');
8
7
 
9
- const port = process.env.APP_PORT ? parseInt(process.env.APP_PORT) : 8000;
8
+ const port = config('http.port', 3000);
10
9
 
11
10
  await app.listen(port);
12
11
  };
13
12
 
14
13
  start().catch((err) => {
15
- Log.error('Failed to start application', { error: err.message });
14
+ console.error('Failed to start application:', err);
16
15
  });
@@ -3,6 +3,18 @@
3
3
  "target": "ESNext",
4
4
  "module": "NodeNext",
5
5
  "moduleResolution": "NodeNext",
6
+ "baseUrl": ".",
7
+ "paths": {
8
+ "@/*": ["app/*"],
9
+ "@Models/*": ["app/Models/*"],
10
+ "@Mail/*": ["app/Mail/*"],
11
+ "@Controllers/*": ["app/Http/Controllers/*"],
12
+ "@Middleware/*": ["app/Http/Middleware/*"],
13
+ "@Http/*": ["app/Http/*"],
14
+ "@Exceptions/*": ["app/Exceptions/*"],
15
+ "@Providers/*": ["app/Providers/*"],
16
+ "@Config/*": ["config/*"]
17
+ },
6
18
  "outDir": "./dist",
7
19
  "rootDir": "./",
8
20
  "strict": true,
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Cli.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cli.test.d.ts","sourceRoot":"","sources":["../../tests/Cli.test.ts"],"names":[],"mappings":""}
@@ -1,16 +0,0 @@
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 node_test_1 = require("node:test");
7
- const node_assert_1 = __importDefault(require("node:assert"));
8
- const src_1 = require("../src");
9
- (0, node_test_1.describe)('CLI Bootstrap', () => {
10
- (0, node_test_1.it)('boots correctly and returns a CommandRegistry', async () => {
11
- const registry = await src_1.Bootstrap.boot();
12
- node_assert_1.default.ok(registry !== null);
13
- node_assert_1.default.strictEqual(typeof registry.run, 'function');
14
- });
15
- });
16
- //# sourceMappingURL=Cli.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cli.test.js","sourceRoot":"","sources":["../../tests/Cli.test.ts"],"names":[],"mappings":";;;;;AACA,yCAA+C;AAC/C,8DAAiC;AACjC,gCAAmC;AAEnC,IAAA,oBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAA,cAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,QAAQ,GAAG,MAAM,eAAS,CAAC,IAAI,EAAE,CAAC;QACxC,qBAAM,CAAC,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QAC7B,qBAAM,CAAC,WAAW,CAAC,OAAO,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,88 +0,0 @@
1
- import { User } from '../Models/User';
2
-
3
- export class UserController {
4
- /**
5
- * Display a listing of users.
6
- */
7
- async index(req: any, res: any) {
8
- const users = await User.all();
9
- return res.json(users);
10
- }
11
-
12
- /**
13
- * Display the specified user.
14
- */
15
- async show(req: any, res: any) {
16
- const user = await User.find(req.params.id);
17
-
18
- if (!user) {
19
- return res.status(404).json({
20
- message: 'User not found'
21
- });
22
- }
23
-
24
- return res.json(user);
25
- }
26
-
27
- /**
28
- * Store a newly created user.
29
- */
30
- async store(req: any, res: any) {
31
- const { name, email, password } = req.body;
32
-
33
- // Basic validation
34
- if (!name || !email || !password) {
35
- return res.status(400).json({
36
- message: 'Name, email, and password are required'
37
- });
38
- }
39
-
40
- const user = await User.create({
41
- name,
42
- email,
43
- password
44
- });
45
-
46
- return res.status(201).json(user);
47
- }
48
-
49
- /**
50
- * Update the specified user.
51
- */
52
- async update(req: any, res: any) {
53
- const user = await User.find(req.params.id);
54
-
55
- if (!user) {
56
- return res.status(404).json({
57
- message: 'User not found'
58
- });
59
- }
60
-
61
- const { name, email, password } = req.body;
62
-
63
- await user.update({
64
- ...(name && { name }),
65
- ...(email && { email }),
66
- ...(password && { password })
67
- });
68
-
69
- return res.json(user);
70
- }
71
-
72
- /**
73
- * Remove the specified user.
74
- */
75
- async destroy(req: any, res: any) {
76
- const user = await User.find(req.params.id);
77
-
78
- if (!user) {
79
- return res.status(404).json({
80
- message: 'User not found'
81
- });
82
- }
83
-
84
- await user.delete();
85
-
86
- return res.status(204).send();
87
- }
88
- }
@@ -1,470 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en" data-theme="light">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Welcome to ArikaJS</title>
8
- <link
9
- href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&family=Plus+Jakarta+Sans:wght@300;400;600;800&display=swap"
10
- rel="stylesheet">
11
- <style>
12
- :root {
13
- --primary: #8b5cf6;
14
- --primary-glow: rgba(139, 92, 246, 0.4);
15
- --secondary: #ec4899;
16
- --bg: #030712;
17
- --card-bg: rgba(17, 24, 39, 0.7);
18
- --text-main: #f8fafc;
19
- --text-muted: #94a3b8;
20
- --border: rgba(255, 255, 255, 0.08);
21
- --aurora-opacity: 0.5;
22
- --btn-secondary-bg: rgba(255, 255, 255, 0.05);
23
- --pill-bg: rgba(255, 255, 255, 0.03);
24
- --h1-gradient: linear-gradient(135deg, #fff 30%, rgba(255, 255, 255, 0.5) 100%);
25
- }
26
-
27
- [data-theme="light"] {
28
- --bg: #f8fafc;
29
- --card-bg: rgba(255, 255, 255, 0.8);
30
- --text-main: #0f172a;
31
- --text-muted: #64748b;
32
- --border: rgba(15, 23, 42, 0.08);
33
- --aurora-opacity: 0.3;
34
- --btn-secondary-bg: rgba(15, 23, 42, 0.05);
35
- --pill-bg: rgba(15, 23, 42, 0.03);
36
- --h1-gradient: linear-gradient(135deg, #0f172a 30%, #334155 100%);
37
- }
38
-
39
- * {
40
- margin: 0;
41
- padding: 0;
42
- box-sizing: border-box;
43
- transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
44
- }
45
-
46
- body {
47
- font-family: 'Plus Jakarta Sans', sans-serif;
48
- background-color: var(--bg);
49
- color: var(--text-main);
50
- min-height: 100vh;
51
- display: flex;
52
- align-items: center;
53
- justify-content: center;
54
- overflow-x: hidden;
55
- position: relative;
56
- }
57
-
58
- /* Theme Switcher */
59
- .theme-toggle {
60
- position: fixed;
61
- top: 2rem;
62
- right: 2rem;
63
- z-index: 100;
64
- background: var(--card-bg);
65
- border: 1px solid var(--border);
66
- padding: 0.5rem;
67
- border-radius: 99px;
68
- cursor: pointer;
69
- backdrop-filter: blur(10px);
70
- display: flex;
71
- align-items: center;
72
- gap: 0.5rem;
73
- }
74
-
75
- .theme-toggle svg {
76
- width: 20px;
77
- height: 20px;
78
- color: var(--text-main);
79
- }
80
-
81
- /* Animated Aurora Background */
82
- .aurora {
83
- position: fixed;
84
- top: 0;
85
- left: 0;
86
- width: 100%;
87
- height: 100%;
88
- z-index: -1;
89
- filter: blur(100px);
90
- opacity: var(--aurora-opacity);
91
- pointer-events: none;
92
- }
93
-
94
- .aurora-blur {
95
- position: absolute;
96
- border-radius: 50%;
97
- animation: move 20s infinite alternate;
98
- }
99
-
100
- .blur-1 {
101
- width: 50vw;
102
- height: 50vw;
103
- background: radial-gradient(circle, var(--primary) 0%, transparent 70%);
104
- top: -10%;
105
- left: -10%;
106
- }
107
-
108
- .blur-2 {
109
- width: 40vw;
110
- height: 40vw;
111
- background: radial-gradient(circle, var(--secondary) 0%, transparent 70%);
112
- bottom: -10%;
113
- right: -10%;
114
- animation-duration: 25s;
115
- }
116
-
117
- @keyframes move {
118
- from {
119
- transform: translate(0, 0) scale(1);
120
- }
121
-
122
- to {
123
- transform: translate(10%, 10%) scale(1.1);
124
- }
125
- }
126
-
127
- .container {
128
- position: relative;
129
- z-index: 10;
130
- max-width: 1000px;
131
- width: 90%;
132
- text-align: center;
133
- padding: 4rem 2rem;
134
- animation: fadeIn 1s ease-out;
135
- }
136
-
137
- @keyframes fadeIn {
138
- from {
139
- opacity: 0;
140
- transform: translateY(20px);
141
- }
142
-
143
- to {
144
- opacity: 1;
145
- transform: translateY(0);
146
- }
147
- }
148
-
149
- .badge {
150
- display: inline-block;
151
- padding: 0.5rem 1.25rem;
152
- background: rgba(139, 92, 246, 0.1);
153
- border: 1px solid var(--primary);
154
- color: var(--primary);
155
- border-radius: 999px;
156
- font-size: 0.85rem;
157
- font-weight: 600;
158
- margin-bottom: 2rem;
159
- text-transform: uppercase;
160
- letter-spacing: 0.1em;
161
- }
162
-
163
- h1 {
164
- font-family: 'Outfit', sans-serif;
165
- font-size: clamp(4rem, 12vw, 8rem);
166
- font-weight: 800;
167
- line-height: 0.9;
168
- margin-bottom: 1.5rem;
169
- letter-spacing: -0.04em;
170
- background: var(--h1-gradient);
171
- background-clip: text;
172
- -webkit-background-clip: text;
173
- -webkit-text-fill-color: transparent;
174
- position: relative;
175
- }
176
-
177
- h1::after {
178
- content: 'ArikaJS';
179
- position: absolute;
180
- left: 0;
181
- top: 0;
182
- z-index: -1;
183
- filter: blur(40px);
184
- background: linear-gradient(135deg, var(--primary), var(--secondary));
185
- background-clip: text;
186
- -webkit-background-clip: text;
187
- -webkit-text-fill-color: transparent;
188
- opacity: 0.5;
189
- }
190
-
191
- .description {
192
- font-size: 1.25rem;
193
- color: var(--text-muted);
194
- max-width: 600px;
195
- margin: 0 auto 3rem;
196
- line-height: 1.6;
197
- font-weight: 300;
198
- }
199
-
200
- .actions {
201
- display: flex;
202
- gap: 1rem;
203
- justify-content: center;
204
- margin-bottom: 4rem;
205
- }
206
-
207
- .btn {
208
- padding: 1rem 2.5rem;
209
- border-radius: 12px;
210
- font-weight: 600;
211
- text-decoration: none;
212
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
213
- font-size: 1rem;
214
- }
215
-
216
- .btn-primary {
217
- background: var(--primary);
218
- color: white;
219
- box-shadow: 0 4px 20px var(--primary-glow);
220
- }
221
-
222
- .btn-primary:hover {
223
- transform: translateY(-2px);
224
- box-shadow: 0 8px 30px var(--primary-glow);
225
- background: #9d71fd;
226
- }
227
-
228
- .btn-secondary {
229
- background: var(--btn-secondary-bg);
230
- color: var(--text-main);
231
- border: 1px solid var(--border);
232
- backdrop-filter: blur(10px);
233
- }
234
-
235
- .btn-secondary:hover {
236
- background: rgba(255, 255, 255, 0.1);
237
- border-color: rgba(255, 255, 255, 0.2);
238
- }
239
-
240
- .features-grid {
241
- display: grid;
242
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
243
- gap: 1.5rem;
244
- margin-top: 2rem;
245
- }
246
-
247
- .feature-card {
248
- background: var(--card-bg);
249
- border: 1px solid var(--border);
250
- padding: 2rem;
251
- border-radius: 24px;
252
- text-align: left;
253
- transition: all 0.4s ease;
254
- backdrop-filter: blur(10px);
255
- }
256
-
257
- .feature-card:hover {
258
- border-color: var(--primary);
259
- background: var(--card-bg);
260
- transform: translateY(-8px);
261
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
262
- }
263
-
264
- .icon {
265
- width: 48px;
266
- height: 48px;
267
- background: rgba(139, 92, 246, 0.1);
268
- border-radius: 12px;
269
- display: flex;
270
- align-items: center;
271
- justify-content: center;
272
- margin-bottom: 1.5rem;
273
- color: var(--primary);
274
- }
275
-
276
- .feature-card h3 {
277
- font-size: 1.25rem;
278
- margin-bottom: 0.75rem;
279
- color: var(--text-main);
280
- }
281
-
282
- .feature-card p {
283
- color: var(--text-muted);
284
- font-size: 0.95rem;
285
- line-height: 1.6;
286
- }
287
-
288
- .stack-section {
289
- margin-top: 4rem;
290
- border-top: 1px solid var(--border);
291
- padding-top: 2rem;
292
- }
293
-
294
- .stack-section p {
295
- font-size: 0.8rem;
296
- color: var(--text-muted);
297
- text-transform: uppercase;
298
- letter-spacing: 0.2em;
299
- margin-bottom: 1.5rem;
300
- }
301
-
302
- .stack-pills {
303
- display: flex;
304
- flex-wrap: wrap;
305
- gap: 0.75rem;
306
- justify-content: center;
307
- }
308
-
309
- .pill {
310
- padding: 0.4rem 1rem;
311
- background: var(--pill-bg);
312
- border: 1px solid var(--border);
313
- border-radius: 99px;
314
- font-size: 0.75rem;
315
- color: var(--text-muted);
316
- transition: all 0.3s ease;
317
- }
318
-
319
- .pill:hover {
320
- border-color: var(--primary);
321
- color: var(--primary);
322
- background: rgba(139, 92, 246, 0.05);
323
- }
324
-
325
- .footer {
326
- margin-top: 3rem;
327
- color: var(--text-muted);
328
- font-size: 0.875rem;
329
- line-height: 1.7;
330
- }
331
-
332
- .footer span {
333
- color: var(--primary);
334
- font-weight: 600;
335
- }
336
-
337
- @media (max-width: 768px) {
338
- h1 {
339
- font-size: 4rem;
340
- }
341
-
342
- .features-grid {
343
- grid-template-columns: 1fr;
344
- }
345
-
346
- .actions {
347
- flex-direction: column;
348
- }
349
- }
350
- </style>
351
- </head>
352
-
353
- <body>
354
- <button class="theme-toggle" id="theme-toggle" title="Toggle Theme">
355
- <svg id="moon-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
356
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
357
- d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
358
- </svg>
359
- <svg id="sun-icon" style="display: none;" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
360
- stroke="currentColor">
361
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
362
- d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
363
- </svg>
364
- </button>
365
-
366
- <div class="aurora">
367
- <div class="aurora-blur blur-1"></div>
368
- <div class="aurora-blur blur-2"></div>
369
- </div>
370
-
371
- <div class="container">
372
- <div class="badge">Version 0.1.3 Now Live</div>
373
- <h1>ArikaJS</h1>
374
- <p class="description">
375
- A modern, elegant Node.js framework crafted for high-performance applications and exceptional developer
376
- experience.
377
- </p>
378
-
379
- <div class="actions">
380
- <a href="https://github.com/arikajs/arikajs#readme" class="btn btn-primary">Build your first App</a>
381
- <a href="https://github.com/arikajs/arikajs" class="btn btn-secondary">Star on GitHub</a>
382
- </div>
383
-
384
- <div class="features-grid">
385
- <div class="feature-card">
386
- <div class="icon">
387
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
388
- stroke-linecap="round" stroke-linejoin="round">
389
- <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
390
- </svg>
391
- </div>
392
- <h3>Type-Safe from Core</h3>
393
- <p>Leverage the full power of TypeScript with deep type safety throughout the entire framework pipeline.
394
- </p>
395
- </div>
396
- <div class="feature-card">
397
- <div class="icon">
398
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
399
- stroke-linecap="round" stroke-linejoin="round">
400
- <rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect>
401
- <line x1="8" y1="21" x2="16" y2="21"></line>
402
- <line x1="12" y1="17" x2="12" y2="21"></line>
403
- </svg>
404
- </div>
405
- <h3>Driver-Based Architecture</h3>
406
- <p>Seamlessly switch between Memory, Database, and Redis drivers for Cache, Storage, and Sessions.</p>
407
- </div>
408
- <div class="feature-card">
409
- <div class="icon">
410
- <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
411
- stroke-linecap="round" stroke-linejoin="round">
412
- <polyline points="16 18 22 12 16 6"></polyline>
413
- <polyline points="8 6 2 12 8 18"></polyline>
414
- </svg>
415
- </div>
416
- <h3>Container Service</h3>
417
- <p>Powerful Dependency Injection container for loosely coupled, highly testable application code.</p>
418
- </div>
419
- </div>
420
-
421
- <div class="stack-section">
422
- <p>Built with Core Arika Packages</p>
423
- <div class="stack-pills">
424
- <span class="pill">Foundation</span>
425
- <span class="pill">HTTP</span>
426
- <span class="pill">Router</span>
427
- <span class="pill">Container</span>
428
- <span class="pill">Events</span>
429
- <span class="pill">Cache</span>
430
- </div>
431
- </div>
432
-
433
- <div class="footer">
434
- Crafted with passion for <span>{{name}}</span>. <br>
435
- ArikaJS &copy; 2026. Empowering the next generation of developers.
436
- </div>
437
- </div>
438
-
439
- <script>
440
- const html = document.documentElement;
441
- const toggle = document.getElementById('theme-toggle');
442
- const sun = document.getElementById('sun-icon');
443
- const moon = document.getElementById('moon-icon');
444
-
445
- // Check for saved theme preference
446
- const savedTheme = localStorage.getItem('theme') || 'light';
447
- setTheme(savedTheme);
448
-
449
- toggle.addEventListener('click', () => {
450
- const currentTheme = html.getAttribute('data-theme');
451
- const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
452
- setTheme(newTheme);
453
- });
454
-
455
- function setTheme(theme) {
456
- html.setAttribute('data-theme', theme);
457
- localStorage.setItem('theme', theme);
458
-
459
- if (theme === 'dark') {
460
- sun.style.display = 'none';
461
- moon.style.display = 'block';
462
- } else {
463
- sun.style.display = 'block';
464
- moon.style.display = 'none';
465
- }
466
- }
467
- </script>
468
- </body>
469
-
470
- </html>