From cb1a4788467eac8ac0322937514437f5ea3a9570 Mon Sep 17 00:00:00 2001 From: Mina Demian Date: Tue, 11 Oct 2022 09:58:35 +0200 Subject: [PATCH] Revert "Sequelize package json fix (#16)" This reverts commit d5e291c9dde0a0dca93f9fe39f316ef44a0bc78d. --- .gitignore | 1 - package-lock.json | 586 +++++++++++++++++------------------ package.json | 4 +- src/appInitializer.js | 5 +- src/config/database.js | 124 ++++---- src/lib/availableNotifier.js | 9 +- src/lib/password.js | 35 +-- src/lib/sms.js | 23 +- src/lib/worker.js | 32 +- src/server.js | 4 +- 10 files changed, 388 insertions(+), 435 deletions(-) diff --git a/.gitignore b/.gitignore index ba1c226..7301d63 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,3 @@ npm-debug.log* *.dump *.sh *.ignore -*.log diff --git a/package-lock.json b/package-lock.json index 22368ba..6f69108 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "vent-taskrouter", "version": "1.0.0", "license": "MIT", "dependencies": { @@ -22,11 +23,11 @@ "passport": "^0.6.0", "passport-local": "^1.0.0", "path": "^0.12.7", - "pg": "^8.7.3", + "pg": "^7.11.0", "pug": "^3.0.1", "querystring": "^0.2.0", "request": "^2.88.2", - "sequelize": "^6.20.1", + "sequelize": "^5.21.1", "swagger-jsdoc": "^6.2.5", "swagger-ui-express": "^4.5.0", "tonegenerator": "^0.3.2", @@ -89,17 +90,17 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", - "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -108,12 +109,12 @@ } }, "node_modules/@babel/types": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", - "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", + "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", "dependencies": { "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -125,28 +126,15 @@ "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dependencies": { - "@types/ms": "*" - } - }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, "node_modules/@types/node": { - "version": "18.7.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", - "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + "version": "18.7.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==" }, "node_modules/@types/swagger-jsdoc": { "version": "6.0.1", @@ -154,11 +142,6 @@ "integrity": "sha512-+MUpcbyxD528dECUBCEVm6abNuORdbuGjbrUdHDeAQ+rkPuo2a+L4N02WJHF3bonSSE6SJ3dUJwF2V6+cHnf0w==", "dev": true }, - "node_modules/@types/validator": { - "version": "13.7.7", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", - "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -235,6 +218,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -348,6 +336,11 @@ "node": ">=8" } }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, "node_modules/body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -494,6 +487,15 @@ "fsevents": "~2.3.2" } }, + "node_modules/cls-bluebird": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cls-bluebird/-/cls-bluebird-2.1.0.tgz", + "integrity": "sha512-XVb0RPmHQyy35Tz9z34gvtUcBKUK8A/1xkGCyeFc9B0C7Zr5SysgFaswRVdwI5NEMcO+3JKlIDGIOgERSn9NdA==", + "dependencies": { + "is-bluebird": "^1.0.2", + "shimmer": "^1.1.0" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -693,9 +695,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/dashdash": { "version": "1.14.1", @@ -992,9 +994,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", "funding": [ { "type": "individual", @@ -1077,9 +1079,9 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -1279,9 +1281,9 @@ "dev": true }, "node_modules/inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha512-lRy4DxuIFWXlJU7ed8UiTJOSTqStqYdEb4CEbtXfNbkdj3nH1L+reUWiE10VWcJS2yR7tge8Z74pJjtBjNwj0w==", "engines": [ "node >= 0.4.0" ] @@ -1320,6 +1322,14 @@ "node": ">=8" } }, + "node_modules/is-bluebird": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz", + "integrity": "sha512-PDRu1vVip5dGQg5tfn2qVCCyxbBYu5MhYUJwSfL/RoGBI97n1fxvilVazxzptZW0gcmsMH17H4EVZZI5E/RSeA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-core-module": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", @@ -1575,17 +1585,6 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1687,15 +1686,16 @@ } }, "node_modules/nodemon": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", - "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", "dev": true, + "hasInstallScript": true, "dependencies": { "chokidar": "^3.5.2", "debug": "^3.2.7", "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", + "minimatch": "^3.0.4", "pstree.remy": "^1.1.8", "semver": "^5.7.1", "simple-update-notifier": "^1.0.7", @@ -1739,6 +1739,9 @@ }, "bin": { "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" } }, "node_modules/normalize-path": { @@ -1802,9 +1805,9 @@ } }, "node_modules/openapi-types": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.2.tgz", - "integrity": "sha512-GuTo7FyZjOIWVhIhQSWJVaws6A82sWIGyQogxxYBYKZ0NBdyP2CYSIgOwFfSB+UVoPExk/YzFpyYitHS8KVZtA==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.0.tgz", + "integrity": "sha512-6Wd9k8nmGQHgCbehZCP6wwWcfXcvinhybUTBatuhjRsCxUIujuYFZc9QnGeae75CyHASewBtxs0HX/qwREReUw==", "peer": true }, "node_modules/packet-reader": { @@ -1894,35 +1897,27 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/pg": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz", - "integrity": "sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==", - "license": "MIT", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/pg/-/pg-7.18.2.tgz", + "integrity": "sha512-Mvt0dGYMwvEADNKy5PMQGlzPudKcKKzJds/VbOeZJpb6f/pI3mmoXX0JksPgI3l3JPP/2Apq7F36O63J7mgveA==", "dependencies": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.5.2", - "pg-protocol": "^1.5.0", + "pg-connection-string": "0.1.3", + "pg-packet-stream": "^1.1.0", + "pg-pool": "^2.0.10", "pg-types": "^2.1.0", - "pgpass": "1.x" + "pgpass": "1.x", + "semver": "4.3.2" }, "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } + "node": ">= 4.5.0" } }, "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", + "integrity": "sha512-i0NV/CrSkFTaiOQs9AGy3tq0dkSjtTd4d7DfsjeDVZAA4aIHInwfFEmriNYGGJUfZ5x6IAC/QddoUpUJjQAi0w==" }, "node_modules/pg-int8": { "version": "1.0.1", @@ -1932,18 +1927,10 @@ "node": ">=4.0.0" } }, - "node_modules/pg-pool": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz", - "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" + "node_modules/pg-packet-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz", + "integrity": "sha512-kRBH0tDIW/8lfnnOyTwKD23ygJ/kexQVXZs7gEyBljw4FYqimZFxnMMx50ndZ8In77QgfGuItS5LLclC2TtjYg==" }, "node_modules/pg-types": { "version": "2.2.0", @@ -1960,6 +1947,22 @@ "node": ">=4" } }, + "node_modules/pg/node_modules/pg-pool": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.10.tgz", + "integrity": "sha512-qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg==", + "peerDependencies": { + "pg": ">5.0" + } + }, + "node_modules/pg/node_modules/semver": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", + "integrity": "sha512-VyFUffiBx8hABJ9HYSTXLRwyZtdDHMzMtFmID1aiNAD2BZppBmJm0Hqw3p2jkgxP9BNt1pQ9RnC49P0EcXf6cA==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/pgpass": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", @@ -2063,7 +2066,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "license": "MIT", "dependencies": { "pug-code-gen": "^3.0.2", "pug-filters": "^4.0.0", @@ -2209,7 +2211,6 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "license": "MIT", "engines": { "node": ">=0.4.x" } @@ -2333,9 +2334,12 @@ } }, "node_modules/retry-as-promised": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-6.1.0.tgz", - "integrity": "sha512-Hj/jY+wFC+SB9SDlIIFWiGOHnNG0swYbGYsOj2BJ8u2HKUaobNKab0OIC0zOLYzDy0mb7A4xA5BMo4LMz5YtEA==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", + "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", + "dependencies": { + "any-promise": "^1.3.0" + } }, "node_modules/rootpath": { "version": "0.1.2", @@ -2394,73 +2398,37 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/sequelize": { - "version": "6.23.2", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.23.2.tgz", - "integrity": "sha512-0jy5pkRV7LZlBArIrYKfpKa+DowC+fIcI6LrWDfvdqFmuXZfmS4qq8gzFmIu0C210ts2Mmw/dghzRhX73xPoMg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/sequelize" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.34", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^6.1.0", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", + "version": "5.22.5", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.22.5.tgz", + "integrity": "sha512-ySIHof18sJbeVG4zjEvsDL490cd9S14/IhkCrZR/g0C/FPlZq1AzEJVeSAo++9/sgJH2eERltAIGqYQNgVqX/A==", + "deprecated": "Please update to v6 or higher! A migration guide can be found here: https://sequelize.org/v6/manual/upgrade-to-v6.html", + "dependencies": { + "bluebird": "^3.5.0", + "cls-bluebird": "^2.1.0", + "debug": "^4.1.1", + "dottie": "^2.0.0", + "inflection": "1.12.0", + "lodash": "^4.17.15", + "moment": "^2.24.0", + "moment-timezone": "^0.5.21", + "retry-as-promised": "^3.2.0", + "semver": "^6.3.0", + "sequelize-pool": "^2.3.0", "toposort-class": "^1.0.1", "uuid": "^8.3.2", "validator": "^13.7.0", - "wkx": "^0.5.0" + "wkx": "^0.4.8" }, "engines": { - "node": ">=10.0.0" - }, - "peerDependenciesMeta": { - "ibm_db": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "snowflake-sdk": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } + "node": ">=6.0.0" } }, "node_modules/sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-2.3.0.tgz", + "integrity": "sha512-Ibz08vnXvkZ8LJTiUOxRcj1Ckdn7qafNZ2t59jYHMX1VIebTAOYefWdRYFt6z6+hy52WGthAHAoLc9hvk3onqA==", "engines": { - "node": ">= 10.0.0" + "node": ">= 6.0.0" } }, "node_modules/sequelize/node_modules/debug": { @@ -2485,17 +2453,11 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/sequelize/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/sequelize/node_modules/uuid": { @@ -2525,6 +2487,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -2582,6 +2549,11 @@ "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, "engines": { "node": ">=0.10.0" } @@ -2661,9 +2633,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.14.2.tgz", - "integrity": "sha512-kOIU7Ts3TrXDLb3/c9jRe4qGp8O3bRT19FFJA8wJfrRFkcK/4atPn3krhtBVJ57ZkNNofworXHxuYwmaisXBdg==" + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.14.0.tgz", + "integrity": "sha512-TBzhheU15s+o54Cgk9qxuYcZMiqSm/SkvKnapoGHOF66kz0Y5aGjpzj5BT/vpBbn6rTPJ9tUYXQxuDWfsjiGMw==" }, "node_modules/swagger-ui-express": { "version": "4.5.0", @@ -2771,9 +2743,9 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "node_modules/twilio": { - "version": "3.82.1", - "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.82.1.tgz", - "integrity": "sha512-3OIFYUjd0g25x2uZbCqsuT1o5r1r9o2/VDYcl1s+WS6323wxm/dvcMfAlMnLx0+YfG2XB7XS3u7BWZGNJoxtGA==", + "version": "3.81.0", + "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.81.0.tgz", + "integrity": "sha512-ipeYAhAxD0ql/1Jq0DfTm1SvU+kdGcS+JJEbfWuCOG5vyyiB6C4nlLGR/tdojZDwuP7Dxf4TZ+oFE+6FL8c3Aw==", "dependencies": { "axios": "^0.26.1", "dayjs": "^1.8.29", @@ -2904,6 +2876,11 @@ "extsprintf": "^1.2.0" } }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", @@ -2944,9 +2921,9 @@ } }, "node_modules/wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.8.tgz", + "integrity": "sha512-ikPXMM9IR/gy/LwiOSqWlSL3X/J5uk9EO2hHNRXS41eTLXaUFEVw9fn/593jW/tE5tedNg8YjT5HkCa4FqQZyQ==", "dependencies": { "@types/node": "*" } @@ -2972,11 +2949,6 @@ "node": ">=0.4" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/yaml": { "version": "2.0.0-1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", @@ -3052,22 +3024,22 @@ "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" }, "@babel/parser": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", - "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==" + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==" }, "@babel/types": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", - "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", + "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", "requires": { "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -3076,28 +3048,15 @@ "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, "@types/node": { - "version": "18.7.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", - "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + "version": "18.7.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==" }, "@types/swagger-jsdoc": { "version": "6.0.1", @@ -3105,11 +3064,6 @@ "integrity": "sha512-+MUpcbyxD528dECUBCEVm6abNuORdbuGjbrUdHDeAQ+rkPuo2a+L4N02WJHF3bonSSE6SJ3dUJwF2V6+cHnf0w==", "dev": true }, - "@types/validator": { - "version": "13.7.7", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.7.tgz", - "integrity": "sha512-jiEw2kTUJ8Jsh4A1K4b5Pkjj9Xz6FktLLOQ36ZVLRkmxFbpTvAV2VRoKMojz8UlZxNg/2dZqzpigH4JYn1bkQg==" - }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -3164,6 +3118,11 @@ "uri-js": "^4.2.2" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -3262,6 +3221,11 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, "body-parser": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", @@ -3381,6 +3345,15 @@ "readdirp": "~3.6.0" } }, + "cls-bluebird": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cls-bluebird/-/cls-bluebird-2.1.0.tgz", + "integrity": "sha512-XVb0RPmHQyy35Tz9z34gvtUcBKUK8A/1xkGCyeFc9B0C7Zr5SysgFaswRVdwI5NEMcO+3JKlIDGIOgERSn9NdA==", + "requires": { + "is-bluebird": "^1.0.2", + "shimmer": "^1.1.0" + } + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -3522,9 +3495,9 @@ } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "dashdash": { "version": "1.14.1", @@ -3748,9 +3721,9 @@ } }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" }, "forever-agent": { "version": "0.6.1", @@ -3800,9 +3773,9 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -3946,9 +3919,9 @@ "dev": true }, "inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha512-lRy4DxuIFWXlJU7ed8UiTJOSTqStqYdEb4CEbtXfNbkdj3nH1L+reUWiE10VWcJS2yR7tge8Z74pJjtBjNwj0w==" }, "inflight": { "version": "1.0.6", @@ -3978,6 +3951,11 @@ "binary-extensions": "^2.0.0" } }, + "is-bluebird": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz", + "integrity": "sha512-PDRu1vVip5dGQg5tfn2qVCCyxbBYu5MhYUJwSfL/RoGBI97n1fxvilVazxzptZW0gcmsMH17H4EVZZI5E/RSeA==" + }, "is-core-module": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", @@ -4204,14 +4182,6 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -4283,15 +4253,15 @@ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "nodemon": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", - "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", "dev": true, "requires": { "chokidar": "^3.5.2", "debug": "^3.2.7", "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", + "minimatch": "^3.0.4", "pstree.remy": "^1.1.8", "semver": "^5.7.1", "simple-update-notifier": "^1.0.7", @@ -4369,9 +4339,9 @@ } }, "openapi-types": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.2.tgz", - "integrity": "sha512-GuTo7FyZjOIWVhIhQSWJVaws6A82sWIGyQogxxYBYKZ0NBdyP2CYSIgOwFfSB+UVoPExk/YzFpyYitHS8KVZtA==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.0.tgz", + "integrity": "sha512-6Wd9k8nmGQHgCbehZCP6wwWcfXcvinhybUTBatuhjRsCxUIujuYFZc9QnGeae75CyHASewBtxs0HX/qwREReUw==", "peer": true }, "packet-reader": { @@ -4442,39 +4412,47 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "pg": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz", - "integrity": "sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/pg/-/pg-7.18.2.tgz", + "integrity": "sha512-Mvt0dGYMwvEADNKy5PMQGlzPudKcKKzJds/VbOeZJpb6f/pI3mmoXX0JksPgI3l3JPP/2Apq7F36O63J7mgveA==", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.5.2", - "pg-protocol": "^1.5.0", + "pg-connection-string": "0.1.3", + "pg-packet-stream": "^1.1.0", + "pg-pool": "^2.0.10", "pg-types": "^2.1.0", - "pgpass": "1.x" + "pgpass": "1.x", + "semver": "4.3.2" + }, + "dependencies": { + "pg-pool": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.10.tgz", + "integrity": "sha512-qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg==", + "requires": {} + }, + "semver": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", + "integrity": "sha512-VyFUffiBx8hABJ9HYSTXLRwyZtdDHMzMtFmID1aiNAD2BZppBmJm0Hqw3p2jkgxP9BNt1pQ9RnC49P0EcXf6cA==" + } } }, "pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", + "integrity": "sha512-i0NV/CrSkFTaiOQs9AGy3tq0dkSjtTd4d7DfsjeDVZAA4aIHInwfFEmriNYGGJUfZ5x6IAC/QddoUpUJjQAi0w==" }, "pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, - "pg-pool": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz", - "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==", - "requires": {} - }, - "pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" + "pg-packet-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz", + "integrity": "sha512-kRBH0tDIW/8lfnnOyTwKD23ygJ/kexQVXZs7gEyBljw4FYqimZFxnMMx50ndZ8In77QgfGuItS5LLclC2TtjYg==" }, "pg-types": { "version": "2.2.0", @@ -4799,9 +4777,12 @@ } }, "retry-as-promised": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-6.1.0.tgz", - "integrity": "sha512-Hj/jY+wFC+SB9SDlIIFWiGOHnNG0swYbGYsOj2BJ8u2HKUaobNKab0OIC0zOLYzDy0mb7A4xA5BMo4LMz5YtEA==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", + "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", + "requires": { + "any-promise": "^1.3.0" + } }, "rootpath": { "version": "0.1.2", @@ -4856,26 +4837,25 @@ } }, "sequelize": { - "version": "6.23.2", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.23.2.tgz", - "integrity": "sha512-0jy5pkRV7LZlBArIrYKfpKa+DowC+fIcI6LrWDfvdqFmuXZfmS4qq8gzFmIu0C210ts2Mmw/dghzRhX73xPoMg==", + "version": "5.22.5", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.22.5.tgz", + "integrity": "sha512-ySIHof18sJbeVG4zjEvsDL490cd9S14/IhkCrZR/g0C/FPlZq1AzEJVeSAo++9/sgJH2eERltAIGqYQNgVqX/A==", "requires": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.34", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^6.1.0", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", + "bluebird": "^3.5.0", + "cls-bluebird": "^2.1.0", + "debug": "^4.1.1", + "dottie": "^2.0.0", + "inflection": "1.12.0", + "lodash": "^4.17.15", + "moment": "^2.24.0", + "moment-timezone": "^0.5.21", + "retry-as-promised": "^3.2.0", + "semver": "^6.3.0", + "sequelize-pool": "^2.3.0", "toposort-class": "^1.0.1", "uuid": "^8.3.2", "validator": "^13.7.0", - "wkx": "^0.5.0" + "wkx": "^0.4.8" }, "dependencies": { "debug": { @@ -4892,12 +4872,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "uuid": { "version": "8.3.2", @@ -4907,9 +4884,9 @@ } }, "sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-2.3.0.tgz", + "integrity": "sha512-Ibz08vnXvkZ8LJTiUOxRcj1Ckdn7qafNZ2t59jYHMX1VIebTAOYefWdRYFt6z6+hy52WGthAHAoLc9hvk3onqA==" }, "serve-static": { "version": "1.15.0", @@ -4927,6 +4904,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -5029,9 +5011,9 @@ } }, "swagger-ui-dist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.14.2.tgz", - "integrity": "sha512-kOIU7Ts3TrXDLb3/c9jRe4qGp8O3bRT19FFJA8wJfrRFkcK/4atPn3krhtBVJ57ZkNNofworXHxuYwmaisXBdg==" + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.14.0.tgz", + "integrity": "sha512-TBzhheU15s+o54Cgk9qxuYcZMiqSm/SkvKnapoGHOF66kz0Y5aGjpzj5BT/vpBbn6rTPJ9tUYXQxuDWfsjiGMw==" }, "swagger-ui-express": { "version": "4.5.0", @@ -5112,9 +5094,9 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "twilio": { - "version": "3.82.1", - "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.82.1.tgz", - "integrity": "sha512-3OIFYUjd0g25x2uZbCqsuT1o5r1r9o2/VDYcl1s+WS6323wxm/dvcMfAlMnLx0+YfG2XB7XS3u7BWZGNJoxtGA==", + "version": "3.81.0", + "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.81.0.tgz", + "integrity": "sha512-ipeYAhAxD0ql/1Jq0DfTm1SvU+kdGcS+JJEbfWuCOG5vyyiB6C4nlLGR/tdojZDwuP7Dxf4TZ+oFE+6FL8c3Aw==", "requires": { "axios": "^0.26.1", "dayjs": "^1.8.29", @@ -5217,6 +5199,13 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + } } }, "void-elements": { @@ -5253,9 +5242,9 @@ } }, "wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.8.tgz", + "integrity": "sha512-ikPXMM9IR/gy/LwiOSqWlSL3X/J5uk9EO2hHNRXS41eTLXaUFEVw9fn/593jW/tE5tedNg8YjT5HkCa4FqQZyQ==", "requires": { "@types/node": "*" } @@ -5275,11 +5264,6 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "yaml": { "version": "2.0.0-1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", diff --git a/package.json b/package.json index a22d3f8..5ec80bf 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,11 @@ "passport": "^0.6.0", "passport-local": "^1.0.0", "path": "^0.12.7", - "pg": "^8.7.3", + "pg": "^7.11.0", "pug": "^3.0.1", "querystring": "^0.2.0", "request": "^2.88.2", - "sequelize": "^6.20.1", + "sequelize": "^5.21.1", "swagger-jsdoc": "^6.2.5", "swagger-ui-express": "^4.5.0", "tonegenerator": "^0.3.2", diff --git a/src/appInitializer.js b/src/appInitializer.js index 9fbcdaa..695a6b0 100644 --- a/src/appInitializer.js +++ b/src/appInitializer.js @@ -23,10 +23,9 @@ class AppInitializer { app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use("/other_route", require("./other_route").router); - //todo: re-enable this session code? or outsource session management to a SaaS like firebase? - //app.use(session({ secret: process.env.SESSION_SECRET })); + app.use(session({ secret: process.env.SESSION_SECRET })); app.use(passport.initialize()); - //app.use(passport.session()); + app.use(passport.session()); app.use(flash()); app.use("/public", express.static(process.cwd() + "/public")); app.set("views", path.join(__dirname, "../public", "views")); diff --git a/src/config/database.js b/src/config/database.js index 09f9791..8aa9ee5 100644 --- a/src/config/database.js +++ b/src/config/database.js @@ -2,7 +2,9 @@ require("env2")(".env"); const Sequelize = require("sequelize"); class Database { - + sequelize; + sequelize_ssl; + constructor() { if (Database._instance) { throw new Error( @@ -24,7 +26,7 @@ class Database { try { this.sequelize.authenticate(); - console.log("Database connection has been established successfully."); + console.log("Database onnection has been established successfully."); } catch (error) { console.error("Unable to connect to the database:", error); } @@ -58,7 +60,7 @@ class Database { const attributes = JSON.parse(worker.attributes); const contact_uri = attributes.contact_uri; console.log("createWorker: now attempting sequelize insert worker"); - return this.sequelize.query( + return sequelize.query( "insert into worker (contact_uri,sid) values ('" + contact_uri + "','" + @@ -69,11 +71,11 @@ class Database { createWorkerApply(contact_uri, friendlyName, authenticateCode) { console.log("createWorkerApply: now attempting sequelize insert row"); - return this.sequelize.query( + return sequelize.query( "insert into workerapply (contact_uri,friendlyName,authenticateCode,status) values(?,?,?,'incomplete')", { replacements: [contact_uri, friendlyName, authenticateCode], - type: this.sequelize.QueryTypes.INSERT, + type: sequelize.QueryTypes.INSERT, } ); } @@ -91,14 +93,14 @@ class Database { } getRowFromWorkerTable(contact_uri) { - return this.sequelize.query( + return sequelize.query( "select * from worker where contact_uri='" + contact_uri + "'", - { type: this.sequelize.QueryTypes.SELECT } + { type: sequelize.QueryTypes.SELECT } ); } async updateWorkerContact_uri(oldContact_uri, newContact_uri) { - var result = await this.sequelize.query( + var result = await sequelize.query( "update worker set contact_uri='" + newContact_uri + "' where contact_uri='" + @@ -127,9 +129,9 @@ class Database { } async getWorkerIdFromSid(workerSid) { - var selectResult = await this.sequelize.query( + var selectResult = await sequelize.query( "select * from worker where sid='" + workerSid + "'", - { type: this.sequelize.QueryTypes.SELECT } + { type: sequelize.QueryTypes.SELECT } ); console.log( "getWorkerIdFromSid: selectResult: " + JSON.stringify(selectResult) @@ -145,11 +147,11 @@ class Database { } async getFunctionalityStatus(functionality) { - var selectResult = await this.sequelize.query( + var selectResult = await sequelize.query( "select * from systemstatus where function=?", { replacements: [functionality], - type: this.sequelize.QueryTypes.SELECT, + type: sequelize.QueryTypes.SELECT, } ); if (selectResult.length == 0) { @@ -191,60 +193,59 @@ class Database { insertConferenceParticipant(workerSid, callSid, conferenceSid) { console.log("insertConferenceParticipant"); - return this.sequelize.query( + return sequelize.query( "insert into conference_participant (workerSid,callSid,conferenceSid) " + "values(?,?,?)", { replacements: [workerSid, callSid, conferenceSid], - type: this.sequelize.QueryTypes.INSERT, + type: sequelize.QueryTypes.INSERT, } ); } insertCallSidWorkerSid(callSid, workerSid) { console.log("insertCallSidWorkerSid"); - return this.sequelize.query( + return sequelize.query( "insert into callsid_workersid (callsid,workersid) " + "values(?,?)", { replacements: [callSid, workerSid], - type: this.sequelize.QueryTypes.INSERT, + type: sequelize.QueryTypes.INSERT, } ); } insertAdminPassword(workerId, passwordHash, adminTaskId) { - return this.sequelize.query( + return sequelize.query( "insert into adminPassword " + "(workerId,passwordHash,adminTaskId) " + "values " + "(?,?,?)", { replacements: [workerId, passwordHash, adminTaskId], - type: this.sequelize.QueryTypes.INSERT, + type: sequelize.QueryTypes.INSERT, } ); } updateAdminPassword(workerId, passwordHash, adminTaskId) { - return this.sequelize.query( + return sequelize.query( "update adminPassword " + "set passwordHash=? " + "where workerId=? " + "and adminTaskId=?", { replacements: [passwordHash, workerId, adminTaskId], - type: this.sequelize.QueryTypes.UPDATE, + type: sequelize.QueryTypes.UPDATE, } ); } async getAdminTaskId(adminTask) { - console.log({adminTask}); - var selectResult = await this.sequelize.query( + var selectResult = await sequelize.query( "select * from adminTask " + "where adminTask=?", { replacements: [adminTask], - type: this.sequelize.QueryTypes.SELECT, + type: sequelize.QueryTypes.SELECT, } ); if (selectResult.length == 0) { @@ -259,11 +260,11 @@ class Database { //todo: this will need to get updated after we establish the 'canceled' unique constraint async getPasswordHash(workerId, adminTaskId) { - var selectResult = await this.sequelize.query( + var selectResult = await sequelize.query( "select * from adminPassword " + "where workerId=? and adminTaskId=?", { replacements: [workerId, adminTaskId], - type: this.sequelize.QueryTypes.SELECT, + type: sequelize.QueryTypes.SELECT, } ); if (selectResult.length == 0) { @@ -280,7 +281,7 @@ class Database { if (id == null) { throw workerSid + " does not exist in worker table"; } else { - return this.sequelize.query( + return sequelize.query( "update available_notification_request set notification_sent=true" + " where worker_id=" + id + @@ -292,12 +293,12 @@ class Database { //we pass in workerSid here because we don't want the worker who just went to Idle to get //a notification of an available worker (since calling themselves isn't an option) iterateThroughUnsentNotificationsForMessaging(callback, workerSid) { - this.sequelize + sequelize .query( "select * from available_notification_request_worker where notification_sent=false and sid!='" + workerSid + "'", - { type: this.sequelize.QueryTypes.SELECT } + { type: sequelize.QueryTypes.SELECT } ) .then(function (result) { console.log(result); @@ -319,11 +320,11 @@ class Database { } async getWorkerSidFromCallSid(callSid) { - var selectResult = await this.sequelize.query( + var selectResult = await sequelize.query( "select * from callsid_workersid where callsid=?", { replacements: [callSid], - type: this.sequelize.QueryTypes.SELECT, + type: sequelize.QueryTypes.SELECT, } ); console.log( @@ -345,13 +346,13 @@ class Database { //or array of workerSids for multiple participants //eventually it should just have a single return type of array async getOtherParticipantWorkerSid(conferenceSid, callSid) { - var selectResult = await this.sequelize.query( + var selectResult = await sequelize.query( "select * from conference_participant " + "where conferenceSid=? and " + "callSid!=?", { replacements: [conferenceSid, callSid], - type: this.sequelize.QueryTypes.SELECT, + type: sequelize.QueryTypes.SELECT, } ); console.log( @@ -375,34 +376,25 @@ class Database { } } - //todo: I'm getting the error: - // SequelizeDatabaseError: relation "event" does not exist - //verify whether the schema I gave Mina has this relation in it - async insertEvent(reqBody) { - try{ - let result = await this.sequelize.query( - "insert into event " + - "(eventType,eventDescription,timestamp,resourceType,resourceSid,workerSid,data) " + - "values " + - "(?,?,?,?,?,?,?)", - { - replacements: [ - reqBody.EventType || "", - reqBody.EventDescription || "", - reqBody.Timestamp || "", - reqBody.ResourceType || "", - reqBody.ResourceSid || "", - reqBody.WorkerSid || "", - reqBody.Data || JSON.stringify({data:null}), - ], - type: this.sequelize.QueryTypes.INSERT, - } - ); - return result; - } - catch(err){ - console.log(`error: ${err}`); - } + insertEvent(reqBody) { + return sequelize.query( + "insert into event " + + "(eventType,eventDescription,timestamp,resourceType,resourceSid,workerSid,data) " + + "values " + + "(?,?,?,?,?,?,?)", + { + replacements: [ + reqBody.EventType, + reqBody.EventDescription, + reqBody.Timestamp, + reqBody.ResourceType, + reqBody.ResourceSid, + reqBody.WorkerSid, + reqBody.Data, + ], + type: sequelize.QueryTypes.INSERT, + } + ); } insertConference( @@ -412,7 +404,7 @@ class Database { outboundWorkerSid, conferenceSid ) { - return this.sequelize.query( + return sequelize.query( "insert into conference " + "(inboundCallSid,outboundCallSid,inboundWorkerId,outboundWorkerId,conferenceSid) " + "values " + @@ -428,20 +420,20 @@ class Database { outboundWorkerSid, conferenceSid, ], - type: this.sequelize.QueryTypes.INSERT, + type: sequelize.QueryTypes.INSERT, } ); } async getMembershipRequest(contact_uri, authenticateCode) { - var selectResult = await this.sequelize.query( + var selectResult = await sequelize.query( "select * from workerapply where contact_uri='" + contact_uri + "' and status='incomplete' " + "and authenticatecode='" + authenticateCode + "'", - { type: this.sequelize.QueryTypes.SELECT } + { type: sequelize.QueryTypes.SELECT } ); console.log( "getMembershipRequest: selectResult: " + JSON.stringify(selectResult) @@ -454,11 +446,11 @@ class Database { } async updateMembershipRequestToComplete(contact_uri) { - return this.sequelize.query( + return sequelize.query( "update workerapply " + "set status='complete' " + "where contact_uri=?", { replacements: [contact_uri], - type: this.sequelize.QueryTypes.UPDATE, + type: sequelize.QueryTypes.UPDATE, } ); } diff --git a/src/lib/availableNotifier.js b/src/lib/availableNotifier.js index 225e680..976bbde 100644 --- a/src/lib/availableNotifier.js +++ b/src/lib/availableNotifier.js @@ -9,20 +9,19 @@ var database = Database.getInstance(); class AvailableNotifier { constructor() { this.phoneNumberRegex = new RegExp("^\\+\\d+$"); - this.database = Database.getInstance(); } async create(workerSid) { - var result = await this.database.createAvailableNotificationRequest(workerSid); + var result = await database.createAvailableNotificationRequest(workerSid); return result; } async updateToSent(workerSid) { - var result = await this.database.updateNotificationToSent(workerSid); + var result = await database.updateNotificationToSent(workerSid); return result; } iterateSend(workerSid) { - var result = this.database.iterateThroughUnsentNotificationsForMessaging( + var result = database.iterateThroughUnsentNotificationsForMessaging( this.send.bind(this), workerSid ); @@ -49,7 +48,7 @@ class AvailableNotifier { }) .then((message) => { console.log("send: message.sid: " + message.sid); - this.database.updateNotificationToSent(callbackParam.sid); + database.updateNotificationToSent(callbackParam.sid); }); } else { console.log(contact_uri + " is not a valid phone number."); diff --git a/src/lib/password.js b/src/lib/password.js index 14dbbc6..007dc5b 100644 --- a/src/lib/password.js +++ b/src/lib/password.js @@ -1,9 +1,10 @@ const Bcrypt = require("bcryptjs"); const Database = require("../config/database"); +var database = Database.getInstance(); + class Password { constructor() { this.saltRounds = 10; - this.database = Database.getInstance(); } async insertPassword(workerSid, password, adminTask) { @@ -11,18 +12,11 @@ class Password { var passwordHash; var workerId; var adminTaskId; - var promiseResults; - try{ - promiseResults = await Promise.all([ - Bcrypt.genSalt(this.saltRounds), - this.database.getWorkerIdFromSid(workerSid), - this.database.getAdminTaskId(adminTask), - ]); - } - catch(err){ - console.log(`error: ${err}`); - } - console.log({promiseResults}); + const promiseResults = await Promise.all([ + Bcrypt.genSalt(this.saltRounds), + database.getWorkerIdFromSid(workerSid), + database.getAdminTaskId(adminTask), + ]); salt = promiseResults[0]; workerId = promiseResults[1]; adminTaskId = promiseResults[2]; @@ -35,7 +29,7 @@ class Password { } catch (err) { throw "insertPassword: hash error: " + err; } - var insertResult = await this.database.insertAdminPassword( + var insertResult = await database.insertAdminPassword( workerId, passwordHash, adminTaskId @@ -44,20 +38,19 @@ class Password { } async verifyPassword(workerSid, password, adminTask) { - return (password === process.env.ADMIN_PASSWORD); var passwordHash; var workerId; var adminTaskId; const promiseResults = await Promise.all([ - this.database.getWorkerIdFromSid(workerSid), - this.database.getAdminTaskId(adminTask), + database.getWorkerIdFromSid(workerSid), + database.getAdminTaskId(adminTask), ]); workerId = promiseResults[0]; adminTaskId = promiseResults[1]; console.log("verifyPassword: workerId: " + workerId); console.log("verifyPassword: adminTaskId: " + adminTaskId); try { - passwordHash = await this.database.getPasswordHash(workerId, adminTaskId); + passwordHash = await database.getPasswordHash(workerId, adminTaskId); console.log("verifyPassword: passwordHash: " + passwordHash); //user doesn't have identity entry for this admin task so verification fails if (passwordHash == null) { @@ -77,8 +70,8 @@ class Password { var adminTaskId; const promiseResults = await Promise.all([ Bcrypt.genSalt(this.saltRounds), - this.database.getWorkerIdFromSid(workerSid), - this.database.getAdminTaskId(adminTask), + database.getWorkerIdFromSid(workerSid), + database.getAdminTaskId(adminTask), ]); salt = promiseResults[0]; workerId = promiseResults[1]; @@ -92,7 +85,7 @@ class Password { } catch (err) { throw "updatePassword: hash error: " + err; } - var updateResult = await this.database.updateAdminPassword( + var updateResult = await database.updateAdminPassword( workerId, passwordHash, adminTaskId diff --git a/src/lib/sms.js b/src/lib/sms.js index a021874..3c32410 100644 --- a/src/lib/sms.js +++ b/src/lib/sms.js @@ -6,12 +6,12 @@ const client = require("twilio")(accountSid, authToken); const Password = require("./password"); const DataValidator = require("./dataValidator"); class Sms { - constructor(worker) { + constructor(worker, password) { this.worker = worker; this.commandList = this.createCommandList(); var commandListKeys = Object.keys(this.commandList); this.commandListKeysString = commandListKeys.sort().join("\n"); - this.password = new Password(); + this.password = password; this.phoneNumberPattern = "^[+]d+$"; this.dataValidator = new DataValidator(); } @@ -30,9 +30,9 @@ class Sms { let commandList_output = JSON.parse(rawData); Object.keys(commandList_output).forEach((key) => { console.log(key); - //if (key !== "default") { + if (key !== "default") { commandList_output[key].command = this[key].bind(this); - //} + } }); return commandList_output; } @@ -227,12 +227,6 @@ class Sms { return responseValue; } - async default(parameterObj){ - let offResult = await this.off(parameterObj); - let manualResult = await this.manual(parameterObj); - return offResult+"\n"+manualResult; - } - async addWithoutParameterObj(contact_uri, friendlyName) { //todo:this is duplicate code from add(), need to refactor var responseValue; @@ -380,7 +374,7 @@ class Sms { } manualResponse(command) { - return command.description + "\nUsage: " + command.parameterUsage; + return command.helpMessage + "\nUsage: " + command.parameterUsage; } //todo: add STOP reserved commands to manual() @@ -423,9 +417,7 @@ class Sms { return parameterObj.commandArray.length == command.parameterCount; } } - async processCommand(parameterObj) { - console.log({parameterObj}); var responseValue; var commandArray = this.bodyToCommandArray(parameterObj.body); const commandName = commandArray[0].toLowerCase(); @@ -456,11 +448,8 @@ class Sms { } } else { command = this.commandList["default"]; - console.log({command}); } - //responseValue = await command.commandFunction(parameterObj); - responseValue = await command.command(parameterObj); - + responseValue = await command.commandFunction(parameterObj); return responseValue; } diff --git a/src/lib/worker.js b/src/lib/worker.js index 9971ffd..8ec2223 100644 --- a/src/lib/worker.js +++ b/src/lib/worker.js @@ -2,6 +2,8 @@ require("env2")(".env"); const Sms = require("./sms"); const Database = require("../config/database"); +var database = Database.getInstance(); + const accountSid = process.env.TWILIO_ACCOUNT_SID; //add your account sid const authToken = process.env.TWILIO_AUTH_TOKEN; //add your auth token //todo: is it better to have client instance created inside the constructor, maybe even passed in like workspace? @@ -12,7 +14,6 @@ class Worker { constructor(workspace) { this.workspace = workspace; this.sms = new Sms(); - this.database = Database.getInstance(); } createWorker(contact_uri, friendlyName) { @@ -29,7 +30,7 @@ class Worker { console.log( "createWorker: worker successfully created in Twilio, now creating in database..." ); - return this.database.createWorker(worker).then((result) => result); + return database.createWorker(worker).then((result) => result); }) .catch((err) => { console.log(err); @@ -38,7 +39,7 @@ class Worker { } createWorkerApply(contact_uri, friendlyName, authenticateCode) { - return this.database.createWorkerApply( + return database.createWorkerApply( contact_uri, friendlyName, authenticateCode @@ -46,7 +47,7 @@ class Worker { } async getMembershipRequest(contact_uri, authenticateCode) { - var result = await this.database.getMembershipRequest( + var result = await database.getMembershipRequest( contact_uri, authenticateCode ); @@ -54,13 +55,13 @@ class Worker { } async updateMembershipRequestToComplete(contact_uri) { - var result = await this.database.updateMembershipRequestToComplete(contact_uri); + var result = await database.updateMembershipRequestToComplete(contact_uri); return result; } addAllWorkersToDatabase() { this.workspace.workers.each((worker) => { - this.database.createWorker(worker); + database.createWorker(worker); }); } @@ -70,7 +71,7 @@ class Worker { rejectPendingReservations ) { console.log("updateWorkerActivity: getting workerSid from database"); - var workerSid = await this.database.getWorkerSid(contact_uri); + var workerSid = await database.getWorkerSid(contact_uri); console.log("updateWorkerActivity: workerSid is " + workerSid); var workerEntity = await this.updateWorkerActivityFromSid( workerSid, @@ -86,7 +87,7 @@ class Worker { async updateWorkerName(contact_uri, newName) { console.log("updateWorkerName: getting workerSid from database"); - var workerSid = await this.database.getWorkerSid(contact_uri); + var workerSid = await database.getWorkerSid(contact_uri); if (workerSid == null) { throw "updateWorkerName: error: workerSid not found for " + contact_uri; } @@ -201,7 +202,6 @@ class Worker { } async messageWorkerUnavailable(workerName, contact_uri) { - console.log({contact_uri}); try { console.log("messageWorkerUnavailable: sending message to worker..."); var message = await client.messages.create({ @@ -216,7 +216,7 @@ class Worker { } async getWorkerEntityFromContact_uri(contact_uri) { - var workerSid = await this.database.getWorkerSid(contact_uri); + var workerSid = await database.getWorkerSid(contact_uri); if (workerSid == null) { return null; } @@ -253,14 +253,14 @@ class Worker { async updateContact_uri(oldContact_uri, newContact_uri) { console.log("updateWorkerName: getting workerSid from database"); - var workerSid = await this.database.getWorkerSid(oldContact_uri); + var workerSid = await database.getWorkerSid(oldContact_uri); if (workerSid == null) { throw ( "updateContact_uri: error: workerSid not found for " + oldContact_uri ); } console.log("updateContact_uri: workerSid is " + workerSid); - var dbResult = await this.database.updateWorkerContact_uri( + var dbResult = await database.updateWorkerContact_uri( oldContact_uri, newContact_uri ); @@ -305,12 +305,12 @@ class Worker { } async getWorkerSid(contact_uri) { - var workerSid = await this.database.getWorkerSid(contact_uri); + var workerSid = await database.getWorkerSid(contact_uri); return workerSid; } async contact_uriExists(contact_uri) { - var workerSid = await this.database.getWorkerSid(contact_uri); + var workerSid = await database.getWorkerSid(contact_uri); console.log("contact_uriExists: workerSid " + workerSid); console.log("workerSid!=null: " + (workerSid != null)); return workerSid != null; @@ -319,7 +319,7 @@ class Worker { async insertCallSidWorkerSid(callSid, workerSid) { var result; try { - result = await this.database.insertCallSidWorkerSid(callSid, workerSid); + result = await database.insertCallSidWorkerSid(callSid, workerSid); if (result == ",1") { return null; } else { @@ -332,7 +332,7 @@ class Worker { } async getWorkerSidFromCallSid(callSid) { - var result = await this.database.getWorkerSidFromCallSid(callSid); + var result = await database.getWorkerSidFromCallSid(callSid); if (result == null) { throw ( "getWorkerSidFromCallSid: callSid " + diff --git a/src/server.js b/src/server.js index 8cbe4c3..2666075 100644 --- a/src/server.js +++ b/src/server.js @@ -351,7 +351,7 @@ app.get( response .enqueue({ workflowSid: workflowSid, - //callerWorkerSid: parameters.workerSid, + callerWorkerSid: parameters.workerSid, waitUrl: "/randomSoundLoop", }) .task({}, JSON.stringify(taskJSON)); @@ -478,7 +478,6 @@ app.get("/agent_answer_hangup", twilio.webhook(), function (req, res) { parameters = urlSerializer.deserialize(req); const response = new VoiceResponse(); twimlBuilder.say(response, "I didn't get any input from you. Goodbye!"); - console.log(`hanging up call from ${parameters.from} to ${parameters.to}`); response.hangup(); console.log( "/agent_answer_hangup: now updating worker to offline, should automatically reject pending reservation" @@ -489,7 +488,6 @@ app.get("/agent_answer_hangup", twilio.webhook(), function (req, res) { true ); - console.log(response.toString()); res.send(response.toString()); });