whistle.interceptors 0.0.1 → 0.0.2
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/README.md +28 -0
- package/dist/server.js +1 -1
- package/dist/uiServer/index.js +58 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1 +1,29 @@
|
|
|
1
1
|
# whistle.interceptors
|
|
2
|
+
|
|
3
|
+
一个用于灵活拦截和模拟HTTP请求的whistle插件。
|
|
4
|
+
|
|
5
|
+
## 功能特点
|
|
6
|
+
|
|
7
|
+
- 基于请求体参数的动态Mock能力
|
|
8
|
+
- 简单易用的配置规则
|
|
9
|
+
|
|
10
|
+
## 安装
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install -g whistle.interceptors
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## 配置示例
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
test.example.cn/api interceptors:// @userid=001&file=res.json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
当匹配到test.example.cn/api请求时,如果请求体中参数userid=001,则返回res.json文件中的内容。
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
test.example.cn/api interceptors:// @userid=001&file=res.json|userid=002&file=res2.json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
当匹配到test.example.cn/api请求时,如果请求体中参数userid=001,则返回res.json文件中的内容;如果请求体中参数userid=002,则返回res2.json文件中的内容。
|
package/dist/server.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var h=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var P=(s,t)=>{for(var e in t)h(s,e,{get:t[e],enumerable:!0})},d=(s,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of S(t))!f.call(s,n)&&n!==e&&h(s,n,{get:()=>t[n],enumerable:!(r=p(t,n))||r.enumerable});return s};var W=s=>d(h({},"__esModule",{value:!0}),s);var c=(s,t,e)=>new Promise((r,n)=>{var u=o=>{try{l(e.next(o))}catch(i){n(i)}},a=o=>{try{l(e.throw(o))}catch(i){n(i)}},l=o=>o.done?r(o.value):Promise.resolve(o.value).then(u,a);l((e=e.apply(s,t)).next())});var T={};P(T,{default:()=>M});module.exports=W(T);var v=["file"];function R(s){return s.split("|").map(e=>{let r=new Map;return e.split("&").forEach(u=>{let[a,l]=u.split("=");r.set(a,l)}),r})}var M=(s,t)=>{s.on("request",(e,r)=>c(null,null,function*(){e.method==="POST"?e.on("data",n=>{let u=JSON.parse(n.toString()),a=R(e.originalReq.globalValue);for(let l of a)Array.from(l.entries()).every(([i,g])=>v.includes(i)?!0:u[i]&&u[i]===g)&&l.has("file")&&t.getValue(l.get("file"),i=>{r.end(i)});e.passThrough()}):e.passThrough()})),s.on("upgrade",(e,r)=>{e.passThrough()}),s.on("connect",(e,r)=>{e.passThrough()})};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/uiServer/index.ts
|
|
30
|
+
var uiServer_exports = {};
|
|
31
|
+
__export(uiServer_exports, {
|
|
32
|
+
default: () => uiServer_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(uiServer_exports);
|
|
35
|
+
var import_koa = __toESM(require("koa"));
|
|
36
|
+
var import_koa_bodyparser = __toESM(require("koa-bodyparser"));
|
|
37
|
+
var import_koa_static = __toESM(require("koa-static"));
|
|
38
|
+
var import_path = __toESM(require("path"));
|
|
39
|
+
var import_koa_router = __toESM(require("koa-router"));
|
|
40
|
+
|
|
41
|
+
// src/uiServer/router.ts
|
|
42
|
+
var router_default = (router) => {
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// src/uiServer/index.ts
|
|
46
|
+
var MAX_AGE = 1e3 * 60 * 5;
|
|
47
|
+
var uiServer_default = (server, options) => {
|
|
48
|
+
const app = new import_koa.default();
|
|
49
|
+
app.proxy = true;
|
|
50
|
+
app.silent = true;
|
|
51
|
+
const router = new import_koa_router.default();
|
|
52
|
+
router_default(router);
|
|
53
|
+
app.use((0, import_koa_bodyparser.default)());
|
|
54
|
+
app.use(router.routes());
|
|
55
|
+
app.use(router.allowedMethods());
|
|
56
|
+
app.use((0, import_koa_static.default)(import_path.default.join(__dirname, "../../public"), { maxage: MAX_AGE }));
|
|
57
|
+
server.on("request", app.callback());
|
|
58
|
+
};
|