arcanajs 3.0.1 → 5.0.0

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 (99) hide show
  1. package/dist/529.js +2 -0
  2. package/dist/529.js.map +1 -0
  3. package/dist/630.js +3 -0
  4. package/dist/630.js.LICENSE.txt +14 -0
  5. package/dist/630.js.map +1 -0
  6. package/dist/arcanajs.auth.js +3 -0
  7. package/dist/arcanajs.auth.js.LICENSE.txt +14 -0
  8. package/dist/arcanajs.auth.js.map +1 -0
  9. package/dist/arcanajs.js +2 -1
  10. package/dist/arcanajs.js.LICENSE.txt +14 -0
  11. package/dist/arcanajs.js.map +1 -1
  12. package/dist/arcanajs.mail.js +2 -0
  13. package/dist/arcanajs.mail.js.map +1 -0
  14. package/dist/arcanajs.validator.js +2 -0
  15. package/dist/arcanajs.validator.js.map +1 -0
  16. package/dist/arcanox.js +2 -0
  17. package/dist/arcanox.js.map +1 -0
  18. package/dist/cli/commands/db.d.ts +1 -0
  19. package/dist/cli/commands/dependency.d.ts +1 -0
  20. package/dist/cli/commands/make/Controller.d.ts +3 -0
  21. package/dist/cli/commands/make/Factory.d.ts +2 -0
  22. package/dist/cli/commands/make/Middleware.d.ts +1 -0
  23. package/dist/cli/commands/make/Migration.d.ts +2 -0
  24. package/dist/cli/commands/make/Model.d.ts +2 -0
  25. package/dist/cli/commands/make/Provider.d.ts +1 -0
  26. package/dist/cli/commands/make/Request.d.ts +1 -0
  27. package/dist/cli/commands/make/Seeder.d.ts +2 -0
  28. package/dist/cli/commands/make.d.ts +1 -0
  29. package/dist/cli/commands/migrate.d.ts +1 -0
  30. package/dist/cli/index.d.ts +1 -0
  31. package/dist/cli/index.js +1 -1
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/cli/utils/toPascalCase.d.ts +1 -0
  34. package/dist/cli/utils/writeFile.d.ts +1 -0
  35. package/dist/lib/arcanox/Model.d.ts +203 -0
  36. package/dist/lib/arcanox/QueryBuilder.d.ts +141 -0
  37. package/dist/lib/arcanox/adapters/MongoAdapter.d.ts +22 -0
  38. package/dist/lib/arcanox/adapters/MySQLAdapter.d.ts +27 -0
  39. package/dist/lib/arcanox/adapters/PostgresAdapter.d.ts +27 -0
  40. package/dist/lib/arcanox/extensions/MongoExtensions.d.ts +33 -0
  41. package/dist/lib/arcanox/factory/Factory.d.ts +26 -0
  42. package/dist/lib/arcanox/factory/index.d.ts +1 -0
  43. package/dist/lib/arcanox/providers/DatabaseProvider.d.ts +10 -0
  44. package/dist/lib/arcanox/relations/BelongsTo.d.ts +11 -0
  45. package/dist/lib/arcanox/relations/BelongsToMany.d.ts +15 -0
  46. package/dist/lib/arcanox/relations/HasMany.d.ts +11 -0
  47. package/dist/lib/arcanox/relations/HasOne.d.ts +11 -0
  48. package/dist/lib/arcanox/relations/Relation.d.ts +14 -0
  49. package/dist/lib/arcanox/schema/Blueprint.d.ts +183 -0
  50. package/dist/lib/arcanox/schema/Migration.d.ts +76 -0
  51. package/dist/lib/arcanox/schema/Schema.d.ts +49 -0
  52. package/dist/lib/arcanox/schema/index.d.ts +4 -0
  53. package/dist/lib/arcanox/seeder/Seeder.d.ts +13 -0
  54. package/dist/lib/arcanox/seeder/index.d.ts +1 -0
  55. package/dist/lib/arcanox/support/Macroable.d.ts +19 -0
  56. package/dist/lib/arcanox/types.d.ts +76 -0
  57. package/dist/lib/auth/AuthProvider.d.ts +10 -0
  58. package/dist/lib/auth/JWTService.d.ts +11 -0
  59. package/dist/lib/auth/SessionManager.d.ts +4 -0
  60. package/dist/lib/auth/middleware/AuthMiddleware.d.ts +5 -0
  61. package/dist/lib/auth/middleware/AuthenticatedMiddleware.d.ts +5 -0
  62. package/dist/lib/auth/middleware/GuestMiddleware.d.ts +5 -0
  63. package/dist/lib/auth/middleware/RoleMiddleware.d.ts +7 -0
  64. package/dist/lib/auth/types/AuthConfig.d.ts +24 -0
  65. package/dist/lib/auth/types/JWTPayload.d.ts +10 -0
  66. package/dist/lib/auth/types/index.d.ts +2 -0
  67. package/dist/lib/auth/utils/PasswordHasher.d.ts +16 -0
  68. package/dist/lib/auth/utils/TokenBlacklist.d.ts +9 -0
  69. package/dist/lib/index.arcanox.d.ts +20 -0
  70. package/dist/lib/index.auth.d.ts +11 -0
  71. package/dist/lib/index.client.d.ts +2 -0
  72. package/dist/lib/index.mail.d.ts +8 -0
  73. package/dist/lib/{index.d.ts → index.server.d.ts} +6 -12
  74. package/dist/lib/index.validator.d.ts +6 -0
  75. package/dist/lib/mail/MailProvider.d.ts +10 -0
  76. package/dist/lib/mail/MailService.d.ts +57 -0
  77. package/dist/lib/mail/Mailable.d.ts +106 -0
  78. package/dist/lib/mail/index.d.ts +6 -0
  79. package/dist/lib/mail/queue/MailQueue.d.ts +51 -0
  80. package/dist/lib/mail/queue/index.d.ts +1 -0
  81. package/dist/lib/mail/types/MailConfig.d.ts +146 -0
  82. package/dist/lib/mail/types/index.d.ts +1 -0
  83. package/dist/lib/mail/utils/TemplateRenderer.d.ts +34 -0
  84. package/dist/lib/mail/utils/index.d.ts +1 -0
  85. package/dist/lib/server/ArcanaJSServer.d.ts +49 -16
  86. package/dist/lib/server/Container.d.ts +39 -0
  87. package/dist/lib/server/MiddlewareBinder.d.ts +4 -0
  88. package/dist/lib/server/ResponseHandlerMiddleware.d.ts +0 -25
  89. package/dist/lib/server/Router.d.ts +31 -32
  90. package/dist/lib/server/http/FormRequest.d.ts +10 -0
  91. package/dist/lib/server/http/JsonResource.d.ts +13 -0
  92. package/dist/lib/server/http/Middleware.d.ts +4 -0
  93. package/dist/lib/server/support/ServiceProvider.d.ts +17 -0
  94. package/dist/lib/server/utils/dynamicRequire.d.ts +6 -0
  95. package/dist/lib/validation/ValidationException.d.ts +5 -0
  96. package/dist/lib/validation/Validator.d.ts +55 -0
  97. package/dist/types/global.d.ts +102 -0
  98. package/package.json +90 -25
  99. package/dist/lib/global.d.ts +0 -61
@@ -1,60 +1,57 @@
1
- import express, { Router as ExpressRouter, RequestHandler } from "express";
1
+ import { Router as ExpressRouter } from "express";
2
2
  /**
3
- * Provides Routing syntax for defining routes with prefixes, middlewares, and groups
3
+ * Provides Routing syntax for defining routes with prefixes, middlewares, and groups for ArcanaJS Framework
4
4
  */
5
- export declare class Router {
5
+ export declare class ArcanaJSRouter {
6
6
  private router;
7
7
  private middlewareStack;
8
8
  private prefixStack;
9
9
  constructor();
10
- /**
11
- * Create a new router instance
12
- */
13
- static create(): Router;
14
10
  /**
15
11
  * Add middleware to the current stack
16
12
  */
17
- middleware(...middleware: RequestHandler[]): Router;
13
+ middleware(...middleware: any[]): ArcanaJSRouter;
18
14
  /**
19
15
  * Add prefix to the current stack
20
16
  */
21
- prefix(prefix: string): Router;
17
+ prefix(prefix: string): ArcanaJSRouter;
22
18
  /**
23
19
  * Create a route group
24
20
  */
25
- group(callback: (router: Router) => void): Router;
21
+ group(callback: (router: ArcanaJSRouter) => void): ArcanaJSRouter;
26
22
  /**
27
23
  * Define a GET route
28
24
  */
29
- get(path: string, ...args: any[]): Router;
25
+ get(path: string, ...args: any[]): ArcanaJSRouter;
30
26
  /**
31
27
  * Define a POST route
32
28
  */
33
- post(path: string, ...args: any[]): Router;
29
+ post(path: string, ...args: any[]): ArcanaJSRouter;
34
30
  /**
35
31
  * Define a PUT route
36
32
  */
37
- put(path: string, ...args: any[]): Router;
33
+ put(path: string, ...args: any[]): ArcanaJSRouter;
38
34
  /**
39
35
  * Define a DELETE route
40
36
  */
41
- delete(path: string, ...args: any[]): Router;
37
+ delete(path: string, ...args: any[]): ArcanaJSRouter;
42
38
  /**
43
39
  * Define a PATCH route
44
40
  */
45
- patch(path: string, ...args: any[]): Router;
41
+ patch(path: string, ...args: any[]): ArcanaJSRouter;
46
42
  /**
47
43
  * Define an OPTIONS route
48
44
  */
49
- options(path: string, ...args: any[]): Router;
45
+ options(path: string, ...args: any[]): ArcanaJSRouter;
50
46
  /**
51
- * Get the underlying Express router
47
+ * Define a resource route
48
+ * Registers index, create, store, show, edit, update, destroy routes
52
49
  */
53
- getRouter(): ExpressRouter;
50
+ resource(path: string, controller: any): ArcanaJSRouter;
54
51
  /**
55
- * Mount this router to an Express app or router
52
+ * Get the underlying Express router
56
53
  */
57
- mount(app: express.Application | ExpressRouter, basePath?: string): void;
54
+ getRouter(): ExpressRouter;
58
55
  /**
59
56
  * Clone the current router instance
60
57
  */
@@ -63,6 +60,10 @@ export declare class Router {
63
60
  * Add a route to the router
64
61
  */
65
62
  private _addRoute;
63
+ /**
64
+ * Resolve middleware to RequestHandler
65
+ */
66
+ private _resolveMiddleware;
66
67
  /**
67
68
  * Build the full path with prefixes
68
69
  */
@@ -77,18 +78,16 @@ export declare class Router {
77
78
  */
78
79
  export declare class Route {
79
80
  private static _router;
80
- static create(): Router;
81
- static middleware(...middleware: RequestHandler[]): Router;
82
- static prefix(prefix: string): Router;
83
- static group(callback: (router: Router) => void): Router;
84
- static get(path: string, ...args: any[]): Router;
85
- static post(path: string, ...args: any[]): Router;
86
- static put(path: string, ...args: any[]): Router;
87
- static delete(path: string, ...args: any[]): Router;
88
- static patch(path: string, ...args: any[]): Router;
89
- static options(path: string, ...args: any[]): Router;
81
+ static middleware(...middleware: any[]): typeof Route;
82
+ static prefix(prefix: string): typeof Route;
83
+ static group(callback: (router: ArcanaJSRouter) => void): typeof Route;
84
+ static get(path: string, ...args: any[]): typeof Route;
85
+ static post(path: string, ...args: any[]): typeof Route;
86
+ static put(path: string, ...args: any[]): typeof Route;
87
+ static delete(path: string, ...args: any[]): typeof Route;
88
+ static patch(path: string, ...args: any[]): typeof Route;
89
+ static options(path: string, ...args: any[]): typeof Route;
90
+ static resource(path: string, controller: any): typeof Route;
90
91
  static getRouter(): ExpressRouter;
91
- static mount(app: express.Application, basePath?: string): void;
92
- static reset(): void;
93
92
  }
94
93
  export default Route;
@@ -0,0 +1,10 @@
1
+ import { Request } from "express";
2
+ export declare abstract class FormRequest {
3
+ protected req: Request;
4
+ constructor(req: Request);
5
+ abstract rules(): Record<string, string>;
6
+ authorize(): boolean;
7
+ validate(): Promise<Record<string, any>>;
8
+ input(key: string, defaultValue?: any): any;
9
+ all(): any;
10
+ }
@@ -0,0 +1,13 @@
1
+ export declare class JsonResource {
2
+ resource: any;
3
+ constructor(resource: any);
4
+ static make(resource: any): JsonResource;
5
+ static collection(resource: any[]): AnonymousResourceCollection;
6
+ resolve(request?: any): any;
7
+ toArray(request?: any): any;
8
+ }
9
+ export declare class AnonymousResourceCollection extends JsonResource {
10
+ collects: any;
11
+ constructor(resource: any[], collects: any);
12
+ resolve(request?: any): any;
13
+ }
@@ -0,0 +1,4 @@
1
+ import { NextFunction, Request, Response } from "express";
2
+ export interface Middleware {
3
+ handle(req: Request, res: Response, next: NextFunction): void | Promise<void>;
4
+ }
@@ -0,0 +1,17 @@
1
+ import ArcanaJSServer from "../ArcanaJSServer";
2
+ export declare abstract class ServiceProvider {
3
+ protected app: ArcanaJSServer;
4
+ constructor(app: ArcanaJSServer);
5
+ /**
6
+ * Register any application services.
7
+ */
8
+ register(): void;
9
+ /**
10
+ * Bootstrap any application services.
11
+ */
12
+ boot(): void;
13
+ /**
14
+ * Shutdown any application services.
15
+ */
16
+ shutdown(): Promise<void>;
17
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Helper to dynamically require modules at runtime, bypassing Webpack bundling.
3
+ * This is necessary for loading user configuration files, migrations, and views
4
+ * that are not part of the framework bundle but exist in the user's project.
5
+ */
6
+ export declare const dynamicRequire: (id: string) => any;
@@ -0,0 +1,5 @@
1
+ export declare class ValidationException extends Error {
2
+ errors: Record<string, string[]>;
3
+ status: number;
4
+ constructor(errors: Record<string, string[]>);
5
+ }
@@ -0,0 +1,55 @@
1
+ import type { DatabaseAdapter } from "../arcanox/types";
2
+ export declare class Validator {
3
+ protected data: any;
4
+ protected rules: Record<string, string>;
5
+ protected errors: Record<string, string[]>;
6
+ protected databaseAdapter?: DatabaseAdapter;
7
+ /**
8
+ * Map of custom validator functions.
9
+ */
10
+ private static customValidators;
11
+ /**
12
+ * Register a custom validator.
13
+ */
14
+ static registerValidator(name: string, fn: (value: any, data: any, param?: string) => true | string | Promise<true | string>): void;
15
+ constructor(data: any, rules: Record<string, string>);
16
+ static make(data: any, rules: Record<string, string>): Validator;
17
+ /**
18
+ * Set the database adapter for database validation rules
19
+ */
20
+ setDatabaseAdapter(adapter: DatabaseAdapter): this;
21
+ fails(): Promise<boolean>;
22
+ passes(): Promise<boolean>;
23
+ errors_(): Record<string, string[]>;
24
+ validate(): Promise<Record<string, any>>;
25
+ protected validateRules(): Promise<Record<string, any>>;
26
+ /**
27
+ * Check if any rules require database adapter
28
+ */
29
+ protected needsDatabaseAdapter(): boolean;
30
+ /**
31
+ * Auto-inject database adapter from Container
32
+ */
33
+ protected autoInjectDatabaseAdapter(): Promise<void>;
34
+ protected getValue(field: string): any;
35
+ protected applyRule(field: string, value: any, rule: string): Promise<void>;
36
+ protected validateArrayContent(field: string, array: any[], type: string): Promise<void>;
37
+ protected validateMin(field: string, value: any, param: string): void;
38
+ protected validateMax(field: string, value: any, param: string): void;
39
+ protected isValidJson(value: any): boolean;
40
+ protected isEmpty(value: any): boolean;
41
+ /**
42
+ * Validate unique rule: unique:table,column,ignoreId,ignoreColumn
43
+ * Examples:
44
+ * - unique:users,email
45
+ * - unique:users,email,5 (ignore record with id=5)
46
+ * - unique:users,email,5,user_id (ignore record where user_id=5)
47
+ */
48
+ protected validateUnique(field: string, value: any, param: string): Promise<void>;
49
+ /**
50
+ * Validate exists rule: exists:table,column
51
+ * Example: exists:riads,id
52
+ */
53
+ protected validateExists(field: string, value: any, param: string): Promise<void>;
54
+ protected addError(field: string, message: string): void;
55
+ }
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Global type declarations for ArcanaJS
3
+ * This file provides type support for CSS imports in projects using ArcanaJS
4
+ */
5
+
6
+ /// <reference types="react" />
7
+
8
+ // CSS Module declarations
9
+ declare module "*.css" {
10
+ const content: { [className: string]: string };
11
+ export default content;
12
+ }
13
+
14
+ declare module "*.module.css" {
15
+ const classes: { [key: string]: string };
16
+ export default classes;
17
+ }
18
+
19
+ // SCSS declarations
20
+ declare module "*.scss" {
21
+ const content: { [className: string]: string };
22
+ export default content;
23
+ }
24
+
25
+ declare module "*.module.scss" {
26
+ const classes: { [key: string]: string };
27
+ export default classes;
28
+ }
29
+
30
+ // SASS declarations
31
+ declare module "*.sass" {
32
+ const content: { [className: string]: string };
33
+ export default content;
34
+ }
35
+
36
+ declare module "*.module.sass" {
37
+ const classes: { [key: string]: string };
38
+ export default classes;
39
+ }
40
+
41
+ // LESS declarations
42
+ declare module "*.less" {
43
+ const content: { [className: string]: string };
44
+ export default content;
45
+ }
46
+
47
+ declare module "*.module.less" {
48
+ const classes: { [key: string]: string };
49
+ export default classes;
50
+ }
51
+
52
+ // Image file declarations
53
+ declare module "*.png" {
54
+ const value: string;
55
+ export default value;
56
+ }
57
+
58
+ declare module "*.jpg" {
59
+ const value: string;
60
+ export default value;
61
+ }
62
+
63
+ declare module "*.jpeg" {
64
+ const value: string;
65
+ export default value;
66
+ }
67
+
68
+ declare module "*.gif" {
69
+ const value: string;
70
+ export default value;
71
+ }
72
+
73
+ declare module "*.svg" {
74
+ const value: string;
75
+ export default value;
76
+ }
77
+
78
+ declare module "*.webp" {
79
+ const value: string;
80
+ export default value;
81
+ }
82
+
83
+ // Font file declarations
84
+ declare module "*.woff" {
85
+ const value: string;
86
+ export default value;
87
+ }
88
+
89
+ declare module "*.woff2" {
90
+ const value: string;
91
+ export default value;
92
+ }
93
+
94
+ declare module "*.ttf" {
95
+ const value: string;
96
+ export default value;
97
+ }
98
+
99
+ declare module "*.eot" {
100
+ const value: string;
101
+ export default value;
102
+ }
package/package.json CHANGED
@@ -5,32 +5,37 @@
5
5
  "email": "mohammed.bencheikh.dev@gmail.com",
6
6
  "url": "https://mohammedbencheikh.com/"
7
7
  },
8
- "version": "3.0.1",
8
+ "version": "5.0.0",
9
9
  "description": "ArcanaJS Framework",
10
10
  "main": "./dist/arcanajs.js",
11
- "types": "./dist/lib/index.d.ts",
12
11
  "scripts": {
13
- "build": "tsc -p tsconfig.json --emitDeclarationOnly && webpack --config webpack.config.ts && cp src/lib/global.d.ts dist/lib/"
12
+ "build": "tsc -p tsconfig.json --emitDeclarationOnly && webpack --config webpack.config.ts && cp -r src/types dist/ && node scripts/post-build.js",
13
+ "test": "echo \"No tests specified\" && exit 0"
14
14
  },
15
15
  "exports": {
16
- ".": {
17
- "browser": {
18
- "types": "./dist/lib/index.client.d.ts",
19
- "default": "./dist/arcanajs.client.js"
20
- },
21
- "node": {
22
- "types": "./dist/lib/index.d.ts",
23
- "default": "./dist/arcanajs.js"
24
- },
16
+ "./server": {
17
+ "types": "./dist/lib/index.server.d.ts",
25
18
  "default": "./dist/arcanajs.js"
26
19
  },
20
+ "./arcanox": {
21
+ "types": "./dist/lib/index.arcanox.d.ts",
22
+ "default": "./dist/arcanox.js"
23
+ },
27
24
  "./client": {
28
25
  "types": "./dist/lib/index.client.d.ts",
29
26
  "default": "./dist/arcanajs.client.js"
30
27
  },
31
- "./server": {
32
- "types": "./dist/lib/index.d.ts",
33
- "default": "./dist/arcanajs.js"
28
+ "./auth": {
29
+ "types": "./dist/lib/index.auth.d.ts",
30
+ "default": "./dist/arcanajs.auth.js"
31
+ },
32
+ "./validator": {
33
+ "types": "./dist/lib/index.validator.d.ts",
34
+ "default": "./dist/arcanajs.validator.js"
35
+ },
36
+ "./mail": {
37
+ "types": "./dist/lib/index.mail.d.ts",
38
+ "default": "./dist/arcanajs.mail.js"
34
39
  }
35
40
  },
36
41
  "bin": {
@@ -41,38 +46,75 @@
41
46
  "bin"
42
47
  ],
43
48
  "peerDependencies": {
49
+ "@aws-sdk/client-ses": "^3.0.0",
50
+ "connect-redis": "^7.0.0",
51
+ "handlebars": "^4.7.0",
52
+ "ioredis": "^5.0.0",
53
+ "mongodb": "^6.0.0 || ^7.0.0",
54
+ "mysql2": "^3.0.0",
55
+ "nodemailer-mailgun-transport": "^2.0.0",
56
+ "pg": "^8.0.0",
44
57
  "react": "^19.0.0",
45
58
  "react-dom": "^19.0.0"
46
59
  },
60
+ "peerDependenciesMeta": {
61
+ "pg": {
62
+ "optional": true
63
+ },
64
+ "mysql2": {
65
+ "optional": true
66
+ },
67
+ "@faker-js/faker": {
68
+ "optional": true
69
+ },
70
+ "mongodb": {
71
+ "optional": true
72
+ },
73
+ "@aws-sdk/client-ses": {
74
+ "optional": true
75
+ },
76
+ "ioredis": {
77
+ "optional": true
78
+ },
79
+ "connect-redis": {
80
+ "optional": true
81
+ },
82
+ "handlebars": {
83
+ "optional": true
84
+ },
85
+ "nodemailer-mailgun-transport": {
86
+ "optional": true
87
+ }
88
+ },
47
89
  "dependencies": {
48
90
  "@babel/core": "^7.23.0",
49
91
  "@babel/preset-env": "^7.23.0",
50
92
  "@babel/preset-react": "^7.22.15",
51
93
  "@babel/preset-typescript": "^7.23.0",
52
- "@tailwindcss/postcss": "^4.1.17",
53
- "@types/compression": "^1.8.1",
54
- "@types/cookie-parser": "^1.4.10",
55
- "@types/express": "^5.0.5",
56
- "@types/node": "^24.10.1",
57
- "@types/react": "^19.2.7",
58
- "@types/react-dom": "^19.2.3",
59
94
  "@types/ws": "^8.18.1",
60
- "autoprefixer": "^10.4.22",
61
95
  "babel-loader": "^10.0.0",
96
+ "bcryptjs": "^2.4.3",
62
97
  "clean-webpack-plugin": "^4.0.0",
63
98
  "compression": "^1.8.1",
64
99
  "cookie-parser": "^1.4.7",
65
100
  "cross-env": "^10.1.0",
66
101
  "css-loader": "^7.1.2",
102
+ "dotenv": "^16.6.1",
103
+ "ejs": "^3.1.9",
67
104
  "express": "^5.1.0",
105
+ "express-session": "^1.18.0",
106
+ "express-validator": "^7.3.1",
68
107
  "helmet": "^8.1.0",
69
108
  "html-webpack-plugin": "^5.6.5",
109
+ "jsonwebtoken": "^9.0.2",
70
110
  "mini-css-extract-plugin": "^2.9.4",
111
+ "nodemailer": "^7.0.11",
71
112
  "null-loader": "^4.0.1",
72
113
  "postcss": "^8.5.6",
73
114
  "postcss-loader": "^8.2.0",
115
+ "redis": "^4.6.12",
116
+ "reflect-metadata": "^0.2.2",
74
117
  "style-loader": "^4.0.0",
75
- "tailwindcss": "^4.1.17",
76
118
  "ts-node": "^10.9.2",
77
119
  "tsx": "^4.20.6",
78
120
  "typescript": "^5.9.3",
@@ -82,9 +124,32 @@
82
124
  "ws": "^8.18.3"
83
125
  },
84
126
  "devDependencies": {
127
+ "@aws-sdk/client-ses": "^3.490.0",
128
+ "@faker-js/faker": "^10.1.0",
129
+ "@tailwindcss/postcss": "^4.1.17",
130
+ "@types/bcryptjs": "^2.4.6",
131
+ "@types/compression": "^1.8.1",
132
+ "@types/cookie-parser": "^1.4.10",
133
+ "@types/ejs": "^3.1.5",
134
+ "@types/express-session": "^1.18.0",
135
+ "@types/jsonwebtoken": "^9.0.5",
136
+ "@types/node": "^24.10.1",
137
+ "@types/nodemailer": "^7.0.4",
138
+ "@types/pg": "^8.15.6",
139
+ "@types/react": "^19.2.7",
140
+ "@types/react-dom": "^19.2.3",
85
141
  "@types/webpack-node-externals": "^3.0.4",
142
+ "autoprefixer": "^10.4.22",
143
+ "connect-redis": "^7.1.0",
144
+ "handlebars": "^4.7.8",
145
+ "ioredis": "^5.3.2",
146
+ "mongodb": "^7.0.0",
147
+ "mysql2": "^3.15.3",
148
+ "nodemailer-mailgun-transport": "^2.1.5",
149
+ "pg": "^8.16.3",
86
150
  "react": "^19.2.0",
87
- "react-dom": "^19.2.0"
151
+ "react-dom": "^19.2.0",
152
+ "tailwindcss": "^4.1.17"
88
153
  },
89
154
  "keywords": [
90
155
  "arcanajs",
@@ -1,61 +0,0 @@
1
- // ============================================================================
2
- // Express Augmentation
3
- // ============================================================================
4
- declare module "*.module.css" {
5
- const classes: { readonly [key: string]: string };
6
- export default classes;
7
- }
8
- declare module "*.css";
9
-
10
- declare global {
11
- var __non_webpack_require__: NodeJS.Require;
12
- namespace Express {
13
- interface Request {
14
- /**
15
- * Normalized DB object optionally attached to the request by ArcanaJSServer.
16
- * It may be either the raw client, or an object like `{ client, db, close }`.
17
- */
18
- db?: any;
19
- }
20
- interface Response {
21
- /**
22
- * Render a page component with data
23
- * @param page - Name of the page component to render
24
- * @param data - Data to pass to the page component
25
- */
26
- renderPage(page: string, data?: any): void;
27
-
28
- /**
29
- * Send a success JSON response
30
- * @param data - Data to send in the response
31
- * @param message - Optional success message
32
- * @param status - HTTP status code (default: 200)
33
- */
34
- success(
35
- data?: string | object | null,
36
- message?: string,
37
- status?: number
38
- ): Response;
39
-
40
- /**
41
- * Send an error JSON response
42
- * @param message - Error message
43
- * @param status - HTTP status code (default: 500)
44
- * @param error - Error details
45
- * @param data - Additional error data
46
- */
47
- error(
48
- message?: string,
49
- status?: number,
50
- error?: string | object | null,
51
- data?: string | object | null
52
- ): Response;
53
- }
54
- }
55
-
56
- // ============================================================================
57
- // CSS Module Declarations
58
- // ============================================================================
59
- }
60
-
61
- export {};