create-warlock 4.0.10 → 4.0.29
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.
- package/package.json +1 -1
- package/templates/warlock/.prettierignore +4 -0
- package/templates/warlock/.prettierrc +8 -0
- package/templates/warlock/.prettierrc.json +11 -11
- package/templates/warlock/eslint.config.js +98 -0
- package/templates/warlock/package.json +27 -25
- package/templates/warlock/warlock.config.ts +2 -2
- package/templates/warlock/.eslintrc.json +0 -44
- package/templates/warlock/eslint.config.mjs +0 -76
- package/templates/warlock/src/app/main.ts +0 -12
- package/templates/warlock/src/app/posts/controllers/create-post.controller.ts +0 -22
- package/templates/warlock/src/app/posts/controllers/get-all-posts.controller.ts +0 -13
- package/templates/warlock/src/app/posts/controllers/get-post.controller.ts +0 -28
- package/templates/warlock/src/app/posts/models/index.ts +0 -1
- package/templates/warlock/src/app/posts/models/post/index.ts +0 -1
- package/templates/warlock/src/app/posts/models/post/post.model.ts +0 -32
- package/templates/warlock/src/app/posts/output/post.output.ts +0 -12
- package/templates/warlock/src/app/posts/repositories/posts.repository.ts +0 -26
- package/templates/warlock/src/app/posts/routes.ts +0 -12
- package/templates/warlock/src/app/posts/services/posts.service.ts +0 -28
- package/templates/warlock/src/app/posts/types/index.ts +0 -6
- package/templates/warlock/src/app/posts/utils/locales.ts +0 -8
- package/templates/warlock/src/app/posts/validation/create-post.validation.ts +0 -8
- package/templates/warlock/src/app/posts/validation/get-post.validation.ts +0 -7
- package/templates/warlock/src/app/users/controllers/auth/activate-account.controller.ts +0 -49
- package/templates/warlock/src/app/users/controllers/auth/admin-login.controller.ts +0 -39
- package/templates/warlock/src/app/users/controllers/auth/create-account-simple.controller.ts +0 -23
- package/templates/warlock/src/app/users/controllers/auth/create-account.controller.ts +0 -23
- package/templates/warlock/src/app/users/controllers/auth/forget-password.controller.ts +0 -39
- package/templates/warlock/src/app/users/controllers/auth/login.controller.ts +0 -32
- package/templates/warlock/src/app/users/controllers/auth/logout.controller.ts +0 -10
- package/templates/warlock/src/app/users/controllers/auth/resend-activation-code.controller.ts +0 -45
- package/templates/warlock/src/app/users/controllers/auth/reset-password.controller.ts +0 -43
- package/templates/warlock/src/app/users/controllers/auth/verify-forget-password-code.controller.ts +0 -18
- package/templates/warlock/src/app/users/controllers/profile/change-password.controller.ts +0 -31
- package/templates/warlock/src/app/users/controllers/profile/my-profile.controller.ts +0 -10
- package/templates/warlock/src/app/users/controllers/profile/update-profile.controller.ts +0 -25
- package/templates/warlock/src/app/users/controllers/users.restful.ts +0 -26
- package/templates/warlock/src/app/users/events/attach-user-to-response.ts +0 -18
- package/templates/warlock/src/app/users/events/register-current-user-to-model-authors.ts +0 -28
- package/templates/warlock/src/app/users/events/update-authors.ts +0 -19
- package/templates/warlock/src/app/users/mail/send-forget-password-email.ts +0 -20
- package/templates/warlock/src/app/users/models/user/index.ts +0 -1
- package/templates/warlock/src/app/users/models/user/migrations/20-10-2024_07-59-54-user.migration.ts +0 -15
- package/templates/warlock/src/app/users/models/user/user.model.ts +0 -59
- package/templates/warlock/src/app/users/output/user.output.ts +0 -12
- package/templates/warlock/src/app/users/repositories/users.repository.ts +0 -27
- package/templates/warlock/src/app/users/routes.ts +0 -51
- package/templates/warlock/src/app/users/services/create-account.service.ts +0 -16
- package/templates/warlock/src/app/users/services/login.service.ts +0 -16
- package/templates/warlock/src/app/users/utils/locales.ts +0 -16
- package/templates/warlock/src/app/users/validation/activate-account.validation.ts +0 -8
- package/templates/warlock/src/app/users/validation/admin-login.validation.ts +0 -8
- package/templates/warlock/src/app/users/validation/create-account.validation.ts +0 -10
- package/templates/warlock/src/app/users/validation/login.validation.ts +0 -8
- package/templates/warlock/src/app/utils/output.ts +0 -17
- package/templates/warlock/src/app/utils/router.ts +0 -104
- package/templates/warlock/src/config/app.ts +0 -12
- package/templates/warlock/src/config/auth.ts +0 -16
- package/templates/warlock/src/config/cache.ts +0 -40
- package/templates/warlock/src/config/database.ts +0 -18
- package/templates/warlock/src/config/http.ts +0 -22
- package/templates/warlock/src/config/log.ts +0 -19
- package/templates/warlock/src/config/mail.ts +0 -16
- package/templates/warlock/src/config/uploads.ts +0 -12
- package/templates/warlock/src/config/validation.ts +0 -78
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { groupedTranslations } from "@mongez/localization";
|
|
2
|
-
|
|
3
|
-
groupedTranslations("auth", {
|
|
4
|
-
confirmRegistrationSubject: {
|
|
5
|
-
en: "Activate your account",
|
|
6
|
-
ar: "تفعيل حسابك",
|
|
7
|
-
},
|
|
8
|
-
invalidCredentials: {
|
|
9
|
-
en: "Invalid credentials",
|
|
10
|
-
ar: "بيانات الدخول غير صحيحة",
|
|
11
|
-
},
|
|
12
|
-
accountNotActivated: {
|
|
13
|
-
en: "Your account is not activated",
|
|
14
|
-
ar: "حسابك غير مفعل",
|
|
15
|
-
},
|
|
16
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { v, type Infer } from "@warlock.js/core";
|
|
2
|
-
|
|
3
|
-
export const createAccountSchema = v.object({
|
|
4
|
-
name: v.string().minLength(2).required(),
|
|
5
|
-
email: v.string().email().required(),
|
|
6
|
-
password: v.string().minLength(8).required().strongPassword(),
|
|
7
|
-
confirmPassword: v.string().minLength(8).required().sameAs("password").omit(),
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
export type CreateAccountData = Infer<typeof createAccountSchema>;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { FinalOutput } from "@warlock.js/core";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Merge the output with this function will return the base output details
|
|
5
|
-
* Only and only if any of these keys are present
|
|
6
|
-
*/
|
|
7
|
-
export function withBaseOutputDetails(moreOptions: FinalOutput): FinalOutput {
|
|
8
|
-
return {
|
|
9
|
-
id: "integer",
|
|
10
|
-
isActive: "boolean",
|
|
11
|
-
createdAt: "date",
|
|
12
|
-
updatedAt: "date",
|
|
13
|
-
createdBy: "object",
|
|
14
|
-
updatedBy: "object",
|
|
15
|
-
...moreOptions,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { authMiddleware } from "@warlock.js/auth";
|
|
2
|
-
import {
|
|
3
|
-
router,
|
|
4
|
-
useRequestStore,
|
|
5
|
-
type Middleware,
|
|
6
|
-
type RouterGroupCallback,
|
|
7
|
-
} from "@warlock.js/core";
|
|
8
|
-
|
|
9
|
-
export const adminPath = (path: string) => `/admin${path}`;
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Check if the current request is for admin
|
|
13
|
-
*/
|
|
14
|
-
export const isAdminRequest = () => {
|
|
15
|
-
const { request } = useRequestStore();
|
|
16
|
-
|
|
17
|
-
return request.path.includes("/admin");
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Add routes Group
|
|
22
|
-
*/
|
|
23
|
-
const adminRoutes = (callback: RouterGroupCallback) => {
|
|
24
|
-
return router.group(
|
|
25
|
-
{
|
|
26
|
-
prefix: "/admin",
|
|
27
|
-
name: "admin",
|
|
28
|
-
},
|
|
29
|
-
callback,
|
|
30
|
-
);
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Register guarded routes that requires user to be logged in to access them.
|
|
35
|
-
*/
|
|
36
|
-
export const guarded = (
|
|
37
|
-
callback: RouterGroupCallback,
|
|
38
|
-
moreMiddlewares: Middleware[] = [],
|
|
39
|
-
) => {
|
|
40
|
-
return router.group(
|
|
41
|
-
{
|
|
42
|
-
name: "guarded.user",
|
|
43
|
-
middleware: [authMiddleware("user"), ...moreMiddlewares],
|
|
44
|
-
},
|
|
45
|
-
callback,
|
|
46
|
-
);
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Only guests can access these routes.
|
|
51
|
-
*/
|
|
52
|
-
export const guardedGuest = (callback: RouterGroupCallback) => {
|
|
53
|
-
return router.group(
|
|
54
|
-
{
|
|
55
|
-
name: "guarded.guest",
|
|
56
|
-
middleware: [authMiddleware()],
|
|
57
|
-
},
|
|
58
|
-
callback,
|
|
59
|
-
);
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Guarded guest routes for admin
|
|
64
|
-
*/
|
|
65
|
-
export const guardedGuestAdmin = (callback: RouterGroupCallback) => {
|
|
66
|
-
return adminRoutes(() => {
|
|
67
|
-
router.group(
|
|
68
|
-
{
|
|
69
|
-
name: "guarded.guest",
|
|
70
|
-
middleware: [authMiddleware()],
|
|
71
|
-
},
|
|
72
|
-
callback,
|
|
73
|
-
);
|
|
74
|
-
});
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Only admin can access these routes.
|
|
79
|
-
*/
|
|
80
|
-
export const guardedAdmin = (callback: RouterGroupCallback) => {
|
|
81
|
-
return adminRoutes(() => {
|
|
82
|
-
router.group(
|
|
83
|
-
{
|
|
84
|
-
name: "guarded.user",
|
|
85
|
-
middleware: [authMiddleware("user")],
|
|
86
|
-
},
|
|
87
|
-
callback,
|
|
88
|
-
);
|
|
89
|
-
});
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Public routes that doesn't require user to be logged in to access them.
|
|
94
|
-
* Just requires an access token.
|
|
95
|
-
*/
|
|
96
|
-
export const publicRoutes = (callback: RouterGroupCallback) => {
|
|
97
|
-
return router.group(
|
|
98
|
-
{
|
|
99
|
-
name: "public",
|
|
100
|
-
middleware: [authMiddleware()],
|
|
101
|
-
},
|
|
102
|
-
callback,
|
|
103
|
-
);
|
|
104
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { env } from "@mongez/dotenv";
|
|
2
|
-
import type { AppConfigurations } from "@warlock.js/core";
|
|
3
|
-
|
|
4
|
-
const appConfigurations: AppConfigurations = {
|
|
5
|
-
appName: env("APP_NAME", "Warlock.js"),
|
|
6
|
-
timezone: env("TIMEZONE", "UTC"),
|
|
7
|
-
baseUrl: env("BASE_URL", "http://localhost:3000"),
|
|
8
|
-
localeCode: env("LOCALE_CODE", "en"),
|
|
9
|
-
localeCodes: ["en", "ar"],
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export default appConfigurations;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { env } from "@mongez/dotenv";
|
|
2
|
-
import type { AuthConfigurations } from "@warlock.js/auth";
|
|
3
|
-
import { Guest } from "@warlock.js/auth";
|
|
4
|
-
import { User } from "app/users/models/user";
|
|
5
|
-
|
|
6
|
-
const authConfigurations: AuthConfigurations = {
|
|
7
|
-
userType: {
|
|
8
|
-
guest: Guest,
|
|
9
|
-
user: User,
|
|
10
|
-
},
|
|
11
|
-
jwt: {
|
|
12
|
-
secret: env("JWT_SECRET"),
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export default authConfigurations;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { env } from "@mongez/dotenv";
|
|
2
|
-
import type { CacheConfigurations } from "@warlock.js/cache";
|
|
3
|
-
import {
|
|
4
|
-
FileCacheDriver,
|
|
5
|
-
MemoryCacheDriver,
|
|
6
|
-
MemoryExtendedCacheDriver,
|
|
7
|
-
RedisCacheDriver,
|
|
8
|
-
} from "@warlock.js/cache";
|
|
9
|
-
|
|
10
|
-
const globalPrefix = () => {
|
|
11
|
-
return env("CACHE_PREFIX", env("APP_NAME", "warlock"));
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const cacheConfigurations: CacheConfigurations = {
|
|
15
|
-
drivers: {
|
|
16
|
-
file: FileCacheDriver,
|
|
17
|
-
memory: MemoryCacheDriver,
|
|
18
|
-
redis: RedisCacheDriver,
|
|
19
|
-
memoryExtended: MemoryExtendedCacheDriver,
|
|
20
|
-
},
|
|
21
|
-
default: env("CACHE_DRIVER", "memoryExtended"),
|
|
22
|
-
options: {
|
|
23
|
-
memory: {
|
|
24
|
-
globalPrefix,
|
|
25
|
-
ttl: 3600 * 3, // 3 hours
|
|
26
|
-
},
|
|
27
|
-
memoryExtended: {
|
|
28
|
-
globalPrefix,
|
|
29
|
-
ttl: 3600 * 3, // 3 hours
|
|
30
|
-
},
|
|
31
|
-
redis: {
|
|
32
|
-
host: env("REDIS_HOST"),
|
|
33
|
-
port: env("REDIS_PORT"),
|
|
34
|
-
url: env("REDIS_URL"),
|
|
35
|
-
globalPrefix,
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export default cacheConfigurations;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { env } from "@mongez/dotenv";
|
|
2
|
-
import type { DatabaseConfigurations } from "@warlock.js/cascade";
|
|
3
|
-
|
|
4
|
-
const databaseConfigurations: DatabaseConfigurations = {
|
|
5
|
-
host: env("DB_HOST", "localhost"),
|
|
6
|
-
port: env("DB_PORT", 27017),
|
|
7
|
-
username: env("DB_USERNAME"),
|
|
8
|
-
password: env("DB_PASSWORD"),
|
|
9
|
-
database: env("DB_NAME"),
|
|
10
|
-
dbAuth: env("DB_AUTH"),
|
|
11
|
-
url: env("DB_URL"),
|
|
12
|
-
model: {
|
|
13
|
-
autoIncrementBy: 1,
|
|
14
|
-
initialId: 1,
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export default databaseConfigurations;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { env } from "@mongez/dotenv";
|
|
2
|
-
import type { HttpConfigurations } from "@warlock.js/core";
|
|
3
|
-
|
|
4
|
-
const httpConfigurations: HttpConfigurations = {
|
|
5
|
-
port: env("HTTP_PORT", 3000),
|
|
6
|
-
host: env("HTTP_HOST", "localhost"),
|
|
7
|
-
log: true,
|
|
8
|
-
fileUploadLimit: 20 * 1024 * 1024, // 20MB
|
|
9
|
-
rateLimit: {
|
|
10
|
-
max: 260, // max requests per duration (i.e minute)
|
|
11
|
-
duration: 60 * 1000, // 1 minute
|
|
12
|
-
},
|
|
13
|
-
cors: {
|
|
14
|
-
// allowed origins
|
|
15
|
-
// origin: ["http://localhost"],
|
|
16
|
-
origin: "*",
|
|
17
|
-
// allowed methods
|
|
18
|
-
methods: ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"],
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export default httpConfigurations;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { LogConfigurations } from "@warlock.js/core";
|
|
2
|
-
import { ConsoleLog } from "@warlock.js/logger";
|
|
3
|
-
|
|
4
|
-
export const consoleLog = new ConsoleLog();
|
|
5
|
-
|
|
6
|
-
const logConfigurations: LogConfigurations = {
|
|
7
|
-
enabled: true,
|
|
8
|
-
development: {
|
|
9
|
-
channels: [consoleLog],
|
|
10
|
-
},
|
|
11
|
-
test: {
|
|
12
|
-
channels: [consoleLog],
|
|
13
|
-
},
|
|
14
|
-
production: {
|
|
15
|
-
channels: [consoleLog],
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export default logConfigurations;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { env } from "@mongez/dotenv";
|
|
2
|
-
import type { MailConfigurations } from "@warlock.js/core";
|
|
3
|
-
|
|
4
|
-
const mailConfigurations: MailConfigurations = {
|
|
5
|
-
host: env("MAIL_HOST"),
|
|
6
|
-
username: env("MAIL_USERNAME"),
|
|
7
|
-
password: env("MAIL_PASSWORD"),
|
|
8
|
-
port: env("MAIL_PORT"),
|
|
9
|
-
secure: env("MAIL_SECURE"),
|
|
10
|
-
from: {
|
|
11
|
-
name: env("MAIL_FROM_NAME"),
|
|
12
|
-
address: env("MAIL_FROM_ADDRESS"),
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export default mailConfigurations;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { UploadsConfigurations } from "@warlock.js/core";
|
|
2
|
-
|
|
3
|
-
const uploadsConfigurations: UploadsConfigurations = {
|
|
4
|
-
compress: true,
|
|
5
|
-
saveTo: (defaultPath: string) => {
|
|
6
|
-
// the path returned here should be relative to the storage directory.
|
|
7
|
-
// i.e don't use `storagePath()` function, just pass the relative path to the storage directory.
|
|
8
|
-
return defaultPath;
|
|
9
|
-
},
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export default uploadsConfigurations;
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { ValidationConfigurations } from "@warlock.js/core";
|
|
2
|
-
import {
|
|
3
|
-
ArrayOfRule,
|
|
4
|
-
ArrayRule,
|
|
5
|
-
BooleanRule,
|
|
6
|
-
ConfirmedRule,
|
|
7
|
-
DateRule,
|
|
8
|
-
EmailRule,
|
|
9
|
-
FileRule,
|
|
10
|
-
FloatRule,
|
|
11
|
-
ImageRule,
|
|
12
|
-
InRule,
|
|
13
|
-
IntRule,
|
|
14
|
-
LengthRule,
|
|
15
|
-
LocalizedRule,
|
|
16
|
-
MaxLengthRule,
|
|
17
|
-
MaxRule,
|
|
18
|
-
MinLengthRule,
|
|
19
|
-
MinRule,
|
|
20
|
-
NumberRule,
|
|
21
|
-
ObjectRule,
|
|
22
|
-
RequiredIfRule,
|
|
23
|
-
RequiredRule,
|
|
24
|
-
RequiredWithAllRule,
|
|
25
|
-
RequiredWithRule,
|
|
26
|
-
ScalarRule,
|
|
27
|
-
StringifyRule,
|
|
28
|
-
StringRule,
|
|
29
|
-
UniqueRule,
|
|
30
|
-
UploadableRule,
|
|
31
|
-
UrlRule,
|
|
32
|
-
} from "@warlock.js/core";
|
|
33
|
-
|
|
34
|
-
const validationConfigurations: ValidationConfigurations = {
|
|
35
|
-
stopOnFirstFailure: true,
|
|
36
|
-
returnErrorStrategy: "first",
|
|
37
|
-
responseStatus: 400,
|
|
38
|
-
rules: {
|
|
39
|
-
unique: UniqueRule,
|
|
40
|
-
requiredIf: RequiredIfRule,
|
|
41
|
-
required: RequiredRule,
|
|
42
|
-
localized: LocalizedRule,
|
|
43
|
-
string: StringRule,
|
|
44
|
-
object: ObjectRule,
|
|
45
|
-
confirmed: ConfirmedRule,
|
|
46
|
-
in: InRule,
|
|
47
|
-
min: MinRule,
|
|
48
|
-
max: MaxRule,
|
|
49
|
-
minLength: MinLengthRule,
|
|
50
|
-
length: LengthRule,
|
|
51
|
-
maxLength: MaxLengthRule,
|
|
52
|
-
email: EmailRule,
|
|
53
|
-
int: IntRule,
|
|
54
|
-
requiredWith: RequiredWithRule,
|
|
55
|
-
requiredWithAll: RequiredWithAllRule,
|
|
56
|
-
float: FloatRule,
|
|
57
|
-
number: NumberRule,
|
|
58
|
-
arrayOf: ArrayOfRule,
|
|
59
|
-
array: ArrayRule,
|
|
60
|
-
bool: BooleanRule,
|
|
61
|
-
boolean: BooleanRule,
|
|
62
|
-
url: UrlRule,
|
|
63
|
-
date: DateRule,
|
|
64
|
-
uploadable: UploadableRule,
|
|
65
|
-
scalar: ScalarRule,
|
|
66
|
-
stringify: StringifyRule,
|
|
67
|
-
file: FileRule,
|
|
68
|
-
image: ImageRule,
|
|
69
|
-
},
|
|
70
|
-
keys: {
|
|
71
|
-
response: "errors",
|
|
72
|
-
inputKey: "key",
|
|
73
|
-
inputError: "error",
|
|
74
|
-
inputErrors: "errors",
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
export default validationConfigurations;
|