UNPKG

faastjs

Version:

Serverless batch computing made simple.

78 lines 11.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const ava_1 = tslib_1.__importDefault(require("ava")); const index_1 = require("../index"); const error_1 = require("../src/error"); (0, ava_1.default)("FaastError basic error", t => { const error = new index_1.FaastError("bad error"); const { name, stack, message, cause, ...rest } = error; const _exhaustiveCheck = {}; t.is(name, error_1.FaastErrorNames.EGENERIC); t.regex(stack, /unit-error.test/); t.is(index_1.FaastError.fullStack(error), stack ?? ""); t.deepEqual(index_1.FaastError.info(error), {}); t.is(message, "bad error"); t.is(error.cause(), undefined); }); function foo() { throw new Error("underlying error"); } (0, ava_1.default)("FaastError nested error", t => { let nested; try { foo(); } catch (err) { nested = err; } const error = new index_1.FaastError(nested, "bad error"); const { name, stack, message, cause, ...rest } = error; const _exhaustiveCheck = {}; t.is(name, error_1.FaastErrorNames.EGENERIC); t.regex(stack, /unit-error.test/); t.regex(index_1.FaastError.fullStack(error), /foo/); t.deepEqual(index_1.FaastError.info(error), {}); t.is(message, "bad error: underlying error"); t.is(error.cause(), nested); }); (0, ava_1.default)("FaastError synthesized error", t => { const errObj = { message: "remote message", stack: "remote stack trace", name: "RemoteErrorName", custom: "remote custom property" }; const logUrlString = "https://cloud.com/logs"; const error = (0, error_1.synthesizeFaastError)({ errObj, logUrl: logUrlString, functionName: "functionName", args: ["arg"] }); const { name, stack, message, cause, ...rest } = error; const _exhaustiveCheck = {}; t.is(name, errObj.name); t.true(stack.indexOf(errObj.stack) >= 0); t.true(index_1.FaastError.fullStack(error).indexOf(errObj.stack) >= 0); const info = index_1.FaastError.info(error); for (const key of Object.keys(errObj)) { t.is(info[key], errObj[key]); } t.true(index_1.FaastError.info(error).logUrl.trim() === logUrlString); t.true(message.indexOf(errObj.message) >= 0); const c = error.cause(); t.is(c.message, logUrlString); t.is(info.functionName, "functionName"); t.deepEqual(info.args, ["arg"]); t.true(c.stack.indexOf("faast.js cloud function invocation") >= 0); t.is(index_1.FaastError.fullStack(c), c.stack ?? ""); t.true(index_1.FaastError.fullStack(c).indexOf(logUrlString) >= 0); }); (0, ava_1.default)("FaastError using option constructor", t => { const error = new index_1.FaastError({ name: error_1.FaastErrorNames.ETIMEOUT }, "message"); const { name, stack, message, cause, ...rest } = error; const _exhaustiveCheck = {}; t.is(name, error_1.FaastErrorNames.ETIMEOUT); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC1lcnJvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC91bml0LWVycm9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQXVCO0FBQ3ZCLG9DQUFzQztBQUN0Qyx3Q0FBcUU7QUFFckUsSUFBQSxhQUFJLEVBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDdkQsTUFBTSxnQkFBZ0IsR0FBMEIsRUFBRSxDQUFDO0lBQ25ELENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLHVCQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsRUFBRSxDQUFDLGtCQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxHQUFHO0lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxJQUFBLGFBQUksRUFBQyx5QkFBeUIsRUFB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QWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0ZXN0IGZyb20gXCJhdmFcIjtcbmltcG9ydCB7IEZhYXN0RXJyb3IgfSBmcm9tIFwiLi4vaW5kZXhcIjtcbmltcG9ydCB7IHN5bnRoZXNpemVGYWFzdEVycm9yLCBGYWFzdEVycm9yTmFtZXMgfSBmcm9tIFwiLi4vc3JjL2Vycm9yXCI7XG5cbnRlc3QoXCJGYWFzdEVycm9yIGJhc2ljIGVycm9yXCIsIHQgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEZhYXN0RXJyb3IoXCJiYWQgZXJyb3JcIik7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgY2F1c2UsIC4uLnJlc3QgfSA9IGVycm9yO1xuICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2s6IFJlcXVpcmVkPHR5cGVvZiByZXN0PiA9IHt9O1xuICAgIHQuaXMobmFtZSwgRmFhc3RFcnJvck5hbWVzLkVHRU5FUklDKTtcbiAgICB0LnJlZ2V4KHN0YWNrISwgL3VuaXQtZXJyb3IudGVzdC8pO1xuICAgIHQuaXMoRmFhc3RFcnJvci5mdWxsU3RhY2soZXJyb3IpLCBzdGFjayA/PyBcIlwiKTtcbiAgICB0LmRlZXBFcXVhbChGYWFzdEVycm9yLmluZm8oZXJyb3IpLCB7fSk7XG4gICAgdC5pcyhtZXNzYWdlLCBcImJhZCBlcnJvclwiKTtcbiAgICB0LmlzKGVycm9yLmNhdXNlKCksIHVuZGVmaW5lZCk7XG59KTtcblxuZnVuY3Rpb24gZm9vKCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVuZGVybHlpbmcgZXJyb3JcIik7XG59XG5cbnRlc3QoXCJGYWFzdEVycm9yIG5lc3RlZCBlcnJvclwiLCB0ID0+IHtcbiAgICBsZXQgbmVzdGVkO1xuICAgIHRyeSB7XG4gICAgICAgIGZvbygpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIG5lc3RlZCA9IGVycjtcbiAgICB9XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRmFhc3RFcnJvcihuZXN0ZWQsIFwiYmFkIGVycm9yXCIpO1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhY2ssIG1lc3NhZ2UsIGNhdXNlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcbiAgICB0LmlzKG5hbWUsIEZhYXN0RXJyb3JOYW1lcy5FR0VORVJJQyk7XG4gICAgdC5yZWdleChzdGFjayEsIC91bml0LWVycm9yLnRlc3QvKTtcbiAgICB0LnJlZ2V4KEZhYXN0RXJyb3IuZnVsbFN0YWNrKGVycm9yKSwgL2Zvby8pO1xuICAgIHQuZGVlcEVxdWFsKEZhYXN0RXJyb3IuaW5mbyhlcnJvciksIHt9KTtcbiAgICB0LmlzKG1lc3NhZ2UsIFwiYmFkIGVycm9yOiB1bmRlcmx5aW5nIGVycm9yXCIpO1xuICAgIHQuaXMoZXJyb3IuY2F1c2UoKSwgbmVzdGVkKTtcbn0pO1xuXG50ZXN0KFwiRmFhc3RFcnJvciBzeW50aGVzaXplZCBlcnJvclwiLCB0ID0+IHtcbiAgICBjb25zdCBlcnJPYmogPSB7XG4gICAgICAgIG1lc3NhZ2U6IFwicmVtb3RlIG1lc3NhZ2VcIixcbiAgICAgICAgc3RhY2s6IFwicmVtb3RlIHN0YWNrIHRyYWNlXCIsXG4gICAgICAgIG5hbWU6IFwiUmVtb3RlRXJyb3JOYW1lXCIsXG4gICAgICAgIGN1c3RvbTogXCJyZW1vdGUgY3VzdG9tIHByb3BlcnR5XCJcbiAgICB9O1xuICAgIGNvbnN0IGxvZ1VybFN0cmluZyA9IFwiaHR0cHM6Ly9jbG91ZC5jb20vbG9nc1wiO1xuICAgIGNvbnN0IGVycm9yID0gc3ludGhlc2l6ZUZhYXN0RXJyb3Ioe1xuICAgICAgICBlcnJPYmosXG4gICAgICAgIGxvZ1VybDogbG9nVXJsU3RyaW5nLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IFwiZnVuY3Rpb25OYW1lXCIsXG4gICAgICAgIGFyZ3M6IFtcImFyZ1wiXVxuICAgIH0pO1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhY2ssIG1lc3NhZ2UsIGNhdXNlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcblxuICAgIHQuaXMobmFtZSwgZXJyT2JqLm5hbWUpO1xuICAgIHQudHJ1ZShzdGFjayEuaW5kZXhPZihlcnJPYmouc3RhY2spID49IDApO1xuICAgIHQudHJ1ZShGYWFzdEVycm9yLmZ1bGxTdGFjayhlcnJvcikuaW5kZXhPZihlcnJPYmouc3RhY2spID49IDApO1xuICAgIGNvbnN0IGluZm8gPSBGYWFzdEVycm9yLmluZm8oZXJyb3IpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGVyck9iaikpIHtcbiAgICAgICAgdC5pcyhpbmZvW2tleV0sIChlcnJPYmogYXMgYW55KVtrZXldKTtcbiAgICB9XG4gICAgdC50cnVlKEZhYXN0RXJyb3IuaW5mbyhlcnJvcikubG9nVXJsLnRyaW0oKSA9PT0gbG9nVXJsU3RyaW5nKTtcbiAgICB0LnRydWUobWVzc2FnZS5pbmRleE9mKGVyck9iai5tZXNzYWdlKSA+PSAwKTtcbiAgICBjb25zdCBjID0gZXJyb3IuY2F1c2UoKSE7XG4gICAgdC5pcyhjLm1lc3NhZ2UsIGxvZ1VybFN0cmluZyk7XG4gICAgdC5pcyhpbmZvLmZ1bmN0aW9uTmFtZSwgXCJmdW5jdGlvbk5hbWVcIik7XG4gICAgdC5kZWVwRXF1YWwoaW5mby5hcmdzLCBbXCJhcmdcIl0pO1xuICAgIHQudHJ1ZShjLnN0YWNrIS5pbmRleE9mKFwiZmFhc3QuanMgY2xvdWQgZnVuY3Rpb24gaW52b2NhdGlvblwiKSA+PSAwKTtcbiAgICB0LmlzKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGMpLCBjLnN0YWNrID8/IFwiXCIpO1xuICAgIHQudHJ1ZShGYWFzdEVycm9yLmZ1bGxTdGFjayhjKS5pbmRleE9mKGxvZ1VybFN0cmluZykgPj0gMCk7XG59KTtcblxudGVzdChcIkZhYXN0RXJyb3IgdXNpbmcgb3B0aW9uIGNvbnN0cnVjdG9yXCIsIHQgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEZhYXN0RXJyb3IoeyBuYW1lOiBGYWFzdEVycm9yTmFtZXMuRVRJTUVPVVQgfSwgXCJtZXNzYWdlXCIpO1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhY2ssIG1lc3NhZ2UsIGNhdXNlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcbiAgICB0LmlzKG5hbWUsIEZhYXN0RXJyb3JOYW1lcy5FVElNRU9VVCk7XG59KTtcbiJdfQ==