Skip to content
Snippets Groups Projects
Commit e012eaa6 authored by Paolo Brasolin's avatar Paolo Brasolin
Browse files

feat: rollbar for #be

parent 19a234c6
No related branches found
No related tags found
No related merge requests found
...@@ -16,11 +16,13 @@ ...@@ -16,11 +16,13 @@
"ejs": "^3.1.6", "ejs": "^3.1.6",
"fastify": "^3.27.1", "fastify": "^3.27.1",
"fastify-cors": "^6.0.2", "fastify-cors": "^6.0.2",
"fastify-plugin": "^3.0.1",
"fastify-static": "^4.6.1", "fastify-static": "^4.6.1",
"fastify-swagger": "^5.0.0", "fastify-swagger": "^5.0.0",
"knex": "^1.0.3", "knex": "^1.0.3",
"pg": "^8.7.3", "pg": "^8.7.3",
"point-of-view": "^5.2.0", "point-of-view": "^5.2.0",
"rollbar": "^2.25.0",
"sharp": "^0.30.2" "sharp": "^0.30.2"
}, },
"devDependencies": { "devDependencies": {
...@@ -2427,6 +2429,11 @@ ...@@ -2427,6 +2429,11 @@
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
}, },
"node_modules/console-polyfill": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.3.0.tgz",
"integrity": "sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ=="
},
"node_modules/content-disposition": { "node_modules/content-disposition": {
"version": "0.5.4", "version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
...@@ -2571,6 +2578,15 @@ ...@@ -2571,6 +2578,15 @@
} }
} }
}, },
"node_modules/decache": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/decache/-/decache-3.1.0.tgz",
"integrity": "sha1-T1A2+9ZYH8yXI3rDlUokS5U2wto=",
"optional": true,
"dependencies": {
"find": "^0.2.4"
}
},
"node_modules/decimal.js": { "node_modules/decimal.js": {
"version": "10.3.1", "version": "10.3.1",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
...@@ -2849,6 +2865,14 @@ ...@@ -2849,6 +2865,14 @@
"is-arrayish": "^0.2.1" "is-arrayish": "^0.2.1"
} }
}, },
"node_modules/error-stack-parser": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz",
"integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==",
"dependencies": {
"stackframe": "^1.1.1"
}
},
"node_modules/escalade": { "node_modules/escalade": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
...@@ -3528,6 +3552,15 @@ ...@@ -3528,6 +3552,15 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/find": {
"version": "0.2.9",
"resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz",
"integrity": "sha1-S3Px/55WrZG3bnFkB/5f/mVUu4w=",
"optional": true,
"dependencies": {
"traverse-chain": "~0.1.0"
}
},
"node_modules/find-my-way": { "node_modules/find-my-way": {
"version": "4.5.1", "version": "4.5.1",
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-4.5.1.tgz", "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-4.5.1.tgz",
...@@ -4134,6 +4167,11 @@ ...@@ -4134,6 +4167,11 @@
"node": ">= 0.10" "node": ">= 0.10"
} }
}, },
"node_modules/is_js": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz",
"integrity": "sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0="
},
"node_modules/is-arrayish": { "node_modules/is-arrayish": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
...@@ -5167,6 +5205,11 @@ ...@@ -5167,6 +5205,11 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true "dev": true
}, },
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"node_modules/json5": { "node_modules/json5": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
...@@ -6477,6 +6520,14 @@ ...@@ -6477,6 +6520,14 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/request-ip": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.0.2.tgz",
"integrity": "sha1-3urm1K8hdoSX24zQX6NxQ/jxJX4=",
"dependencies": {
"is_js": "^0.9.0"
}
},
"node_modules/require-directory": { "node_modules/require-directory": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
...@@ -6595,6 +6646,41 @@ ...@@ -6595,6 +6646,41 @@
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/rollbar": {
"version": "2.25.0",
"resolved": "https://registry.npmjs.org/rollbar/-/rollbar-2.25.0.tgz",
"integrity": "sha512-mytaGBKAeDkqb/sKXFLQ5eWWw9zzpFRGfPruUWN84AJF+Nwgo8BdGC0CVaHclvHzGImp+seLoKk1NQprU96c4w==",
"dependencies": {
"async": "~3.2.3",
"console-polyfill": "0.3.0",
"error-stack-parser": "^2.0.4",
"json-stringify-safe": "~5.0.0",
"lru-cache": "~2.2.1",
"request-ip": "~2.0.1",
"source-map": "^0.5.7"
},
"optionalDependencies": {
"decache": "^3.0.5"
}
},
"node_modules/rollbar/node_modules/async": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
"integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g=="
},
"node_modules/rollbar/node_modules/lru-cache": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
"integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0="
},
"node_modules/rollbar/node_modules/source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/run-parallel": { "node_modules/run-parallel": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
...@@ -6963,6 +7049,11 @@ ...@@ -6963,6 +7049,11 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/stackframe": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz",
"integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg=="
},
"node_modules/statuses": { "node_modules/statuses": {
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
...@@ -7285,6 +7376,12 @@ ...@@ -7285,6 +7376,12 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/traverse-chain": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz",
"integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=",
"optional": true
},
"node_modules/ts-jest": { "node_modules/ts-jest": {
"version": "27.1.3", "version": "27.1.3",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz",
...@@ -9680,6 +9777,11 @@ ...@@ -9680,6 +9777,11 @@
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
}, },
"console-polyfill": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.3.0.tgz",
"integrity": "sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ=="
},
"content-disposition": { "content-disposition": {
"version": "0.5.4", "version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
...@@ -9785,6 +9887,15 @@ ...@@ -9785,6 +9887,15 @@
"ms": "2.1.2" "ms": "2.1.2"
} }
}, },
"decache": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/decache/-/decache-3.1.0.tgz",
"integrity": "sha1-T1A2+9ZYH8yXI3rDlUokS5U2wto=",
"optional": true,
"requires": {
"find": "^0.2.4"
}
},
"decimal.js": { "decimal.js": {
"version": "10.3.1", "version": "10.3.1",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
...@@ -10004,6 +10115,14 @@ ...@@ -10004,6 +10115,14 @@
"is-arrayish": "^0.2.1" "is-arrayish": "^0.2.1"
} }
}, },
"error-stack-parser": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz",
"integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==",
"requires": {
"stackframe": "^1.1.1"
}
},
"escalade": { "escalade": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
...@@ -10520,6 +10639,15 @@ ...@@ -10520,6 +10639,15 @@
"to-regex-range": "^5.0.1" "to-regex-range": "^5.0.1"
} }
}, },
"find": {
"version": "0.2.9",
"resolved": "https://registry.npmjs.org/find/-/find-0.2.9.tgz",
"integrity": "sha1-S3Px/55WrZG3bnFkB/5f/mVUu4w=",
"optional": true,
"requires": {
"traverse-chain": "~0.1.0"
}
},
"find-my-way": { "find-my-way": {
"version": "4.5.1", "version": "4.5.1",
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-4.5.1.tgz", "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-4.5.1.tgz",
...@@ -10964,6 +11092,11 @@ ...@@ -10964,6 +11092,11 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
}, },
"is_js": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz",
"integrity": "sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0="
},
"is-arrayish": { "is-arrayish": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
...@@ -11757,6 +11890,11 @@ ...@@ -11757,6 +11890,11 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true "dev": true
}, },
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"json5": { "json5": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
...@@ -12748,6 +12886,14 @@ ...@@ -12748,6 +12886,14 @@
"rc": "^1.2.8" "rc": "^1.2.8"
} }
}, },
"request-ip": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/request-ip/-/request-ip-2.0.2.tgz",
"integrity": "sha1-3urm1K8hdoSX24zQX6NxQ/jxJX4=",
"requires": {
"is_js": "^0.9.0"
}
},
"require-directory": { "require-directory": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
...@@ -12831,6 +12977,38 @@ ...@@ -12831,6 +12977,38 @@
"glob": "^7.1.3" "glob": "^7.1.3"
} }
}, },
"rollbar": {
"version": "2.25.0",
"resolved": "https://registry.npmjs.org/rollbar/-/rollbar-2.25.0.tgz",
"integrity": "sha512-mytaGBKAeDkqb/sKXFLQ5eWWw9zzpFRGfPruUWN84AJF+Nwgo8BdGC0CVaHclvHzGImp+seLoKk1NQprU96c4w==",
"requires": {
"async": "~3.2.3",
"console-polyfill": "0.3.0",
"decache": "^3.0.5",
"error-stack-parser": "^2.0.4",
"json-stringify-safe": "~5.0.0",
"lru-cache": "~2.2.1",
"request-ip": "~2.0.1",
"source-map": "^0.5.7"
},
"dependencies": {
"async": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
"integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g=="
},
"lru-cache": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz",
"integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0="
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
}
}
},
"run-parallel": { "run-parallel": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
...@@ -13111,6 +13289,11 @@ ...@@ -13111,6 +13289,11 @@
} }
} }
}, },
"stackframe": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz",
"integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg=="
},
"statuses": { "statuses": {
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
...@@ -13354,6 +13537,12 @@ ...@@ -13354,6 +13537,12 @@
"punycode": "^2.1.1" "punycode": "^2.1.1"
} }
}, },
"traverse-chain": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz",
"integrity": "sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=",
"optional": true
},
"ts-jest": { "ts-jest": {
"version": "27.1.3", "version": "27.1.3",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz",
......
...@@ -25,11 +25,13 @@ ...@@ -25,11 +25,13 @@
"ejs": "^3.1.6", "ejs": "^3.1.6",
"fastify": "^3.27.1", "fastify": "^3.27.1",
"fastify-cors": "^6.0.2", "fastify-cors": "^6.0.2",
"fastify-plugin": "^3.0.1",
"fastify-static": "^4.6.1", "fastify-static": "^4.6.1",
"fastify-swagger": "^5.0.0", "fastify-swagger": "^5.0.0",
"knex": "^1.0.3", "knex": "^1.0.3",
"pg": "^8.7.3", "pg": "^8.7.3",
"point-of-view": "^5.2.0", "point-of-view": "^5.2.0",
"rollbar": "^2.25.0",
"sharp": "^0.30.2" "sharp": "^0.30.2"
}, },
"devDependencies": { "devDependencies": {
......
import fastify from "fastify"; import fastify from "fastify";
import fastifyCors from "fastify-cors"; import fastifyCors from "fastify-cors";
import fastifySwagger from "fastify-swagger"; import fastifySwagger from "fastify-swagger";
import fastifyRollbar from "./rollbar_plugin";
const server = fastify({ const server = fastify({
logger: { logger: {
...@@ -12,6 +13,8 @@ const server = fastify({ ...@@ -12,6 +13,8 @@ const server = fastify({
}, },
}); });
server.register(fastifyRollbar);
server.register(fastifyCors, { server.register(fastifyCors, {
// TODO: use the correct origins // TODO: use the correct origins
origin: "*", origin: "*",
......
import Rollbar from "rollbar";
const rollbar = new Rollbar({
accessToken: process.env.ROLLBAR_ACCESS_TOKEN,
// verbose: true,
captureUncaught: true,
captureUnhandledRejections: true,
enabled: !(process.env.NODE_ENV === "development"),
payload: {
environment: process.env.NODE_ENV,
server: {
branch: process.env.APP_VERSION,
// host: "",
// root: "",
},
},
});
import fp from "fastify-plugin";
import { FastifyPluginCallback } from "fastify";
const rollbarConnector: FastifyPluginCallback = (fastify, _options, done) => {
const defaultHandler = fastify.errorHandler;
fastify.setErrorHandler((error, request, reply) => {
defaultHandler(error, request, reply);
rollbar.error(error);
});
// fastify.decorate('Rollbar', rollbar);
done();
};
export default fp(rollbarConnector);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment