phecda-server
Version:
server framework that provide IOC/type-reuse/http&rpc-adaptor
73 lines (65 loc) • 2.99 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
var _chunkSKGOTR4Tjs = require('./chunk-SKGOTR4T.js');
var _chunkLLF55NZPjs = require('./chunk-LLF55NZP.js');
// src/test.ts
var _phecdacore = require('phecda-core');
async function TestFactory(...Modules) {
const { moduleMap, modelMap } = await _chunkSKGOTR4Tjs.Factory.call(void 0, Modules);
return {
get(Model) {
const tag = _phecdacore.getTag.call(void 0, Model);
const module = moduleMap.get(tag);
if (!module) throw new Error(`module "${String(tag)}" doesn't exist`);
if (modelMap.get(module) !== Model) throw new Error(`module "${Model.name}" and "${String(tag)}" in modulemap are different modules`);
return module;
}
};
}
_chunkLLF55NZPjs.__name.call(void 0, TestFactory, "TestFactory");
async function TestHttp(app, { moduleMap, meta }, isAgent = true) {
const { default: request, agent } = await Promise.resolve().then(() => _interopRequireWildcard(require("supertest")));
const Agent = agent(app);
function module(Module) {
const tag = _phecdacore.getTag.call(void 0, Module);
const module2 = moduleMap.get(tag);
if (!module2) throw new Error(`module "${String(tag)}" doesn't exist`);
return new Proxy({}, {
get(_target, p) {
const { data } = meta.find(({ data: data2 }) => data2.name === Module.name && data2.method === p && data2.tag === tag);
return (...args) => {
const ret = {
body: {},
headers: {},
query: {},
method: data.http.method,
url: data.http.prefix + data.http.route
};
data.params.forEach((item) => {
if (item.type === "params") {
ret.url = ret.url.replace(`:${item.key}`, args[item.index]);
return;
}
if (item.type === "query") {
ret.query[item.key] = args[item.index];
return;
}
if (item.key) ret[item.type][item.key] = args[item.index];
else ret[item.type] = args[item.index];
});
let agent2 = (isAgent ? Agent : request(app))[ret.method](ret.url);
if (Object.keys(ret.query).length > 0) agent2 = agent2.query(ret.query);
if (Object.keys(ret.headers).length > 0) agent2 = agent2.set(ret.headers);
if (Object.keys(ret.body).length > 0) agent2 = agent2.send(ret.body);
return agent2;
};
}
});
}
_chunkLLF55NZPjs.__name.call(void 0, module, "module");
return {
module,
agent
};
}
_chunkLLF55NZPjs.__name.call(void 0, TestHttp, "TestHttp");
exports.TestFactory = TestFactory; exports.TestHttp = TestHttp;