jh-be-tools 1.0.22 → 1.0.24

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,20 +1,20 @@
1
1
  import { AxiosError, AxiosRequestConfig, AxiosHeaders } from 'axios';
2
- export interface Request {
3
- path: string;
4
- serviceName: string;
5
- params?: AxiosRequestConfig['params'];
2
+ import { RouteDef } from '../route-handler/routeCreation';
3
+ export interface QueryData {
4
+ params?: Record<string, string>;
5
+ query?: AxiosRequestConfig['params'];
6
6
  headers?: AxiosHeaders;
7
7
  body?: unknown;
8
8
  }
9
+ export interface Request {
10
+ baseUrl: string;
11
+ definition: RouteDef;
12
+ serviceName: string;
13
+ queryData?: QueryData;
14
+ }
9
15
  export interface Error {
10
16
  serviceName: string;
11
17
  status: number;
12
18
  error: AxiosError;
13
19
  }
14
- export declare const request: {
15
- get: <Response_1>(req: Request) => Promise<Response_1>;
16
- post: <Response_2>(req: Request) => Promise<Response_2>;
17
- put: <Response_3>(req: Request) => Promise<Response_3>;
18
- patch: <Response_4>(req: Request) => Promise<Response_4>;
19
- delete: <Response_5>(req: Request) => Promise<Response_5>;
20
- };
20
+ export declare const request: <Response_1>(req: Request) => Promise<Response_1>;
@@ -25,39 +25,45 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.request = void 0;
27
27
  const axios_1 = __importStar(require("axios"));
28
- const get = async (req) => {
29
- return await baseQuery(req, axios_1.default.get);
30
- };
31
- const del = async (req) => {
32
- if (req.body) {
33
- throw new Error('delete requests do not work with body');
28
+ const request = async (req) => {
29
+ const { baseUrl, definition, queryData, serviceName } = req;
30
+ let path = `${baseUrl}${definition.path}`;
31
+ let func;
32
+ switch (definition.method) {
33
+ case 'get':
34
+ func = axios_1.default.get;
35
+ break;
36
+ case 'post':
37
+ func = axios_1.default.post;
38
+ break;
39
+ case 'put':
40
+ func = axios_1.default.put;
41
+ break;
42
+ case 'delete':
43
+ func = axios_1.default.delete;
44
+ break;
45
+ }
46
+ if (req.queryData && req.queryData.params) {
47
+ path = replaceUrlParams(path, req.queryData.params);
48
+ }
49
+ try {
50
+ return await baseQuery(func, path, queryData);
51
+ }
52
+ catch (error) {
53
+ return errorHandler(error, serviceName);
34
54
  }
35
- return await baseQuery(req, axios_1.default.delete);
36
- };
37
- const post = async (req) => {
38
- return await baseQuery(req, axios_1.default.post);
39
- };
40
- const put = async (req) => {
41
- return await baseQuery(req, axios_1.default.put);
42
- };
43
- const patch = async (req) => {
44
- return await baseQuery(req, axios_1.default.patch);
45
55
  };
46
- const baseQuery = async (req, func) => {
56
+ exports.request = request;
57
+ const baseQuery = async (func, path, req) => {
47
58
  const options = {
48
- headers: { 'content-type': 'application/json', ...req.headers },
49
- params: req.params,
59
+ headers: { 'content-type': 'application/json', ...req?.headers },
60
+ params: req?.query,
50
61
  };
51
- try {
52
- if (req.body) {
53
- return (await func(req.path, req.body, options)).data;
54
- }
55
- else {
56
- return (await func(req.path, options)).data;
57
- }
62
+ if (req?.body) {
63
+ return (await func(path, req.body, options)).data;
58
64
  }
59
- catch (error) {
60
- return errorHandler(error, req.serviceName);
65
+ else {
66
+ return (await func(path, options)).data;
61
67
  }
62
68
  };
63
69
  const errorHandler = (error, serviceName) => {
@@ -69,10 +75,8 @@ const errorHandler = (error, serviceName) => {
69
75
  error,
70
76
  };
71
77
  };
72
- exports.request = {
73
- get,
74
- post,
75
- put,
76
- patch,
77
- delete: del,
78
+ const replaceUrlParams = (url, params) => {
79
+ return url.replace(/:([a-zA-Z0-9_]+)/g, (match, key) => {
80
+ return params[key] || match;
81
+ });
78
82
  };
@@ -1,4 +1,10 @@
1
1
  import { Router } from 'express';
2
2
  import { RouteSchema } from './routeHandler';
3
- export type RouteData = ['get' | 'post' | 'put' | 'delete', string, (req?: any) => any, RouteSchema];
3
+ export type RouteMethods = 'get' | 'post' | 'put' | 'delete';
4
+ export type RouteDef = {
5
+ method: RouteMethods;
6
+ path: string;
7
+ routeSchema: RouteSchema;
8
+ };
9
+ export type RouteData = [RouteDef, (req?: any) => any];
4
10
  export declare const createRoutes: (routeData: RouteData[], router: Router) => void;
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createRoutes = void 0;
4
4
  const routeHandler_1 = require("./routeHandler");
5
- const createRoute = (method, path, route, schema) => {
5
+ const createRoute = (meta, route) => {
6
6
  return (app) => {
7
- app[method](path, async (req, res) => {
8
- await (0, routeHandler_1.routeHandler)(req, res, route, schema);
7
+ app[meta.method](meta.path, async (req, res) => {
8
+ await (0, routeHandler_1.routeHandler)(req, res, route, meta.routeSchema);
9
9
  });
10
10
  };
11
11
  };
@@ -11,6 +11,7 @@ const routeHandler = async (req, res, fun, schema) => {
11
11
  });
12
12
  }
13
13
  catch (error) {
14
+ console.log(JSON.stringify(error));
14
15
  return res.status(400).json(error.errors);
15
16
  }
16
17
  }
@@ -23,6 +24,7 @@ const routeHandler = async (req, res, fun, schema) => {
23
24
  status = result?.status ?? defaultStatus;
24
25
  }
25
26
  catch (error) {
27
+ console.log(JSON.stringify(error));
26
28
  return res.status(500).json(error);
27
29
  }
28
30
  if (schema.response) {
@@ -30,6 +32,7 @@ const routeHandler = async (req, res, fun, schema) => {
30
32
  await schema.response.parseAsync({ data });
31
33
  }
32
34
  catch (error) {
35
+ console.log(JSON.stringify(error));
33
36
  return res.status(500).json(error);
34
37
  }
35
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jh-be-tools",
3
- "version": "1.0.22",
3
+ "version": "1.0.24",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,11 +17,16 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "axios": "^1.6.7",
20
- "express": "^4.21.1",
20
+ "express": "^4.21.2",
21
21
  "pg": "^8.13.1",
22
22
  "zod": "^3.23.8"
23
23
  },
24
24
  "bin": {
25
25
  "createPackageIndexFiles": "./dist/create-package-index-files/createPackageIndexFiles.js"
26
+ },
27
+ "exports": {
28
+ "./eslint.config.mjs": "./src/config/eslint.config.mjs",
29
+ "./prettier": "./src/config/.prettierrc.json",
30
+ ".": "./dist/index.js"
26
31
  }
27
32
  }