@firstfleet/fferrorhandler
Advanced tools
| const StackParser = require("stacktracey"); | ||
| function createShortStack(stack) { | ||
| const parsedStack = new StackParser(stack); | ||
| const formattedStack = parsedStack.map((stackObject) => { | ||
| return `${stackObject.fileShort} - line: ${stackObject.line} - column: ${stackObject.column}` | ||
| }); | ||
| const joinedStack = formattedStack.items.join("\n"); | ||
| return joinedStack; | ||
| } | ||
| module.exports = { | ||
| createShortStack | ||
| } |
+7
-13
@@ -0,1 +1,2 @@ | ||
| const { createShortStack } = require("./stackparser"); | ||
| /** | ||
@@ -18,9 +19,4 @@ * A custom error for operational (or expected) error. | ||
| this.isOperational = true; | ||
| let stackSplit = this.stack.split("\n"); | ||
| let isAJsStackLine = stackSplit.filter((line) => { | ||
| return line.includes(".js"); | ||
| }); | ||
| let callie = isAJsStackLine[0]; | ||
| let caller = isAJsStackLine[1]; | ||
| this.data = JSON.stringify({ callie: callie, caller: caller, data: data }); | ||
| const shortStack = createShortStack(this.stack); | ||
| this.data = JSON.stringify({ stack: shortStack, data: data }); | ||
| } | ||
@@ -52,5 +48,4 @@ } | ||
| this.isOperational = false; | ||
| let callie = this.stack.split("\n")[1] || ""; | ||
| let caller = this.stack.split("\n")[2] || ""; | ||
| this.data = JSON.stringify({ callie: callie, caller: caller, data: data }); | ||
| const shortStack = createShortStack(this.stack); | ||
| this.data = JSON.stringify({ stack: shortStack, data: data }); | ||
| this.slackChannel = slackChannel; | ||
@@ -82,5 +77,4 @@ } | ||
| this.statusCode = statusCode; | ||
| let callie = this.stack.split("\n")[1] || ""; | ||
| let caller = this.stack.split("\n")[2] || ""; | ||
| this.data = JSON.stringify({ callie: callie, caller: caller, data: data }); | ||
| const shortStack = createShortStack(this.stack); | ||
| this.data = JSON.stringify({ stack: shortStack, data: data }); | ||
| } | ||
@@ -87,0 +81,0 @@ } |
+2
-13
| const handlers = require("./handlers"); | ||
| const errorTypes = require("./errorTypes"); | ||
| const { slackChannels } = require("./constants"); | ||
| const { createShortStack } = require("./stackparser"); | ||
@@ -78,15 +79,3 @@ const appName = process.env.PAPERTRAIL_PROGRAM || "UNKNOWN"; | ||
| * */ | ||
| let additionalData = error.data; | ||
| if (!additionalData) { | ||
| let stackSplit = error.stack.split("\n"); | ||
| let isAJsStackLine = stackSplit.filter((line) => { | ||
| return line.includes(".js"); | ||
| }); | ||
| let callie = isAJsStackLine[0]; | ||
| let caller = isAJsStackLine[1]; | ||
| additionalData = JSON.stringify({ | ||
| callie: callie, | ||
| caller: caller | ||
| }); | ||
| } | ||
| let additionalData = error.data || JSON.stringify({stack: createShortStack(error.stack)}); | ||
@@ -93,0 +82,0 @@ const routeString = `${req.method} - ${req.originalUrl}`; |
+3
-2
| { | ||
| "name": "@firstfleet/fferrorhandler", | ||
| "version": "2.0.6", | ||
| "version": "2.0.7", | ||
| "description": "handle errors", | ||
@@ -21,3 +21,4 @@ "main": "index.js", | ||
| "@firstfleet/fflogger": "^1.0.27", | ||
| "@firstfleet/ffslack": "^1.0.11" | ||
| "@firstfleet/ffslack": "^1.0.11", | ||
| "stacktracey": "^2.1.8" | ||
| }, | ||
@@ -24,0 +25,0 @@ "jest": { |
| const errorTypes = require("../errorTypes"); | ||
| const {createShortStack} = require("../stackparser"); | ||
@@ -6,6 +7,3 @@ describe("errorTypes.js", () => { | ||
| function _makeMockShortStack(stack) { | ||
| let callie = stack.split("\n")[1] || ""; | ||
| let caller = stack.split("\n")[2] || ""; | ||
| return { callie: callie, caller: caller }; | ||
| return createShortStack(stack) | ||
| } | ||
@@ -36,3 +34,3 @@ | ||
| it(`should have the data ${additionalErrorData}.`, () => { | ||
| expect(operationalError.data).toEqual(JSON.stringify({..._makeMockShortStack(operationalError.stack), data: additionalErrorData, })); | ||
| expect(operationalError.data).toEqual(JSON.stringify({stack: _makeMockShortStack(operationalError.stack), data: additionalErrorData, })); | ||
| }); | ||
@@ -64,3 +62,3 @@ }); | ||
| it(`should have the data ${additionalErrorData}.`, () => { | ||
| expect(nonOperationalError.data).toEqual(JSON.stringify({ ..._makeMockShortStack(nonOperationalError.stack), data: additionalErrorData })); | ||
| expect(nonOperationalError.data).toEqual(JSON.stringify({ stack: _makeMockShortStack(nonOperationalError.stack), data: additionalErrorData })); | ||
| }); | ||
@@ -92,3 +90,3 @@ }) | ||
| it(`should have the data ${additionalErrorData}.`, () => { | ||
| expect(httpError.data).toEqual(JSON.stringify({ ..._makeMockShortStack(httpError.stack), data: additionalErrorData })); | ||
| expect(httpError.data).toEqual(JSON.stringify({ stack: _makeMockShortStack(httpError.stack), data: additionalErrorData })); | ||
| }); | ||
@@ -95,0 +93,0 @@ |
@@ -5,2 +5,3 @@ const middleware = require("../middleware"); | ||
| const { slackChannels } = require("../constants"); | ||
| const { createShortStack } = require("../stackparser"); | ||
@@ -48,9 +49,7 @@ jest.mock("@firstfleet/ffslack", () => ({ | ||
| function _makeMockShortStack(stack, data = null) { | ||
| let callie = stack.split("\n")[1] || ""; | ||
| let caller = stack.split("\n")[2] || ""; | ||
| if (data) { | ||
| return JSON.stringify({ callie: callie, caller: caller, data: data }); | ||
| return JSON.stringify({ stack: createShortStack(stack), data: data }); | ||
| } else { | ||
| return JSON.stringify({ callie: callie, caller: caller }); | ||
| return JSON.stringify({ stack: createShortStack(stack) }); | ||
| } | ||
@@ -57,0 +56,0 @@ |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
14
7.69%61598
-0.29%3
50%892
-0.78%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added