panda-sky-client
Version:
Auto-assembling client for APIs deployed with Panda Sky
77 lines (66 loc) • 5.71 kB
JavaScript
var Log, isCacheHit, json;
import { merge } from "panda-parchment";
json = function (obj) {
return console.log("JSON", JSON.stringify(obj));
};
isCacheHit = function (response) {
var value;
if (value = response.headers.get("x-cache")) {
return /^Hit/.test(value);
} else {
return false;
}
};
Log = function (fn) {
return async function (...args) {
var duration, e, methodName, out, resourceName, result, start, tag;
if (args[2]) {
({
methodName,
resourceName
} = args[2]);
} else {
methodName = "get";
resourceName = "discovery";
}
tag = `${resourceName + methodName.toUpperCase()}`;
json({
networkAttempt: true,
tag: tag
});
try {
start = Date.now();
result = await fn(...args);
duration = Date.now() - start;
out = {
[`${tag}`]: duration,
networkSuccess: true,
cacheHit: isCacheHit(result),
tag: tag
};
if (/^5[0-9][0-9]/.test(result.status)) {
json(merge(out, {
Status500Class: true
}));
} else if (/^4[0-9][0-9]/.test(result.status)) {
json(merge(out, {
Status400Class: true
}));
} else {
json(out);
} // Don't forget to return the actual result after we finish logging.
return result;
} catch (error) {
e = error;
json({
networkFail: true,
tag: tag
});
console.log(e);
throw new Error(e);
}
};
};
export default Log;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYXZpZC9yZXBvcy9wYW5kYS1za3ktY2xpZW50L3NyYy9sb2cuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUEsR0FBQSxFQUFBLFVBQUEsRUFBQSxJQUFBO0FBQUEsU0FBQSxLQUFBLFFBQUEsaUJBQUE7O0FBRUEsSUFBQSxHQUFPLFVBQUEsR0FBQSxFQUFBO1NBQVMsT0FBTyxDQUFQLEdBQUEsQ0FBQSxNQUFBLEVBQW9CLElBQUksQ0FBSixTQUFBLENBQXBCLEdBQW9CLENBQXBCLEM7QUFBVCxDQUFQOztBQUVBLFVBQUEsR0FBYSxVQUFBLFFBQUEsRUFBQTtBQUNYLE1BQUEsS0FBQTs7QUFBQSxNQUFHLEtBQUEsR0FBUSxRQUFRLENBQUMsT0FBVCxDQUFBLEdBQUEsQ0FBWCxTQUFXLENBQVgsRUFBQTtXQUNFLE9BQUEsSUFBQSxDQURGLEtBQ0UsQztBQURGLEdBQUEsTUFBQTtXQUFBLEs7O0FBRFcsQ0FBYjs7QUFNQSxHQUFBLEdBQU0sVUFBQSxFQUFBLEVBQUE7U0FDSixnQkFBQSxHQUFBLElBQUEsRUFBQTtBQUNFLFFBQUEsUUFBQSxFQUFBLENBQUEsRUFBQSxVQUFBLEVBQUEsR0FBQSxFQUFBLFlBQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLEdBQUE7O0FBQUEsUUFBRyxJQUFLLENBQVIsQ0FBUSxDQUFSLEVBQUE7QUFDRSxPQUFBO0FBQUEsUUFBQSxVQUFBO0FBQUEsUUFBQTtBQUFBLFVBQTZCLElBQUssQ0FEcEMsQ0FDb0MsQ0FBbEM7QUFERixLQUFBLE1BQUE7QUFHRSxNQUFBLFVBQUEsR0FBYSxLQUFiO0FBQ0EsTUFBQSxZQUFBLEdBSkYsV0FJRTs7O0FBRUYsSUFBQSxHQUFBLEdBQU0sR0FBRyxZQUFBLEdBQWUsVUFBVSxDQUE1QixXQUFrQixFQUFsQixFQUFOO0FBRUEsSUFBQSxJQUFBLENBQ0U7QUFBQSxNQUFBLGNBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQSxHQUFBLEVBQUs7QUFETCxLQURGLENBQUE7O0FBR0EsUUFBQTtBQUNFLE1BQUEsS0FBQSxHQUFRLElBQUksQ0FBSixHQUFBLEVBQVI7QUFDQSxNQUFBLE1BQUEsR0FBUyxNQUFNLEVBQUEsQ0FBRyxHQUFULElBQU0sQ0FBZjtBQUNBLE1BQUEsUUFBQSxHQUFXLElBQUksQ0FBSixHQUFBLEtBQWEsS0FBeEI7QUFFQSxNQUFBLEdBQUEsR0FDRTtBQUFBLFNBQUEsR0FBQSxHQUFBLEVBQUEsR0FBQSxRQUFBO0FBQ0EsUUFBQSxjQUFBLEVBREEsSUFBQTtBQUVBLFFBQUEsUUFBQSxFQUFVLFVBQUEsQ0FGVixNQUVVLENBRlY7QUFHQSxRQUFBLEdBQUEsRUFBSztBQUhMLE9BREY7O0FBTUEsVUFBRyxlQUFBLElBQUEsQ0FBb0IsTUFBTSxDQUE3QixNQUFHLENBQUgsRUFBQTtBQUNFLFFBQUEsSUFBQSxDQUFLLEtBQUEsQ0FBQSxHQUFBLEVBQVc7QUFBQyxVQUFBLGNBQUEsRUFBZ0I7QUFBakIsU0FBWCxDQUFMLENBQUE7QUFERixPQUFBLE1BRUssSUFBRyxlQUFBLElBQUEsQ0FBb0IsTUFBTSxDQUE3QixNQUFHLENBQUgsRUFBQTtBQUNILFFBQUEsSUFBQSxDQUFLLEtBQUEsQ0FBQSxHQUFBLEVBQVc7QUFBQyxVQUFBLGNBQUEsRUFBZ0I7QUFBakIsU0FBWCxDQUFMLENBQUE7QUFERyxPQUFBLE1BQUE7QUFHSCxRQUFBLElBQUEsQ0FIRyxHQUdILENBQUE7QUFmRixPQURGLEM7OztBQW1CRSxhQW5CRixNQW1CRTtBQW5CRixLQUFBLENBQUEsT0FBQSxLQUFBLEVBQUE7QUFxQk0sTUFBQSxDQUFBLEdBQUEsS0FBQTtBQUNKLE1BQUEsSUFBQSxDQUNFO0FBQUEsUUFBQSxXQUFBLEVBQUEsSUFBQTtBQUNBLFFBQUEsR0FBQSxFQUFLO0FBREwsT0FERixDQUFBO0FBR0EsTUFBQSxPQUFPLENBQVAsR0FBQSxDQUFBLENBQUE7QUFDQSxZQUFNLElBQUEsS0FBQSxDQTFCUixDQTBCUSxDQUFOOztBQXRDSixHO0FBREksQ0FBTjs7QUF5Q0EsZUFBZSxHQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttZXJnZX0gZnJvbSBcInBhbmRhLXBhcmNobWVudFwiXG5cbmpzb24gPSAob2JqKSAtPiBjb25zb2xlLmxvZyBcIkpTT05cIiwgSlNPTi5zdHJpbmdpZnkgb2JqXG5cbmlzQ2FjaGVIaXQgPSAocmVzcG9uc2UpIC0+XG4gIGlmIHZhbHVlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoXCJ4LWNhY2hlXCIpXG4gICAgL15IaXQvLnRlc3QgdmFsdWVcbiAgZWxzZVxuICAgIGZhbHNlXG5cbkxvZyA9IChmbikgLT5cbiAgKGFyZ3MuLi4pIC0+XG4gICAgaWYgYXJnc1syXVxuICAgICAge21ldGhvZE5hbWUsIHJlc291cmNlTmFtZX0gPSBhcmdzWzJdXG4gICAgZWxzZVxuICAgICAgbWV0aG9kTmFtZSA9IFwiZ2V0XCJcbiAgICAgIHJlc291cmNlTmFtZSA9IFwiZGlzY292ZXJ5XCJcblxuICAgIHRhZyA9IFwiI3tyZXNvdXJjZU5hbWUgKyBtZXRob2ROYW1lLnRvVXBwZXJDYXNlKCl9XCJcblxuICAgIGpzb25cbiAgICAgIG5ldHdvcmtBdHRlbXB0OiB0cnVlXG4gICAgICB0YWc6IHRhZ1xuICAgIHRyeVxuICAgICAgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICByZXN1bHQgPSBhd2FpdCBmbiBhcmdzLi4uXG4gICAgICBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFxuXG4gICAgICBvdXQgPVxuICAgICAgICBcIiN7dGFnfVwiOiBkdXJhdGlvblxuICAgICAgICBuZXR3b3JrU3VjY2VzczogdHJ1ZVxuICAgICAgICBjYWNoZUhpdDogaXNDYWNoZUhpdCByZXN1bHRcbiAgICAgICAgdGFnOiB0YWdcblxuICAgICAgaWYgL141WzAtOV1bMC05XS8udGVzdCByZXN1bHQuc3RhdHVzXG4gICAgICAgIGpzb24gbWVyZ2Ugb3V0LCB7U3RhdHVzNTAwQ2xhc3M6IHRydWV9XG4gICAgICBlbHNlIGlmIC9eNFswLTldWzAtOV0vLnRlc3QgcmVzdWx0LnN0YXR1c1xuICAgICAgICBqc29uIG1lcmdlIG91dCwge1N0YXR1czQwMENsYXNzOiB0cnVlfVxuICAgICAgZWxzZVxuICAgICAgICBqc29uIG91dFxuXG4gICAgICAjIERvbid0IGZvcmdldCB0byByZXR1cm4gdGhlIGFjdHVhbCByZXN1bHQgYWZ0ZXIgd2UgZmluaXNoIGxvZ2dpbmcuXG4gICAgICByZXR1cm4gcmVzdWx0XG5cbiAgICBjYXRjaCBlXG4gICAgICBqc29uXG4gICAgICAgIG5ldHdvcmtGYWlsOiB0cnVlXG4gICAgICAgIHRhZzogdGFnXG4gICAgICBjb25zb2xlLmxvZyBlXG4gICAgICB0aHJvdyBuZXcgRXJyb3IgZVxuXG5leHBvcnQgZGVmYXVsdCBMb2dcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=/Users/david/repos/panda-sky-client/src/log.coffee