diff --git a/.eslintrc.js b/.eslintrc.js index 0feb469e..78a40a90 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,7 +12,6 @@ module.exports = { "plugin:promise/recommended", "plugin:regexp/recommended", "plugin:security/recommended", - "plugin:security-node/recommended", "prettier", ], overrides: [ @@ -40,14 +39,7 @@ module.exports = { // Explicitly tell ESLint to parse JavaScript as CommonJS, as airbnb-base sets this to "modules" for ECMAScript sourceType: "script", }, - plugins: [ - "import", - "jsdoc", - "promise", - "regexp", - "security", - "security-node", - ], + plugins: ["import", "jsdoc", "promise", "regexp", "security"], root: true, rules: { "@eslint-community/eslint-comments/disable-enable-pair": "off", @@ -57,6 +49,7 @@ module.exports = { "jsdoc/check-syntax": "error", "jsdoc/require-hyphen-before-param-description": "error", "no-multiple-empty-lines": ["error", { max: 1 }], + "no-param-reassign": ["error", { props: false }], "prefer-destructuring": ["error", { object: true, array: false }], "promise/prefer-await-to-callbacks": "warn", "promise/prefer-await-to-then": "warn", diff --git a/Dockerfile b/Dockerfile index fdb21bce..410bc406 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18-alpine +FROM node:20-alpine # Workdir WORKDIR /usr/app diff --git a/README.md b/README.md index f7468ad2..2b7a9de5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ > **Note** -> As of 2023-05-03 I am no longer employed by Somerset NHS Foundation Trust. -> However, this repository will continue to be maintained as it acts as -> a 'canary in the coalmine' for changes to Node and other dependencies. +> This repository is unmaintained as of 2023-05-03 as +> I am no longer employed by Somerset NHS Foundation Trust. diff --git a/package-lock.json b/package-lock.json index 236f5a70..404c1f45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,6 @@ "eslint-plugin-promise": "^6.1.1", "eslint-plugin-regexp": "^2.1.1", "eslint-plugin-security": "^1.7.1", - "eslint-plugin-security-node": "^1.1.1", "glob": "^10.3.10", "husky": "^8.0.3", "jest": "^29.7.0", @@ -5111,15 +5110,6 @@ "safe-regex": "^2.1.1" } }, - "node_modules/eslint-plugin-security-node": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-security-node/-/eslint-plugin-security-node-1.1.1.tgz", - "integrity": "sha512-PXl5uKQOglpIpU13YIwWhhXK9Sw14KHbzCdVthDWoIsUPOuMYbrGOCWJSEVVuZ1uJK2ciN+45ogPeErrKtNm0Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", diff --git a/package.json b/package.json index 6e7acbb0..c505086d 100644 --- a/package.json +++ b/package.json @@ -21,12 +21,12 @@ "db:migrate": "node src/migrate.js", "jest": "jest", "jest:coverage": "jest --coverage", - "lint": "eslint . --cache --ext js,jsx,ts,tsx --ignore-path .gitignore", + "lint": "eslint . --cache --ext js,jsx --ignore-path .gitignore", "lint:licenses": "node scripts/license-checker.js", "lint:lockfile": "lockfile-lint -p package-lock.json -t npm -a npm -s -i", "lint:prettier": "prettier . -c -u", "lint:prettier:fix": "prettier . -w -u", - "prepare": "husky install", + "prepare": "husky install && npx playwright install firefox --with-deps", "start": "node .", "start:dev": "nodemon src/app.js | pino-pretty", "test": "npm run lint && npm run jest", @@ -91,7 +91,6 @@ "eslint-plugin-promise": "^6.1.1", "eslint-plugin-regexp": "^2.1.1", "eslint-plugin-security": "^1.7.1", - "eslint-plugin-security-node": "^1.1.1", "glob": "^10.3.10", "husky": "^8.0.3", "jest": "^29.7.0", diff --git a/src/plugins/clean-object/index.js b/src/plugins/clean-object/index.js index 65f09510..8f64dc1b 100644 --- a/src/plugins/clean-object/index.js +++ b/src/plugins/clean-object/index.js @@ -18,15 +18,14 @@ async function plugin(server) { * @returns {object} cleaned object. */ function cleanObject(object = {}) { - const obj = object; - Object.keys(obj).forEach((key) => { - if (obj[key] && typeof obj[key] === "object") { - cleanObject(obj[key]); - } else if (obj[key] === null || obj[key] === undefined) { - delete obj[key]; + Object.keys(object).forEach((key) => { + if (object[key] && typeof object[key] === "object") { + cleanObject(object[key]); + } else if (object[key] === null || object[key] === undefined) { + delete object[key]; } }); - return obj; + return object; } server.decorate("cleanObject", cleanObject); diff --git a/src/plugins/convert-date-param-operator/index.js b/src/plugins/convert-date-param-operator/index.js index 94858117..e071bf18 100644 --- a/src/plugins/convert-date-param-operator/index.js +++ b/src/plugins/convert-date-param-operator/index.js @@ -2,6 +2,18 @@ const fp = require("fastify-plugin"); +const operatorMap = { + ap: "=", + eb: "<", + eq: "=", + ge: ">=", + gt: ">", + le: "<=", + lt: "<", + ne: "!=", + sa: ">", +}; + /** * @author Frazer Smith * @description Plugin that decorates Fastify instance with `convertDateParamOperator` function, @@ -11,34 +23,12 @@ const fp = require("fastify-plugin"); async function plugin(server) { /** * @author Frazer Smith - * @author NextGen Healthcare * @description Converts date param operator to corresponding value. * @param {string} operator - Date param operator, in any letter case. * @returns {string} converted date param operator. */ function convDateParamOperator(operator) { - switch (operator.toLowerCase()) { - case "ap": - return "="; - case "eb": - return "<"; - case "eq": - return "="; - case "ge": - return ">="; - case "gt": - return ">"; - case "le": - return "<="; - case "lt": - return "<"; - case "ne": - return "!="; - case "sa": - return ">"; - default: - return "="; - } + return operatorMap[operator.toLowerCase()] || "="; } server.decorate("convertDateParamOperator", convDateParamOperator);