@mini2/core 1.1.15 → 1.1.17

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/dist/app.d.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  import express, { Express } from 'express';
2
2
  import { IApp } from './interfaces/app.interface';
3
3
  import { IConfig } from './interfaces/config.interface';
4
+ import { IController } from './rest';
4
5
  import { Container } from 'inversify';
5
6
  declare class App implements IApp {
6
7
  private controllers;
7
8
  app: Express;
8
9
  container: Container;
9
- constructor(controllers: any[]);
10
+ constructor(controllers: IController[]);
10
11
  init(config: IConfig): Promise<void>;
11
12
  getApp(): express.Express;
12
- afterInit(): Promise<void>;
13
+ afterInit(standartErrorHandler?: boolean): Promise<void>;
13
14
  }
14
15
  export default App;
15
16
  //# sourceMappingURL=app.d.ts.map
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,SAAS,EAA2B,MAAM,WAAW,CAAC;AAI/D,cACM,GAAI,YAAW,IAAI;IAIyB,OAAO,CAAC,WAAW;IAHpE,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;gBAEoC,WAAW,EAAE,GAAG,EAAE;IAKrE,IAAI,CAAC,MAAM,EAAE,OAAO;IAyB1B,MAAM;IAMA,SAAS;CAGf;AAED,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAG5E,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAY,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,SAAS,EAA2B,MAAM,WAAW,CAAC;AAM/D,cACM,GAAI,YAAW,IAAI;IAIyB,OAAO,CAAC,WAAW;IAHpE,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;gBAEoC,WAAW,EAAE,WAAW,EAAE;IAM7E,IAAI,CAAC,MAAM,EAAE,OAAO;IAyB1B,MAAM;IAMA,SAAS,CAAC,oBAAoB,GAAC,OAAc;CAuBnD;AAED,eAAe,GAAG,CAAC"}
package/dist/app.js CHANGED
@@ -22,11 +22,14 @@ const rest_1 = require("./rest");
22
22
  const inversify_1 = require("inversify");
23
23
  const swagger_1 = require("./swagger");
24
24
  const types_1 = require("./types");
25
+ const container_1 = __importDefault(require("./container"));
26
+ const http_expection_1 = __importDefault(require("./expections/http.expection"));
25
27
  let App = class App {
26
28
  constructor(controllers) {
27
29
  this.controllers = controllers;
28
30
  this.app = (0, express_1.default)();
29
- this.container = new inversify_1.Container();
31
+ this.container = container_1.default;
32
+ console.log(this.controllers);
30
33
  }
31
34
  async init(config) {
32
35
  this.app.use(express_1.default.json());
@@ -56,8 +59,21 @@ let App = class App {
56
59
  getApp() {
57
60
  return this.app;
58
61
  }
59
- async afterInit() {
60
- console.log('afterInit');
62
+ async afterInit(standartErrorHandler = true) {
63
+ if (standartErrorHandler) {
64
+ this.app.use((error, _req, res, _next) => {
65
+ if (error instanceof http_expection_1.default) {
66
+ res.status(error.code).json(error.messageJson);
67
+ }
68
+ else {
69
+ console.error("Unexpected error:", error);
70
+ res.status(500).json({
71
+ errorId: 1,
72
+ message: "Some error happen",
73
+ });
74
+ }
75
+ });
76
+ }
61
77
  }
62
78
  };
63
79
  App = __decorate([
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,sDAA2C;AAC3C,gDAAwB;AACxB,oDAA4B;AAG5B,iCAAkC;AAClC,yCAA+D;AAC/D,uCAA+C;AAC/C,mCAAqC;AAErC,IACM,GAAG,GADT,MACM,GAAG;IAIR,YAAyD,WAAkB;QAAlB,gBAAW,GAAX,WAAW,CAAO;QAC1E,IAAI,CAAC,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAe;QACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACjC,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,IAAI,4BAAkB,CAAC;YACjD,KAAK,EAAE,MAAM,CAAC,eAAe;YAC7B,WAAW,EAAE,yBAAyB,MAAM,CAAC,eAAe,EAAE;YAC9D,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE;gBACR;oBACC,GAAG,EAAE,UAAU,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;oBAC3C,WAAW,EAAE,oBAAoB;iBACjC;aACD;YACD,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAA,eAAQ,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IACD,MAAM;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IAID,KAAK,CAAC,SAAS;QACd,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;CACD,CAAA;AA3CK,GAAG;IADR,IAAA,sBAAU,GAAE;IAKC,WAAA,IAAA,uBAAW,EAAC,kBAAU,CAAC,WAAW,CAAC,CAAA;;GAJ3C,GAAG,CA2CR;AAED,kBAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../app.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.HttpException = exports.container = exports.multiInject = exports.injectable = exports.inject = exports.Container = exports.App = void 0;
21
- // Ana Application sınıfı
21
+ // Main Application class
22
22
  var app_1 = require("./app");
23
23
  Object.defineProperty(exports, "App", { enumerable: true, get: function () { return __importDefault(app_1).default; } });
24
24
  // Container Class ve instance için
@@ -2,7 +2,7 @@ import { IConfig } from './config.interface';
2
2
  import { Express } from 'express';
3
3
  export interface IApp {
4
4
  init(config: IConfig): Promise<void>;
5
- afterInit(): Promise<void>;
5
+ afterInit(standartErrorHandler?: boolean): Promise<void>;
6
6
  getApp(): Express;
7
7
  }
8
8
  //# sourceMappingURL=app.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.interface.d.ts","sourceRoot":"","sources":["../../interfaces/app.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,MAAM,WAAW,IAAI;IACpB,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,IAAG,OAAO,CAAC;CACjB"}
1
+ {"version":3,"file":"app.interface.d.ts","sourceRoot":"","sources":["../../interfaces/app.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,MAAM,WAAW,IAAI;IACpB,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,oBAAoB,CAAC,EAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,IAAG,OAAO,CAAC;CACjB"}
@@ -0,0 +1,4 @@
1
+ import type { Config } from 'jest';
2
+ declare const config: Config;
3
+ export default config;
4
+ //# sourceMappingURL=jest.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.config.d.ts","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,QAAA,MAAM,MAAM,EAAE,MAiBb,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config = {
4
+ preset: 'ts-jest',
5
+ testEnvironment: 'node',
6
+ roots: ['<rootDir>/__tests__'],
7
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'json'],
8
+ transform: {
9
+ '^.+\\.tsx?$': [
10
+ 'ts-jest',
11
+ {
12
+ tsconfig: 'tsconfig.jest.json',
13
+ diagnostics: true,
14
+ isolatedModules: false,
15
+ },
16
+ ],
17
+ },
18
+ setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
19
+ testTimeout: 20000,
20
+ };
21
+ exports.default = config;
22
+ //# sourceMappingURL=jest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":";;AAEA,MAAM,MAAM,GAAW;IACrB,MAAM,EAAE,SAAS;IACjB,eAAe,EAAE,MAAM;IACvB,KAAK,EAAE,CAAC,qBAAqB,CAAC;IAC9B,oBAAoB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC;IACjD,SAAS,EAAE;QACT,aAAa,EAAE;YACb,SAAS;YACT;gBACE,QAAQ,EAAE,oBAAoB;gBAC9B,WAAW,EAAE,IAAI;gBACjB,eAAe,EAAE,KAAK;aACvB;SACF;KACF;IACD,kBAAkB,EAAE,CAAC,yBAAyB,CAAC;IAC/C,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ import 'reflect-metadata';
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../jest.setup.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ //# sourceMappingURL=jest.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["../jest.setup.ts"],"names":[],"mappings":";;AAAA,4BAA0B"}
@@ -1,4 +1,9 @@
1
1
  import { NextFunction, Response } from 'express';
2
2
  import { IAuthenticatedRequest } from '../interfaces/authenticated.interface';
3
+ /** Header tabanlı auth kontrolü (throw’lu):
4
+ * - x-authenticated: "true" | "1" | "yes" → zorunlu
5
+ * - x-user-id: (opsiyonel)
6
+ * - x-user-permissions: "admin,editor" (opsiyonel, virgülle ayrılmış)
7
+ */
3
8
  export declare const authenticatedMiddleware: (req: IAuthenticatedRequest, _res: Response, next: NextFunction) => void;
4
9
  //# sourceMappingURL=authenticated.middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authenticated.middleware.d.ts","sourceRoot":"","sources":["../../middlewares/authenticated.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,eAAO,MAAM,uBAAuB,GACnC,KAAK,qBAAqB,EAC1B,MAAM,QAAQ,EACd,MAAM,YAAY,SAOlB,CAAC"}
1
+ {"version":3,"file":"authenticated.middleware.d.ts","sourceRoot":"","sources":["../../middlewares/authenticated.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,KAAK,qBAAqB,EAC1B,MAAM,QAAQ,EACd,MAAM,YAAY,SAuBnB,CAAC"}
@@ -2,13 +2,28 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.authenticatedMiddleware = void 0;
4
4
  const http_expection_1 = require("../expections/http.expection");
5
+ /** Header tabanlı auth kontrolü (throw’lu):
6
+ * - x-authenticated: "true" | "1" | "yes" → zorunlu
7
+ * - x-user-id: (opsiyonel)
8
+ * - x-user-permissions: "admin,editor" (opsiyonel, virgülle ayrılmış)
9
+ */
5
10
  const authenticatedMiddleware = (req, _res, next) => {
6
- if (req.authenticated)
7
- next();
8
- else
9
- throw new http_expection_1.UnauthorizedException({
10
- message: 'Unauthorized',
11
- });
11
+ const isAuthHeader = String(req.headers['x-authenticated'] ?? '').trim().toLowerCase();
12
+ const isAuthenticated = isAuthHeader === 'true' || isAuthHeader === '1' || isAuthHeader === 'yes' || isAuthHeader === 'y';
13
+ if (!isAuthenticated) {
14
+ // 401 → throw (global error handler bunu 401’e map etmeli)
15
+ throw new http_expection_1.UnauthorizedException({ message: 'Unauthorized' });
16
+ }
17
+ const userId = req.headers['x-user-id'] || undefined;
18
+ const permsHeader = req.headers['x-user-permissions'] || '';
19
+ const permissions = permsHeader
20
+ .split(',')
21
+ .map((s) => s.trim())
22
+ .filter(Boolean);
23
+ // isteğe bağlı: request'e enjekte et
24
+ req.authenticated = true;
25
+ req.user = { id: userId, permissions };
26
+ next();
12
27
  };
13
28
  exports.authenticatedMiddleware = authenticatedMiddleware;
14
29
  //# sourceMappingURL=authenticated.middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authenticated.middleware.js","sourceRoot":"","sources":["../../middlewares/authenticated.middleware.ts"],"names":[],"mappings":";;;AACA,iEAAqE;AAG9D,MAAM,uBAAuB,GAAG,CACtC,GAA0B,EAC1B,IAAc,EACd,IAAkB,EACjB,EAAE;IACH,IAAI,GAAG,CAAC,aAAa;QAAE,IAAI,EAAE,CAAC;;QAE7B,MAAM,IAAI,sCAAqB,CAAC;YAC/B,OAAO,EAAE,cAAc;SACvB,CAAC,CAAC;AACL,CAAC,CAAC;AAVW,QAAA,uBAAuB,2BAUlC"}
1
+ {"version":3,"file":"authenticated.middleware.js","sourceRoot":"","sources":["../../middlewares/authenticated.middleware.ts"],"names":[],"mappings":";;;AACA,iEAAqE;AAGrE;;;;GAIG;AACI,MAAM,uBAAuB,GAAG,CACrC,GAA0B,EAC1B,IAAc,EACd,IAAkB,EAClB,EAAE;IACF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvF,MAAM,eAAe,GACnB,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,GAAG,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,GAAG,CAAC;IAEpG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,2DAA2D;QAC3D,MAAM,IAAI,sCAAqB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAY,IAAI,SAAS,CAAC;IACjE,MAAM,WAAW,GAAI,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAY,IAAI,EAAE,CAAC;IACxE,MAAM,WAAW,GAAG,WAAW;SAC5B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,qCAAqC;IACrC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;IACxB,GAAW,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAEhD,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AA1BW,QAAA,uBAAuB,2BA0BlC"}
@@ -1,7 +1,12 @@
1
1
  import { NextFunction, Request, Response } from 'express';
2
- export declare const authorizedMiddleware: (permissions: string[]) => (req: Request & {
3
- user: {
4
- permissions: string[];
2
+ /** Header tabanlı yetkilendirme (throw’lu):
3
+ * - required: gerekli permission listesi
4
+ * - Mevcut izinler önce req.user.permissions’tan,
5
+ * yoksa x-user-permissions header’ından alınır.
6
+ */
7
+ export declare const authorizedMiddleware: (required: string[]) => (req: Request & {
8
+ user?: {
9
+ permissions?: string[];
5
10
  };
6
11
  }, _res: Response, next: NextFunction) => void;
7
12
  //# sourceMappingURL=authorized.middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authorized.middleware.d.ts","sourceRoot":"","sources":["../../middlewares/authorized.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG1D,eAAO,MAAM,oBAAoB,GAAI,aAAa,MAAM,EAAE,MAExD,KAAK,OAAO,GAAG;IAAE,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,EAClD,MAAM,QAAQ,EACd,MAAM,YAAY,SAWnB,CAAC"}
1
+ {"version":3,"file":"authorized.middleware.d.ts","sourceRoot":"","sources":["../../middlewares/authorized.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG1D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,EAAE,MAEnD,KAAK,OAAO,GAAG;IAAE,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,EACpD,MAAM,QAAQ,EACd,MAAM,YAAY,SAkBrB,CAAC"}
@@ -2,14 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.authorizedMiddleware = void 0;
4
4
  const http_expection_1 = require("../expections/http.expection");
5
- const authorizedMiddleware = (permissions) => {
5
+ /** Header tabanlı yetkilendirme (throw’lu):
6
+ * - required: gerekli permission listesi
7
+ * - Mevcut izinler önce req.user.permissions’tan,
8
+ * yoksa x-user-permissions header’ından alınır.
9
+ */
10
+ const authorizedMiddleware = (required) => {
6
11
  return (req, _res, next) => {
7
- if (permissions.some((permission) => req.user.permissions.includes(permission)))
8
- next();
9
- else
10
- throw new http_expection_1.ForbiddenException({
11
- message: 'Forbidden',
12
- });
12
+ const fromReq = req.user?.permissions ?? [];
13
+ const fromHeader = String(req.headers['x-user-permissions'] ?? '')
14
+ .split(',')
15
+ .map((s) => s.trim())
16
+ .filter(Boolean);
17
+ const current = new Set([...fromReq, ...fromHeader]);
18
+ const ok = required.length === 0 || required.some((perm) => current.has(perm));
19
+ if (!ok) {
20
+ // 403 → throw (global error handler bunu 403’e map etmeli)
21
+ throw new http_expection_1.ForbiddenException({ message: 'Forbidden' });
22
+ }
23
+ next();
13
24
  };
14
25
  };
15
26
  exports.authorizedMiddleware = authorizedMiddleware;
@@ -1 +1 @@
1
- {"version":3,"file":"authorized.middleware.js","sourceRoot":"","sources":["../../middlewares/authorized.middleware.ts"],"names":[],"mappings":";;;AACA,iEAAkE;AAE3D,MAAM,oBAAoB,GAAG,CAAC,WAAqB,EAAE,EAAE;IAC7D,OAAO,CACN,GAAkD,EAClD,IAAc,EACd,IAAkB,EACjB,EAAE;QACH,IACC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE3E,IAAI,EAAE,CAAC;;YAEP,MAAM,IAAI,mCAAkB,CAAC;gBAC5B,OAAO,EAAE,WAAW;aACpB,CAAC,CAAC;IACL,CAAC,CAAC;AACH,CAAC,CAAC;AAfW,QAAA,oBAAoB,wBAe/B"}
1
+ {"version":3,"file":"authorized.middleware.js","sourceRoot":"","sources":["../../middlewares/authorized.middleware.ts"],"names":[],"mappings":";;;AACA,iEAAkE;AAElE;;;;GAIG;AACI,MAAM,oBAAoB,GAAG,CAAC,QAAkB,EAAE,EAAE;IACzD,OAAO,CACL,GAAoD,EACpD,IAAc,EACd,IAAkB,EAClB,EAAE;QACF,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;aAC/D,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/E,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,2DAA2D;YAC3D,MAAM,IAAI,mCAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,oBAAoB,wBAsB/B"}
@@ -1,4 +1,9 @@
1
1
  import type { RequestHandler } from 'express';
2
- declare const validationMiddleware: <T extends object>(type: new () => T, value: "body" | "query" | "params", skipMissingProperties?: boolean, whitelist?: boolean, forbidNonWhitelisted?: boolean) => RequestHandler;
3
- export default validationMiddleware;
2
+ /**
3
+ * validationMiddleware(ValidationClass, 'body' | 'query' | 'params')
4
+ * - Orijinal kaynakları (req.body/query/params) ÜZERİNE YAZMAZ.
5
+ * - Doğrulanmış veriyi şu alanlara koyar: req.validatedBody / req.validatedQuery / req.validatedParams
6
+ * - Hata varsa 400 döner.
7
+ */
8
+ export default function validationMiddleware(ValidationClass: new (...args: any[]) => any, type: 'body' | 'query' | 'params'): RequestHandler;
4
9
  //# sourceMappingURL=validation.middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.middleware.d.ts","sourceRoot":"","sources":["../../middlewares/validation.middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAmC,MAAM,SAAS,CAAC;AAI/E,QAAA,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,EAC7C,MAAM,UAAU,CAAC,EACjB,OAAO,MAAM,GAAG,OAAO,GAAG,QAAQ,EAClC,+BAA6B,EAC7B,mBAAgB,EAChB,8BAA2B,KACzB,cA6DF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"validation.middleware.d.ts","sourceRoot":"","sources":["../../middlewares/validation.middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAI/E;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC5C,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAChC,cAAc,CAoDhB"}
@@ -1,65 +1,62 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = validationMiddleware;
6
4
  const class_transformer_1 = require("class-transformer");
7
5
  const class_validator_1 = require("class-validator");
8
- const http_expection_1 = __importDefault(require("../expections/http.expection"));
9
- const validationMiddleware = (type, value, skipMissingProperties = false, whitelist = true, forbidNonWhitelisted = true) => {
10
- return (req, _res, next) => {
11
- // Query parametrelerinde boolean değerleri düzgün işle
12
- if (value === 'query' && req.query) {
13
- Object.keys(req.query).forEach((key) => {
14
- if (req.query[key] === 'true')
15
- req.query[key] = true;
16
- if (req.query[key] === 'false')
17
- req.query[key] = false;
6
+ /**
7
+ * validationMiddleware(ValidationClass, 'body' | 'query' | 'params')
8
+ * - Orijinal kaynakları (req.body/query/params) ÜZERİNE YAZMAZ.
9
+ * - Doğrulanmış veriyi şu alanlara koyar: req.validatedBody / req.validatedQuery / req.validatedParams
10
+ * - Hata varsa 400 döner.
11
+ */
12
+ function validationMiddleware(ValidationClass, type) {
13
+ const handler = async (req, res, next) => {
14
+ try {
15
+ const source = type === 'body' ? req.body :
16
+ type === 'query' ? req.query :
17
+ req.params;
18
+ // class-transformer
19
+ const instance = (0, class_transformer_1.plainToInstance)(ValidationClass, source, {
20
+ enableImplicitConversion: true,
21
+ exposeDefaultValues: true,
22
+ });
23
+ // class-validator
24
+ const errors = await (0, class_validator_1.validate)(instance, {
25
+ whitelist: true,
26
+ forbidNonWhitelisted: false,
27
+ skipMissingProperties: false,
28
+ validationError: { target: false, value: false },
18
29
  });
19
- }
20
- // 🔽 Eğer dosya alanları varsa, req.body'ye dahil et
21
- if (value === 'body' && req.files) {
22
- const files = req.files;
23
- for (const field in files) {
24
- if (Array.isArray(files[field]) && files[field].length > 0) {
25
- req.body[field] = files[field][0]; // sadece ilk dosyayı al
26
- }
27
- }
28
- }
29
- const data = (0, class_transformer_1.plainToInstance)(type, req[value], {
30
- enableImplicitConversion: true, // Otomatik tip dönüşümü için
31
- exposeDefaultValues: true,
32
- });
33
- (0, class_validator_1.validate)(data, {
34
- skipMissingProperties,
35
- whitelist,
36
- forbidNonWhitelisted,
37
- }).then((errors) => {
38
30
  if (errors.length > 0) {
39
- const messages = errors.map((error) => {
40
- const error1 = {
41
- field: error.property,
42
- errors: [],
43
- };
44
- for (const key of Object.keys(error?.constraints || {})) {
45
- if (error.constraints?.[key]) {
46
- error1.errors.push(error.constraints[key]);
47
- }
48
- }
49
- return error1;
50
- });
51
- next(new http_expection_1.default({
52
- errorId: 1,
31
+ res.status(400).json({
32
+ ok: false,
53
33
  message: 'Validation error',
54
- validationErrors: messages,
55
- }, 400));
56
- }
57
- else {
58
- req[value] = data;
59
- next();
34
+ errors: errors.map(e => ({
35
+ property: e.property,
36
+ constraints: e.constraints,
37
+ })),
38
+ });
39
+ return; // <-- explicit return
60
40
  }
61
- });
41
+ // validated* alanlarına yaz
42
+ if (type === 'body')
43
+ req.validatedBody = instance;
44
+ if (type === 'query')
45
+ req.validatedQuery = instance;
46
+ if (type === 'params')
47
+ req.validatedParams = instance;
48
+ next();
49
+ return; // <-- explicit return
50
+ }
51
+ catch (err) {
52
+ res.status(400).json({
53
+ ok: false,
54
+ message: 'Validation middleware failed',
55
+ error: err?.message ?? String(err),
56
+ });
57
+ return; // <-- explicit return
58
+ }
62
59
  };
63
- };
64
- exports.default = validationMiddleware;
60
+ return handler; // <-- handler'ı açıkça döndür
61
+ }
65
62
  //# sourceMappingURL=validation.middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.middleware.js","sourceRoot":"","sources":["../../middlewares/validation.middleware.ts"],"names":[],"mappings":";;;;;AAAA,yDAAoD;AACpD,qDAA4D;AAG5D,kFAAyD;AAEzD,MAAM,oBAAoB,GAAG,CAC5B,IAAiB,EACjB,KAAkC,EAClC,qBAAqB,GAAG,KAAK,EAC7B,SAAS,GAAG,IAAI,EAChB,oBAAoB,GAAG,IAAI,EACV,EAAE;IACnB,OAAO,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB,EAAE,EAAE;QAC3D,uDAAuD;QACvD,IAAI,KAAK,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM;oBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAW,CAAC;gBAC5D,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO;oBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAY,CAAC;YAC/D,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,IAAI,KAAK,KAAK,MAAM,IAAK,GAAW,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAI,GAAW,CAAC,KAA8B,CAAC;YAC1D,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB;gBAC5D,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,mCAAe,EAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;YAC9C,wBAAwB,EAAE,IAAI,EAAE,6BAA6B;YAC7D,mBAAmB,EAAE,IAAI;SACzB,CAAC,CAAC;QAEH,IAAA,0BAAQ,EAAC,IAAc,EAAE;YACxB,qBAAqB;YACrB,SAAS;YACT,oBAAoB;SACpB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAyB,EAAE,EAAE;YACrC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAuB,MAAM,CAAC,GAAG,CAC9C,CAAC,KAAsB,EAAE,EAAE;oBAC1B,MAAM,MAAM,GAAqB;wBAChC,KAAK,EAAE,KAAK,CAAC,QAAQ;wBACrB,MAAM,EAAE,EAAE;qBACV,CAAC;oBACF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;wBACzD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC5C,CAAC;oBACF,CAAC;oBACD,OAAO,MAAM,CAAC;gBACf,CAAC,CACD,CAAC;gBACF,IAAI,CACH,IAAI,wBAAa,CAChB;oBACC,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,kBAAkB;oBAC3B,gBAAgB,EAAE,QAAQ;iBAC1B,EACD,GAAG,CACH,CACD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,KAAK,CAAC,GAAG,IAAW,CAAC;gBACzB,IAAI,EAAE,CAAC;YACR,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"validation.middleware.js","sourceRoot":"","sources":["../../middlewares/validation.middleware.ts"],"names":[],"mappings":";;AAWA,uCAuDC;AAhED,yDAAoD;AACpD,qDAA2C;AAE3C;;;;;GAKG;AACH,SAAwB,oBAAoB,CAC1C,eAA4C,EAC5C,IAAiC;IAEjC,MAAM,OAAO,GAAmB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;QACvG,IAAI,CAAC;YACH,MAAM,MAAM,GACV,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACX,GAAG,CAAC,MAAM,CAAC;YAEhC,oBAAoB;YACpB,MAAM,QAAQ,GAAG,IAAA,mCAAe,EAAC,eAAe,EAAE,MAAM,EAAE;gBACxD,wBAAwB,EAAE,IAAI;gBAC9B,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,QAAkB,EAAE;gBAChD,SAAS,EAAE,IAAI;gBACf,oBAAoB,EAAE,KAAK;gBAC3B,qBAAqB,EAAE,KAAK;gBAC5B,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;aACjD,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,EAAE,EAAE,KAAK;oBACT,OAAO,EAAE,kBAAkB;oBAC3B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;qBAC3B,CAAC,CAAC;iBACJ,CAAC,CAAC;gBACH,OAAO,CAAC,sBAAsB;YAChC,CAAC;YAED,4BAA4B;YAC5B,IAAI,IAAI,KAAK,MAAM;gBAAK,GAAW,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC7D,IAAI,IAAI,KAAK,OAAO;gBAAI,GAAW,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC9D,IAAI,IAAI,KAAK,QAAQ;gBAAG,GAAW,CAAC,eAAe,GAAG,QAAQ,CAAC;YAE/D,IAAI,EAAE,CAAC;YACP,OAAO,CAAC,sBAAsB;QAChC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,8BAA8B;gBACvC,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;aACnC,CAAC,CAAC;YACH,OAAO,CAAC,sBAAsB;QAChC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC,CAAC,8BAA8B;AAChD,CAAC"}
package/dist/rest.d.ts CHANGED
@@ -1,22 +1,14 @@
1
1
  import 'reflect-metadata';
2
2
  import express, { type Express } from 'express';
3
- import type { Request, Response, NextFunction, IRouter, RequestHandler } from 'express';
4
- import { IResponseBuilder } from './response-builder';
3
+ import type { IRouter, RequestHandler } from 'express';
5
4
  export type Method = 'get' | 'post' | 'put' | 'delete' | 'patch';
6
- export declare const keyOfPath: unique symbol;
7
- export declare const keyOfName: unique symbol;
8
- export declare const keyOfModuleName: unique symbol;
9
- export declare const keyOfRouteOptions: unique symbol;
10
- export declare const keyOfReq: unique symbol;
11
- export declare const keyOfRes: unique symbol;
12
- export declare const keyOfNext: unique symbol;
13
- export type ControllerMethodSignature = (...args: (Request | Response | NextFunction)[]) => IResponseBuilder | Promise<IResponseBuilder>;
14
5
  export type IValidation = {
15
6
  body?: any;
16
7
  params?: any;
17
8
  query?: any;
18
9
  };
19
10
  export type IExtraData = Map<string, any>;
11
+ export type ParameterSlot = 'req' | 'res' | 'next' | 'body' | 'query' | 'params';
20
12
  export interface RouteOptions {
21
13
  method?: Method;
22
14
  path?: string;
@@ -27,8 +19,58 @@ export interface RouteOptions {
27
19
  extraData?: IExtraData;
28
20
  name?: string;
29
21
  }
22
+ export interface RouteDefinition {
23
+ methodName: string;
24
+ method?: Method;
25
+ path?: string;
26
+ name?: string;
27
+ validations: IValidation[];
28
+ permissions: string[];
29
+ authenticated?: boolean;
30
+ otherHttpMiddlewares: RequestHandler[];
31
+ extraData?: IExtraData;
32
+ parameterIndices?: Partial<Record<ParameterSlot, number>>;
33
+ }
34
+ export interface RouteDefinitions {
35
+ basePath: string;
36
+ controllerName?: string;
37
+ moduleName?: string;
38
+ routes: RouteDefinition[];
39
+ }
40
+ export interface IControllerClassConstructor {
41
+ new (...args: any[]): any;
42
+ __routeDefinitions?: RouteDefinitions;
43
+ }
44
+ export interface IController {
45
+ moduleName: string;
46
+ }
47
+ export declare class Controller implements IController {
48
+ moduleName: string;
49
+ RouteManager: RouteDefinitions;
50
+ constructor(moduleName?: string);
51
+ }
52
+ export declare class RouteRegistry {
53
+ private static getCtor;
54
+ static getRouteDefinitions(target: any): RouteDefinitions;
55
+ static setBasePath(constructor: IControllerClassConstructor, basePath: string, controllerName?: string, moduleName?: string): void;
56
+ static getOrCreateRoute(target: any, methodName: string): RouteDefinition;
57
+ static updateRoute(target: any, methodName: string, updates: Partial<RouteDefinition>): void;
58
+ static setParameterIndex(target: any, methodName: string, slot: ParameterSlot, index: number): void;
59
+ static getRoutes(target: any): RouteDefinition[];
60
+ static getBasePathOf(target: any): string;
61
+ }
62
+ export declare const keyOfPath: unique symbol;
63
+ export declare const keyOfName: unique symbol;
64
+ export declare const keyOfModuleName: unique symbol;
65
+ export declare const keyOfRouteOptions: unique symbol;
66
+ export declare const keyOfReq: unique symbol;
67
+ export declare const keyOfRes: unique symbol;
68
+ export declare const keyOfNext: unique symbol;
69
+ export declare const keyOfBody: unique symbol;
70
+ export declare const keyOfQuery: unique symbol;
71
+ export declare const keyOfParams: unique symbol;
30
72
  export declare function controller(path: string, name?: string, moduleName?: string): <T extends {
31
- new (...args: any[]): {};
73
+ new (...args: any[]): Controller;
32
74
  }>(constructor: T) => T;
33
75
  export declare function httpMethod(newOptions: RouteOptions): (target: any, propertyKey: string, _descriptor: PropertyDescriptor) => void;
34
76
  export declare function get(path: string, name?: string): (target: any, propertyKey: string, _descriptor: PropertyDescriptor) => void;
@@ -39,11 +81,14 @@ export declare function patch(path: string, name?: string): (target: any, proper
39
81
  export declare function validate(options: IValidation | IValidation[]): (target: any, propertyKey: string, _descriptor: PropertyDescriptor) => void;
40
82
  export declare function authenticated(value?: boolean): (target: any, propertyKey: string, _descriptor: PropertyDescriptor) => void;
41
83
  export declare function authorized(value: string | string[]): (target: any, propertyKey: string, _descriptor: PropertyDescriptor) => void;
42
- export declare function middleware(middlewares: RequestHandler): (target: any, propertyKey: string, _descriptor: PropertyDescriptor) => void;
84
+ export declare function middleware(mw: RequestHandler): (target: any, propertyKey: string, _descriptor: PropertyDescriptor) => void;
43
85
  export declare function custom<T>(key: string, value: T): (target: any, propertyKey: string, _descriptor: PropertyDescriptor) => void;
44
- export declare function req(): (target: any, propertyKey: string, parameterIndex: number) => void;
45
- export declare function res(): (target: any, propertyKey: string, parameterIndex: number) => void;
46
- export declare function next(): (target: any, propertyKey: string, parameterIndex: number) => void;
47
- export declare function buildRouterFromController(controllerClass: any): IRouter;
48
- export declare function buildApp(app: Express, controllers: any[]): express.Express;
86
+ export declare function req(): (t: any, k: string, i: number) => void;
87
+ export declare function res(): (t: any, k: string, i: number) => void;
88
+ export declare function next(): (t: any, k: string, i: number) => void;
89
+ export declare function body(): (t: any, k: string, i: number) => void;
90
+ export declare function query(): (t: any, k: string, i: number) => void;
91
+ export declare function params(): (t: any, k: string, i: number) => void;
92
+ export declare function buildRouterFromController(controllerInstance: IController): IRouter;
93
+ export declare function buildApp(app: Express, controllers: IController[]): express.Express;
49
94
  //# sourceMappingURL=rest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../rest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../rest.ts"],"names":[],"mappings":"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"}
package/dist/rest.js CHANGED
@@ -3,7 +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.keyOfNext = exports.keyOfRes = exports.keyOfReq = exports.keyOfRouteOptions = exports.keyOfModuleName = exports.keyOfName = exports.keyOfPath = void 0;
6
+ exports.keyOfParams = exports.keyOfQuery = exports.keyOfBody = exports.keyOfNext = exports.keyOfRes = exports.keyOfReq = exports.keyOfRouteOptions = exports.keyOfModuleName = exports.keyOfName = exports.keyOfPath = exports.RouteRegistry = exports.Controller = void 0;
7
7
  exports.controller = controller;
8
8
  exports.httpMethod = httpMethod;
9
9
  exports.get = get;
@@ -19,6 +19,9 @@ exports.custom = custom;
19
19
  exports.req = req;
20
20
  exports.res = res;
21
21
  exports.next = next;
22
+ exports.body = body;
23
+ exports.query = query;
24
+ exports.params = params;
22
25
  exports.buildRouterFromController = buildRouterFromController;
23
26
  exports.buildApp = buildApp;
24
27
  require("reflect-metadata");
@@ -27,208 +30,303 @@ const array_unify_1 = require("./utils/array-unify");
27
30
  const validation_middleware_1 = __importDefault(require("./middlewares/validation.middleware"));
28
31
  const authenticated_middleware_1 = require("./middlewares/authenticated.middleware");
29
32
  const authorized_middleware_1 = require("./middlewares/authorized.middleware");
33
+ class Controller {
34
+ constructor(moduleName) {
35
+ const ctor = this.constructor;
36
+ const metaModuleName = Reflect.getMetadata(exports.keyOfModuleName, ctor);
37
+ this.moduleName = moduleName ?? metaModuleName ?? ctor.name;
38
+ this.RouteManager = RouteRegistry.getRouteDefinitions(ctor);
39
+ }
40
+ }
41
+ exports.Controller = Controller;
42
+ /* ------------------------------------------------------------------ */
43
+ /* RouteRegistry */
44
+ /* ------------------------------------------------------------------ */
45
+ class RouteRegistry {
46
+ static getCtor(target) {
47
+ return typeof target === 'function' ? target : target.constructor;
48
+ }
49
+ static getRouteDefinitions(target) {
50
+ const ctor = this.getCtor(target);
51
+ if (!ctor.__routeDefinitions) {
52
+ ctor.__routeDefinitions = { basePath: '', routes: [] };
53
+ }
54
+ return ctor.__routeDefinitions;
55
+ }
56
+ static setBasePath(constructor, basePath, controllerName, moduleName) {
57
+ const defs = this.getRouteDefinitions(constructor);
58
+ defs.basePath = basePath;
59
+ if (controllerName !== undefined)
60
+ defs.controllerName = controllerName;
61
+ if (moduleName !== undefined)
62
+ defs.moduleName = moduleName;
63
+ }
64
+ static getOrCreateRoute(target, methodName) {
65
+ const defs = this.getRouteDefinitions(target);
66
+ let route = defs.routes.find(r => r.methodName === methodName);
67
+ if (!route) {
68
+ route = {
69
+ methodName,
70
+ validations: [],
71
+ permissions: [],
72
+ otherHttpMiddlewares: [],
73
+ parameterIndices: {},
74
+ };
75
+ defs.routes.push(route);
76
+ }
77
+ return route;
78
+ }
79
+ static updateRoute(target, methodName, updates) {
80
+ const route = this.getOrCreateRoute(target, methodName);
81
+ if (updates.validations && updates.validations.length) {
82
+ route.validations = [...route.validations, ...updates.validations];
83
+ }
84
+ if (updates.permissions && updates.permissions.length) {
85
+ route.permissions = Array.from(new Set([...(route.permissions ?? []), ...updates.permissions]));
86
+ }
87
+ if (updates.otherHttpMiddlewares && updates.otherHttpMiddlewares.length) {
88
+ route.otherHttpMiddlewares = Array.from(new Set([...(route.otherHttpMiddlewares ?? []), ...updates.otherHttpMiddlewares]));
89
+ }
90
+ if (updates.method !== undefined)
91
+ route.method = updates.method;
92
+ if (updates.path !== undefined)
93
+ route.path = updates.path;
94
+ if (updates.name !== undefined)
95
+ route.name = updates.name;
96
+ if (updates.authenticated !== undefined)
97
+ route.authenticated = updates.authenticated;
98
+ if (updates.extraData !== undefined)
99
+ route.extraData = updates.extraData;
100
+ if (updates.parameterIndices) {
101
+ route.parameterIndices = { ...(route.parameterIndices ?? {}), ...updates.parameterIndices };
102
+ }
103
+ }
104
+ static setParameterIndex(target, methodName, slot, index) {
105
+ const route = this.getOrCreateRoute(target, methodName);
106
+ route.parameterIndices = { ...(route.parameterIndices ?? {}), [slot]: index };
107
+ }
108
+ static getRoutes(target) {
109
+ return this.getRouteDefinitions(target).routes;
110
+ }
111
+ static getBasePathOf(target) {
112
+ return this.getRouteDefinitions(target).basePath;
113
+ }
114
+ }
115
+ exports.RouteRegistry = RouteRegistry;
116
+ /* ------------------------------------------------------------------ */
117
+ /* Metadata Keys */
118
+ /* ------------------------------------------------------------------ */
30
119
  exports.keyOfPath = Symbol('path');
31
- exports.keyOfName = Symbol("name");
32
- exports.keyOfModuleName = Symbol("moduleName");
120
+ exports.keyOfName = Symbol('name');
121
+ exports.keyOfModuleName = Symbol('moduleName');
33
122
  exports.keyOfRouteOptions = Symbol('routeOptions');
34
123
  exports.keyOfReq = Symbol('req');
35
124
  exports.keyOfRes = Symbol('res');
36
125
  exports.keyOfNext = Symbol('next');
126
+ exports.keyOfBody = Symbol('body');
127
+ exports.keyOfQuery = Symbol('query');
128
+ exports.keyOfParams = Symbol('params');
129
+ /* ------------------------------------------------------------------ */
130
+ /* Decorators */
131
+ /* ------------------------------------------------------------------ */
37
132
  function controller(path, name, moduleName) {
38
133
  return function (constructor) {
39
- if (!name) {
40
- name = path;
41
- }
42
- if (!moduleName) {
43
- moduleName = name;
44
- }
134
+ const resolvedName = name ?? path;
135
+ const resolvedModuleName = moduleName ?? resolvedName;
136
+ // metadata'yı DOĞRUDAN orijinal constructor'a yaz
45
137
  Reflect.defineMetadata(exports.keyOfPath, path, constructor);
46
- Reflect.defineMetadata(exports.keyOfName, name, constructor);
47
- Reflect.defineMetadata(exports.keyOfModuleName, moduleName, constructor);
138
+ Reflect.defineMetadata(exports.keyOfName, resolvedName, constructor);
139
+ Reflect.defineMetadata(exports.keyOfModuleName, resolvedModuleName, constructor);
140
+ // registry'yi orijinal constructor için güncelle
141
+ RouteRegistry.setBasePath(constructor, path, resolvedName, resolvedModuleName);
142
+ // ÖNEMLİ: sınıfı sarmalama! aynı constructor'ı döndür
48
143
  return constructor;
49
144
  };
50
145
  }
51
146
  function httpMethod(newOptions) {
52
147
  return function (target, propertyKey, _descriptor) {
53
148
  const existingOptions = Reflect.getMetadata(exports.keyOfRouteOptions, target, propertyKey) || {};
54
- const method = newOptions.method || existingOptions.method;
55
- const path = newOptions.path || existingOptions.path;
56
- const validations = (0, array_unify_1.arrayUnify)((newOptions.validations || []).concat(existingOptions.validations || []));
57
- const permissions = (0, array_unify_1.arrayUnify)((newOptions.permissions || []).concat(existingOptions.permissions || []));
58
- const authenticated = newOptions.authenticated !== undefined ? newOptions.authenticated : existingOptions.authenticated !== undefined ? existingOptions.authenticated : undefined;
59
- const otherHttpMiddlewares = (0, array_unify_1.arrayUnify)((newOptions.otherHttpMiddlewares || []).concat(existingOptions.otherHttpMiddlewares || []));
60
- const name = newOptions.name || existingOptions.name;
61
- const extraData = existingOptions.extraData || new Map();
149
+ const method = newOptions.method ?? existingOptions.method;
150
+ const path = newOptions.path ?? existingOptions.path;
151
+ const validations = (0, array_unify_1.arrayUnify)((newOptions.validations ?? []).concat(existingOptions.validations ?? []));
152
+ const permissions = (0, array_unify_1.arrayUnify)((newOptions.permissions ?? []).concat(existingOptions.permissions ?? []));
153
+ const authenticated = newOptions.authenticated !== undefined ? newOptions.authenticated : existingOptions.authenticated;
154
+ const otherHttpMiddlewares = (0, array_unify_1.arrayUnify)((newOptions.otherHttpMiddlewares ?? []).concat(existingOptions.otherHttpMiddlewares ?? []));
155
+ const name = newOptions.name ?? existingOptions.name;
156
+ const extraData = existingOptions.extraData ?? new Map();
62
157
  if (newOptions.extraData) {
63
158
  const newOptionsExtraData = newOptions.extraData;
64
- for (const newOptionsExtraDataKey of Array.from(newOptionsExtraData.keys())) {
65
- const currentValue = extraData.get(newOptionsExtraDataKey);
66
- if (!currentValue) {
67
- extraData.set(newOptionsExtraDataKey, newOptionsExtraData.get(newOptionsExtraDataKey));
159
+ for (const k of Array.from(newOptionsExtraData.keys())) {
160
+ const currentValue = extraData.get(k);
161
+ if (currentValue === undefined) {
162
+ extraData.set(k, newOptionsExtraData.get(k));
68
163
  continue;
69
164
  }
70
- const newValue = newOptionsExtraData.get(newOptionsExtraDataKey);
71
- let newValueFinal = currentValue;
165
+ const newValue = newOptionsExtraData.get(k);
166
+ let finalValue = currentValue;
72
167
  if (Array.isArray(currentValue)) {
73
- newValueFinal = (0, array_unify_1.arrayUnify)([...currentValue, ...newValue]);
168
+ finalValue = (0, array_unify_1.arrayUnify)([...currentValue, ...newValue]);
74
169
  }
75
- else if (typeof currentValue === "object") {
76
- newValueFinal = { ...currentValue, ...newValue };
170
+ else if (currentValue !== null &&
171
+ typeof currentValue === 'object' &&
172
+ Object.getPrototypeOf(currentValue) === Object.prototype &&
173
+ newValue !== null &&
174
+ typeof newValue === 'object' &&
175
+ Object.getPrototypeOf(newValue) === Object.prototype) {
176
+ finalValue = { ...currentValue, ...newValue };
77
177
  }
78
178
  else {
79
- newValueFinal = newValue;
179
+ finalValue = newValue;
80
180
  }
81
- extraData.set(newOptionsExtraDataKey, newValueFinal);
181
+ extraData.set(k, finalValue);
82
182
  }
83
183
  }
84
- const mergedOptions = {
85
- method,
86
- path,
87
- validations,
88
- permissions,
89
- authenticated,
90
- otherHttpMiddlewares,
91
- name,
92
- extraData,
93
- };
184
+ const mergedOptions = {};
185
+ if (method !== undefined)
186
+ mergedOptions.method = method;
187
+ if (path !== undefined)
188
+ mergedOptions.path = path;
189
+ if (validations.length)
190
+ mergedOptions.validations = validations;
191
+ if (permissions.length)
192
+ mergedOptions.permissions = permissions;
193
+ if (authenticated !== undefined)
194
+ mergedOptions.authenticated = authenticated;
195
+ if (otherHttpMiddlewares.length)
196
+ mergedOptions.otherHttpMiddlewares = otherHttpMiddlewares;
197
+ if (name !== undefined)
198
+ mergedOptions.name = name;
199
+ if (extraData && extraData.size > 0)
200
+ mergedOptions.extraData = extraData;
201
+ // NOT: method/param dekoratör metadataları **prototype** üzerinde tutuluyor
94
202
  Reflect.defineMetadata(exports.keyOfRouteOptions, mergedOptions, target, propertyKey);
203
+ const updates = {
204
+ ...(validations.length ? { validations } : {}),
205
+ ...(permissions.length ? { permissions } : {}),
206
+ ...(otherHttpMiddlewares.length ? { otherHttpMiddlewares } : {}),
207
+ };
208
+ if (method !== undefined)
209
+ updates.method = method;
210
+ if (path !== undefined)
211
+ updates.path = path;
212
+ if (name !== undefined)
213
+ updates.name = name;
214
+ if (authenticated !== undefined)
215
+ updates.authenticated = authenticated;
216
+ if (extraData && extraData.size > 0)
217
+ updates.extraData = extraData;
218
+ RouteRegistry.updateRoute(target, propertyKey, updates);
95
219
  };
96
220
  }
97
- function get(path, name) {
98
- return httpMethod({ path, method: 'get', name: name || path });
99
- }
100
- function post(path, name) {
101
- return httpMethod({ path, method: 'post', name: name || path });
102
- }
103
- function put(path, name) {
104
- return httpMethod({ path, method: 'put', name: name || path });
105
- }
106
- function del(path, name) {
107
- return httpMethod({ path, method: 'delete', name: name || path });
108
- }
109
- function patch(path, name) {
110
- return httpMethod({ path, method: 'patch', name: name || path });
111
- }
221
+ /* HTTP method sugar */
222
+ function get(path, name) { return httpMethod({ path, method: 'get', name: name ?? path }); }
223
+ function post(path, name) { return httpMethod({ path, method: 'post', name: name ?? path }); }
224
+ function put(path, name) { return httpMethod({ path, method: 'put', name: name ?? path }); }
225
+ function del(path, name) { return httpMethod({ path, method: 'delete', name: name ?? path }); }
226
+ function patch(path, name) { return httpMethod({ path, method: 'patch', name: name ?? path }); }
227
+ /* Sugar decorators */
112
228
  function validate(options) {
113
- return httpMethod({
114
- validations: Array.isArray(options) ? options : [options],
115
- });
229
+ return httpMethod({ validations: Array.isArray(options) ? options : [options] });
116
230
  }
117
231
  function authenticated(value = true) {
118
232
  return httpMethod({ authenticated: value });
119
233
  }
120
234
  function authorized(value) {
121
- return httpMethod({
122
- permissions: Array.isArray(value) ? value : [value],
123
- });
235
+ return httpMethod({ permissions: Array.isArray(value) ? value : [value] });
124
236
  }
125
- function middleware(middlewares) {
126
- return httpMethod({ otherHttpMiddlewares: [middlewares] });
237
+ function middleware(mw) {
238
+ return httpMethod({ otherHttpMiddlewares: [mw] });
127
239
  }
128
240
  function custom(key, value) {
129
241
  const extraData = new Map();
130
242
  extraData.set(key, value);
131
- return httpMethod({ extraData });
132
- }
133
- // Param decorator'ları
134
- function req() {
135
- return function (target, propertyKey, parameterIndex) {
136
- Reflect.defineMetadata(exports.keyOfReq, parameterIndex, target, propertyKey);
137
- };
138
- }
139
- function res() {
140
- return function (target, propertyKey, parameterIndex) {
141
- Reflect.defineMetadata(exports.keyOfRes, parameterIndex, target, propertyKey);
142
- };
143
- }
144
- function next() {
145
- return function (target, propertyKey, parameterIndex) {
146
- Reflect.defineMetadata(exports.keyOfNext, parameterIndex, target, propertyKey);
147
- };
243
+ return httpMethod({ extraData: extraData });
148
244
  }
149
- function buildRouterFromController(controllerClass) {
150
- const path = Reflect.getMetadata(exports.keyOfPath, controllerClass.constructor);
151
- if (!path) {
245
+ /* Param dekoratörleri (prototype'a yazar) */
246
+ function req() { return (t, k, i) => { Reflect.defineMetadata(exports.keyOfReq, i, t, k); RouteRegistry.setParameterIndex(t, k, 'req', i); }; }
247
+ function res() { return (t, k, i) => { Reflect.defineMetadata(exports.keyOfRes, i, t, k); RouteRegistry.setParameterIndex(t, k, 'res', i); }; }
248
+ function next() { return (t, k, i) => { Reflect.defineMetadata(exports.keyOfNext, i, t, k); RouteRegistry.setParameterIndex(t, k, 'next', i); }; }
249
+ function body() { return (t, k, i) => { Reflect.defineMetadata(exports.keyOfBody, i, t, k); RouteRegistry.setParameterIndex(t, k, 'body', i); }; }
250
+ function query() { return (t, k, i) => { Reflect.defineMetadata(exports.keyOfQuery, i, t, k); RouteRegistry.setParameterIndex(t, k, 'query', i); }; }
251
+ function params() { return (t, k, i) => { Reflect.defineMetadata(exports.keyOfParams, i, t, k); RouteRegistry.setParameterIndex(t, k, 'params', i); }; }
252
+ /* ------------------------------------------------------------------ */
253
+ /* Router Builder (metadata'yı prototype'tan okur) */
254
+ /* ------------------------------------------------------------------ */
255
+ function buildRouterFromController(controllerInstance) {
256
+ const ctor = controllerInstance.constructor;
257
+ const proto = Object.getPrototypeOf(controllerInstance);
258
+ const path = Reflect.getMetadata(exports.keyOfPath, ctor);
259
+ if (!path)
152
260
  throw new Error('Controller class must have a path property');
153
- }
154
- const allProperties = Object.getOwnPropertyNames(Object.getPrototypeOf(controllerClass));
261
+ const allProperties = Object.getOwnPropertyNames(proto);
155
262
  const router = express_1.default.Router();
156
263
  for (const property of allProperties) {
157
- const routeOptions = Reflect.getMetadata(exports.keyOfRouteOptions, controllerClass, property);
158
- if (!routeOptions) {
264
+ const routeOptions = Reflect.getMetadata(exports.keyOfRouteOptions, proto, property);
265
+ if (!routeOptions)
159
266
  continue;
160
- }
161
- if (!routeOptions.path) {
162
- throw new Error('Route path is required');
163
- }
164
- if (!routeOptions.method) {
165
- throw new Error('Route method is required');
166
- }
167
- console.log(routeOptions);
168
- const validations = routeOptions.validations;
169
- const permissions = routeOptions.permissions;
170
- const authenticated = routeOptions.authenticated;
171
- const otherHttpMiddlewares = routeOptions.otherHttpMiddlewares;
172
- const handler = controllerClass[property].bind(controllerClass);
267
+ if (!routeOptions.path)
268
+ throw new Error(`Route path is required for ${ctor.name}.${property}`);
269
+ if (!routeOptions.method)
270
+ throw new Error(`Route method is required for ${ctor.name}.${property}`);
271
+ const { validations, permissions, authenticated, otherHttpMiddlewares } = routeOptions;
272
+ const handler = proto[property].bind(controllerInstance);
173
273
  const validationMiddlewares = [];
174
- if (validations) {
175
- for (const validation of validations) {
176
- if (validation.body) {
177
- validationMiddlewares.push((0, validation_middleware_1.default)(validation.body, 'body'));
178
- }
179
- if (validation.params) {
180
- validationMiddlewares.push((0, validation_middleware_1.default)(validation.params, 'params'));
181
- }
182
- if (validation.query) {
183
- validationMiddlewares.push((0, validation_middleware_1.default)(validation.query, 'query'));
184
- }
274
+ const pushOnce = (arr, mw) => { if (!arr.includes(mw))
275
+ arr.push(mw); };
276
+ const order = ['params', 'query', 'body'];
277
+ for (const v of validations ?? []) {
278
+ for (const t of order) {
279
+ const klass = v[t];
280
+ if (!klass)
281
+ continue;
282
+ pushOnce(validationMiddlewares, (0, validation_middleware_1.default)(klass, t));
185
283
  }
186
284
  }
187
285
  const middlewares = [];
188
- if (authenticated) {
286
+ if (authenticated)
189
287
  middlewares.push(authenticated_middleware_1.authenticatedMiddleware);
190
- }
191
- if (permissions && permissions.length > 0) {
288
+ if (permissions && permissions.length > 0)
192
289
  middlewares.push((0, authorized_middleware_1.authorizedMiddleware)(permissions));
193
- }
194
- if (otherHttpMiddlewares) {
290
+ if (otherHttpMiddlewares)
195
291
  middlewares.push(...otherHttpMiddlewares);
196
- }
197
- if (validationMiddlewares) {
292
+ if (validationMiddlewares.length)
198
293
  middlewares.push(...validationMiddlewares);
199
- }
200
294
  const method = routeOptions.method;
201
295
  const routePath = routeOptions.path;
202
- const reqIndex = Reflect.getMetadata(exports.keyOfReq, controllerClass, property);
203
- const resIndex = Reflect.getMetadata(exports.keyOfRes, controllerClass, property);
204
- const nextIndex = Reflect.getMetadata(exports.keyOfNext, controllerClass, property);
205
- const argsNotSorted = [
206
- { name: 'req', index: reqIndex },
207
- { name: 'res', index: resIndex },
208
- { name: 'next', index: nextIndex },
209
- ];
210
- const args = [...argsNotSorted];
211
- const argsSorted = args.sort((a, b) => a.index - b.index);
296
+ const reqIndex = Reflect.getMetadata(exports.keyOfReq, proto, property);
297
+ const resIndex = Reflect.getMetadata(exports.keyOfRes, proto, property);
298
+ const nextIndex = Reflect.getMetadata(exports.keyOfNext, proto, property);
299
+ const bodyIndex = Reflect.getMetadata(exports.keyOfBody, proto, property);
300
+ const queryIndex = Reflect.getMetadata(exports.keyOfQuery, proto, property);
301
+ const paramsIndex = Reflect.getMetadata(exports.keyOfParams, proto, property);
212
302
  const handlerMiddleware = async (req, res, next) => {
213
303
  try {
214
- const realArgs = [];
215
- for (const arg of argsSorted) {
216
- if (arg.name === 'req') {
217
- realArgs.push(req);
218
- }
219
- else if (arg.name === 'res') {
220
- realArgs.push(res);
221
- }
222
- else if (arg.name === 'next') {
223
- realArgs.push(next);
224
- }
304
+ const argMap = new Map();
305
+ if (typeof reqIndex === 'number')
306
+ argMap.set(reqIndex, req);
307
+ if (typeof resIndex === 'number')
308
+ argMap.set(resIndex, res);
309
+ if (typeof nextIndex === 'number')
310
+ argMap.set(nextIndex, next);
311
+ if (typeof bodyIndex === 'number')
312
+ argMap.set(bodyIndex, req.validatedBody ?? req.body);
313
+ if (typeof queryIndex === 'number')
314
+ argMap.set(queryIndex, req.validatedQuery ?? req.query);
315
+ if (typeof paramsIndex === 'number')
316
+ argMap.set(paramsIndex, req.validatedParams ?? req.params);
317
+ let realArgs;
318
+ if (argMap.size > 0) {
319
+ const maxIndex = Math.max(...Array.from(argMap.keys()));
320
+ realArgs = Array.from({ length: maxIndex + 1 }, (_, i) => argMap.get(i));
321
+ }
322
+ else {
323
+ realArgs = [req, res, next];
225
324
  }
226
325
  const result = await handler(...realArgs);
227
- // ResponseBuilder'ı handle et
228
326
  if (result && typeof result.build === 'function') {
229
327
  result.build(res);
230
328
  }
231
- else {
329
+ else if (!res.headersSent) {
232
330
  res.json(result);
233
331
  }
234
332
  }
@@ -241,15 +339,13 @@ function buildRouterFromController(controllerClass) {
241
339
  return router;
242
340
  }
243
341
  function buildApp(app, controllers) {
244
- for (const controller of controllers) {
245
- const router = buildRouterFromController(controller);
246
- const controllerPath = Reflect.getMetadata(exports.keyOfPath, controller.constructor);
247
- if (controllerPath) {
342
+ for (const instance of controllers) {
343
+ const router = buildRouterFromController(instance);
344
+ const controllerPath = Reflect.getMetadata(exports.keyOfPath, instance.constructor);
345
+ if (controllerPath)
248
346
  app.use(controllerPath, router);
249
- }
250
- else {
347
+ else
251
348
  app.use(router);
252
- }
253
349
  }
254
350
  return app;
255
351
  }
package/dist/rest.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rest.js","sourceRoot":"","sources":["../rest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../rest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "scripts": {
3
- "test": "jest",
3
+ "test": "jest --config jest.config.ts --detectOpenHandles",
4
4
  "build": "tsc",
5
5
  "clean": "rm -rf dist",
6
6
  "rebuild": "npm run clean && npm run build",
@@ -25,7 +25,7 @@
25
25
  "license": "ISC",
26
26
  "description": "Mini Express Framework - Lightweight and modular Express.js framework with TypeScript support",
27
27
  "name": "@mini2/core",
28
- "version": "1.1.15",
28
+ "version": "1.1.17",
29
29
  "author": "Mustafa Çolakoglu <mustafacolakoglu94@gmail.com> (https://github.com/mustafa-colakoglu)",
30
30
  "dependencies": {
31
31
  "class-transformer": "^0.5.1",
@@ -42,9 +42,14 @@
42
42
  "devDependencies": {
43
43
  "@types/cors": "^2.8.17",
44
44
  "@types/express": "^4.17.21",
45
+ "@types/jest": "^30.0.0",
45
46
  "@types/morgan": "^1.9.9",
46
47
  "@types/node": "^20.14.9",
48
+ "@types/supertest": "^6.0.3",
47
49
  "@types/swagger-ui-express": "^4.1.6",
50
+ "jest": "^30.0.5",
51
+ "supertest": "^7.1.4",
52
+ "ts-jest": "^29.4.1",
48
53
  "typescript": "^5.5.3"
49
54
  }
50
55
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist-tests",
5
+ "rootDir": "./",
6
+ "noEmitOnError": false
7
+ },
8
+ "include": ["__tests__/**/*.ts", "src/**/*.ts", "*.ts"],
9
+ "exclude": ["node_modules", "dist", "dist-tests"]
10
+ }