jh-be-tools 1.0.8 → 1.0.10
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/api-request/apiRequest.d.ts +19 -0
- package/dist/api-request/apiRequest.js +75 -0
- package/dist/create-package-index-files/createPackageIndexFiles.d.ts +2 -0
- package/dist/create-package-index-files/createPackageIndexFiles.js +37 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/knex-connections/connection.d.ts +10 -0
- package/dist/knex-connections/connection.js +18 -0
- package/dist/knex-connections/dbConnection.d.ts +2 -0
- package/dist/knex-connections/dbConnection.js +6 -0
- package/dist/knex-connections/index.d.ts +2 -0
- package/dist/knex-connections/index.js +7 -0
- package/dist/knex-connections/knexFile.d.ts +4 -0
- package/dist/knex-connections/knexFile.js +20 -0
- package/dist/package.json +28 -0
- package/dist/route-handler/routeHandler.d.ts +12 -0
- package/dist/route-handler/routeHandler.js +38 -0
- package/dist/validate-request/validateRequest.d.ts +3 -0
- package/dist/validate-request/validateRequest.js +19 -0
- package/package.json +3 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AxiosError, AxiosRequestConfig } from 'axios';
|
|
2
|
+
export interface Request {
|
|
3
|
+
path: string;
|
|
4
|
+
serviceName: string;
|
|
5
|
+
params?: AxiosRequestConfig['params'];
|
|
6
|
+
body?: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface Error {
|
|
9
|
+
serviceName: string;
|
|
10
|
+
status: number;
|
|
11
|
+
error: AxiosError;
|
|
12
|
+
}
|
|
13
|
+
export declare const request: {
|
|
14
|
+
get: <Response_1>(req: Request) => Promise<Response_1>;
|
|
15
|
+
post: <Response_2>(req: Request) => Promise<Response_2>;
|
|
16
|
+
put: <Response_3>(req: Request) => Promise<Response_3>;
|
|
17
|
+
patch: <Response_4>(req: Request) => Promise<Response_4>;
|
|
18
|
+
delete: <Response_5>(req: Request) => Promise<Response_5>;
|
|
19
|
+
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.request = void 0;
|
|
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
|
+
return await baseQuery(req, axios_1.default.delete);
|
|
33
|
+
};
|
|
34
|
+
const post = async (req) => {
|
|
35
|
+
return await baseQuery(req, axios_1.default.post);
|
|
36
|
+
};
|
|
37
|
+
const put = async (req) => {
|
|
38
|
+
return await baseQuery(req, axios_1.default.put);
|
|
39
|
+
};
|
|
40
|
+
const patch = async (req) => {
|
|
41
|
+
return await baseQuery(req, axios_1.default.patch);
|
|
42
|
+
};
|
|
43
|
+
const baseQuery = async (req, func) => {
|
|
44
|
+
const options = {
|
|
45
|
+
headers: { 'content-type': 'application/json' },
|
|
46
|
+
params: req.params,
|
|
47
|
+
};
|
|
48
|
+
try {
|
|
49
|
+
if (req.body) {
|
|
50
|
+
return (await func(req.path, req.body, options)).data;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return (await func(req.path, options)).data;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
return errorHandler(error, req.serviceName);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const errorHandler = (error, serviceName) => {
|
|
61
|
+
if (!(error instanceof axios_1.AxiosError))
|
|
62
|
+
throw error;
|
|
63
|
+
throw {
|
|
64
|
+
serviceName: serviceName,
|
|
65
|
+
status: error.status ?? 500,
|
|
66
|
+
error,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
exports.request = {
|
|
70
|
+
get,
|
|
71
|
+
post,
|
|
72
|
+
put,
|
|
73
|
+
patch,
|
|
74
|
+
delete: del,
|
|
75
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
const fs = __importStar(require("fs"));
|
|
28
|
+
if (!fs.existsSync("./package-data/dist")) {
|
|
29
|
+
fs.mkdirSync("./dist", { recursive: true });
|
|
30
|
+
}
|
|
31
|
+
const jsLineOne = `Object.defineProperty(exports, "__esModule", { value: true });\n`;
|
|
32
|
+
const jsLineTwo = `__exportStar(require("./client-functions"), exports);\n`;
|
|
33
|
+
const jsLineThree = `__exportStar(require("./types/types"), exports);\n`;
|
|
34
|
+
fs.writeFileSync("./dist/index.js", `${jsLineOne}${jsLineTwo}${jsLineThree}`);
|
|
35
|
+
const tsLineOne = `export * from './package-data/client-functions';\n`;
|
|
36
|
+
const tsLineTwo = `export * from './package-data/types/types';\n`;
|
|
37
|
+
fs.writeFileSync("./dist/index.d.ts", `${tsLineOne}${tsLineTwo}`);
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./route-handler/routeHandler"), exports);
|
|
18
|
+
__exportStar(require("./api-request/apiRequest"), exports);
|
|
19
|
+
__exportStar(require("./knex-connections"), exports);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.connection = void 0;
|
|
4
|
+
const dotenv_1 = require("dotenv");
|
|
5
|
+
(0, dotenv_1.config)();
|
|
6
|
+
const host = process.env.POSTGRES_HOST;
|
|
7
|
+
const dbName = process.env.POSTGRES_DB;
|
|
8
|
+
const pass = process.env.POSTGRES_PASSWORD;
|
|
9
|
+
exports.connection = {
|
|
10
|
+
client: 'pg',
|
|
11
|
+
connection: {
|
|
12
|
+
host: host,
|
|
13
|
+
port: 5432,
|
|
14
|
+
user: dbName,
|
|
15
|
+
password: pass,
|
|
16
|
+
database: dbName,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dbConnection = exports.dbConfig = void 0;
|
|
4
|
+
var knexFile_1 = require("./knexFile");
|
|
5
|
+
Object.defineProperty(exports, "dbConfig", { enumerable: true, get: function () { return knexFile_1.dbConfig; } });
|
|
6
|
+
var dbConnection_1 = require("./dbConnection");
|
|
7
|
+
Object.defineProperty(exports, "dbConnection", { enumerable: true, get: function () { return dbConnection_1.dbConnection; } });
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dbConfig = void 0;
|
|
4
|
+
const connection_1 = require("./connection");
|
|
5
|
+
exports.dbConfig = {
|
|
6
|
+
development: {
|
|
7
|
+
...connection_1.connection,
|
|
8
|
+
pool: {
|
|
9
|
+
min: 2,
|
|
10
|
+
max: 10,
|
|
11
|
+
},
|
|
12
|
+
migrations: {
|
|
13
|
+
tableName: 'knex_migrations',
|
|
14
|
+
directory: 'src/db/migrations',
|
|
15
|
+
},
|
|
16
|
+
seeds: {
|
|
17
|
+
directory: 'src/db/seeds',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "jh-be-tools",
|
|
3
|
+
"version": "1.0.8",
|
|
4
|
+
"description": "",
|
|
5
|
+
"types": "index.d.ts",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "npx tsc --build && cp package.json dist/.",
|
|
8
|
+
"test": "echo \"Error: no test\" && exit 1"
|
|
9
|
+
},
|
|
10
|
+
"author": "",
|
|
11
|
+
"license": "ISC",
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@types/express": "^5.0.0",
|
|
14
|
+
"@types/node": "^20.11.5",
|
|
15
|
+
"typescript": "^5.3.3"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"axios": "^1.6.7",
|
|
19
|
+
"dotenv": "^16.4.5",
|
|
20
|
+
"express": "^4.21.1",
|
|
21
|
+
"knex": "^3.1.0",
|
|
22
|
+
"pg": "^8.13.1",
|
|
23
|
+
"zod": "^3.23.8"
|
|
24
|
+
},
|
|
25
|
+
"bin": {
|
|
26
|
+
"createPackageIndexFiles": "create-package-index-files/createPackageIndexFiles.js"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Request, Response } from 'express';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export interface RouteSchema {
|
|
4
|
+
request?: z.ZodSchema;
|
|
5
|
+
response?: z.ZodSchema;
|
|
6
|
+
}
|
|
7
|
+
interface ReturnValue<T> {
|
|
8
|
+
data: T;
|
|
9
|
+
status?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const routeHandler: (req: Request, res: Response, fun: (req?: any) => Promise<ReturnValue<unknown> | void>, schema: RouteSchema) => Promise<Response<any, Record<string, any>> | undefined>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.routeHandler = void 0;
|
|
4
|
+
const routeHandler = async (req, res, fun, schema) => {
|
|
5
|
+
if (schema.request) {
|
|
6
|
+
try {
|
|
7
|
+
await schema.request.parseAsync({
|
|
8
|
+
body: req.body,
|
|
9
|
+
query: req.query,
|
|
10
|
+
params: req.params,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
return res.status(400).json(error);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
let data;
|
|
18
|
+
let status;
|
|
19
|
+
try {
|
|
20
|
+
const result = await fun(req);
|
|
21
|
+
data = result?.data;
|
|
22
|
+
const defaultStatus = result?.data ? 200 : 204;
|
|
23
|
+
status = result?.status ?? defaultStatus;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return res.status(500).json(error);
|
|
27
|
+
}
|
|
28
|
+
if (schema.response) {
|
|
29
|
+
try {
|
|
30
|
+
await schema.response.parseAsync({ data });
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
return res.status(500).json(error);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
res.status(status).json({ data });
|
|
37
|
+
};
|
|
38
|
+
exports.routeHandler = routeHandler;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateRequest = void 0;
|
|
4
|
+
const validateRequest = (schema) => {
|
|
5
|
+
return async (req, res, next) => {
|
|
6
|
+
try {
|
|
7
|
+
await schema.parseAsync({
|
|
8
|
+
body: req.body,
|
|
9
|
+
query: req.query,
|
|
10
|
+
params: req.params,
|
|
11
|
+
});
|
|
12
|
+
next();
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
res.status(400).json({ error: 'Invalid request payload', details: error });
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
exports.validateRequest = validateRequest;
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jh-be-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "",
|
|
5
|
-
"
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
6
7
|
"scripts": {
|
|
7
8
|
"build": "npx tsc --build && cp package.json dist/.",
|
|
8
9
|
"test": "echo \"Error: no test\" && exit 1"
|