@prosopo/api-express-router 3.1.49 → 3.1.51

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/api-express-router@3.1.49 build:cjs
2
+ > @prosopo/api-express-router@3.1.51 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -43,16 +43,18 @@ ViteCommonJSConfig: .
43
43
  '@prosopo/keyring'
44
44
  ]
45
45
  }
46
- vite v6.4.1 building SSR bundle for production...
46
+ The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
47
+ vite v8.1.5 building ssr environment for production...
47
48
  Bundle build started
48
- transforming...
49
- Build end
50
- ✓ 6 modules transformed.
49
+ 
50
+ ✓ 7 modules transformed.
51
51
  rendering chunks...
52
- dist/cjs/errorHandler.cjs 0.49 kB
53
- dist/cjs/apiExpressRouterFactory.cjs 0.92 kB
54
- dist/cjs/endpointAdapter/apiExpressDefaultEndpointAdapter.cjs 1.12 kB
55
- dist/cjs/index.cjs 1.16 kB
56
- dist/cjs/middlewares/authMiddleware.cjs 1.86 kB
57
- dist/cjs/middlewares/requestLoggerMiddleware.cjs 1.98 kB
58
- ✓ built in 164ms
52
+ computing gzip size...
53
+ dist/cjs/errorHandler.cjs 0.45 kB │ gzip: 0.25 kB
54
+ dist/cjs/apiExpressRouterFactory.cjs 0.78 kB │ gzip: 0.35 kB
55
+ dist/cjs/endpointAdapter/apiExpressDefaultEndpointAdapter.cjs 1.05 kB │ gzip: 0.50 kB
56
+ dist/cjs/index.cjs 1.25 kB │ gzip: 0.37 kB
57
+ dist/cjs/middlewares/authMiddleware.cjs 1.71 kB │ gzip: 0.74 kB
58
+ dist/cjs/middlewares/requestLoggerMiddleware.cjs 1.81 kB │ gzip: 0.78 kB
59
+
60
+ ✓ built in 41ms
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/api-express-router@3.1.49 build:tsc
2
+ > @prosopo/api-express-router@3.1.51 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 10:23:15 PM - Projects in this build:
5
+ 8:59:58 PM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../util/tsconfig.json
8
8
  * ../logger/tsconfig.json
@@ -22,41 +22,41 @@
22
22
  * ../env/tsconfig.json
23
23
  * tsconfig.json
24
24
 
25
- 10:23:15 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
25
+ 8:59:58 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
26
26
 
27
- 10:23:15 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
27
+ 8:59:58 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
28
28
 
29
- 10:23:15 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
29
+ 8:59:58 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
30
30
 
31
- 10:23:15 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
31
+ 8:59:58 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
32
32
 
33
- 10:23:16 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
33
+ 8:59:58 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
34
34
 
35
- 10:23:16 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
35
+ 8:59:58 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
36
36
 
37
- 10:23:16 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/procaptcha/api.ts' is older than output '../types/tsconfig.tsbuildinfo'
37
+ 8:59:58 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/provider/api.ts' is older than output '../types/tsconfig.tsbuildinfo'
38
38
 
39
- 10:23:16 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
39
+ 8:59:58 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/utils/batches.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
40
40
 
41
- 10:23:16 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
41
+ 8:59:58 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/IpInfoService.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
42
42
 
43
- 10:23:16 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
43
+ 8:59:58 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
44
44
 
45
- 10:23:16 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
45
+ 8:59:58 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
46
46
 
47
- 10:23:16 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/ruleRecord.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
47
+ 8:59:58 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/ruleRecord.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
48
48
 
49
- 10:23:16 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
49
+ 8:59:58 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/types/bannedDomain.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
50
50
 
51
- 10:23:16 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/unit/redisCacheEscalation.unit.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
51
+ 8:59:58 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/mongoGlobalSetup.ts' is older than output '../database/tsconfig.tsbuildinfo'
52
52
 
53
- 10:23:16 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
53
+ 8:59:58 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/keyring/keyring.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
54
54
 
55
- 10:23:16 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/env.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
55
+ 8:59:58 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/index.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
56
56
 
57
- 10:23:16 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/index.ts' is older than output '../env/tsconfig.tsbuildinfo'
57
+ 8:59:58 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/index.ts' is older than output '../env/tsconfig.tsbuildinfo'
58
58
 
59
- 10:23:16 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
59
+ 8:59:58 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
60
60
 
61
- 10:23:16 PM - Building project '/home/runner/work/captcha/captcha/packages/api-express-router/tsconfig.json'...
61
+ 8:59:58 PM - Building project '/home/runner/work/captcha/captcha/packages/api-express-router/tsconfig.json'...
62
62
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/api-express-router@3.1.49 build
2
+ > @prosopo/api-express-router@3.1.51 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/api-express-router@3.1.49 build:cross-env
6
+ > @prosopo/api-express-router@3.1.51 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -47,16 +47,19 @@ ViteEsmConfig: .
47
47
  '@prosopo/keyring'
48
48
  ]
49
49
  }
50
- vite v6.4.1 building SSR bundle for production...
50
+ The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
51
+ vite v8.1.5 building ssr environment for production...
51
52
  Bundle build started
52
- transforming...
53
- Build end
54
- ✓ 6 modules transformed.
53
+ 
54
+ ✓ 7 modules transformed.
55
55
  rendering chunks...
56
- dist/errorHandler.js 0.39 kB
57
- dist/index.js 0.78 kB
58
- dist/apiExpressRouterFactory.js 0.78 kB
59
- dist/endpointAdapter/apiExpressDefaultEndpointAdapter.js 1.01 kB
60
- dist/middlewares/authMiddleware.js 1.73 kB
61
- dist/middlewares/requestLoggerMiddleware.js 1.86 kB
62
- ✓ built in 192ms
56
+ computing gzip size...
57
+ dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
58
+ dist/errorHandler.js 0.42 kB │ gzip: 0.24 kB
59
+ dist/apiExpressRouterFactory.js 0.71 kB │ gzip: 0.34 kB
60
+ dist/index.js 0.84 kB │ gzip: 0.31 kB
61
+ dist/endpointAdapter/apiExpressDefaultEndpointAdapter.js 0.94 kB │ gzip: 0.47 kB
62
+ dist/middlewares/authMiddleware.js 1.60 kB │ gzip: 0.72 kB
63
+ dist/middlewares/requestLoggerMiddleware.js 1.75 kB │ gzip: 0.76 kB
64
+
65
+ ✓ built in 55ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @prosopo/api-express-router
2
2
 
3
+ ## 3.1.51
4
+ ### Patch Changes
5
+
6
+ - Updated dependencies [a58d007]
7
+ - Updated dependencies [2c47bb7]
8
+ - Updated dependencies [0e1171c]
9
+ - Updated dependencies [103318c]
10
+ - Updated dependencies [270a8d8]
11
+ - Updated dependencies [e14fce6]
12
+ - @prosopo/api-route@2.6.53
13
+ - @prosopo/util@3.3.5
14
+ - @prosopo/locale@3.2.8
15
+ - @prosopo/types@4.10.0
16
+ - @prosopo/common@3.1.48
17
+ - @prosopo/env@3.6.20
18
+ - @prosopo/logger@2.0.4
19
+
20
+ ## 3.1.50
21
+ ### Patch Changes
22
+
23
+ - @prosopo/env@3.6.19
24
+
3
25
  ## 3.1.49
4
26
  ### Patch Changes
5
27
 
@@ -0,0 +1,3 @@
1
+ import "node:module";
2
+ //#endregion
3
+ export {};
@@ -1,29 +1,19 @@
1
- import { Router } from "express";
2
1
  import { handleErrors } from "./errorHandler.js";
3
- class ApiExpressRouterFactory {
4
- createRouter(routersProvider, apiEndpointAdapter) {
5
- const router = Router();
6
- const apiRoutes = routersProvider.getRoutes();
7
- this.registerRoutes(router, apiRoutes, apiEndpointAdapter);
8
- router.use(handleErrors);
9
- return router;
10
- }
11
- registerRoutes(router, routes, apiEndpointAdapter) {
12
- for (const [route, endpoint] of Object.entries(routes)) {
13
- router.post(
14
- route,
15
- async (request, response, next) => {
16
- return await apiEndpointAdapter.handleRequest(
17
- endpoint,
18
- request,
19
- response,
20
- next
21
- );
22
- }
23
- );
24
- }
25
- }
26
- }
27
- export {
28
- ApiExpressRouterFactory
2
+ import { Router } from "express";
3
+ //#region src/apiExpressRouterFactory.ts
4
+ var ApiExpressRouterFactory = class {
5
+ createRouter(routersProvider, apiEndpointAdapter) {
6
+ const router = Router();
7
+ const apiRoutes = routersProvider.getRoutes();
8
+ this.registerRoutes(router, apiRoutes, apiEndpointAdapter);
9
+ router.use(handleErrors);
10
+ return router;
11
+ }
12
+ registerRoutes(router, routes, apiEndpointAdapter) {
13
+ for (const [route, endpoint] of Object.entries(routes)) router.post(route, async (request, response, next) => {
14
+ return await apiEndpointAdapter.handleRequest(endpoint, request, response, next);
15
+ });
16
+ }
29
17
  };
18
+ //#endregion
19
+ export { ApiExpressRouterFactory };
@@ -1,29 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const express = require("express");
4
- const errorHandler = require("./errorHandler.cjs");
5
- class ApiExpressRouterFactory {
6
- createRouter(routersProvider, apiEndpointAdapter) {
7
- const router = express.Router();
8
- const apiRoutes = routersProvider.getRoutes();
9
- this.registerRoutes(router, apiRoutes, apiEndpointAdapter);
10
- router.use(errorHandler.handleErrors);
11
- return router;
12
- }
13
- registerRoutes(router, routes, apiEndpointAdapter) {
14
- for (const [route, endpoint] of Object.entries(routes)) {
15
- router.post(
16
- route,
17
- async (request, response, next) => {
18
- return await apiEndpointAdapter.handleRequest(
19
- endpoint,
20
- request,
21
- response,
22
- next
23
- );
24
- }
25
- );
26
- }
27
- }
28
- }
1
+ const require_errorHandler = require("./errorHandler.cjs");
2
+ let express = require("express");
3
+ //#region src/apiExpressRouterFactory.ts
4
+ var ApiExpressRouterFactory = class {
5
+ createRouter(routersProvider, apiEndpointAdapter) {
6
+ const router = (0, express.Router)();
7
+ const apiRoutes = routersProvider.getRoutes();
8
+ this.registerRoutes(router, apiRoutes, apiEndpointAdapter);
9
+ router.use(require_errorHandler.handleErrors);
10
+ return router;
11
+ }
12
+ registerRoutes(router, routes, apiEndpointAdapter) {
13
+ for (const [route, endpoint] of Object.entries(routes)) router.post(route, async (request, response, next) => {
14
+ return await apiEndpointAdapter.handleRequest(endpoint, request, response, next);
15
+ });
16
+ }
17
+ };
18
+ //#endregion
29
19
  exports.ApiExpressRouterFactory = ApiExpressRouterFactory;
@@ -1,36 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const common = require("@prosopo/common");
4
- const util = require("@prosopo/util");
5
- class ApiExpressDefaultEndpointAdapter {
6
- constructor(logLevel, errorStatusCode) {
7
- this.logLevel = logLevel;
8
- this.errorStatusCode = errorStatusCode;
9
- }
10
- async handleRequest(endpoint, request, response, next) {
11
- let args;
12
- try {
13
- args = endpoint.getRequestArgsSchema()?.parse(request.body);
14
- } catch (error) {
15
- return next(
16
- new common.ProsopoApiError("API.PARSE_ERROR", {
17
- context: { code: 400, error }
18
- })
19
- );
20
- }
21
- try {
22
- const apiEndpointResponse = await endpoint.processRequest(
23
- args,
24
- request.logger
25
- );
26
- const responseObject = util.stringifyBigInts(apiEndpointResponse);
27
- response.json(responseObject);
28
- } catch (error) {
29
- request.logger.error(() => ({
30
- err: error
31
- }));
32
- response.status(500).send("An internal server error occurred.");
33
- }
34
- }
35
- }
1
+ let _prosopo_common = require("@prosopo/common");
2
+ let _prosopo_util = require("@prosopo/util");
3
+ //#region src/endpointAdapter/apiExpressDefaultEndpointAdapter.ts
4
+ var ApiExpressDefaultEndpointAdapter = class {
5
+ constructor(logLevel, errorStatusCode) {
6
+ this.logLevel = logLevel;
7
+ this.errorStatusCode = errorStatusCode;
8
+ }
9
+ async handleRequest(endpoint, request, response, next) {
10
+ let args;
11
+ try {
12
+ args = endpoint.getRequestArgsSchema()?.parse(request.body);
13
+ } catch (error) {
14
+ return next(new _prosopo_common.ProsopoApiError("API.PARSE_ERROR", { context: {
15
+ code: 400,
16
+ error
17
+ } }));
18
+ }
19
+ try {
20
+ const apiEndpointResponse = await endpoint.processRequest(args, request.logger);
21
+ const responseObject = (0, _prosopo_util.stringifyBigInts)(apiEndpointResponse);
22
+ response.json(responseObject);
23
+ } catch (error) {
24
+ request.logger.error(() => ({ err: error }));
25
+ response.status(500).send("An internal server error occurred.");
26
+ }
27
+ }
28
+ };
29
+ //#endregion
36
30
  exports.ApiExpressDefaultEndpointAdapter = ApiExpressDefaultEndpointAdapter;
@@ -1,12 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const common = require("@prosopo/common");
4
- const handleErrors = (err, request, response, next) => {
5
- const { code, statusMessage, jsonError } = common.unwrapError(err, request.i18n);
6
- response.statusMessage = statusMessage;
7
- response.set("content-type", "application/json");
8
- response.status(code);
9
- response.send({ error: jsonError });
10
- response.end();
1
+ let _prosopo_common = require("@prosopo/common");
2
+ //#region src/errorHandler.ts
3
+ var handleErrors = (err, request, response, next) => {
4
+ const { code, statusMessage, jsonError } = (0, _prosopo_common.unwrapError)(err, request.i18n);
5
+ response.statusMessage = statusMessage;
6
+ response.set("content-type", "application/json");
7
+ response.status(code);
8
+ response.send({ error: jsonError });
9
+ response.end();
11
10
  };
11
+ //#endregion
12
12
  exports.handleErrors = handleErrors;
@@ -1,17 +1,18 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const apiExpressRouterFactory$1 = require("./apiExpressRouterFactory.cjs");
4
- const apiExpressDefaultEndpointAdapter = require("./endpointAdapter/apiExpressDefaultEndpointAdapter.cjs");
5
- const errorHandler = require("./errorHandler.cjs");
6
- const authMiddleware = require("./middlewares/authMiddleware.cjs");
7
- const requestLoggerMiddleware = require("./middlewares/requestLoggerMiddleware.cjs");
8
- const apiExpressRouterFactory = new apiExpressRouterFactory$1.ApiExpressRouterFactory();
9
- const createApiExpressDefaultEndpointAdapter = (logLevel, errorStatusCode = 500) => {
10
- return new apiExpressDefaultEndpointAdapter.ApiExpressDefaultEndpointAdapter(logLevel, errorStatusCode);
2
+ const require_errorHandler = require("./errorHandler.cjs");
3
+ const require_apiExpressRouterFactory = require("./apiExpressRouterFactory.cjs");
4
+ const require_apiExpressDefaultEndpointAdapter = require("./endpointAdapter/apiExpressDefaultEndpointAdapter.cjs");
5
+ const require_authMiddleware = require("./middlewares/authMiddleware.cjs");
6
+ const require_requestLoggerMiddleware = require("./middlewares/requestLoggerMiddleware.cjs");
7
+ //#region src/index.ts
8
+ var apiExpressRouterFactory = new require_apiExpressRouterFactory.ApiExpressRouterFactory();
9
+ var createApiExpressDefaultEndpointAdapter = (logLevel, errorStatusCode = 500) => {
10
+ return new require_apiExpressDefaultEndpointAdapter.ApiExpressDefaultEndpointAdapter(logLevel, errorStatusCode);
11
11
  };
12
- exports.handleErrors = errorHandler.handleErrors;
13
- exports.authMiddleware = authMiddleware.authMiddleware;
14
- exports.verifySignature = authMiddleware.verifySignature;
15
- exports.requestLoggerMiddleware = requestLoggerMiddleware.requestLoggerMiddleware;
12
+ //#endregion
16
13
  exports.apiExpressRouterFactory = apiExpressRouterFactory;
14
+ exports.authMiddleware = require_authMiddleware.authMiddleware;
17
15
  exports.createApiExpressDefaultEndpointAdapter = createApiExpressDefaultEndpointAdapter;
16
+ exports.handleErrors = require_errorHandler.handleErrors;
17
+ exports.requestLoggerMiddleware = require_requestLoggerMiddleware.requestLoggerMiddleware;
18
+ exports.verifySignature = require_authMiddleware.verifySignature;
@@ -1,61 +1,59 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const util = require("@polkadot/util");
4
- const common = require("@prosopo/common");
5
- const authMiddleware = (pair, authAccount) => {
6
- return async (req, res, next) => {
7
- try {
8
- const jwt = extractJWT(req);
9
- let error;
10
- if (authAccount?.jwtVerify(jwt).isValid) {
11
- next();
12
- return;
13
- }
14
- if (pair?.jwtVerify(jwt).isValid) {
15
- next();
16
- return;
17
- }
18
- res.status(401).json({
19
- error: new common.ProsopoEnvError(error || "API.UNAUTHORIZED", {
20
- context: { i18n: req.i18n, code: 401 }
21
- })
22
- });
23
- return;
24
- } catch (err) {
25
- req.logger.error(() => ({ err, msg: "Auth Middleware Error" }));
26
- res.status(401).json({ error: "Unauthorized", message: err });
27
- return;
28
- }
29
- };
1
+ let _prosopo_common = require("@prosopo/common");
2
+ let _polkadot_util = require("@polkadot/util");
3
+ //#region src/middlewares/authMiddleware.ts
4
+ var authMiddleware = (pair, authAccount) => {
5
+ return async (req, res, next) => {
6
+ try {
7
+ const jwt = extractJWT(req);
8
+ if (authAccount?.jwtVerify(jwt).isValid) {
9
+ next();
10
+ return;
11
+ }
12
+ if (pair?.jwtVerify(jwt).isValid) {
13
+ next();
14
+ return;
15
+ }
16
+ res.status(401).json({ error: new _prosopo_common.ProsopoEnvError("API.UNAUTHORIZED", { context: {
17
+ i18n: req.i18n,
18
+ code: 401
19
+ } }) });
20
+ return;
21
+ } catch (err) {
22
+ req.logger.error(() => ({
23
+ err,
24
+ msg: "Auth Middleware Error"
25
+ }));
26
+ res.status(401).json({
27
+ error: "Unauthorized",
28
+ message: err
29
+ });
30
+ return;
31
+ }
32
+ };
30
33
  };
31
- const extractJWT = (req) => {
32
- const authHeader = req.headers.Authorization || req.headers.authorization;
33
- if (!authHeader || typeof authHeader !== "string") {
34
- throw new common.ProsopoApiError("GENERAL.MISSING_AUTH_HEADER", {
35
- context: { error: "Missing Authorization header", code: 401 }
36
- });
37
- }
38
- const jwt = authHeader.replace("Bearer ", "");
39
- if (!jwt) {
40
- throw new common.ProsopoApiError("GENERAL.INVALID_JWT", {
41
- context: { error: "Missing JWT", code: 400 }
42
- });
43
- }
44
- return jwt;
34
+ var extractJWT = (req) => {
35
+ const authHeader = req.headers.Authorization || req.headers.authorization;
36
+ if (!authHeader || typeof authHeader !== "string") throw new _prosopo_common.ProsopoApiError("GENERAL.MISSING_AUTH_HEADER", { context: {
37
+ error: "Missing Authorization header",
38
+ code: 401
39
+ } });
40
+ const jwt = authHeader.replace("Bearer ", "");
41
+ if (!jwt) throw new _prosopo_common.ProsopoApiError("GENERAL.INVALID_JWT", { context: {
42
+ error: "Missing JWT",
43
+ code: 400
44
+ } });
45
+ return jwt;
45
46
  };
46
- const verifySignature = (signature, message, pair) => {
47
- const u8Sig = util.hexToU8a(signature);
48
- if (!pair.verify(message, u8Sig, pair.publicKey)) {
49
- throw new common.ProsopoApiError("GENERAL.INVALID_SIGNATURE", {
50
- context: {
51
- error: "Signature verification failed",
52
- code: 401,
53
- account: pair.address,
54
- message,
55
- signature
56
- }
57
- });
58
- }
47
+ var verifySignature = (signature, message, pair) => {
48
+ const u8Sig = (0, _polkadot_util.hexToU8a)(signature);
49
+ if (!pair.verify(message, u8Sig, pair.publicKey)) throw new _prosopo_common.ProsopoApiError("GENERAL.INVALID_SIGNATURE", { context: {
50
+ error: "Signature verification failed",
51
+ code: 401,
52
+ account: pair.address,
53
+ message,
54
+ signature
55
+ } });
59
56
  };
57
+ //#endregion
60
58
  exports.authMiddleware = authMiddleware;
61
59
  exports.verifySignature = verifySignature;