gypsum
Version:
Simple and easy lightweight typescript server side framework on Node.js.
46 lines • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Moment = require("moment");
const object_1 = require("tools-box/object");
const validall_1 = require("validall");
const logger_1 = require("../misc/logger");
function convert(src, fields, logger) {
for (let i = 0; i < src.length; i++) {
for (let j = 0; j < fields.length; j++) {
let field = Array.isArray(fields[j]) ? fields[j] : [fields[j]];
let srcField = field[0];
let destField = field[1] || srcField;
let method = field[2] || field[1] || 'from';
if (['form', 'fromNow'].indexOf(method) === -1)
method = 'from';
if (srcField === '.' && typeof src[i] === 'string') {
src[i] = Moment()[method](src[i]);
}
else if (validall_1.Types.object(src[i])) {
let srcValue = object_1.getValue(src[i], srcField);
if (srcValue)
object_1.setValue(src[i], destField, Moment()[method](srcValue));
else
logger.warn(`cannot find '${srcField}' in the response object`);
}
else {
logger.warn(`input data does not match the response`);
}
}
}
}
function moment(ctx, ...fields) {
const logger = new logger_1.Logger('moment');
if (!fields || !fields.length)
return ctx.next();
let responseData = ctx.response.data;
if (!responseData || (responseData && !responseData.length))
return ctx.next();
if (!Array.isArray(responseData))
convert([responseData], fields, logger);
else
convert(responseData, fields, logger);
ctx.next();
}
exports.moment = moment;
//# sourceMappingURL=moment.js.map