Socket
Socket
Sign inDemoInstall

travelers

Package Overview
Dependencies
88
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.5 to 2.0.0

25

dist/index.d.ts

@@ -1,6 +0,4 @@

/// <reference types="koa-bodyparser" />
import * as Koa from "koa";
import { SwaggerDefalut, travelersApis } from './lib/api';
import { Code } from './lib/code';
import * as Router from "koa-router";
import { Request, Response, NextFunction, RequestHandler, Express, ErrorRequestHandler } from "express";
declare type travelersConfig<T> = {

@@ -15,3 +13,3 @@ host?: String;

controllers: {
[key: string]: (ctx: travelersCtx) => Promise<any>;
[key: string]: (req: Request, res: Response) => Promise<any>;
};

@@ -21,3 +19,3 @@ };

config: travelersConfig<any>;
before?: (app: Koa<Koa.DefaultState, Koa.DefaultContext>) => void;
before?: (app: Express) => void;
args: Args;

@@ -28,8 +26,5 @@ srvs?: {

swaggerDefalut?: SwaggerDefalut;
after?: (app: Koa<Koa.DefaultState, Koa.DefaultContext>, obj: object) => void;
after?: (app: Express, obj?: object) => void;
};
export declare function travelers(option: travelersOption): Promise<void>;
declare type App = Koa<Koa.DefaultState, Koa.DefaultContext>;
declare type APPCtx = Koa.ParameterizedContext<Koa.DefaultState, Koa.DefaultContext>;
declare type RouterCtx = Koa.ParameterizedContext<any, Router.IRouterParamContext<any, {}>>;
declare global {

@@ -44,10 +39,12 @@ namespace travelers {

}
interface travelersCtx extends RouterCtx {
srvs: travelers.Srvs;
$config: travelers.$config;
declare module "express" {
interface Request {
srvs: travelers.Srvs;
$config: travelers.$config;
}
}
interface travelersApp extends App {
interface App extends Express {
srvs: travelers.Srvs;
$config: travelers.$config;
}
export { travelersApis, travelersOption, App, APPCtx, RouterCtx, travelersCtx, travelersApp, Code };
export { Request, Response, NextFunction, RequestHandler, Express, ErrorRequestHandler, travelersApis, travelersOption, Code, App };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Koa = require("koa");
const api_1 = require("./lib/api");
const bodyparser = require("koa-bodyparser");
const json = require("koa-json");
const chalk = require("chalk");
const code_1 = require("./lib/code");
exports.Code = code_1.Code;
const express = require("express");
async function travelers(option) {
const app = new Koa();
const app = express();
let { config, before, args, swaggerDefalut, after, srvs } = option;

@@ -18,10 +16,8 @@ const { host = '0.0.0.0', port = '3000' } = config;

before(app);
app.use(bodyparser({
enableTypes: ['json', 'form', 'text']
}));
app.use(async (ctx, next) => {
ctx.srvs = srvs;
await next();
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use((req, res, next) => {
req["srvs"] = srvs;
next();
});
app.use(json({}));
await api_1.apiManage(app, apis, controllers, swaggerDefalut, config);

@@ -34,3 +30,2 @@ if (after)

exports.travelers = travelers;
let a;
//# sourceMappingURL=index.js.map

@@ -1,5 +0,4 @@

/// <reference types="koa-bodyparser" />
import * as Koa from "koa";
/// <reference types="express" />
import * as joi from "joi";
import { travelersCtx } from "../index";
import { Request, Response, Express } from "../index";
declare type Info = {

@@ -62,5 +61,5 @@ title: string;

declare type ManageControllers = {
[key: string]: (ctx: travelersCtx) => Promise<any>;
[key: string]: (req: Request, res: Response) => Promise<any>;
};
declare function apiManage(app: Koa<Koa.DefaultState, Koa.DefaultContext>, apis: ManageApis, controllers: ManageControllers, swaggerDefalut: SwaggerDefalut, config: any): Promise<void>;
declare function apiManage(app: Express, apis: ManageApis, controllers: ManageControllers, swaggerDefalut: SwaggerDefalut, config: any): Promise<void>;
export { SwaggerDefalut, apiManage, travelersApis, swagger, ManageApis, ManageControllers };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Router = require("koa-router");
const joi = require("joi");
const convert = require("joi-to-json-schema");
const serve = require("koa-static-server");
const path_1 = require("path");
const path = require("path");
const chalk = require("chalk");
const verify = require("./verify");
const express = require("express");
const swaggerDefalutSwagger = {

@@ -35,3 +34,2 @@ swagger: '2.0',

const host = '127.0.0.1';
const router = new Router();
verify.apiVerify(apis, controllers);

@@ -89,39 +87,39 @@ Object.keys(apis).forEach(apiItem => {

koaPath = koaPath.replace(/{/g, ':');
router[method](koaPath, async (ctx, next) => {
// 验证
const _query = item.req.query || {};
const _body = item.req.body || {};
const _params = item.req.params || {};
let { params, request, response } = ctx;
let { query, body } = request;
console.log(`query : ${query}`, `params:${params}`, `body:${body}`);
try {
let queryKeys = Object.keys(query);
for (const queryKey of queryKeys) {
await joi.validate(query[queryKey], _query[queryKey]);
app[method](koaPath, (req, res, next) => {
(async function () {
// 验证
const _query = item.req.query || {};
const _body = item.req.body || {};
const _params = item.req.params || {};
let { params, query, body } = req;
try {
let queryKeys = Object.keys(_query);
for (const queryKey of queryKeys) {
await joi.validate(query[queryKey], _query[queryKey]);
}
let paramsKeys = Object.keys(_params);
for (const paramsKey of paramsKeys) {
await joi.validate(params[paramsKey], _params[paramsKey]);
}
if (_body)
await joi.validate(body, _body);
}
let paramsKeys = Object.keys(params);
for (const paramsKey of paramsKeys) {
await joi.validate(params[paramsKey], _params[paramsKey]);
catch (error) {
res.status(400).send(error);
return;
}
if (_body)
await joi.validate(body, _body);
}
catch (error) {
response.status = 400;
response.body = error.message;
return;
}
// 处理
try {
const result = await controllers[item.operationId];
if (result)
response.body = result;
}
catch (error) {
response.status = error.code || 500;
response.body = error;
return;
}
await next();
try {
if (controllers[item.operationId]) {
const result = await controllers[item.operationId](req, res);
if (result)
res.json(result);
}
else {
next();
}
}
catch (error) {
res.status(error.code || 500).send(error);
}
})();
});

@@ -132,11 +130,9 @@ });

exports.swagger = swagger = { ...swagger, ...swaggerDefalut };
app.use(serve({ rootDir: path_1.join(__dirname, '../../swagger'), gzip: true, rootPath: '/document' }));
app.use('/document', express.static(path.join(__dirname, '../../swagger')));
console.log(chalk.bold.red(`document you can click: http://${host}:${port}/document`));
router.get('/swagger', (ctx) => {
ctx.body = swagger;
app.get('/swagger', (req, res, next) => {
res.send(swagger);
});
app.use(router.routes());
app.use(router.allowedMethods());
}
exports.apiManage = apiManage;
//# sourceMappingURL=api.js.map

@@ -38,12 +38,18 @@ "use strict";

if (!key.includes('$')) {
result[key] = codeAll[key];
result[key] = {
resJson: function (res) {
res.status(codeAll[key].code).send(codeAll[key]);
}
};
}
else {
result[key] = function (args) {
let msg = codeAll[key].msg;
Object.keys(args).forEach(objKey => {
let replaceObj = `$${objKey}`;
msg = msg.replace(replaceObj, args[objKey]);
});
return msg;
result[key] = {
resJson: function (res, args) {
let obj = codeAll[key];
Object.keys(args).forEach(objKey => {
let replaceObj = `$${objKey}`;
obj.msg = obj.msg.replace(replaceObj, args[objKey]);
});
res.status(codeAll[key].code).send(obj);
}
};

@@ -50,0 +56,0 @@ }

{
"name": "travelers",
"version": "1.0.5",
"version": "2.0.0",
"description": "I wanna write code like travelers",

@@ -18,3 +18,4 @@ "main": "dist/index.js",

"keywords": [
"koa2",
"express",
"api",
"joi",

@@ -31,18 +32,11 @@ "swagger",

"dependencies": {
"@types/express": "^4.17.2",
"@types/joi": "^14.3.4",
"@types/node": "^12.12.3",
"chalk": "^3.0.0",
"express": "^4.17.1",
"joi": "^14.3.1",
"joi-to-json-schema": "^5.1.0",
"koa": "^2.11.0",
"koa-body": "^4.1.1",
"koa-bodyparser": "^4.2.1",
"koa-json": "^2.0.2",
"koa-router": "^7.4.0",
"koa-static-server": "^1.4.0"
"joi-to-json-schema": "^5.1.0"
},
"devDependencies": {
"@types/joi": "^14.3.4",
"@types/node": "^12.12.3",
"@types/koa": "^2.0.51",
"@types/koa-bodyparser": "^4.3.0",
"@types/koa-router": "^7.0.42",
"nodemon": "^1.19.4",

@@ -49,0 +43,0 @@ "ts-node": "^8.4.1",

@@ -11,3 +11,2 @@

2. 使用
import { travelers, travelersOption, travelersApis, travelersCtx } from 'travelers'

@@ -43,9 +42,9 @@ ### src/apis/api.ts

```
import { travelersCtx } from 'travelers'
export async function everyDay_list(ctx: travelersCtx) {
let { body, srvs } = ctx
const { knex } = srvs
ctx.body = {
import { Request, Response } from "travelers";
export async function everyDay_list(req: Request, res: Response) {
let { body, srvs } = req
const { knex } = srvs
res.json({
code: 200
}
})
}

@@ -55,5 +54,5 @@

### src/index.js
### src/index.ts
```
import { travelersOption, travelers } from 'travelers'
import { travelers, travelersOption,Response,Request,NextFunction } from 'travelers'
import * as apis from './apis/index'

@@ -67,3 +66,3 @@ import * as srvs from './srvs/index'

before: function (app) {
app.use(cors());
},

@@ -76,3 +75,6 @@ srvs,

after: function (app, obj: any) {
app.use((req: Request, res: Response) => {
const { codes } = req.srvs
return codes.notfind.resJson(res)
})
}

@@ -79,0 +81,0 @@ }

import * as Koa from "koa";
import { SwaggerDefalut, apiManage, travelersApis, swagger } from './lib/api'
import * as bodyparser from 'koa-bodyparser';
import * as json from 'koa-json';
import * as chalk from 'chalk';
import { srvsCode, Code } from './lib/code'
import * as Router from "koa-router";
import { Request, Response, NextFunction, RequestHandler, Express, ErrorRequestHandler } from "express";
import * as express from "express";

@@ -22,3 +20,3 @@ type travelersConfig<T> = {

controllers: {
[key: string]: (ctx: travelersCtx) => Promise<any>
[key: string]: (req: Request, res: Response) => Promise<any>
}

@@ -29,3 +27,3 @@ }

config: travelersConfig<any>,
before?: (app: Koa<Koa.DefaultState, Koa.DefaultContext>) => void,
before?: (app: Express) => void,
args: Args,

@@ -36,3 +34,3 @@ srvs?: {

swaggerDefalut?: SwaggerDefalut,
after?: (app: Koa<Koa.DefaultState, Koa.DefaultContext>, obj: object) => void
after?: (app: Express, obj?: object) => void
}

@@ -42,3 +40,4 @@

export async function travelers(option: travelersOption) {
const app = new Koa()
const app = express()
let { config, before, args, swaggerDefalut, after, srvs } = option

@@ -49,12 +48,9 @@ const { host = '0.0.0.0', port = '3000' } = config

srvs = srvsCode(srvs)
if (before) before(app)
app.use(bodyparser({
enableTypes: ['json', 'form', 'text']
}))
app.use(async (ctx, next) => {
ctx.srvs = srvs
await next()
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use((req: Request, res: Response, next: NextFunction) => {
req["srvs"] = srvs
next()
})
app.use(json({}))
await apiManage(app, apis, controllers, swaggerDefalut, config)

@@ -70,8 +66,3 @@ if (after) after(app, { swagger })

type App = Koa<Koa.DefaultState, Koa.DefaultContext>
type APPCtx = Koa.ParameterizedContext<Koa.DefaultState, Koa.DefaultContext>
type RouterCtx = Koa.ParameterizedContext<any, Router.IRouterParamContext<any, {}>>
declare global {

@@ -88,10 +79,10 @@ namespace travelers {

interface travelersCtx extends RouterCtx {
srvs: travelers.Srvs
$config: travelers.$config
declare module "express" {
interface Request {
srvs: travelers.Srvs
$config: travelers.$config
}
}
interface travelersApp extends App {
interface App extends Express {
srvs: travelers.Srvs

@@ -101,5 +92,3 @@ $config: travelers.$config

let a: travelersCtx
export { Request, Response, NextFunction, RequestHandler, Express, ErrorRequestHandler, travelersApis, travelersOption, Code, App }
export { travelersApis, travelersOption, App, APPCtx, RouterCtx, travelersCtx, travelersApp, Code }
import * as Koa from "koa";
import * as Router from "koa-router";
import * as joi from "joi";
import * as convert from 'joi-to-json-schema'
import * as serve from 'koa-static-server';
import { join } from 'path';
import { travelersCtx } from "../index";
import * as path from 'path';
import { Request, Response, Express, NextFunction } from "../index";
import * as chalk from 'chalk';
import * as verify from "./verify";
import * as express from "express";

@@ -83,7 +83,7 @@ const swaggerDefalutSwagger = {

type ManageControllers = {
[key: string]: (ctx: travelersCtx) => Promise<any>
[key: string]: (req: Request, res: Response) => Promise<any>
}
async function apiManage(
app: Koa<Koa.DefaultState, Koa.DefaultContext>,
app: Express,
apis: ManageApis,

@@ -95,3 +95,2 @@ controllers: ManageControllers,

const host = '127.0.0.1'
const router = new Router()
verify.apiVerify(apis, controllers)

@@ -154,39 +153,36 @@ Object.keys(apis).forEach(apiItem => {

koaPath = koaPath.replace(/{/g, ':')
router[method](koaPath, async (ctx: Koa.ParameterizedContext<any, Router.IRouterParamContext<any, {}>>, next) => {
// 验证
const _query = item.req.query || {}
const _body = item.req.body || {}
const _params = item.req.params || {}
let { params, request, response } = ctx
let { query, body } = request
console.log(`query : ${query}`, `params:${params}`, `body:${body}`)
try {
let queryKeys = Object.keys(query)
for (const queryKey of queryKeys) {
await joi.validate(query[queryKey], _query[queryKey])
app[method](koaPath, (req: Request, res: Response, next: NextFunction) => {
(async function () {
// 验证
const _query = item.req.query || {}
const _body = item.req.body || {}
const _params = item.req.params || {}
let { params, query, body } = req
try {
let queryKeys = Object.keys(_query)
for (const queryKey of queryKeys) {
await joi.validate(query[queryKey], _query[queryKey])
}
let paramsKeys = Object.keys(_params)
for (const paramsKey of paramsKeys) {
await joi.validate(params[paramsKey], _params[paramsKey])
}
if (_body) await joi.validate(body, _body)
} catch (error) {
res.status(400).send(error)
return
}
let paramsKeys = Object.keys(params)
for (const paramsKey of paramsKeys) {
await joi.validate(params[paramsKey], _params[paramsKey])
try {
if (controllers[item.operationId]) {
const result = await controllers[item.operationId](req,res)
if (result) res.json(result)
} else {
next()
}
} catch (error) {
res.status(error.code || 500).send(error)
}
if (_body) await joi.validate(body, _body)
} catch (error) {
response.status = 400
response.body = error.message
return
}
// 处理
try {
const result = await controllers[item.operationId]
if (result) response.body = result
} catch (error) {
response.status = error.code || 500
response.body = error
return
}
await next()
})()
})
})

@@ -197,9 +193,8 @@ })

swagger = { ...swagger, ...swaggerDefalut }
app.use(serve({ rootDir: join(__dirname, '../../swagger'), gzip: true, rootPath: '/document' }))
app.use('/document', express.static(path.join(__dirname, '../../swagger')));
console.log(chalk.bold.red(`document you can click: http://${host}:${port}/document`))
router.get('/swagger', (ctx) => {
ctx.body = swagger
app.get('/swagger', (req, res, next) => {
res.send(swagger)
})
app.use(router.routes())
app.use(router.allowedMethods())
}

@@ -206,0 +201,0 @@

@@ -32,20 +32,32 @@ const Code = {

import { Request, Response, Express, NextFunction } from "../index";
type CodeType = { [key: string]: { code: number, msg: string } }
type Result = {
[key: string]: {
resJson: (res: Response, args?: { [key: string]: string }) => void
}
}
function HttpCode(codeAll: CodeType) {
let result: { [key: string]: any } = {
let result: Result = {
}
Object.keys(codeAll).forEach(key => {
if (!key.includes('$')) {
result[key] = codeAll[key]
result[key] = {
resJson: function (res) {
res.status(codeAll[key].code).send(codeAll[key])
}
}
} else {
result[key] = function (args: { [key: string]: string }) {
let msg = codeAll[key].msg
Object.keys(args).forEach(objKey => {
let replaceObj = `$${objKey}`
msg = msg.replace(replaceObj, args[objKey])
})
return msg
result[key] = {
resJson: function (res, args) {
let obj = codeAll[key]
Object.keys(args).forEach(objKey => {
let replaceObj = `$${objKey}`
obj.msg = obj.msg.replace(replaceObj, args[objKey])
})
res.status(codeAll[key].code).send(obj)
}
}

@@ -52,0 +64,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc