claire-framework
Version:
- được viết bằng TypeScript - hỗ trợ websocket và HTTP request - hỗ trợ CLI để generate base project (claire-cli)
34 lines • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const AbstractHttpResponder_1 = require("../controller/http/AbstractHttpResponder");
const AbstractModel_1 = require("../model/AbstractModel");
class DefaultJsonResponder extends AbstractHttpResponder_1.AbstractHttpResponder {
isFlatObject(obj) {
return ["string", "number", "boolean", "undefined", "null"].includes(typeof obj);
}
/**
* Recursively convert an object to json, aware of any instance of AbstractModel to use toJSON method.
* @param obj
*/
toJsonObject(obj) {
switch (true) {
case this.isFlatObject(obj):
return obj;
case Array.isArray(obj):
return obj.map((e) => this.toJsonObject(e));
case (obj instanceof AbstractModel_1.AbstractModel):
return AbstractModel_1.toJSON(obj);
default:
return Object.keys(obj).reduce((collector, key) => {
//-- recursively convert to json
collector[key] = this.isFlatObject(obj[key]) ? obj[key] : this.toJsonObject(obj[key]);
return collector;
}, {});
}
}
response(response, data) {
response.json({ success: true, result: this.toJsonObject(data) });
}
}
exports.DefaultJsonResponder = DefaultJsonResponder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEpzb25SZXNwb25kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZGVmYXVsdC1pbXBsZW1lbnRhdGlvbnMvRGVmYXVsdEpzb25SZXNwb25kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvRkFBK0U7QUFFL0UsMERBQTZEO0FBRTdELE1BQWEsb0JBQXFCLFNBQVEsNkNBQXFCO0lBRW5ELFlBQVksQ0FBQyxHQUFRO1FBQ3pCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVksQ0FBQyxHQUFRO1FBQ3pCLFFBQVEsSUFBSSxFQUFFO1lBQ1YsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsT0FBTyxHQUFHLENBQUM7WUFDZixLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRCxLQUFLLENBQUMsR0FBRyxZQUFZLDZCQUFhLENBQUM7Z0JBQy9CLE9BQU8sc0JBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QjtnQkFDSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFNLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNuRCxnQ0FBZ0M7b0JBQ2hDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3RGLE9BQU8sU0FBUyxDQUFDO2dCQUNyQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDZDtJQUNMLENBQUM7SUFFTSxRQUFRLENBQUMsUUFBc0IsRUFBRSxJQUFTO1FBQzdDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0o7QUE5QkQsb0RBOEJDIn0=