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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QUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRlc3QgZnJvbSBcImF2YVwiO1xuaW1wb3J0IHsgRmFhc3RFcnJvciB9IGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0IHsgc3ludGhlc2l6ZUZhYXN0RXJyb3IsIEZhYXN0RXJyb3JOYW1lcyB9IGZyb20gXCIuLi9zcmMvZXJyb3JcIjtcblxudGVzdChcIkZhYXN0RXJyb3IgYmFzaWMgZXJyb3JcIiwgdCA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRmFhc3RFcnJvcihcImJhZCBlcnJvclwiKTtcbiAgICBjb25zdCB7IG5hbWUsIHN0YWNrLCBtZXNzYWdlLCBjYXVzZSwgLi4ucmVzdCB9ID0gZXJyb3I7XG4gICAgY29uc3QgX2V4aGF1c3RpdmVDaGVjazogUmVxdWlyZWQ8dHlwZW9mIHJlc3Q+ID0ge307XG4gICAgdC5pcyhuYW1lLCBGYWFzdEVycm9yTmFtZXMuRUdFTkVSSUMpO1xuICAgIHQucmVnZXgoc3RhY2shLCAvdW5pdC1lcnJvci50ZXN0Lyk7XG4gICAgdC5pcyhGYWFzdEVycm9yLmZ1bGxTdGFjayhlcnJvciksIHN0YWNrID8/IFwiXCIpO1xuICAgIHQuZGVlcEVxdWFsKEZhYXN0RXJyb3IuaW5mbyhlcnJvciksIHt9KTtcbiAgICB0LmlzKG1lc3NhZ2UsIFwiYmFkIGVycm9yXCIpO1xuICAgIHQuaXMoZXJyb3IuY2F1c2UoKSwgdW5kZWZpbmVkKTtcbn0pO1xuXG5mdW5jdGlvbiBmb28oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidW5kZXJseWluZyBlcnJvclwiKTtcbn1cblxudGVzdChcIkZhYXN0RXJyb3IgbmVzdGVkIGVycm9yXCIsIHQgPT4ge1xuICAgIGxldCBuZXN0ZWQ7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9vKCk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgbmVzdGVkID0gZXJyO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9IG5ldyBGYWFzdEVycm9yKG5lc3RlZCwgXCJiYWQgZXJyb3JcIik7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgY2F1c2UsIC4uLnJlc3QgfSA9IGVycm9yO1xuICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2s6IFJlcXVpcmVkPHR5cGVvZiByZXN0PiA9IHt9O1xuICAgIHQuaXMobmFtZSwgRmFhc3RFcnJvck5hbWVzLkVHRU5FUklDKTtcbiAgICB0LnJlZ2V4KHN0YWNrISwgL3VuaXQtZXJyb3IudGVzdC8pO1xuICAgIHQucmVnZXgoRmFhc3RFcnJvci5mdWxsU3RhY2soZXJyb3IpLCAvZm9vLyk7XG4gICAgdC5kZWVwRXF1YWwoRmFhc3RFcnJvci5pbmZvKGVycm9yKSwge30pO1xuICAgIHQuaXMobWVzc2FnZSwgXCJiYWQgZXJyb3I6IHVuZGVybHlpbmcgZXJyb3JcIik7XG4gICAgdC5pcyhlcnJvci5jYXVzZSgpLCBuZXN0ZWQpO1xufSk7XG5cbnRlc3QoXCJGYWFzdEVycm9yIHN5bnRoZXNpemVkIGVycm9yXCIsIHQgPT4ge1xuICAgIGNvbnN0IGVyck9iaiA9IHtcbiAgICAgICAgbWVzc2FnZTogXCJyZW1vdGUgbWVzc2FnZVwiLFxuICAgICAgICBzdGFjazogXCJyZW1vdGUgc3RhY2sgdHJhY2VcIixcbiAgICAgICAgbmFtZTogXCJSZW1vdGVFcnJvck5hbWVcIixcbiAgICAgICAgY3VzdG9tOiBcInJlbW90ZSBjdXN0b20gcHJvcGVydHlcIlxuICAgIH07XG4gICAgY29uc3QgbG9nVXJsU3RyaW5nID0gXCJodHRwczovL2Nsb3VkLmNvbS9sb2dzXCI7XG4gICAgY29uc3QgZXJyb3IgPSBzeW50aGVzaXplRmFhc3RFcnJvcih7XG4gICAgICAgIGVyck9iaixcbiAgICAgICAgbG9nVXJsOiBsb2dVcmxTdHJpbmcsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogXCJmdW5jdGlvbk5hbWVcIixcbiAgICAgICAgYXJnczogW1wiYXJnXCJdXG4gICAgfSk7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgY2F1c2UsIC4uLnJlc3QgfSA9IGVycm9yO1xuICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2s6IFJlcXVpcmVkPHR5cGVvZiByZXN0PiA9IHt9O1xuXG4gICAgdC5pcyhuYW1lLCBlcnJPYmoubmFtZSk7XG4gICAgdC50cnVlKHN0YWNrIS5pbmRleE9mKGVyck9iai5zdGFjaykgPj0gMCk7XG4gICAgdC50cnVlKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGVycm9yKS5pbmRleE9mKGVyck9iai5zdGFjaykgPj0gMCk7XG4gICAgY29uc3QgaW5mbyA9IEZhYXN0RXJyb3IuaW5mbyhlcnJvcik7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZXJyT2JqKSkge1xuICAgICAgICB0LmlzKGluZm9ba2V5XSwgKGVyck9iaiBhcyBhbnkpW2tleV0pO1xuICAgIH1cbiAgICB0LnRydWUoRmFhc3RFcnJvci5pbmZvKGVycm9yKS5sb2dVcmwudHJpbSgpID09PSBsb2dVcmxTdHJpbmcpO1xuICAgIHQudHJ1ZShtZXNzYWdlLmluZGV4T2YoZXJyT2JqLm1lc3NhZ2UpID49IDApO1xuICAgIGNvbnN0IGMgPSBlcnJvci5jYXVzZSgpITtcbiAgICB0LmlzKGMubWVzc2FnZSwgbG9nVXJsU3RyaW5nKTtcbiAgICB0LmlzKGluZm8uZnVuY3Rpb25OYW1lLCBcImZ1bmN0aW9uTmFtZVwiKTtcbiAgICB0LmRlZXBFcXVhbChpbmZvLmFyZ3MsIFtcImFyZ1wiXSk7XG4gICAgdC50cnVlKGMuc3RhY2shLmluZGV4T2YoXCJmYWFzdC5qcyBjbG91ZCBmdW5jdGlvbiBpbnZvY2F0aW9uXCIpID49IDApO1xuICAgIHQuaXMoRmFhc3RFcnJvci5mdWxsU3RhY2soYyksIGMuc3RhY2sgPz8gXCJcIik7XG4gICAgdC50cnVlKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGMpLmluZGV4T2YobG9nVXJsU3RyaW5nKSA+PSAwKTtcbn0pO1xuXG50ZXN0KFwiRmFhc3RFcnJvciB1c2luZyBvcHRpb24gY29uc3RydWN0b3JcIiwgdCA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRmFhc3RFcnJvcih7IG5hbWU6IEZhYXN0RXJyb3JOYW1lcy5FVElNRU9VVCB9LCBcIm1lc3NhZ2VcIik7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgY2F1c2UsIC4uLnJlc3QgfSA9IGVycm9yO1xuICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2s6IFJlcXVpcmVkPHR5cGVvZiByZXN0PiA9IHt9O1xuICAgIHQuaXMobmFtZSwgRmFhc3RFcnJvck5hbWVzLkVUSU1FT1VUKTtcbn0pO1xuIl19