process-reporting-ts
Version:
Process reporting with typescript
100 lines (99 loc) • 3.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.maskContentMD5 = exports.maskBinary = exports.maskPassword = exports.serializePayload = exports.getPayload = exports.getParameters = exports.parseExpression = exports.waitFor = void 0;
const mustache_1 = __importDefault(require("mustache"));
function waitFor(delayInMs) {
return new Promise(resolve => setTimeout(resolve, delayInMs));
}
exports.waitFor = waitFor;
function parseExpression(expression, payload) {
if (!expression) {
return null;
}
if (!payload) {
return null;
}
let context = payload;
if (payload instanceof Array) {
context = { "items": payload };
}
if (typeof expression === 'function') {
return expression(context);
}
return mustache_1.default.render(expression, context);
}
exports.parseExpression = parseExpression;
function getParameters(func) {
const str = func.toString();
const startBracket = str.indexOf('(');
if (startBracket < 0) {
return [];
}
const endBracket = str.indexOf(')', startBracket);
if (endBracket < 0) {
return [];
}
const paramsString = str.substring(startBracket + 1, endBracket);
if (paramsString.length === 0) {
return [];
}
const parameters = paramsString.split(',').map(e => e.trim());
for (let index = 0; index < parameters.length; index++) {
let param = parameters[index];
param = param.replace('...', '');
param = param.replace('{', '');
param = param.replace('}', '');
param = param.trim();
if (param) {
parameters[index] = param;
}
}
return parameters;
}
exports.getParameters = getParameters;
function getPayload(parameterNames, methodArguments) {
const payload = {};
for (let index = 0; index < parameterNames.length; index++) {
const param = parameterNames[index];
payload[param] = methodArguments[index];
}
return payload;
}
exports.getPayload = getPayload;
function serializePayload(payload, maskProperties) {
if (!payload) {
return payload;
}
if (typeof payload === 'string') {
return payload;
}
if (!maskProperties) {
return JSON.stringify(payload);
}
return JSON.stringify(payload, (k, v) => {
if (!maskProperties.hasOwnProperty(k)) {
return v;
}
const mask = maskProperties[k];
if (typeof mask === 'function') {
return mask(v);
}
return mask;
});
}
exports.serializePayload = serializePayload;
function maskPassword(pwd) {
return pwd !== undefined ? '*****' : pwd;
}
exports.maskPassword = maskPassword;
function maskBinary(binary) {
return binary ? 'bytes [' + binary.length + ']' : binary;
}
exports.maskBinary = maskBinary;
function maskContentMD5(it) {
return it ? Object.assign(Object.assign({}, it), { data: '[' + it.data.length + ']' }) : it;
}
exports.maskContentMD5 = maskContentMD5;