lapeh 2.4.8 → 2.4.9
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/bin/index.js +54 -5
- package/dist/lib/bootstrap.d.ts +1 -0
- package/dist/lib/bootstrap.d.ts.map +1 -1
- package/dist/lib/bootstrap.js +39 -12
- package/dist/src/controllers/authController.js +1 -1
- package/doc/en/CHANGELOG.md +15 -0
- package/doc/id/CHANGELOG.md +15 -0
- package/lib/bootstrap.ts +53 -21
- package/package.json +7 -1
- package/src/controllers/authController.ts +1 -1
- package/storage/logs/.0337f5062fe676994d1dc340156e089444e3d6e0-audit.json +5 -0
- package/storage/logs/lapeh-2025-12-28.log +725 -0
- package/tsconfig.json +2 -1
package/bin/index.js
CHANGED
|
@@ -231,7 +231,7 @@ function runBuild() {
|
|
|
231
231
|
|
|
232
232
|
// Compile TS
|
|
233
233
|
try {
|
|
234
|
-
execSync('npx tsc && npx tsc-alias', { stdio: 'inherit' });
|
|
234
|
+
execSync('npx tsc -p tsconfig.build.json && npx tsc-alias -p tsconfig.build.json', { stdio: 'inherit' });
|
|
235
235
|
} catch (e) {
|
|
236
236
|
console.error('❌ Build failed.');
|
|
237
237
|
process.exit(1);
|
|
@@ -255,7 +255,7 @@ async function upgradeProject() {
|
|
|
255
255
|
|
|
256
256
|
// Files/Folders to overwrite/copy
|
|
257
257
|
const filesToSync = [
|
|
258
|
-
'bin', //
|
|
258
|
+
// 'bin', // Removed: CLI script is managed by package
|
|
259
259
|
'lib', // Ensure core framework files are updated
|
|
260
260
|
'scripts',
|
|
261
261
|
'docker-compose.yml',
|
|
@@ -268,7 +268,47 @@ async function upgradeProject() {
|
|
|
268
268
|
'src/prisma.ts', // Core framework file
|
|
269
269
|
];
|
|
270
270
|
|
|
271
|
-
// Helper to copy
|
|
271
|
+
// Helper to sync directory (copy new/updated, delete removed)
|
|
272
|
+
function syncDirectory(src, dest) {
|
|
273
|
+
if (!fs.existsSync(src)) return;
|
|
274
|
+
|
|
275
|
+
// Ensure dest exists
|
|
276
|
+
if (!fs.existsSync(dest)) {
|
|
277
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// 1. Copy/Update files from src to dest
|
|
281
|
+
const srcEntries = fs.readdirSync(src, { withFileTypes: true });
|
|
282
|
+
const srcEntryNames = new Set();
|
|
283
|
+
|
|
284
|
+
for (const entry of srcEntries) {
|
|
285
|
+
srcEntryNames.add(entry.name);
|
|
286
|
+
const srcPath = path.join(src, entry.name);
|
|
287
|
+
const destPath = path.join(dest, entry.name);
|
|
288
|
+
|
|
289
|
+
if (entry.isDirectory()) {
|
|
290
|
+
syncDirectory(srcPath, destPath);
|
|
291
|
+
} else {
|
|
292
|
+
fs.copyFileSync(srcPath, destPath);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// 2. Delete files in dest that are not in src (only if we are syncing a folder)
|
|
297
|
+
const destEntries = fs.readdirSync(dest, { withFileTypes: true });
|
|
298
|
+
for (const entry of destEntries) {
|
|
299
|
+
if (!srcEntryNames.has(entry.name)) {
|
|
300
|
+
const destPath = path.join(dest, entry.name);
|
|
301
|
+
console.log(`🗑️ Removing obsolete file/directory: ${destPath}`);
|
|
302
|
+
if (entry.isDirectory()) {
|
|
303
|
+
fs.rmSync(destPath, { recursive: true, force: true });
|
|
304
|
+
} else {
|
|
305
|
+
fs.unlinkSync(destPath);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Helper to copy recursive (legacy, kept for other uses if any, but replaced by syncDirectory for upgrade)
|
|
272
312
|
function copyRecursive(src, dest) {
|
|
273
313
|
if (!fs.existsSync(src)) return;
|
|
274
314
|
const stats = fs.statSync(src);
|
|
@@ -309,8 +349,17 @@ async function upgradeProject() {
|
|
|
309
349
|
const destPath = path.join(currentDir, item);
|
|
310
350
|
|
|
311
351
|
if (fs.existsSync(srcPath)) {
|
|
312
|
-
|
|
313
|
-
|
|
352
|
+
const stats = fs.statSync(srcPath);
|
|
353
|
+
if (stats.isDirectory()) {
|
|
354
|
+
console.log(`🔄 Syncing directory ${item}...`);
|
|
355
|
+
syncDirectory(srcPath, destPath);
|
|
356
|
+
} else {
|
|
357
|
+
console.log(`🔄 Updating file ${item}...`);
|
|
358
|
+
// Ensure dir exists
|
|
359
|
+
const destDir = path.dirname(destPath);
|
|
360
|
+
if (!fs.existsSync(destDir)) fs.mkdirSync(destDir, { recursive: true });
|
|
361
|
+
fs.copyFileSync(srcPath, destPath);
|
|
362
|
+
}
|
|
314
363
|
}
|
|
315
364
|
}
|
|
316
365
|
|
package/dist/lib/bootstrap.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../lib/bootstrap.ts"],"names":[],"mappings":"AAmBA,wBAAsB,SAAS,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../lib/bootstrap.ts"],"names":[],"mappings":"AAmBA,wBAAsB,SAAS,yDAyG9B;AAED,wBAAsB,SAAS,kBAwD9B"}
|
package/dist/lib/bootstrap.js
CHANGED
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createApp = createApp;
|
|
6
7
|
exports.bootstrap = bootstrap;
|
|
7
8
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
9
|
dotenv_1.default.config();
|
|
@@ -21,18 +22,11 @@ const error_1 = require("./middleware/error");
|
|
|
21
22
|
const rateLimit_1 = require("./middleware/rateLimit");
|
|
22
23
|
const requestLogger_1 = require("./middleware/requestLogger");
|
|
23
24
|
const response_1 = require("./utils/response");
|
|
24
|
-
async function
|
|
25
|
+
async function createApp() {
|
|
25
26
|
// Register aliases for production runtime
|
|
26
27
|
// Since user code (compiled JS) uses require('@lapeh/...')
|
|
27
28
|
// We map '@lapeh' to the directory containing this file (lib/ or dist/lib/)
|
|
28
29
|
module_alias_1.default.addAlias("@lapeh", __dirname);
|
|
29
|
-
// Validasi Environment Variables
|
|
30
|
-
const requiredEnvs = ["DATABASE_URL", "JWT_SECRET"];
|
|
31
|
-
const missingEnvs = requiredEnvs.filter((key) => !process.env[key]);
|
|
32
|
-
if (missingEnvs.length > 0) {
|
|
33
|
-
console.error(`❌ Missing required environment variables: ${missingEnvs.join(", ")}`);
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
30
|
const app = (0, express_1.default)();
|
|
37
31
|
app.disable("x-powered-by");
|
|
38
32
|
app.use((0, compression_1.default)());
|
|
@@ -76,15 +70,48 @@ async function bootstrap() {
|
|
|
76
70
|
? path_1.default.join(process.cwd(), "dist", "src", "routes")
|
|
77
71
|
: path_1.default.join(process.cwd(), "src", "routes");
|
|
78
72
|
// Gunakan require agar sinkron dan mudah dicatch
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
// Check if file exists before requiring to avoid crash in tests/clean env
|
|
74
|
+
try {
|
|
75
|
+
// In test environment, we might need to point to src/routes explicitly if not compiled
|
|
76
|
+
// const routesPath = process.env.NODE_ENV === 'test'
|
|
77
|
+
// ? path.join(process.cwd(), "src", "routes", "index.ts")
|
|
78
|
+
// : userRoutesPath;
|
|
79
|
+
// Note: For TS files in jest, we rely on ts-jest handling 'require' if it points to .ts or we need to use 'import'
|
|
80
|
+
// But 'require' in jest with ts-jest should work if configured.
|
|
81
|
+
// However, require(path) with .ts extension might be tricky.
|
|
82
|
+
// Let's stick to userRoutesPath but maybe adjust for test env.
|
|
83
|
+
// Check if we are in test environment and using ts-jest
|
|
84
|
+
// If so, we might need to import the TS file directly via relative path if alias is not working for require
|
|
85
|
+
const { apiRouter } = require(userRoutesPath);
|
|
86
|
+
app.use("/api", apiRouter);
|
|
87
|
+
console.log(`✅ User routes loaded successfully from ${isProduction ? "dist/" : ""}src/routes`);
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
// If it's just missing module, maybe we are in test mode or fresh install
|
|
91
|
+
if (process.env.NODE_ENV !== "test") {
|
|
92
|
+
console.warn(`⚠️ Could not load user routes from ${userRoutesPath}. (This is expected during initial setup or if src/routes is missing)`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// In test mode, we really want to know if it failed to load
|
|
96
|
+
console.error(`Error loading routes in test mode from ${userRoutesPath}:`, e);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
82
99
|
}
|
|
83
100
|
catch (error) {
|
|
84
|
-
console.warn("⚠️ Could not load user routes. Make sure you export 'apiRouter'.");
|
|
85
101
|
console.error(error);
|
|
86
102
|
}
|
|
87
103
|
app.use(error_1.errorHandler);
|
|
104
|
+
return app;
|
|
105
|
+
}
|
|
106
|
+
async function bootstrap() {
|
|
107
|
+
// Validasi Environment Variables
|
|
108
|
+
const requiredEnvs = ["DATABASE_URL", "JWT_SECRET"];
|
|
109
|
+
const missingEnvs = requiredEnvs.filter((key) => !process.env[key]);
|
|
110
|
+
if (missingEnvs.length > 0) {
|
|
111
|
+
console.error(`❌ Missing required environment variables: ${missingEnvs.join(", ")}`);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
const app = await createApp();
|
|
88
115
|
const port = process.env.PORT ? Number(process.env.PORT) : 4000;
|
|
89
116
|
const server = http_1.default.createServer(app);
|
|
90
117
|
(0, realtime_1.initRealtime)(server);
|
|
@@ -107,7 +107,7 @@ async function register(req, res) {
|
|
|
107
107
|
},
|
|
108
108
|
});
|
|
109
109
|
}
|
|
110
|
-
(0, response_1.sendFastSuccess)(res,
|
|
110
|
+
(0, response_1.sendFastSuccess)(res, 201, registerSerializer, {
|
|
111
111
|
status: "success",
|
|
112
112
|
message: "Registration successful",
|
|
113
113
|
data: {
|
package/doc/en/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
File ini mencatat semua perubahan, pembaruan, dan perbaikan yang dilakukan pada framework Lapeh, diurutkan berdasarkan tanggal.
|
|
4
4
|
|
|
5
|
+
## [2025-12-28] - Sunday, December 28, 2025 - Upgrade & Testing Improvements (v2.4.9)
|
|
6
|
+
|
|
7
|
+
### 🚀 Features & Fixes
|
|
8
|
+
|
|
9
|
+
- **Smart Upgrade CLI**:
|
|
10
|
+
|
|
11
|
+
- Updated `npx lapeh upgrade` to perform full synchronization (mirroring).
|
|
12
|
+
- Files removed in the latest framework version are now automatically removed from user projects, keeping them clean.
|
|
13
|
+
- Removed `bin` folder from synchronization as it is managed by the package.
|
|
14
|
+
|
|
15
|
+
- **Comprehensive Testing Support**:
|
|
16
|
+
- Updated `tsconfig.json` to support `@lapeh/*` path aliases within the `tests` folder.
|
|
17
|
+
- The `tests` folder is now excluded from production builds (via `tsconfig.build.json`), resulting in a cleaner `dist/` folder.
|
|
18
|
+
- Jest documentation and configuration have been adjusted for seamless integration.
|
|
19
|
+
|
|
5
20
|
## [2025-12-28] - Minggu, 28 Desember 2025 - Perbaikan Kompatibilitas & Automasi
|
|
6
21
|
|
|
7
22
|
### 🛠️ Perbaikan Bug (Bug Fixes)
|
package/doc/id/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
File ini mencatat semua perubahan, pembaruan, dan perbaikan yang dilakukan pada framework Lapeh, diurutkan berdasarkan tanggal.
|
|
4
4
|
|
|
5
|
+
## [2025-12-28] - Minggu, 28 Desember 2025 - Perbaikan Upgrade & Testing (v2.4.9)
|
|
6
|
+
|
|
7
|
+
### 🚀 Fitur & Perbaikan
|
|
8
|
+
|
|
9
|
+
- **Smart Upgrade CLI**:
|
|
10
|
+
|
|
11
|
+
- Memperbarui perintah `npx lapeh upgrade` agar melakukan sinkronisasi penuh (mirroring).
|
|
12
|
+
- File yang dihapus di versi terbaru framework sekarang akan otomatis dihapus juga dari proyek pengguna, menjaga proyek tetap bersih.
|
|
13
|
+
- Menghapus folder `bin` dari proses sinkronisasi ke proyek pengguna karena folder tersebut dikelola oleh paket.
|
|
14
|
+
|
|
15
|
+
- **Dukungan Testing Komprehensif**:
|
|
16
|
+
- Konfigurasi `tsconfig.json` diperbarui untuk mendukung path alias `@lapeh/*` di dalam folder `tests`.
|
|
17
|
+
- Folder `tests` sekarang dikecualikan dari proses build produksi (via `tsconfig.build.json`), menghasilkan folder `dist/` yang lebih bersih.
|
|
18
|
+
- Dokumentasi dan konfigurasi Jest telah disesuaikan untuk integrasi yang mulus.
|
|
19
|
+
|
|
5
20
|
## [2025-12-28] - Minggu, 28 Desember 2025 - Perbaikan Kompatibilitas & Automasi
|
|
6
21
|
|
|
7
22
|
### 🛠️ Perbaikan Bug (Bug Fixes)
|
package/lib/bootstrap.ts
CHANGED
|
@@ -17,22 +17,12 @@ import { apiLimiter } from "./middleware/rateLimit";
|
|
|
17
17
|
import { requestLogger } from "./middleware/requestLogger";
|
|
18
18
|
import { sendSuccess } from "./utils/response";
|
|
19
19
|
|
|
20
|
-
export async function
|
|
20
|
+
export async function createApp() {
|
|
21
21
|
// Register aliases for production runtime
|
|
22
22
|
// Since user code (compiled JS) uses require('@lapeh/...')
|
|
23
23
|
// We map '@lapeh' to the directory containing this file (lib/ or dist/lib/)
|
|
24
24
|
moduleAlias.addAlias("@lapeh", __dirname);
|
|
25
25
|
|
|
26
|
-
// Validasi Environment Variables
|
|
27
|
-
const requiredEnvs = ["DATABASE_URL", "JWT_SECRET"];
|
|
28
|
-
const missingEnvs = requiredEnvs.filter((key) => !process.env[key]);
|
|
29
|
-
if (missingEnvs.length > 0) {
|
|
30
|
-
console.error(
|
|
31
|
-
`❌ Missing required environment variables: ${missingEnvs.join(", ")}`
|
|
32
|
-
);
|
|
33
|
-
process.exit(1);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
26
|
const app = express();
|
|
37
27
|
|
|
38
28
|
app.disable("x-powered-by");
|
|
@@ -88,22 +78,64 @@ export async function bootstrap() {
|
|
|
88
78
|
: path.join(process.cwd(), "src", "routes");
|
|
89
79
|
|
|
90
80
|
// Gunakan require agar sinkron dan mudah dicatch
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
81
|
+
// Check if file exists before requiring to avoid crash in tests/clean env
|
|
82
|
+
try {
|
|
83
|
+
// In test environment, we might need to point to src/routes explicitly if not compiled
|
|
84
|
+
// const routesPath = process.env.NODE_ENV === 'test'
|
|
85
|
+
// ? path.join(process.cwd(), "src", "routes", "index.ts")
|
|
86
|
+
// : userRoutesPath;
|
|
87
|
+
|
|
88
|
+
// Note: For TS files in jest, we rely on ts-jest handling 'require' if it points to .ts or we need to use 'import'
|
|
89
|
+
// But 'require' in jest with ts-jest should work if configured.
|
|
90
|
+
|
|
91
|
+
// However, require(path) with .ts extension might be tricky.
|
|
92
|
+
// Let's stick to userRoutesPath but maybe adjust for test env.
|
|
93
|
+
|
|
94
|
+
// Check if we are in test environment and using ts-jest
|
|
95
|
+
// If so, we might need to import the TS file directly via relative path if alias is not working for require
|
|
96
|
+
|
|
97
|
+
const { apiRouter } = require(userRoutesPath);
|
|
98
|
+
app.use("/api", apiRouter);
|
|
99
|
+
console.log(
|
|
100
|
+
`✅ User routes loaded successfully from ${
|
|
101
|
+
isProduction ? "dist/" : ""
|
|
102
|
+
}src/routes`
|
|
103
|
+
);
|
|
104
|
+
} catch (e) {
|
|
105
|
+
// If it's just missing module, maybe we are in test mode or fresh install
|
|
106
|
+
if (process.env.NODE_ENV !== "test") {
|
|
107
|
+
console.warn(
|
|
108
|
+
`⚠️ Could not load user routes from ${userRoutesPath}. (This is expected during initial setup or if src/routes is missing)`
|
|
109
|
+
);
|
|
110
|
+
} else {
|
|
111
|
+
// In test mode, we really want to know if it failed to load
|
|
112
|
+
console.error(
|
|
113
|
+
`Error loading routes in test mode from ${userRoutesPath}:`,
|
|
114
|
+
e
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
98
118
|
} catch (error) {
|
|
99
|
-
console.warn(
|
|
100
|
-
"⚠️ Could not load user routes. Make sure you export 'apiRouter'."
|
|
101
|
-
);
|
|
102
119
|
console.error(error);
|
|
103
120
|
}
|
|
104
121
|
|
|
105
122
|
app.use(errorHandler);
|
|
106
123
|
|
|
124
|
+
return app;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export async function bootstrap() {
|
|
128
|
+
// Validasi Environment Variables
|
|
129
|
+
const requiredEnvs = ["DATABASE_URL", "JWT_SECRET"];
|
|
130
|
+
const missingEnvs = requiredEnvs.filter((key) => !process.env[key]);
|
|
131
|
+
if (missingEnvs.length > 0) {
|
|
132
|
+
console.error(
|
|
133
|
+
`❌ Missing required environment variables: ${missingEnvs.join(", ")}`
|
|
134
|
+
);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const app = await createApp();
|
|
107
139
|
const port = process.env.PORT ? Number(process.env.PORT) : 4000;
|
|
108
140
|
const server = http.createServer(app);
|
|
109
141
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lapeh",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.9",
|
|
4
4
|
"description": "Framework API Express yang siap pakai (Standardized)",
|
|
5
5
|
"main": "dist/lib/bootstrap.js",
|
|
6
6
|
"bin": {
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"typecheck": "tsc --noEmit",
|
|
48
48
|
"lint": "eslint .",
|
|
49
49
|
"lint:fix": "eslint . --fix",
|
|
50
|
+
"test": "jest",
|
|
50
51
|
"prisma:generate": "node scripts/compile-schema.js && prisma generate",
|
|
51
52
|
"prisma:migrate": "node scripts/compile-schema.js && prisma migrate dev",
|
|
52
53
|
"prisma:deploy": "node scripts/compile-schema.js && prisma migrate deploy",
|
|
@@ -123,9 +124,14 @@
|
|
|
123
124
|
},
|
|
124
125
|
"devDependencies": {
|
|
125
126
|
"@eslint/js": "^9.39.2",
|
|
127
|
+
"@types/jest": "^30.0.0",
|
|
126
128
|
"@types/module-alias": "^2.0.4",
|
|
129
|
+
"@types/supertest": "^6.0.3",
|
|
127
130
|
"eslint": "^9.39.2",
|
|
128
131
|
"globals": "^16.5.0",
|
|
132
|
+
"jest": "^30.2.0",
|
|
133
|
+
"supertest": "^7.1.4",
|
|
134
|
+
"ts-jest": "^29.4.6",
|
|
129
135
|
"typescript-eslint": "^8.50.1"
|
|
130
136
|
}
|
|
131
137
|
}
|
|
@@ -122,7 +122,7 @@ export async function register(req: Request, res: Response) {
|
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
sendFastSuccess(res,
|
|
125
|
+
sendFastSuccess(res, 201, registerSerializer, {
|
|
126
126
|
status: "success",
|
|
127
127
|
message: "Registration successful",
|
|
128
128
|
data: {
|
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
"date": 1766768402694,
|
|
15
15
|
"name": "E:\\PROJECT\\ANY\\2026\\lapeh\\storage\\logs\\lapeh-2025-12-27.log",
|
|
16
16
|
"hash": "7b83a98dcb0ded21998f90e8c58a724cbb2534104205f97e15b409cfa080e982"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"date": 1766895868212,
|
|
20
|
+
"name": "E:\\PROJECT\\ANY\\2026\\lapeh\\storage\\logs\\lapeh-2025-12-28.log",
|
|
21
|
+
"hash": "43121130a6745af0345b445cc3497d27a18a857e350d002848a27b0c71a577ae"
|
|
17
22
|
}
|
|
18
23
|
],
|
|
19
24
|
"hashType": "sha256"
|
|
@@ -0,0 +1,725 @@
|
|
|
1
|
+
[2025-12-28 11:24:28] WARN: Bad Request
|
|
2
|
+
Errors: {
|
|
3
|
+
"field": "Required"
|
|
4
|
+
}
|
|
5
|
+
Meta: {"statusCode":400}
|
|
6
|
+
[2025-12-28 11:25:08] WARN: Bad Request
|
|
7
|
+
Errors: {
|
|
8
|
+
"field": "Required"
|
|
9
|
+
}
|
|
10
|
+
Meta: {"statusCode":400}
|
|
11
|
+
[2025-12-28 11:26:08] WARN: Bad Request
|
|
12
|
+
Errors: {
|
|
13
|
+
"field": "Required"
|
|
14
|
+
}
|
|
15
|
+
Meta: {"statusCode":400}
|
|
16
|
+
[2025-12-28 11:26:12] INFO: GET / 200 - 8ms - ::ffff:127.0.0.1
|
|
17
|
+
[2025-12-28 11:26:12] WARN: GET /unknown 404 - 1ms - ::ffff:127.0.0.1
|
|
18
|
+
[2025-12-28 11:28:26] WARN: Bad Request
|
|
19
|
+
Errors: {
|
|
20
|
+
"field": "Required"
|
|
21
|
+
}
|
|
22
|
+
Meta: {"statusCode":400}
|
|
23
|
+
[2025-12-28 11:28:28] INFO: GET / 200 - 8ms - ::ffff:127.0.0.1
|
|
24
|
+
[2025-12-28 11:28:28] WARN: GET /unknown 404 - 2ms - ::ffff:127.0.0.1
|
|
25
|
+
[2025-12-28 11:29:18] WARN: Bad Request
|
|
26
|
+
Errors: {
|
|
27
|
+
"field": "Required"
|
|
28
|
+
}
|
|
29
|
+
Meta: {"statusCode":400}
|
|
30
|
+
[2025-12-28 11:29:19] INFO: GET / 200 - 10ms - ::ffff:127.0.0.1
|
|
31
|
+
[2025-12-28 11:29:19] WARN: GET /unknown 404 - 1ms - ::ffff:127.0.0.1
|
|
32
|
+
[2025-12-28 11:29:20] WARN: POST /api/auth/register 404 - 407ms - ::ffff:127.0.0.1
|
|
33
|
+
[2025-12-28 11:29:20] WARN: POST /api/auth/login 404 - 1ms - ::ffff:127.0.0.1
|
|
34
|
+
[2025-12-28 11:31:42] WARN: Bad Request
|
|
35
|
+
Errors: {
|
|
36
|
+
"field": "Required"
|
|
37
|
+
}
|
|
38
|
+
Meta: {"statusCode":400}
|
|
39
|
+
[2025-12-28 11:31:44] INFO: GET / 200 - 10ms - ::ffff:127.0.0.1
|
|
40
|
+
[2025-12-28 11:31:44] WARN: GET /unknown 404 - 2ms - ::ffff:127.0.0.1
|
|
41
|
+
[2025-12-28 11:31:44] WARN: POST /api/auth/register 404 - 17ms - ::ffff:127.0.0.1
|
|
42
|
+
[2025-12-28 11:31:44] WARN: POST /api/auth/register 404 - 1ms - ::ffff:127.0.0.1
|
|
43
|
+
[2025-12-28 11:31:44] WARN: POST /api/auth/login 404 - 1ms - ::ffff:127.0.0.1
|
|
44
|
+
[2025-12-28 11:32:10] WARN: Bad Request
|
|
45
|
+
Errors: {
|
|
46
|
+
"field": "Required"
|
|
47
|
+
}
|
|
48
|
+
Meta: {"statusCode":400}
|
|
49
|
+
[2025-12-28 11:32:32] WARN: Bad Request
|
|
50
|
+
Errors: {
|
|
51
|
+
"field": "Required"
|
|
52
|
+
}
|
|
53
|
+
Meta: {"statusCode":400}
|
|
54
|
+
[2025-12-28 11:32:33] INFO: GET / 200 - 8ms - ::ffff:127.0.0.1
|
|
55
|
+
[2025-12-28 11:32:33] WARN: GET /unknown 404 - 2ms - ::ffff:127.0.0.1
|
|
56
|
+
[2025-12-28 11:32:33] WARN: POST /api/auth/register 404 - 17ms - ::ffff:127.0.0.1
|
|
57
|
+
[2025-12-28 11:32:33] WARN: POST /api/auth/register 404 - 1ms - ::ffff:127.0.0.1
|
|
58
|
+
[2025-12-28 11:32:34] WARN: POST /api/auth/login 404 - 1ms - ::ffff:127.0.0.1
|
|
59
|
+
[2025-12-28 11:32:53] WARN: Bad Request
|
|
60
|
+
Errors: {
|
|
61
|
+
"field": "Required"
|
|
62
|
+
}
|
|
63
|
+
Meta: {"statusCode":400}
|
|
64
|
+
[2025-12-28 11:32:54] INFO: GET / 200 - 8ms - ::ffff:127.0.0.1
|
|
65
|
+
[2025-12-28 11:32:54] WARN: GET /unknown 404 - 1ms - ::ffff:127.0.0.1
|
|
66
|
+
[2025-12-28 11:32:55] WARN: Validation error
|
|
67
|
+
Errors: {
|
|
68
|
+
"confirmPassword": [
|
|
69
|
+
"Required"
|
|
70
|
+
],
|
|
71
|
+
"email": [
|
|
72
|
+
"The email has already been taken."
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
Meta: {"statusCode":422}
|
|
76
|
+
[2025-12-28 11:32:55] WARN: POST /api/auth/register 422 - 472ms - ::ffff:127.0.0.1
|
|
77
|
+
[2025-12-28 11:32:55] WARN: Validation error
|
|
78
|
+
Errors: {
|
|
79
|
+
"confirmPassword": [
|
|
80
|
+
"Required"
|
|
81
|
+
],
|
|
82
|
+
"email": [
|
|
83
|
+
"The email has already been taken."
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
Meta: {"statusCode":422}
|
|
87
|
+
[2025-12-28 11:32:55] WARN: POST /api/auth/register 422 - 64ms - ::ffff:127.0.0.1
|
|
88
|
+
[2025-12-28 11:32:55] ERROR:
|
|
89
|
+
Invalid `prisma.users.findUnique()` invocation in
|
|
90
|
+
E:\PROJECT\ANY\2026\lapeh\src\controllers\authController.ts:148:35
|
|
91
|
+
|
|
92
|
+
145 return;
|
|
93
|
+
146 }
|
|
94
|
+
147 const { email, password } = await validator.validated();
|
|
95
|
+
→ 148 const user = await prisma.users.findUnique(
|
|
96
|
+
Database `lapeh_test` does not exist on the database server
|
|
97
|
+
PrismaClientKnownRequestError:
|
|
98
|
+
Invalid `prisma.users.findUnique()` invocation in
|
|
99
|
+
E:\PROJECT\ANY\2026\lapeh\src\controllers\authController.ts:148:35
|
|
100
|
+
|
|
101
|
+
145 return;
|
|
102
|
+
146 }
|
|
103
|
+
147 const { email, password } = await validator.validated();
|
|
104
|
+
→ 148 const user = await prisma.users.findUnique(
|
|
105
|
+
Database `lapeh_test` does not exist on the database server
|
|
106
|
+
at qr.handleRequestError (E:\PROJECT\ANY\2026\lapeh\node_modules\@prisma\client\src\runtime\RequestHandler.ts:228:13)
|
|
107
|
+
at qr.handleAndLogRequestError (E:\PROJECT\ANY\2026\lapeh\node_modules\@prisma\client\src\runtime\RequestHandler.ts:174:12)
|
|
108
|
+
at qr.request (E:\PROJECT\ANY\2026\lapeh\node_modules\@prisma\client\src\runtime\RequestHandler.ts:143:12)
|
|
109
|
+
at processTicksAndRejections (node:internal/process/task_queues:105:5)
|
|
110
|
+
at a (E:\PROJECT\ANY\2026\lapeh\node_modules\@prisma\client\src\runtime\getPrismaClient.ts:805:24)
|
|
111
|
+
at login (E:\PROJECT\ANY\2026\lapeh\src\controllers\authController.ts:148:16)
|
|
112
|
+
[2025-12-28 11:32:55] ERROR:
|
|
113
|
+
Invalid `prisma.users.findUnique()` invocation in
|
|
114
|
+
E:\PROJECT\ANY\2026\lapeh\src\controllers\authController.ts:148:35
|
|
115
|
+
|
|
116
|
+
145 return;
|
|
117
|
+
146 }
|
|
118
|
+
147 const { email, password } = await validator.validated();
|
|
119
|
+
→ 148 const user = await prisma.users.findUnique(
|
|
120
|
+
Database `lapeh_test` does not exist on the database server
|
|
121
|
+
Meta: {"statusCode":500}
|
|
122
|
+
[2025-12-28 11:32:55] WARN: POST /api/auth/login 500 - 61ms - ::ffff:127.0.0.1
|
|
123
|
+
[2025-12-28 11:34:44] WARN: Bad Request
|
|
124
|
+
Errors: {
|
|
125
|
+
"field": "Required"
|
|
126
|
+
}
|
|
127
|
+
Meta: {"statusCode":400}
|
|
128
|
+
[2025-12-28 11:34:47] INFO: GET / 200 - 13ms - ::ffff:127.0.0.1
|
|
129
|
+
[2025-12-28 11:34:47] WARN: GET /unknown 404 - 2ms - ::ffff:127.0.0.1
|
|
130
|
+
[2025-12-28 11:34:47] WARN: Validation error
|
|
131
|
+
Errors: {
|
|
132
|
+
"confirmPassword": [
|
|
133
|
+
"Required"
|
|
134
|
+
],
|
|
135
|
+
"email": [
|
|
136
|
+
"The email has already been taken."
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
Meta: {"statusCode":422}
|
|
140
|
+
[2025-12-28 11:34:47] WARN: POST /api/auth/register 422 - 247ms - ::ffff:127.0.0.1
|
|
141
|
+
[2025-12-28 11:34:47] WARN: Validation error
|
|
142
|
+
Errors: {
|
|
143
|
+
"confirmPassword": [
|
|
144
|
+
"Required"
|
|
145
|
+
],
|
|
146
|
+
"email": [
|
|
147
|
+
"The email has already been taken."
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
Meta: {"statusCode":422}
|
|
151
|
+
[2025-12-28 11:34:47] WARN: POST /api/auth/register 422 - 52ms - ::ffff:127.0.0.1
|
|
152
|
+
[2025-12-28 11:34:47] INFO: POST /api/auth/login 200 - 94ms - ::ffff:127.0.0.1
|
|
153
|
+
[2025-12-28 11:36:20] WARN: Bad Request
|
|
154
|
+
Errors: {
|
|
155
|
+
"field": "Required"
|
|
156
|
+
}
|
|
157
|
+
Meta: {"statusCode":400}
|
|
158
|
+
[2025-12-28 11:36:21] INFO: GET / 200 - 10ms - ::ffff:127.0.0.1
|
|
159
|
+
[2025-12-28 11:36:21] WARN: GET /unknown 404 - 3ms - ::ffff:127.0.0.1
|
|
160
|
+
[2025-12-28 11:36:22] INFO: POST /api/auth/register 200 - 105ms - ::ffff:127.0.0.1
|
|
161
|
+
[2025-12-28 11:36:22] WARN: Validation error
|
|
162
|
+
Errors: {
|
|
163
|
+
"email": [
|
|
164
|
+
"The email has already been taken."
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
Meta: {"statusCode":422}
|
|
168
|
+
[2025-12-28 11:36:22] WARN: POST /api/auth/register 422 - 7ms - ::ffff:127.0.0.1
|
|
169
|
+
[2025-12-28 11:36:22] INFO: POST /api/auth/login 200 - 75ms - ::ffff:127.0.0.1
|
|
170
|
+
[2025-12-28 11:37:16] WARN: Bad Request
|
|
171
|
+
Errors: {
|
|
172
|
+
"field": "Required"
|
|
173
|
+
}
|
|
174
|
+
Meta: {"statusCode":400}
|
|
175
|
+
[2025-12-28 11:37:16] INFO: GET / 200 - 11ms - ::ffff:127.0.0.1
|
|
176
|
+
[2025-12-28 11:37:16] WARN: GET /unknown 404 - 2ms - ::ffff:127.0.0.1
|
|
177
|
+
[2025-12-28 11:37:16] INFO: POST /api/auth/register 200 - 92ms - ::ffff:127.0.0.1
|
|
178
|
+
[2025-12-28 11:37:16] WARN: Validation error
|
|
179
|
+
Errors: {
|
|
180
|
+
"email": [
|
|
181
|
+
"The email has already been taken."
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
Meta: {"statusCode":422}
|
|
185
|
+
[2025-12-28 11:37:16] WARN: POST /api/auth/register 422 - 5ms - ::ffff:127.0.0.1
|
|
186
|
+
[2025-12-28 11:37:17] INFO: POST /api/auth/login 200 - 65ms - ::ffff:127.0.0.1
|
|
187
|
+
[2025-12-28 11:38:28] WARN: Bad Request
|
|
188
|
+
Errors: {
|
|
189
|
+
"field": "Required"
|
|
190
|
+
}
|
|
191
|
+
Meta: {"statusCode":400}
|
|
192
|
+
[2025-12-28 11:38:30] INFO: GET / 200 - 7ms - ::ffff:127.0.0.1
|
|
193
|
+
[2025-12-28 11:38:30] WARN: GET /unknown 404 - 1ms - ::ffff:127.0.0.1
|
|
194
|
+
[2025-12-28 11:38:30] INFO: POST /api/auth/register 200 - 88ms - ::ffff:127.0.0.1
|
|
195
|
+
[2025-12-28 11:38:30] WARN: Validation error
|
|
196
|
+
Errors: {
|
|
197
|
+
"email": [
|
|
198
|
+
"The email has already been taken."
|
|
199
|
+
]
|
|
200
|
+
}
|
|
201
|
+
Meta: {"statusCode":422}
|
|
202
|
+
[2025-12-28 11:38:30] WARN: POST /api/auth/register 422 - 5ms - ::ffff:127.0.0.1
|
|
203
|
+
[2025-12-28 11:38:30] INFO: POST /api/auth/login 200 - 70ms - ::ffff:127.0.0.1
|
|
204
|
+
[2025-12-28 11:39:37] WARN: Bad Request
|
|
205
|
+
Errors: {
|
|
206
|
+
"field": "Required"
|
|
207
|
+
}
|
|
208
|
+
Meta: {"statusCode":400}
|
|
209
|
+
[2025-12-28 11:39:37] INFO: GET / 200 - 8ms - ::ffff:127.0.0.1
|
|
210
|
+
[2025-12-28 11:39:37] WARN: GET /unknown 404 - 1ms - ::ffff:127.0.0.1
|
|
211
|
+
[2025-12-28 11:39:38] INFO: POST /api/auth/register 200 - 91ms - ::ffff:127.0.0.1
|
|
212
|
+
[2025-12-28 11:39:38] WARN: Validation error
|
|
213
|
+
Errors: {
|
|
214
|
+
"email": [
|
|
215
|
+
"The email has already been taken."
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
Meta: {"statusCode":422}
|
|
219
|
+
[2025-12-28 11:39:38] WARN: POST /api/auth/register 422 - 7ms - ::ffff:127.0.0.1
|
|
220
|
+
[2025-12-28 11:39:38] INFO: POST /api/auth/login 200 - 66ms - ::ffff:127.0.0.1
|
|
221
|
+
[2025-12-28 11:41:52] WARN: Bad Request
|
|
222
|
+
Errors: {
|
|
223
|
+
"field": "Required"
|
|
224
|
+
}
|
|
225
|
+
Meta: {"statusCode":400}
|
|
226
|
+
[2025-12-28 11:41:54] INFO: GET / 200 - 13ms - ::ffff:127.0.0.1
|
|
227
|
+
[2025-12-28 11:41:54] INFO: POST /api/auth/register 200 - 95ms - ::ffff:127.0.0.1
|
|
228
|
+
[2025-12-28 11:41:54] WARN: GET /unknown 404 - 2ms - ::ffff:127.0.0.1
|
|
229
|
+
[2025-12-28 11:41:54] WARN: Validation error
|
|
230
|
+
Errors: {
|
|
231
|
+
"email": [
|
|
232
|
+
"The email has already been taken."
|
|
233
|
+
]
|
|
234
|
+
}
|
|
235
|
+
Meta: {"statusCode":422}
|
|
236
|
+
[2025-12-28 11:41:54] WARN: POST /api/auth/register 422 - 4ms - ::ffff:127.0.0.1
|
|
237
|
+
[2025-12-28 11:41:54] INFO: GET /api/pets 200 - 8ms - ::ffff:127.0.0.1
|
|
238
|
+
[2025-12-28 11:41:54] INFO: POST /api/pets 201 - 12ms - ::ffff:127.0.0.1
|
|
239
|
+
[2025-12-28 11:41:54] WARN: Validation error
|
|
240
|
+
Errors: {
|
|
241
|
+
"species": [
|
|
242
|
+
"Required"
|
|
243
|
+
],
|
|
244
|
+
"age": [
|
|
245
|
+
"Expected number, received nan"
|
|
246
|
+
]
|
|
247
|
+
}
|
|
248
|
+
Meta: {"statusCode":422}
|
|
249
|
+
[2025-12-28 11:41:54] WARN: POST /api/pets 422 - 4ms - ::ffff:127.0.0.1
|
|
250
|
+
[2025-12-28 11:41:54] INFO: GET /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
251
|
+
[2025-12-28 11:41:54] WARN: Pet not found
|
|
252
|
+
Meta: {"statusCode":404}
|
|
253
|
+
[2025-12-28 11:41:54] WARN: GET /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
254
|
+
[2025-12-28 11:41:54] INFO: PUT /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
255
|
+
[2025-12-28 11:41:54] WARN: Pet not found
|
|
256
|
+
Meta: {"statusCode":404}
|
|
257
|
+
[2025-12-28 11:41:54] WARN: PUT /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
258
|
+
[2025-12-28 11:41:54] INFO: DELETE /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
259
|
+
[2025-12-28 11:41:54] WARN: Pet not found
|
|
260
|
+
Meta: {"statusCode":404}
|
|
261
|
+
[2025-12-28 11:41:54] WARN: DELETE /api/pets/999 404 - 1ms - ::ffff:127.0.0.1
|
|
262
|
+
[2025-12-28 11:41:54] INFO: POST /api/auth/login 200 - 61ms - ::ffff:127.0.0.1
|
|
263
|
+
[2025-12-28 11:42:22] WARN: Bad Request
|
|
264
|
+
Errors: {
|
|
265
|
+
"field": "Required"
|
|
266
|
+
}
|
|
267
|
+
Meta: {"statusCode":400}
|
|
268
|
+
[2025-12-28 11:42:23] INFO: GET /api/pets 200 - 10ms - ::ffff:127.0.0.1
|
|
269
|
+
[2025-12-28 11:42:23] INFO: POST /api/pets 201 - 19ms - ::ffff:127.0.0.1
|
|
270
|
+
[2025-12-28 11:42:23] WARN: Validation error
|
|
271
|
+
Errors: {
|
|
272
|
+
"species": [
|
|
273
|
+
"Required"
|
|
274
|
+
],
|
|
275
|
+
"age": [
|
|
276
|
+
"Expected number, received nan"
|
|
277
|
+
]
|
|
278
|
+
}
|
|
279
|
+
Meta: {"statusCode":422}
|
|
280
|
+
[2025-12-28 11:42:23] WARN: POST /api/pets 422 - 4ms - ::ffff:127.0.0.1
|
|
281
|
+
[2025-12-28 11:42:23] INFO: GET /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
282
|
+
[2025-12-28 11:42:23] INFO: GET / 200 - 9ms - ::ffff:127.0.0.1
|
|
283
|
+
[2025-12-28 11:42:23] WARN: Pet not found
|
|
284
|
+
Meta: {"statusCode":404}
|
|
285
|
+
[2025-12-28 11:42:23] WARN: GET /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
286
|
+
[2025-12-28 11:42:23] INFO: PUT /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
287
|
+
[2025-12-28 11:42:23] WARN: Pet not found
|
|
288
|
+
Meta: {"statusCode":404}
|
|
289
|
+
[2025-12-28 11:42:23] WARN: GET /unknown 404 - 3ms - ::ffff:127.0.0.1
|
|
290
|
+
[2025-12-28 11:42:23] WARN: PUT /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
291
|
+
[2025-12-28 11:42:23] INFO: DELETE /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
292
|
+
[2025-12-28 11:42:23] WARN: Pet not found
|
|
293
|
+
Meta: {"statusCode":404}
|
|
294
|
+
[2025-12-28 11:42:23] WARN: DELETE /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
295
|
+
[2025-12-28 11:42:23] INFO: POST /api/auth/register 200 - 83ms - ::ffff:127.0.0.1
|
|
296
|
+
[2025-12-28 11:42:23] WARN: Validation error
|
|
297
|
+
Errors: {
|
|
298
|
+
"email": [
|
|
299
|
+
"The email has already been taken."
|
|
300
|
+
]
|
|
301
|
+
}
|
|
302
|
+
Meta: {"statusCode":422}
|
|
303
|
+
[2025-12-28 11:42:23] WARN: POST /api/auth/register 422 - 7ms - ::ffff:127.0.0.1
|
|
304
|
+
[2025-12-28 11:42:23] INFO: POST /api/auth/login 200 - 64ms - ::ffff:127.0.0.1
|
|
305
|
+
[2025-12-28 11:42:24] INFO: GET /api/rbac/roles 200 - 8ms - ::ffff:127.0.0.1
|
|
306
|
+
[2025-12-28 11:42:24] INFO: POST /api/rbac/roles 201 - 8ms - ::ffff:127.0.0.1
|
|
307
|
+
[2025-12-28 11:42:24] INFO: POST /api/rbac/permissions 201 - 2ms - ::ffff:127.0.0.1
|
|
308
|
+
[2025-12-28 11:42:24] INFO: GET /api/rbac/permissions 200 - 1ms - ::ffff:127.0.0.1
|
|
309
|
+
[2025-12-28 11:42:24] INFO: POST /api/rbac/users/assign-role 200 - 1ms - ::ffff:127.0.0.1
|
|
310
|
+
[2025-12-28 11:42:24] WARN: User not found
|
|
311
|
+
Meta: {"statusCode":404}
|
|
312
|
+
[2025-12-28 11:42:24] WARN: POST /api/rbac/users/assign-role 404 - 4ms - ::ffff:127.0.0.1
|
|
313
|
+
[2025-12-28 11:42:43] WARN: Bad Request
|
|
314
|
+
Errors: {
|
|
315
|
+
"field": "Required"
|
|
316
|
+
}
|
|
317
|
+
Meta: {"statusCode":400}
|
|
318
|
+
[2025-12-28 11:42:44] INFO: GET /api/rbac/roles 200 - 10ms - ::ffff:127.0.0.1
|
|
319
|
+
[2025-12-28 11:42:44] INFO: POST /api/rbac/roles 201 - 17ms - ::ffff:127.0.0.1
|
|
320
|
+
[2025-12-28 11:42:44] INFO: POST /api/rbac/permissions 201 - 2ms - ::ffff:127.0.0.1
|
|
321
|
+
[2025-12-28 11:42:44] INFO: GET /api/rbac/permissions 200 - 2ms - ::ffff:127.0.0.1
|
|
322
|
+
[2025-12-28 11:42:44] INFO: POST /api/rbac/users/assign-role 200 - 1ms - ::ffff:127.0.0.1
|
|
323
|
+
[2025-12-28 11:42:44] WARN: User not found
|
|
324
|
+
Meta: {"statusCode":404}
|
|
325
|
+
[2025-12-28 11:42:44] WARN: POST /api/rbac/users/assign-role 404 - 4ms - ::ffff:127.0.0.1
|
|
326
|
+
[2025-12-28 11:42:44] INFO: GET /api/pets 200 - 10ms - ::ffff:127.0.0.1
|
|
327
|
+
[2025-12-28 11:42:44] INFO: GET / 200 - 11ms - ::ffff:127.0.0.1
|
|
328
|
+
[2025-12-28 11:42:44] INFO: POST /api/pets 201 - 11ms - ::ffff:127.0.0.1
|
|
329
|
+
[2025-12-28 11:42:44] WARN: GET /unknown 404 - 1ms - ::ffff:127.0.0.1
|
|
330
|
+
[2025-12-28 11:42:44] WARN: Validation error
|
|
331
|
+
Errors: {
|
|
332
|
+
"species": [
|
|
333
|
+
"Required"
|
|
334
|
+
],
|
|
335
|
+
"age": [
|
|
336
|
+
"Expected number, received nan"
|
|
337
|
+
]
|
|
338
|
+
}
|
|
339
|
+
Meta: {"statusCode":422}
|
|
340
|
+
[2025-12-28 11:42:44] WARN: POST /api/pets 422 - 4ms - ::ffff:127.0.0.1
|
|
341
|
+
[2025-12-28 11:42:44] INFO: GET /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
342
|
+
[2025-12-28 11:42:44] WARN: Pet not found
|
|
343
|
+
Meta: {"statusCode":404}
|
|
344
|
+
[2025-12-28 11:42:44] WARN: GET /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
345
|
+
[2025-12-28 11:42:44] INFO: PUT /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
346
|
+
[2025-12-28 11:42:44] WARN: Pet not found
|
|
347
|
+
Meta: {"statusCode":404}
|
|
348
|
+
[2025-12-28 11:42:44] WARN: PUT /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
349
|
+
[2025-12-28 11:42:44] INFO: DELETE /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
350
|
+
[2025-12-28 11:42:44] WARN: Pet not found
|
|
351
|
+
Meta: {"statusCode":404}
|
|
352
|
+
[2025-12-28 11:42:44] WARN: DELETE /api/pets/999 404 - 1ms - ::ffff:127.0.0.1
|
|
353
|
+
[2025-12-28 11:42:45] INFO: POST /api/auth/register 200 - 84ms - ::ffff:127.0.0.1
|
|
354
|
+
[2025-12-28 11:42:45] WARN: Validation error
|
|
355
|
+
Errors: {
|
|
356
|
+
"email": [
|
|
357
|
+
"The email has already been taken."
|
|
358
|
+
]
|
|
359
|
+
}
|
|
360
|
+
Meta: {"statusCode":422}
|
|
361
|
+
[2025-12-28 11:42:45] WARN: POST /api/auth/register 422 - 4ms - ::ffff:127.0.0.1
|
|
362
|
+
[2025-12-28 11:42:45] INFO: POST /api/auth/login 200 - 63ms - ::ffff:127.0.0.1
|
|
363
|
+
[2025-12-28 11:49:41] INFO: GET /api/pets 200 - 17ms - ::ffff:127.0.0.1
|
|
364
|
+
[2025-12-28 11:49:41] INFO: GET /api/pets?search=Fluffy 200 - 1ms - ::ffff:127.0.0.1
|
|
365
|
+
[2025-12-28 11:49:41] INFO: GET /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
366
|
+
[2025-12-28 11:49:41] WARN: Pet not found
|
|
367
|
+
Meta: {"statusCode":404}
|
|
368
|
+
[2025-12-28 11:49:41] WARN: GET /api/pets/999 404 - 3ms - ::ffff:127.0.0.1
|
|
369
|
+
[2025-12-28 11:49:42] INFO: POST /api/pets 201 - 576ms - ::ffff:127.0.0.1
|
|
370
|
+
[2025-12-28 11:49:42] WARN: Validation error
|
|
371
|
+
Errors: {
|
|
372
|
+
"species": [
|
|
373
|
+
"Required"
|
|
374
|
+
],
|
|
375
|
+
"age": [
|
|
376
|
+
"Expected number, received nan"
|
|
377
|
+
]
|
|
378
|
+
}
|
|
379
|
+
Meta: {"statusCode":422}
|
|
380
|
+
[2025-12-28 11:49:42] WARN: POST /api/pets 422 - 3ms - ::ffff:127.0.0.1
|
|
381
|
+
[2025-12-28 11:49:42] INFO: PUT /api/pets/1 200 - 3ms - ::ffff:127.0.0.1
|
|
382
|
+
[2025-12-28 11:49:42] WARN: Pet not found
|
|
383
|
+
Meta: {"statusCode":404}
|
|
384
|
+
[2025-12-28 11:49:42] WARN: PUT /api/pets/999 404 - 7ms - ::ffff:127.0.0.1
|
|
385
|
+
[2025-12-28 11:49:42] INFO: DELETE /api/pets/1 200 - 3ms - ::ffff:127.0.0.1
|
|
386
|
+
[2025-12-28 11:49:42] WARN: Pet not found
|
|
387
|
+
Meta: {"statusCode":404}
|
|
388
|
+
[2025-12-28 11:49:42] WARN: DELETE /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
389
|
+
[2025-12-28 11:50:51] WARN: GET /api/auth/me 404 - 17ms - ::ffff:127.0.0.1
|
|
390
|
+
[2025-12-28 11:50:51] WARN: GET /api/auth/me 404 - 1ms - ::ffff:127.0.0.1
|
|
391
|
+
[2025-12-28 11:50:51] WARN: PUT /api/auth/profile 404 - 17ms - ::ffff:127.0.0.1
|
|
392
|
+
[2025-12-28 11:50:51] WARN: PUT /api/auth/password 404 - 1ms - ::ffff:127.0.0.1
|
|
393
|
+
[2025-12-28 11:50:52] WARN: PUT /api/auth/password 404 - 1ms - ::ffff:127.0.0.1
|
|
394
|
+
[2025-12-28 11:50:52] WARN: POST /api/auth/refresh-token 404 - 0ms - ::ffff:127.0.0.1
|
|
395
|
+
[2025-12-28 11:50:52] WARN: POST /api/auth/refresh-token 404 - 1ms - ::ffff:127.0.0.1
|
|
396
|
+
[2025-12-28 11:52:04] INFO: GET /api/auth/me 200 - 41ms - ::ffff:127.0.0.1
|
|
397
|
+
[2025-12-28 11:52:04] WARN: User not found
|
|
398
|
+
Meta: {"statusCode":404}
|
|
399
|
+
[2025-12-28 11:52:04] WARN: GET /api/auth/me 404 - 7ms - ::ffff:127.0.0.1
|
|
400
|
+
[2025-12-28 11:52:04] INFO: PUT /api/auth/profile 200 - 47ms - ::ffff:127.0.0.1
|
|
401
|
+
[2025-12-28 11:52:04] INFO: PUT /api/auth/password 200 - 157ms - ::ffff:127.0.0.1
|
|
402
|
+
[2025-12-28 11:52:04] WARN: Invalid credentials
|
|
403
|
+
Errors: {
|
|
404
|
+
"field": "currentPassword",
|
|
405
|
+
"message": "Current password is incorrect"
|
|
406
|
+
}
|
|
407
|
+
Meta: {"statusCode":401}
|
|
408
|
+
[2025-12-28 11:52:04] WARN: PUT /api/auth/password 401 - 69ms - ::ffff:127.0.0.1
|
|
409
|
+
[2025-12-28 11:52:04] INFO: POST /api/auth/refresh 200 - 6ms - ::ffff:127.0.0.1
|
|
410
|
+
[2025-12-28 11:52:04] WARN: Invalid refresh token
|
|
411
|
+
Meta: {"statusCode":401}
|
|
412
|
+
[2025-12-28 11:52:04] WARN: POST /api/auth/refresh 401 - 2ms - ::ffff:127.0.0.1
|
|
413
|
+
[2025-12-28 11:52:27] INFO: GET /api/auth/me 200 - 14ms - ::ffff:127.0.0.1
|
|
414
|
+
[2025-12-28 11:52:27] WARN: User not found
|
|
415
|
+
Meta: {"statusCode":404}
|
|
416
|
+
[2025-12-28 11:52:27] WARN: GET /api/auth/me 404 - 6ms - ::ffff:127.0.0.1
|
|
417
|
+
[2025-12-28 11:52:27] INFO: PUT /api/auth/profile 200 - 25ms - ::ffff:127.0.0.1
|
|
418
|
+
[2025-12-28 11:52:27] INFO: PUT /api/auth/password 200 - 159ms - ::ffff:127.0.0.1
|
|
419
|
+
[2025-12-28 11:52:27] WARN: Invalid credentials
|
|
420
|
+
Errors: {
|
|
421
|
+
"field": "currentPassword",
|
|
422
|
+
"message": "Current password is incorrect"
|
|
423
|
+
}
|
|
424
|
+
Meta: {"statusCode":401}
|
|
425
|
+
[2025-12-28 11:52:27] WARN: PUT /api/auth/password 401 - 92ms - ::ffff:127.0.0.1
|
|
426
|
+
[2025-12-28 11:52:27] INFO: POST /api/auth/refresh 200 - 6ms - ::ffff:127.0.0.1
|
|
427
|
+
[2025-12-28 11:52:27] WARN: Invalid refresh token
|
|
428
|
+
Meta: {"statusCode":401}
|
|
429
|
+
[2025-12-28 11:52:27] WARN: POST /api/auth/refresh 401 - 2ms - ::ffff:127.0.0.1
|
|
430
|
+
[2025-12-28 11:53:42] INFO: POST /api/auth/register 201 - 102ms - ::ffff:127.0.0.1
|
|
431
|
+
[2025-12-28 11:53:42] WARN: Validation error
|
|
432
|
+
Errors: {
|
|
433
|
+
"email": [
|
|
434
|
+
"The email has already been taken."
|
|
435
|
+
]
|
|
436
|
+
}
|
|
437
|
+
Meta: {"statusCode":422}
|
|
438
|
+
[2025-12-28 11:53:42] WARN: POST /api/auth/register 422 - 3ms - ::ffff:127.0.0.1
|
|
439
|
+
[2025-12-28 11:53:42] INFO: POST /api/auth/login 200 - 65ms - ::ffff:127.0.0.1
|
|
440
|
+
[2025-12-28 11:55:01] WARN: Bad Request
|
|
441
|
+
Errors: {
|
|
442
|
+
"field": "Required"
|
|
443
|
+
}
|
|
444
|
+
Meta: {"statusCode":400}
|
|
445
|
+
[2025-12-28 11:55:01] INFO: GET /api/pets 200 - 16ms - ::ffff:127.0.0.1
|
|
446
|
+
[2025-12-28 11:55:01] INFO: GET /api/pets 200 - 33ms - ::ffff:127.0.0.1
|
|
447
|
+
[2025-12-28 11:55:01] INFO: GET /api/pets?search=Fluffy 200 - 1ms - ::ffff:127.0.0.1
|
|
448
|
+
[2025-12-28 11:55:01] INFO: GET /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
449
|
+
[2025-12-28 11:55:01] INFO: GET /api/auth/me 200 - 36ms - ::ffff:127.0.0.1
|
|
450
|
+
[2025-12-28 11:55:01] WARN: Pet not found
|
|
451
|
+
Meta: {"statusCode":404}
|
|
452
|
+
[2025-12-28 11:55:02] WARN: User not found
|
|
453
|
+
Meta: {"statusCode":404}
|
|
454
|
+
[2025-12-28 11:55:02] INFO: POST /api/pets 201 - 22ms - ::ffff:127.0.0.1
|
|
455
|
+
[2025-12-28 11:55:02] INFO: GET /api/rbac/roles 200 - 14ms - ::ffff:127.0.0.1
|
|
456
|
+
[2025-12-28 11:55:02] WARN: GET /api/auth/me 404 - 8ms - ::ffff:127.0.0.1
|
|
457
|
+
[2025-12-28 11:55:02] WARN: Validation error
|
|
458
|
+
Errors: {
|
|
459
|
+
"species": [
|
|
460
|
+
"Required"
|
|
461
|
+
],
|
|
462
|
+
"age": [
|
|
463
|
+
"Expected number, received nan"
|
|
464
|
+
]
|
|
465
|
+
}
|
|
466
|
+
Meta: {"statusCode":422}
|
|
467
|
+
[2025-12-28 11:55:02] WARN: GET /api/pets/999 404 - 30ms - ::ffff:127.0.0.1
|
|
468
|
+
[2025-12-28 11:55:02] WARN: POST /api/pets 422 - 8ms - ::ffff:127.0.0.1
|
|
469
|
+
[2025-12-28 11:55:02] INFO: GET /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
470
|
+
[2025-12-28 11:55:02] INFO: PUT /api/auth/profile 200 - 20ms - ::ffff:127.0.0.1
|
|
471
|
+
[2025-12-28 11:55:02] WARN: Pet not found
|
|
472
|
+
Meta: {"statusCode":404}
|
|
473
|
+
[2025-12-28 11:55:02] WARN: GET /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
474
|
+
[2025-12-28 11:55:02] INFO: POST /api/pets 201 - 21ms - ::ffff:127.0.0.1
|
|
475
|
+
[2025-12-28 11:55:02] INFO: PUT /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
476
|
+
[2025-12-28 11:55:02] INFO: POST /api/rbac/roles 201 - 22ms - ::ffff:127.0.0.1
|
|
477
|
+
[2025-12-28 11:55:02] INFO: POST /api/auth/register 201 - 161ms - ::ffff:127.0.0.1
|
|
478
|
+
[2025-12-28 11:55:02] WARN: Pet not found
|
|
479
|
+
Meta: {"statusCode":404}
|
|
480
|
+
[2025-12-28 11:55:02] WARN: Validation error
|
|
481
|
+
Errors: {
|
|
482
|
+
"species": [
|
|
483
|
+
"Required"
|
|
484
|
+
],
|
|
485
|
+
"age": [
|
|
486
|
+
"Expected number, received nan"
|
|
487
|
+
]
|
|
488
|
+
}
|
|
489
|
+
Meta: {"statusCode":422}
|
|
490
|
+
[2025-12-28 11:55:02] WARN: PUT /api/pets/999 404 - 3ms - ::ffff:127.0.0.1
|
|
491
|
+
[2025-12-28 11:55:02] INFO: POST /api/rbac/permissions 201 - 3ms - ::ffff:127.0.0.1
|
|
492
|
+
[2025-12-28 11:55:02] WARN: POST /api/pets 422 - 5ms - ::ffff:127.0.0.1
|
|
493
|
+
[2025-12-28 11:55:02] INFO: DELETE /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
494
|
+
[2025-12-28 11:55:02] WARN: Pet not found
|
|
495
|
+
Meta: {"statusCode":404}
|
|
496
|
+
[2025-12-28 11:55:02] INFO: PUT /api/pets/1 200 - 3ms - ::ffff:127.0.0.1
|
|
497
|
+
[2025-12-28 11:55:02] INFO: GET /api/rbac/permissions 200 - 2ms - ::ffff:127.0.0.1
|
|
498
|
+
[2025-12-28 11:55:02] WARN: DELETE /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
499
|
+
[2025-12-28 11:55:02] WARN: Validation error
|
|
500
|
+
Errors: {
|
|
501
|
+
"email": [
|
|
502
|
+
"The email has already been taken."
|
|
503
|
+
]
|
|
504
|
+
}
|
|
505
|
+
Meta: {"statusCode":422}
|
|
506
|
+
[2025-12-28 11:55:02] WARN: POST /api/auth/register 422 - 9ms - ::ffff:127.0.0.1
|
|
507
|
+
[2025-12-28 11:55:02] WARN: Pet not found
|
|
508
|
+
Meta: {"statusCode":404}
|
|
509
|
+
[2025-12-28 11:55:02] WARN: PUT /api/pets/999 404 - 4ms - ::ffff:127.0.0.1
|
|
510
|
+
[2025-12-28 11:55:02] INFO: POST /api/rbac/users/assign-role 200 - 5ms - ::ffff:127.0.0.1
|
|
511
|
+
[2025-12-28 11:55:02] INFO: DELETE /api/pets/1 200 - 4ms - ::ffff:127.0.0.1
|
|
512
|
+
[2025-12-28 11:55:02] WARN: User not found
|
|
513
|
+
Meta: {"statusCode":404}
|
|
514
|
+
[2025-12-28 11:55:02] WARN: Pet not found
|
|
515
|
+
Meta: {"statusCode":404}
|
|
516
|
+
[2025-12-28 11:55:02] WARN: DELETE /api/pets/999 404 - 4ms - ::ffff:127.0.0.1
|
|
517
|
+
[2025-12-28 11:55:02] WARN: POST /api/rbac/users/assign-role 404 - 32ms - ::ffff:127.0.0.1
|
|
518
|
+
[2025-12-28 11:55:02] INFO: GET / 200 - 11ms - ::ffff:127.0.0.1
|
|
519
|
+
[2025-12-28 11:55:02] WARN: GET /unknown 404 - 2ms - ::ffff:127.0.0.1
|
|
520
|
+
[2025-12-28 11:55:02] INFO: POST /api/auth/login 200 - 82ms - ::ffff:127.0.0.1
|
|
521
|
+
[2025-12-28 11:55:02] INFO: PUT /api/auth/password 200 - 146ms - ::ffff:127.0.0.1
|
|
522
|
+
[2025-12-28 11:55:02] WARN: Invalid credentials
|
|
523
|
+
Errors: {
|
|
524
|
+
"field": "currentPassword",
|
|
525
|
+
"message": "Current password is incorrect"
|
|
526
|
+
}
|
|
527
|
+
Meta: {"statusCode":401}
|
|
528
|
+
[2025-12-28 11:55:02] WARN: PUT /api/auth/password 401 - 68ms - ::ffff:127.0.0.1
|
|
529
|
+
[2025-12-28 11:55:02] INFO: POST /api/auth/refresh 200 - 5ms - ::ffff:127.0.0.1
|
|
530
|
+
[2025-12-28 11:55:02] WARN: Invalid refresh token
|
|
531
|
+
Meta: {"statusCode":401}
|
|
532
|
+
[2025-12-28 11:55:02] WARN: POST /api/auth/refresh 401 - 2ms - ::ffff:127.0.0.1
|
|
533
|
+
[2025-12-28 11:59:35] WARN: Bad Request
|
|
534
|
+
Errors: {
|
|
535
|
+
"field": "Required"
|
|
536
|
+
}
|
|
537
|
+
Meta: {"statusCode":400}
|
|
538
|
+
[2025-12-28 12:00:10] WARN: Bad Request
|
|
539
|
+
Errors: {
|
|
540
|
+
"field": "Required"
|
|
541
|
+
}
|
|
542
|
+
Meta: {"statusCode":400}
|
|
543
|
+
[2025-12-28 12:00:11] INFO: POST /api/auth/register 201 - 235ms - ::ffff:127.0.0.1
|
|
544
|
+
[2025-12-28 12:00:11] WARN: Validation error
|
|
545
|
+
Errors: {
|
|
546
|
+
"email": [
|
|
547
|
+
"The email has already been taken."
|
|
548
|
+
]
|
|
549
|
+
}
|
|
550
|
+
Meta: {"statusCode":422}
|
|
551
|
+
[2025-12-28 12:00:11] WARN: POST /api/auth/register 422 - 11ms - ::ffff:127.0.0.1
|
|
552
|
+
[2025-12-28 12:00:11] INFO: GET / 200 - 15ms - ::ffff:127.0.0.1
|
|
553
|
+
[2025-12-28 12:00:11] WARN: GET /unknown 404 - 4ms - ::ffff:127.0.0.1
|
|
554
|
+
[2025-12-28 12:00:11] INFO: POST /api/auth/login 200 - 123ms - ::ffff:127.0.0.1
|
|
555
|
+
[2025-12-28 12:00:11] INFO: GET /api/auth/me 200 - 17ms - ::ffff:127.0.0.1
|
|
556
|
+
[2025-12-28 12:00:11] WARN: User not found
|
|
557
|
+
Meta: {"statusCode":404}
|
|
558
|
+
[2025-12-28 12:00:11] WARN: GET /api/auth/me 404 - 7ms - ::ffff:127.0.0.1
|
|
559
|
+
[2025-12-28 12:00:11] INFO: PUT /api/auth/profile 200 - 22ms - ::ffff:127.0.0.1
|
|
560
|
+
[2025-12-28 12:00:11] INFO: GET /api/pets 200 - 16ms - ::ffff:127.0.0.1
|
|
561
|
+
[2025-12-28 12:00:11] INFO: POST /api/pets 201 - 43ms - ::ffff:127.0.0.1
|
|
562
|
+
[2025-12-28 12:00:11] INFO: GET /api/rbac/roles 200 - 36ms - ::ffff:127.0.0.1
|
|
563
|
+
[2025-12-28 12:00:11] WARN: Validation error
|
|
564
|
+
Errors: {
|
|
565
|
+
"species": [
|
|
566
|
+
"Required"
|
|
567
|
+
],
|
|
568
|
+
"age": [
|
|
569
|
+
"Expected number, received nan"
|
|
570
|
+
]
|
|
571
|
+
}
|
|
572
|
+
Meta: {"statusCode":422}
|
|
573
|
+
[2025-12-28 12:00:11] INFO: PUT /api/auth/password 200 - 212ms - ::ffff:127.0.0.1
|
|
574
|
+
[2025-12-28 12:00:11] WARN: POST /api/pets 422 - 16ms - ::ffff:127.0.0.1
|
|
575
|
+
[2025-12-28 12:00:11] INFO: GET /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
576
|
+
[2025-12-28 12:00:11] WARN: Pet not found
|
|
577
|
+
Meta: {"statusCode":404}
|
|
578
|
+
[2025-12-28 12:00:11] WARN: GET /api/pets/999 404 - 9ms - ::ffff:127.0.0.1
|
|
579
|
+
[2025-12-28 12:00:11] INFO: POST /api/rbac/roles 201 - 29ms - ::ffff:127.0.0.1
|
|
580
|
+
[2025-12-28 12:00:11] INFO: PUT /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
581
|
+
[2025-12-28 12:00:11] WARN: Pet not found
|
|
582
|
+
Meta: {"statusCode":404}
|
|
583
|
+
[2025-12-28 12:00:11] WARN: PUT /api/pets/999 404 - 3ms - ::ffff:127.0.0.1
|
|
584
|
+
[2025-12-28 12:00:11] INFO: POST /api/rbac/permissions 201 - 7ms - ::ffff:127.0.0.1
|
|
585
|
+
[2025-12-28 12:00:11] INFO: DELETE /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
586
|
+
[2025-12-28 12:00:11] INFO: GET /api/rbac/permissions 200 - 5ms - ::ffff:127.0.0.1
|
|
587
|
+
[2025-12-28 12:00:11] WARN: Pet not found
|
|
588
|
+
Meta: {"statusCode":404}
|
|
589
|
+
[2025-12-28 12:00:11] WARN: DELETE /api/pets/999 404 - 5ms - ::ffff:127.0.0.1
|
|
590
|
+
[2025-12-28 12:00:11] INFO: POST /api/rbac/users/assign-role 200 - 6ms - ::ffff:127.0.0.1
|
|
591
|
+
[2025-12-28 12:00:11] WARN: User not found
|
|
592
|
+
Meta: {"statusCode":404}
|
|
593
|
+
[2025-12-28 12:00:11] WARN: POST /api/rbac/users/assign-role 404 - 11ms - ::ffff:127.0.0.1
|
|
594
|
+
[2025-12-28 12:00:12] WARN: Invalid credentials
|
|
595
|
+
Errors: {
|
|
596
|
+
"field": "currentPassword",
|
|
597
|
+
"message": "Current password is incorrect"
|
|
598
|
+
}
|
|
599
|
+
Meta: {"statusCode":401}
|
|
600
|
+
[2025-12-28 12:00:12] WARN: PUT /api/auth/password 401 - 121ms - ::ffff:127.0.0.1
|
|
601
|
+
[2025-12-28 12:00:12] INFO: POST /api/auth/refresh 200 - 7ms - ::ffff:127.0.0.1
|
|
602
|
+
[2025-12-28 12:00:12] WARN: Invalid refresh token
|
|
603
|
+
Meta: {"statusCode":401}
|
|
604
|
+
[2025-12-28 12:00:12] WARN: POST /api/auth/refresh 401 - 3ms - ::ffff:127.0.0.1
|
|
605
|
+
[2025-12-28 12:00:12] INFO: POST /api/auth/avatar 200 - 7ms - ::ffff:127.0.0.1
|
|
606
|
+
[2025-12-28 12:00:12] INFO: GET /api/pets 200 - 9ms - ::ffff:127.0.0.1
|
|
607
|
+
[2025-12-28 12:00:12] INFO: GET /api/pets?search=Fluffy 200 - 1ms - ::ffff:127.0.0.1
|
|
608
|
+
[2025-12-28 12:00:12] INFO: GET /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
609
|
+
[2025-12-28 12:00:12] WARN: Pet not found
|
|
610
|
+
Meta: {"statusCode":404}
|
|
611
|
+
[2025-12-28 12:00:12] WARN: GET /api/pets/999 404 - 4ms - ::ffff:127.0.0.1
|
|
612
|
+
[2025-12-28 12:00:12] INFO: POST /api/pets 201 - 12ms - ::ffff:127.0.0.1
|
|
613
|
+
[2025-12-28 12:00:12] WARN: Validation error
|
|
614
|
+
Errors: {
|
|
615
|
+
"species": [
|
|
616
|
+
"Required"
|
|
617
|
+
],
|
|
618
|
+
"age": [
|
|
619
|
+
"Expected number, received nan"
|
|
620
|
+
]
|
|
621
|
+
}
|
|
622
|
+
Meta: {"statusCode":422}
|
|
623
|
+
[2025-12-28 12:00:12] WARN: POST /api/pets 422 - 4ms - ::ffff:127.0.0.1
|
|
624
|
+
[2025-12-28 12:00:12] INFO: PUT /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
625
|
+
[2025-12-28 12:00:12] WARN: Pet not found
|
|
626
|
+
Meta: {"statusCode":404}
|
|
627
|
+
[2025-12-28 12:00:12] WARN: PUT /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
628
|
+
[2025-12-28 12:00:12] INFO: DELETE /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
629
|
+
[2025-12-28 12:00:12] WARN: Pet not found
|
|
630
|
+
Meta: {"statusCode":404}
|
|
631
|
+
[2025-12-28 12:00:12] WARN: DELETE /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
632
|
+
[2025-12-28 12:00:47] WARN: Bad Request
|
|
633
|
+
Errors: {
|
|
634
|
+
"field": "Required"
|
|
635
|
+
}
|
|
636
|
+
Meta: {"statusCode":400}
|
|
637
|
+
[2025-12-28 12:00:48] INFO: GET / 200 - 23ms - ::ffff:127.0.0.1
|
|
638
|
+
[2025-12-28 12:00:48] INFO: GET /api/pets 200 - 15ms - ::ffff:127.0.0.1
|
|
639
|
+
[2025-12-28 12:00:48] WARN: GET /unknown 404 - 3ms - ::ffff:127.0.0.1
|
|
640
|
+
[2025-12-28 12:00:48] INFO: GET /api/pets?search=Fluffy 200 - 5ms - ::ffff:127.0.0.1
|
|
641
|
+
[2025-12-28 12:00:48] INFO: GET /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
642
|
+
[2025-12-28 12:00:48] WARN: Pet not found
|
|
643
|
+
Meta: {"statusCode":404}
|
|
644
|
+
[2025-12-28 12:00:48] WARN: GET /api/pets/999 404 - 15ms - ::ffff:127.0.0.1
|
|
645
|
+
[2025-12-28 12:00:48] INFO: GET /api/rbac/roles 200 - 25ms - ::ffff:127.0.0.1
|
|
646
|
+
[2025-12-28 12:00:48] INFO: POST /api/pets 201 - 19ms - ::ffff:127.0.0.1
|
|
647
|
+
[2025-12-28 12:00:48] WARN: Validation error
|
|
648
|
+
Errors: {
|
|
649
|
+
"species": [
|
|
650
|
+
"Required"
|
|
651
|
+
],
|
|
652
|
+
"age": [
|
|
653
|
+
"Expected number, received nan"
|
|
654
|
+
]
|
|
655
|
+
}
|
|
656
|
+
Meta: {"statusCode":422}
|
|
657
|
+
[2025-12-28 12:00:48] WARN: POST /api/pets 422 - 4ms - ::ffff:127.0.0.1
|
|
658
|
+
[2025-12-28 12:00:48] INFO: PUT /api/pets/1 200 - 3ms - ::ffff:127.0.0.1
|
|
659
|
+
[2025-12-28 12:00:48] INFO: POST /api/rbac/roles 201 - 18ms - ::ffff:127.0.0.1
|
|
660
|
+
[2025-12-28 12:00:48] WARN: Pet not found
|
|
661
|
+
Meta: {"statusCode":404}
|
|
662
|
+
[2025-12-28 12:00:48] WARN: PUT /api/pets/999 404 - 3ms - ::ffff:127.0.0.1
|
|
663
|
+
[2025-12-28 12:00:48] INFO: POST /api/rbac/permissions 201 - 6ms - ::ffff:127.0.0.1
|
|
664
|
+
[2025-12-28 12:00:48] INFO: DELETE /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
665
|
+
[2025-12-28 12:00:48] INFO: GET /api/rbac/permissions 200 - 2ms - ::ffff:127.0.0.1
|
|
666
|
+
[2025-12-28 12:00:48] WARN: Pet not found
|
|
667
|
+
Meta: {"statusCode":404}
|
|
668
|
+
[2025-12-28 12:00:48] WARN: DELETE /api/pets/999 404 - 4ms - ::ffff:127.0.0.1
|
|
669
|
+
[2025-12-28 12:00:48] INFO: POST /api/rbac/users/assign-role 200 - 4ms - ::ffff:127.0.0.1
|
|
670
|
+
[2025-12-28 12:00:48] WARN: User not found
|
|
671
|
+
Meta: {"statusCode":404}
|
|
672
|
+
[2025-12-28 12:00:48] WARN: POST /api/rbac/users/assign-role 404 - 8ms - ::ffff:127.0.0.1
|
|
673
|
+
[2025-12-28 12:00:48] INFO: POST /api/auth/register 201 - 107ms - ::ffff:127.0.0.1
|
|
674
|
+
[2025-12-28 12:00:48] WARN: Validation error
|
|
675
|
+
Errors: {
|
|
676
|
+
"email": [
|
|
677
|
+
"The email has already been taken."
|
|
678
|
+
]
|
|
679
|
+
}
|
|
680
|
+
Meta: {"statusCode":422}
|
|
681
|
+
[2025-12-28 12:00:48] WARN: POST /api/auth/register 422 - 6ms - ::ffff:127.0.0.1
|
|
682
|
+
[2025-12-28 12:00:48] INFO: GET /api/auth/me 200 - 11ms - ::ffff:127.0.0.1
|
|
683
|
+
[2025-12-28 12:00:48] INFO: GET /api/pets 200 - 12ms - ::ffff:127.0.0.1
|
|
684
|
+
[2025-12-28 12:00:48] WARN: User not found
|
|
685
|
+
Meta: {"statusCode":404}
|
|
686
|
+
[2025-12-28 12:00:48] WARN: GET /api/auth/me 404 - 5ms - ::ffff:127.0.0.1
|
|
687
|
+
[2025-12-28 12:00:48] INFO: POST /api/pets 201 - 12ms - ::ffff:127.0.0.1
|
|
688
|
+
[2025-12-28 12:00:48] INFO: PUT /api/auth/profile 200 - 10ms - ::ffff:127.0.0.1
|
|
689
|
+
[2025-12-28 12:00:48] WARN: Validation error
|
|
690
|
+
Errors: {
|
|
691
|
+
"species": [
|
|
692
|
+
"Required"
|
|
693
|
+
],
|
|
694
|
+
"age": [
|
|
695
|
+
"Expected number, received nan"
|
|
696
|
+
]
|
|
697
|
+
}
|
|
698
|
+
Meta: {"statusCode":422}
|
|
699
|
+
[2025-12-28 12:00:48] WARN: POST /api/pets 422 - 6ms - ::ffff:127.0.0.1
|
|
700
|
+
[2025-12-28 12:00:48] INFO: GET /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
701
|
+
[2025-12-28 12:00:48] WARN: Pet not found
|
|
702
|
+
Meta: {"statusCode":404}
|
|
703
|
+
[2025-12-28 12:00:48] WARN: GET /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
704
|
+
[2025-12-28 12:00:48] INFO: PUT /api/pets/1 200 - 2ms - ::ffff:127.0.0.1
|
|
705
|
+
[2025-12-28 12:00:48] WARN: Pet not found
|
|
706
|
+
Meta: {"statusCode":404}
|
|
707
|
+
[2025-12-28 12:00:48] WARN: PUT /api/pets/999 404 - 2ms - ::ffff:127.0.0.1
|
|
708
|
+
[2025-12-28 12:00:48] INFO: DELETE /api/pets/1 200 - 1ms - ::ffff:127.0.0.1
|
|
709
|
+
[2025-12-28 12:00:48] WARN: Pet not found
|
|
710
|
+
Meta: {"statusCode":404}
|
|
711
|
+
[2025-12-28 12:00:48] WARN: DELETE /api/pets/999 404 - 1ms - ::ffff:127.0.0.1
|
|
712
|
+
[2025-12-28 12:00:49] INFO: POST /api/auth/login 200 - 85ms - ::ffff:127.0.0.1
|
|
713
|
+
[2025-12-28 12:00:49] INFO: PUT /api/auth/password 200 - 128ms - ::ffff:127.0.0.1
|
|
714
|
+
[2025-12-28 12:00:49] WARN: Invalid credentials
|
|
715
|
+
Errors: {
|
|
716
|
+
"field": "currentPassword",
|
|
717
|
+
"message": "Current password is incorrect"
|
|
718
|
+
}
|
|
719
|
+
Meta: {"statusCode":401}
|
|
720
|
+
[2025-12-28 12:00:49] WARN: PUT /api/auth/password 401 - 71ms - ::ffff:127.0.0.1
|
|
721
|
+
[2025-12-28 12:00:49] INFO: POST /api/auth/refresh 200 - 4ms - ::ffff:127.0.0.1
|
|
722
|
+
[2025-12-28 12:00:49] WARN: Invalid refresh token
|
|
723
|
+
Meta: {"statusCode":401}
|
|
724
|
+
[2025-12-28 12:00:49] WARN: POST /api/auth/refresh 401 - 2ms - ::ffff:127.0.0.1
|
|
725
|
+
[2025-12-28 12:00:49] INFO: POST /api/auth/avatar 200 - 6ms - ::ffff:127.0.0.1
|