create-warlock 4.0.174 → 4.1.2
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/cjs/index.cjs +780 -0
- package/cjs/index.cjs.map +1 -0
- package/cjs/paths-Bl9Wn7qV.cjs +247 -0
- package/cjs/paths-Bl9Wn7qV.cjs.map +1 -0
- package/cjs/project-builder-helpers-DGcgf60P.cjs +27 -0
- package/cjs/project-builder-helpers-DGcgf60P.cjs.map +1 -0
- package/esm/commands/create-new-app/get-app-path.mjs +17 -0
- package/esm/commands/create-new-app/get-app-path.mjs.map +1 -0
- package/esm/commands/create-new-app/index.mjs +152 -0
- package/esm/commands/create-new-app/index.mjs.map +1 -0
- package/esm/commands/create-new-app/types.d.mts +18 -0
- package/esm/commands/create-warlock-app/index.mjs +57 -0
- package/esm/commands/create-warlock-app/index.mjs.map +1 -0
- package/esm/features/database-drivers.mjs +47 -0
- package/esm/features/database-drivers.mjs.map +1 -0
- package/esm/features/features-map.mjs +157 -0
- package/esm/features/features-map.mjs.map +1 -0
- package/esm/helpers/app.mjs +157 -0
- package/esm/helpers/app.mjs.map +1 -0
- package/esm/helpers/exec.mjs +58 -0
- package/esm/helpers/exec.mjs.map +1 -0
- package/esm/helpers/package-manager.mjs +84 -0
- package/esm/helpers/package-manager.mjs.map +1 -0
- package/esm/helpers/paths.mjs +16 -0
- package/esm/helpers/paths.mjs.map +1 -0
- package/esm/helpers/project-builder-helpers.mjs +28 -0
- package/esm/helpers/project-builder-helpers.mjs.map +1 -0
- package/esm/index.d.mts +14 -0
- package/esm/index.mjs +83 -0
- package/esm/index.mjs.map +1 -0
- package/esm/ui/{banner.js → banner.mjs} +51 -67
- package/esm/ui/banner.mjs.map +1 -0
- package/esm/ui/spinners.mjs +23 -0
- package/esm/ui/spinners.mjs.map +1 -0
- package/llms-full.txt +121 -0
- package/llms.txt +9 -0
- package/package.json +36 -40
- package/skills/create-a-warlock-project/SKILL.md +111 -0
- package/templates/warlock/.prettierrc.json +10 -11
- package/templates/warlock/_.gitignore +0 -1
- package/templates/warlock/package.json +71 -66
- package/templates/warlock/src/app/auth/controllers/login.controller.ts +5 -6
- package/templates/warlock/src/app/auth/controllers/reset-password.controller.ts +5 -6
- package/templates/warlock/src/app/auth/models/otp/migrations/22-12-2025_10-30-20.otp-migration.ts +33 -43
- package/templates/warlock/src/app/auth/requests/guarded.request.ts +5 -1
- package/templates/warlock/src/app/posts/controllers/create-new-post.controller.ts +5 -6
- package/templates/warlock/src/app/posts/controllers/update-post.controller.ts +4 -5
- package/templates/warlock/src/app/posts/models/post/migrations/09-01-2026_02-07-51-post.migration.ts +21 -34
- package/templates/warlock/src/app/posts/models/post/post.model.ts +0 -2
- package/templates/warlock/src/app/posts/{validation → schema}/create-post.schema.ts +1 -1
- package/templates/warlock/src/app/posts/{validation → schema}/update-post.schema.ts +1 -1
- package/templates/warlock/src/app/shared/utils/locales.ts +34 -0
- package/templates/warlock/src/app/shared/utils/router.ts +1 -1
- package/templates/warlock/src/app/uploads/controllers/fetch-uploaded-file.controller.ts +1 -1
- package/templates/warlock/src/app/users/controllers/create-new-user.controller.ts +4 -4
- package/templates/warlock/src/app/users/controllers/list-users.controller.ts +3 -12
- package/templates/warlock/src/app/users/models/user/migrations/11-12-2025_23-58-03-user.migration.ts +13 -33
- package/templates/warlock/src/app/users/{validation → schema}/create-user.schema.ts +1 -1
- package/templates/warlock/storage/.gitignore +2 -0
- package/templates/warlock/yarn.lock +2332 -0
- package/cjs/commands/create-new-app/get-app-path.d.ts +0 -2
- package/cjs/commands/create-new-app/get-app-path.d.ts.map +0 -1
- package/cjs/commands/create-new-app/get-app-path.js +0 -8
- package/cjs/commands/create-new-app/get-app-path.js.map +0 -1
- package/cjs/commands/create-new-app/index.d.ts +0 -2
- package/cjs/commands/create-new-app/index.d.ts.map +0 -1
- package/cjs/commands/create-new-app/index.js +0 -96
- package/cjs/commands/create-new-app/index.js.map +0 -1
- package/cjs/commands/create-new-app/types.d.ts +0 -16
- package/cjs/commands/create-new-app/types.d.ts.map +0 -1
- package/cjs/commands/create-warlock-app/index.d.ts +0 -3
- package/cjs/commands/create-warlock-app/index.d.ts.map +0 -1
- package/cjs/commands/create-warlock-app/index.js +0 -55
- package/cjs/commands/create-warlock-app/index.js.map +0 -1
- package/cjs/features/database-drivers.d.ts +0 -31
- package/cjs/features/database-drivers.d.ts.map +0 -1
- package/cjs/features/database-drivers.js +0 -53
- package/cjs/features/database-drivers.js.map +0 -1
- package/cjs/features/features-map.d.ts +0 -35
- package/cjs/features/features-map.d.ts.map +0 -1
- package/cjs/features/features-map.js +0 -120
- package/cjs/features/features-map.js.map +0 -1
- package/cjs/helpers/app.d.ts +0 -71
- package/cjs/helpers/app.d.ts.map +0 -1
- package/cjs/helpers/app.js +0 -196
- package/cjs/helpers/app.js.map +0 -1
- package/cjs/helpers/exec.d.ts +0 -10
- package/cjs/helpers/exec.d.ts.map +0 -1
- package/cjs/helpers/exec.js +0 -69
- package/cjs/helpers/exec.js.map +0 -1
- package/cjs/helpers/package-manager.d.ts +0 -18
- package/cjs/helpers/package-manager.d.ts.map +0 -1
- package/cjs/helpers/package-manager.js +0 -104
- package/cjs/helpers/package-manager.js.map +0 -1
- package/cjs/helpers/paths.d.ts +0 -4
- package/cjs/helpers/paths.d.ts.map +0 -1
- package/cjs/helpers/paths.js +0 -8
- package/cjs/helpers/paths.js.map +0 -1
- package/cjs/helpers/project-builder-helpers.d.ts +0 -6
- package/cjs/helpers/project-builder-helpers.d.ts.map +0 -1
- package/cjs/helpers/project-builder-helpers.js +0 -11
- package/cjs/helpers/project-builder-helpers.js.map +0 -1
- package/cjs/index.d.ts +0 -2
- package/cjs/index.d.ts.map +0 -1
- package/cjs/index.js +0 -3
- package/cjs/index.js.map +0 -1
- package/cjs/ui/banner.d.ts +0 -29
- package/cjs/ui/banner.d.ts.map +0 -1
- package/cjs/ui/banner.js +0 -142
- package/cjs/ui/banner.js.map +0 -1
- package/cjs/ui/spinners.d.ts +0 -18
- package/cjs/ui/spinners.d.ts.map +0 -1
- package/cjs/ui/spinners.js +0 -17
- package/cjs/ui/spinners.js.map +0 -1
- package/create-app.js +0 -5
- package/esm/commands/create-new-app/get-app-path.d.ts +0 -2
- package/esm/commands/create-new-app/get-app-path.d.ts.map +0 -1
- package/esm/commands/create-new-app/get-app-path.js +0 -8
- package/esm/commands/create-new-app/get-app-path.js.map +0 -1
- package/esm/commands/create-new-app/index.d.ts +0 -2
- package/esm/commands/create-new-app/index.d.ts.map +0 -1
- package/esm/commands/create-new-app/index.js +0 -96
- package/esm/commands/create-new-app/index.js.map +0 -1
- package/esm/commands/create-new-app/types.d.ts +0 -16
- package/esm/commands/create-new-app/types.d.ts.map +0 -1
- package/esm/commands/create-warlock-app/index.d.ts +0 -3
- package/esm/commands/create-warlock-app/index.d.ts.map +0 -1
- package/esm/commands/create-warlock-app/index.js +0 -55
- package/esm/commands/create-warlock-app/index.js.map +0 -1
- package/esm/features/database-drivers.d.ts +0 -31
- package/esm/features/database-drivers.d.ts.map +0 -1
- package/esm/features/database-drivers.js +0 -53
- package/esm/features/database-drivers.js.map +0 -1
- package/esm/features/features-map.d.ts +0 -35
- package/esm/features/features-map.d.ts.map +0 -1
- package/esm/features/features-map.js +0 -120
- package/esm/features/features-map.js.map +0 -1
- package/esm/helpers/app.d.ts +0 -71
- package/esm/helpers/app.d.ts.map +0 -1
- package/esm/helpers/app.js +0 -196
- package/esm/helpers/app.js.map +0 -1
- package/esm/helpers/exec.d.ts +0 -10
- package/esm/helpers/exec.d.ts.map +0 -1
- package/esm/helpers/exec.js +0 -69
- package/esm/helpers/exec.js.map +0 -1
- package/esm/helpers/package-manager.d.ts +0 -18
- package/esm/helpers/package-manager.d.ts.map +0 -1
- package/esm/helpers/package-manager.js +0 -104
- package/esm/helpers/package-manager.js.map +0 -1
- package/esm/helpers/paths.d.ts +0 -4
- package/esm/helpers/paths.d.ts.map +0 -1
- package/esm/helpers/paths.js +0 -8
- package/esm/helpers/paths.js.map +0 -1
- package/esm/helpers/project-builder-helpers.d.ts +0 -6
- package/esm/helpers/project-builder-helpers.d.ts.map +0 -1
- package/esm/helpers/project-builder-helpers.js +0 -11
- package/esm/helpers/project-builder-helpers.js.map +0 -1
- package/esm/index.d.ts +0 -2
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -3
- package/esm/index.js.map +0 -1
- package/esm/ui/banner.d.ts +0 -29
- package/esm/ui/banner.d.ts.map +0 -1
- package/esm/ui/banner.js.map +0 -1
- package/esm/ui/spinners.d.ts +0 -18
- package/esm/ui/spinners.d.ts.map +0 -1
- package/esm/ui/spinners.js +0 -17
- package/esm/ui/spinners.js.map +0 -1
- package/templates/warlock/src/app/auth/requests/login.request.ts +0 -4
- package/templates/warlock/src/app/auth/requests/reset-password.request.ts +0 -4
- package/templates/warlock/src/app/posts/requests/create-post.request.ts +0 -4
- package/templates/warlock/src/app/posts/requests/update-post.request.ts +0 -4
- package/templates/warlock/src/app/users/requests/create-user.request.ts +0 -4
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type GuardedRequestHandler } from "app/auth/requests/guarded.request";
|
|
2
2
|
import { Post } from "../models/post/post.model";
|
|
3
|
-
import { type
|
|
4
|
-
import { createPostSchema } from "../validation/create-post.schema";
|
|
3
|
+
import { type CreatePostSchema, createPostSchema } from "../schema/create-post.schema";
|
|
5
4
|
|
|
6
|
-
export const createNewPostController:
|
|
7
|
-
request
|
|
5
|
+
export const createNewPostController: GuardedRequestHandler<CreatePostSchema> = async (
|
|
6
|
+
request,
|
|
8
7
|
response,
|
|
9
8
|
) => {
|
|
10
9
|
const post = await Post.create({
|
|
@@ -12,7 +11,7 @@ export const createNewPostController: RequestHandler = async (
|
|
|
12
11
|
authorId: request.user.id,
|
|
13
12
|
});
|
|
14
13
|
|
|
15
|
-
return response.
|
|
14
|
+
return response.successCreate({
|
|
16
15
|
post,
|
|
17
16
|
});
|
|
18
17
|
};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type GuardedRequestHandler } from "app/auth/requests/guarded.request";
|
|
2
2
|
import { Post } from "../models/post/post.model";
|
|
3
|
-
import { type
|
|
4
|
-
import { updatePostSchema } from "../validation/update-post.schema";
|
|
3
|
+
import { type UpdatePostSchema, updatePostSchema } from "../schema/update-post.schema";
|
|
5
4
|
|
|
6
|
-
export const updatePostController:
|
|
7
|
-
request
|
|
5
|
+
export const updatePostController: GuardedRequestHandler<UpdatePostSchema> = async (
|
|
6
|
+
request,
|
|
8
7
|
response,
|
|
9
8
|
) => {
|
|
10
9
|
const post = await Post.find(request.int("id"));
|
package/templates/warlock/src/app/posts/models/post/migrations/09-01-2026_02-07-51-post.migration.ts
CHANGED
|
@@ -1,36 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
bool,
|
|
3
|
+
integer,
|
|
4
|
+
json,
|
|
5
|
+
Migration,
|
|
6
|
+
string,
|
|
7
|
+
text,
|
|
8
|
+
timestamp,
|
|
9
|
+
} from "@warlock.js/cascade";
|
|
2
10
|
import { Post } from "../post.model";
|
|
3
11
|
|
|
4
|
-
export default
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.string("image", 500).nullable();
|
|
17
|
-
|
|
18
|
-
// Status
|
|
19
|
-
this.boolean("isActive").default(true);
|
|
20
|
-
|
|
21
|
-
this.int("authorId").notNullable();
|
|
22
|
-
|
|
23
|
-
// Embedded user references (JSONB for PostgreSQL)
|
|
24
|
-
this.json("createdBy").nullable();
|
|
25
|
-
this.json("updatedBy").nullable();
|
|
26
|
-
this.json("deletedBy").nullable();
|
|
27
|
-
|
|
28
|
-
// Timestamps
|
|
29
|
-
this.timestamps();
|
|
30
|
-
this.timestamp("deletedAt").nullable();
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public down() {
|
|
34
|
-
this.dropTableIfExists();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
12
|
+
export default Migration.create(Post, {
|
|
13
|
+
title: string(255),
|
|
14
|
+
description: text(),
|
|
15
|
+
slug: string(255).unique(),
|
|
16
|
+
image: string(500).nullable(),
|
|
17
|
+
isActive: bool(),
|
|
18
|
+
authorId: integer().notNullable(),
|
|
19
|
+
createdBy: json().nullable(),
|
|
20
|
+
updatedBy: json().nullable(),
|
|
21
|
+
deletedBy: json().nullable(),
|
|
22
|
+
deletedAt: timestamp().nullable(),
|
|
23
|
+
});
|
|
@@ -699,6 +699,40 @@ groupedTranslations("validation", {
|
|
|
699
699
|
},
|
|
700
700
|
});
|
|
701
701
|
|
|
702
|
+
// HTTP middleware error messages — surfaced by @warlock.js/core's built-in
|
|
703
|
+
// middleware (rateLimit, concurrencyLimit, maxBodySize, idempotency, maintenance,
|
|
704
|
+
// ipFilter). Keys are flat under the "http" group, mirroring the validation group.
|
|
705
|
+
groupedTranslations("http", {
|
|
706
|
+
rateLimitExceeded: {
|
|
707
|
+
en: "Too many requests. Please slow down and try again shortly.",
|
|
708
|
+
ar: "عدد كبير من الطلبات. يرجى التمهل وإعادة المحاولة قريباً.",
|
|
709
|
+
},
|
|
710
|
+
concurrencyLimitReached: {
|
|
711
|
+
en: "This endpoint is busy. Please retry in a moment.",
|
|
712
|
+
ar: "هذه النقطة الطرفية مشغولة. يرجى إعادة المحاولة بعد قليل.",
|
|
713
|
+
},
|
|
714
|
+
bodyTooLarge: {
|
|
715
|
+
en: "Request body is too large.",
|
|
716
|
+
ar: "حجم الطلب كبير جداً.",
|
|
717
|
+
},
|
|
718
|
+
idempotencyKeyInvalid: {
|
|
719
|
+
en: "Idempotency-Key header is malformed.",
|
|
720
|
+
ar: "ترويسة Idempotency-Key غير صالحة.",
|
|
721
|
+
},
|
|
722
|
+
idempotencyKeyConflict: {
|
|
723
|
+
en: "Idempotency-Key was reused with a different request body.",
|
|
724
|
+
ar: "تم إعادة استخدام Idempotency-Key مع طلب مختلف.",
|
|
725
|
+
},
|
|
726
|
+
ipForbidden: {
|
|
727
|
+
en: "Access denied for your IP address.",
|
|
728
|
+
ar: "تم رفض الوصول من عنوان IP الخاص بك.",
|
|
729
|
+
},
|
|
730
|
+
maintenance: {
|
|
731
|
+
en: "Service is temporarily unavailable for maintenance.",
|
|
732
|
+
ar: "الخدمة غير متاحة مؤقتاً للصيانة.",
|
|
733
|
+
},
|
|
734
|
+
});
|
|
735
|
+
|
|
702
736
|
// Attributes translations
|
|
703
737
|
groupedTranslations("attributes", {
|
|
704
738
|
email: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type GuardedRequestHandler } from "app/auth/requests/guarded.request";
|
|
2
2
|
import { User } from "../models/user";
|
|
3
|
-
import { createUserSchema } from "../
|
|
3
|
+
import { type CreateUserSchema, createUserSchema } from "../schema/create-user.schema";
|
|
4
4
|
|
|
5
|
-
export const createNewUserController:
|
|
5
|
+
export const createNewUserController: GuardedRequestHandler<CreateUserSchema> = async (
|
|
6
6
|
request,
|
|
7
7
|
response,
|
|
8
8
|
) => {
|
|
@@ -16,7 +16,7 @@ export const createNewUserController: RequestHandler = async (
|
|
|
16
16
|
imageMetadata: await file.metadata(),
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
-
return response.
|
|
19
|
+
return response.successCreate({
|
|
20
20
|
message: "File uploaded successfully",
|
|
21
21
|
user,
|
|
22
22
|
});
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type Request,
|
|
3
|
-
type RequestHandler,
|
|
4
|
-
type Response,
|
|
5
|
-
} from "@warlock.js/core";
|
|
1
|
+
import { type GuardedRequestHandler } from "app/auth/requests/guarded.request";
|
|
6
2
|
import { usersRepository } from "../repositories/users.repository";
|
|
7
3
|
|
|
8
|
-
export const listUsersController:
|
|
9
|
-
request
|
|
10
|
-
response: Response,
|
|
11
|
-
) => {
|
|
12
|
-
const users = await usersRepository.listCached({
|
|
13
|
-
...request.all(),
|
|
14
|
-
});
|
|
4
|
+
export const listUsersController: GuardedRequestHandler = async (request, response) => {
|
|
5
|
+
const users = await usersRepository.listCached(request.all());
|
|
15
6
|
|
|
16
7
|
return response.success({
|
|
17
8
|
users,
|
package/templates/warlock/src/app/users/models/user/migrations/11-12-2025_23-58-03-user.migration.ts
CHANGED
|
@@ -1,35 +1,15 @@
|
|
|
1
|
-
import { Migration } from "@warlock.js/cascade";
|
|
1
|
+
import { bool, json, Migration, string, timestamp } from "@warlock.js/cascade";
|
|
2
2
|
import { User } from "../user.model";
|
|
3
3
|
|
|
4
|
-
export default
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.string("image", 500).nullable();
|
|
17
|
-
this.json("imageMetadata").nullable();
|
|
18
|
-
|
|
19
|
-
// Status
|
|
20
|
-
this.boolean("isActive").default(true);
|
|
21
|
-
|
|
22
|
-
// Embedded user references (JSONB for PostgreSQL)
|
|
23
|
-
this.json("createdBy").nullable();
|
|
24
|
-
this.json("updatedBy").nullable();
|
|
25
|
-
this.json("deletedBy").nullable();
|
|
26
|
-
|
|
27
|
-
// Timestamps (auto-managed by the model)
|
|
28
|
-
this.timestamps(); // Creates createdAt and updatedAt
|
|
29
|
-
this.timestamp("deletedAt").nullable(); // Soft deletes
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public down() {
|
|
33
|
-
this.dropTableIfExists();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
4
|
+
export default Migration.create(User, {
|
|
5
|
+
name: string(255),
|
|
6
|
+
email: string(255).unique(),
|
|
7
|
+
password: string(255),
|
|
8
|
+
image: string(500).nullable(),
|
|
9
|
+
imageMetadata: json().nullable(),
|
|
10
|
+
isActive: bool(),
|
|
11
|
+
createdBy: json().nullable(),
|
|
12
|
+
updatedBy: json().nullable(),
|
|
13
|
+
deletedBy: json().nullable(),
|
|
14
|
+
deletedAt: timestamp().nullable(),
|
|
15
|
+
});
|