UNPKG

@intuitionrobotics/thunderstorm

Version:
86 lines 4.07 kB
"use strict"; /* * Thunderstorm is a full web app framework! * * Typescript & Express backend infrastructure that natively runs on firebase function * Typescript & React frontend infrastructure * * Copyright (C) 2020 Intuition Robotics * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DefaultApiErrorMessageComposer = DefaultApiErrorMessageComposer; const ts_common_1 = require("@intuitionrobotics/ts-common"); const _propsResolver = () => __awaiter(void 0, void 0, void 0, function* () { return {}; }); function DefaultApiErrorMessageComposer(headersToAttach = [], propsResolver = _propsResolver) { return (requestData, error) => __awaiter(this, void 0, void 0, function* () { const { headers, query, url, body } = requestData; const props = yield propsResolver(requestData); let slackMessage = ""; slackMessage += `${error ? error.responseCode : "000"} - ${url} \n\n`; const propsAsString = (0, ts_common_1._keys)(props).reduce((toRet, key) => { return `${toRet} ${key}: ${props[key]}\n`; }, ""); if (props && Object.keys(props).length > 0) slackMessage += `App Data:\n${propsAsString}\n`; if (error) { const cause = error.cause || error; if (cause && cause.stack) { slackMessage += `${cause.stack .replace(/\/srv\/dist\//g, '@') .replace(/\/srv\/node_modules/g, '') .replace(/\\n/g, `\n`) .replace(/\\"/g, `"`) .replace(/\\t/g, '') .replace(/\/@intuitionrobotics/g, '')}\n`; slackMessage += "--------------------------------------------------------------------------------------\n"; } } const _headers = (0, ts_common_1._keys)(headers).reduce((toRet, key) => { if (headersToAttach.includes(key)) toRet[key] = headers[key]; return toRet; }, {}); if (_headers && Object.keys(_headers).length > 0) slackMessage += `Headers: ${(0, ts_common_1.__stringify)(_headers)}\n`; else slackMessage += "Headers: -- No Included Headers --\n"; if (query) { if (query && Object.keys(query).length > 0) slackMessage += `Query: ${(0, ts_common_1.__stringify)(query, true)}\n`; else slackMessage += "Query: -- No Query --\n"; } if (body) { if (body && Object.keys(body).length > 0) slackMessage += `Body: ${(0, ts_common_1.__stringify)(body)}\n`; else slackMessage += "Body: -- No Body --\n"; } return slackMessage; }); } ; //# sourceMappingURL=server-errors.js.map