From 67e19ed367d5069c63268e71293f34f5f754ca33 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Tue, 20 Apr 2021 21:18:00 -0500 Subject: [PATCH 01/19] cambios en .env --- package-lock.json | 2615 +------------------------- package.json | 4 +- server/app.js | 2 +- server/config/config.js | 18 +- server/config/sybase.js | 27 - server/middleware/autentificacion.js | 2 +- 6 files changed, 10 insertions(+), 2658 deletions(-) delete mode 100644 server/config/sybase.js diff --git a/package-lock.json b/package-lock.json index 2bfa24e..c638a37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2534 +1,8 @@ { "name": "servicio_social_api", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "axios": "^0.21.0", - "bcrypt": "^5.0.0", - "body-parser": "^1.19.0", - "colors": "^1.4.0", - "convert-array-to-csv": "^2.0.0", - "cors": "^2.8.5", - "csvtojson": "^2.0.10", - "dotenv": "^8.2.0", - "express": "^4.17.1", - "gmail-send": "^1.8.10", - "googleapis": "^65.0.0", - "jsonwebtoken": "^8.5.1", - "mariadb": "^2.5.1", - "moment": "^2.29.1", - "multer": "^1.4.2", - "mysql2": "^2.2.5", - "sequelize": "^6.3.5", - "validator": "^13.1.17" - }, - "devDependencies": { - "nodemon": "^2.0.6" - } - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - } - }, - "node_modules/@types/geojson": { - "version": "7946.0.7", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", - "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" - }, - "node_modules/@types/node": { - "version": "14.14.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", - "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - } - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dependencies": { - "ms": "2.1.2" - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "dev": true, - "dependencies": { - "string-width": "^3.0.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, - "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/are-we-there-yet/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/are-we-there-yet/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - }, - "node_modules/axios": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz", - "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==", - "dependencies": { - "follow-redirects": "^1.10.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "node_modules/bcrypt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", - "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", - "dependencies": { - "node-addon-api": "^3.0.0", - "node-pre-gyp": "0.15.0" - } - }, - "node_modules/bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" - }, - "node_modules/binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true - }, - "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.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "node_modules/boxen/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "node_modules/busboy": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", - "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", - "dependencies": { - "dicer": "0.2.5", - "readable-stream": "1.1.x" - } - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - } - }, - "node_modules/chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.2" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "node_modules/convert-array-to-csv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-array-to-csv/-/convert-array-to-csv-2.0.0.tgz", - "integrity": "sha512-dxUINCt28k6WbXGMoB+AaKjGY0Y6GkKwZmT+kvD4nJgVCOKsnIQ3G6n0v2II1lG4NwXQk6EWZ+pPDub9wcqqMg==" - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "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": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "node_modules/csvtojson": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", - "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", - "dependencies": { - "bluebird": "^3.5.1", - "lodash": "^4.17.3", - "strip-bom": "^2.0.0" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "node_modules/denque": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", - "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - }, - "node_modules/dicer": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", - "dependencies": { - "readable-stream": "1.1.x", - "streamsearch": "0.1.2" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - } - }, - "node_modules/dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" - }, - "node_modules/dottie": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/fast-text-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", - "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", - "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" - }, - "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dependencies": { - "minipass": "^2.6.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gaxios": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz", - "integrity": "sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ==", - "dependencies": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.3.0" - } - }, - "node_modules/gcp-metadata": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz", - "integrity": "sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==", - "dependencies": { - "gaxios": "^4.0.0", - "json-bigint": "^1.0.0" - } - }, - "node_modules/generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dependencies": { - "is-property": "^1.0.2" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - } - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - } - }, - "node_modules/global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", - "dev": true, - "dependencies": { - "ini": "^1.3.5" - } - }, - "node_modules/gmail-send": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/gmail-send/-/gmail-send-1.8.10.tgz", - "integrity": "sha512-QMpWwzeA64U69HzOEzI37UNc73xXkhTg8LuqsfKX9W7LjiQY3yRvViVn7ZhuJWLTV4136vsLJf2sXiZKmdykbw==", - "dependencies": { - "lodash": "^4.17.15", - "nodemailer": "^6.3.0" - } - }, - "node_modules/google-auth-library": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.3.tgz", - "integrity": "sha512-m9mwvY3GWbr7ZYEbl61isWmk+fvTmOt0YNUfPOUY2VH8K5pZlAIWJjxEi0PqR3OjMretyiQLI6GURMrPSwHQ2g==", - "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^4.0.0", - "gcp-metadata": "^4.2.0", - "gtoken": "^5.0.4", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - } - }, - "node_modules/google-auth-library/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/google-auth-library/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/google-p12-pem": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz", - "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==", - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/googleapis": { - "version": "65.0.0", - "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-65.0.0.tgz", - "integrity": "sha512-dcfZVkML8H6mPAsph0hgfyRQYKJpw2XjKchAXx5YEfDYWU7021Mpzaf+ejNSipa3QmcfOLOcWg6sUr0I7M4jjQ==", - "dependencies": { - "google-auth-library": "^6.0.0", - "googleapis-common": "^4.4.1" - } - }, - "node_modules/googleapis-common": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-4.4.3.tgz", - "integrity": "sha512-W46WKCk3QtlCCfmZyQIH5zxmDOyeV5Qj+qs7nr2ox08eRkEJMWp6iwv542R/PsokXaGUSrmif4vCC4+rGzRSsQ==", - "dependencies": { - "extend": "^3.0.2", - "gaxios": "^4.0.0", - "google-auth-library": "^6.0.0", - "qs": "^6.7.0", - "url-template": "^2.0.8", - "uuid": "^8.0.0" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "node_modules/gtoken": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.1.0.tgz", - "integrity": "sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg==", - "dependencies": { - "gaxios": "^4.0.0", - "google-p12-pem": "^3.0.3", - "jws": "^4.0.0", - "mime": "^2.2.0" - } - }, - "node_modules/gtoken/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/gtoken/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/gtoken/node_modules/mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dependencies": { - "ms": "2.1.2" - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "node_modules/ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "node_modules/inflection": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", - "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - } - }, - "node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "node_modules/is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "node_modules/is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", - "dev": true - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" - }, - "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - } - }, - "node_modules/jsonwebtoken/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - } - }, - "node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "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" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "node_modules/mariadb": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-2.5.1.tgz", - "integrity": "sha512-LPm/1qXKLdMX16WOalAQAf93JtApW8z3NXq38BKlSUfjkb/VyXW4VjckmNChmC2Ypouba1SY/3mCOW+6nT6vvQ==", - "dependencies": { - "@types/geojson": "^7946.0.7", - "@types/node": "^14.11.2", - "denque": "^1.4.1", - "iconv-lite": "^0.6.2", - "long": "^4.0.0", - "moment-timezone": "^0.5.31", - "please-upgrade-node": "^3.2.0" - } - }, - "node_modules/mariadb/node_modules/iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dependencies": { - "mime-db": "1.44.0" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - } - }, - "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" - }, - "node_modules/moment-timezone": { - "version": "0.5.32", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.32.tgz", - "integrity": "sha512-Z8QNyuQHQAmWucp8Knmgei8YNo28aLjJq6Ma+jy1ZSpSk5nyfRT8xgUbSQvD2+2UajISfenndwvFuH3NGS+nvA==", - "dependencies": { - "moment": ">= 2.9.0" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/multer": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^0.2.11", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.1", - "on-finished": "^2.3.0", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - } - }, - "node_modules/mysql2": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.2.5.tgz", - "integrity": "sha512-XRqPNxcZTpmFdXbJqb+/CtYVLCx14x1RTeNMD4954L331APu75IC74GDqnZMEt1kwaXy6TySo55rF2F3YJS78g==", - "dependencies": { - "denque": "^1.4.1", - "generate-function": "^2.3.1", - "iconv-lite": "^0.6.2", - "long": "^4.0.0", - "lru-cache": "^6.0.0", - "named-placeholders": "^1.1.2", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.2" - } - }, - "node_modules/mysql2/node_modules/iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "node_modules/named-placeholders": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", - "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", - "dependencies": { - "lru-cache": "^4.1.3" - } - }, - "node_modules/named-placeholders/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/named-placeholders/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/needle": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", - "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/needle/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "node_modules/node-addon-api": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", - "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - }, - "node_modules/node-pre-gyp": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", - "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.3", - "needle": "^2.5.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "node_modules/nodemailer": { - "version": "6.4.16", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.16.tgz", - "integrity": "sha512-68K0LgZ6hmZ7PVmwL78gzNdjpj5viqBdFqKrTtr9bZbJYj6BRj5W6WGkxXrEnUl3Co3CBXi3CZBUlpV/foGnOQ==" - }, - "node_modules/nodemon": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.6.tgz", - "integrity": "sha512-4I3YDSKXg6ltYpcnZeHompqac4E6JeAMpGm8tJnB9Y3T0ehasLa4139dJOcCrB93HHrUMsCrKtoAlXTqT5n4AQ==", - "dev": true, - "dependencies": { - "chokidar": "^3.2.2", - "debug": "^3.2.6", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.3", - "update-notifier": "^4.1.0" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "node_modules/normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - }, - "node_modules/npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "node_modules/npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dependencies": { - "semver-compare": "^1.0.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "dependencies": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - } - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/retry-as-promised": { - "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/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "node_modules/seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" - }, - "node_modules/sequelize": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.3.5.tgz", - "integrity": "sha512-MiwiPkYSA8NWttRKAXdU9h0TxP6HAc1fl7qZmMO/VQqQOND83G4nZLXd0kWILtAoT9cxtZgFqeb/MPYgEeXwsw==", - "dependencies": { - "debug": "^4.1.1", - "dottie": "^2.0.0", - "inflection": "1.12.0", - "lodash": "^4.17.15", - "moment": "^2.26.0", - "moment-timezone": "^0.5.31", - "retry-as-promised": "^3.2.0", - "semver": "^7.3.2", - "sequelize-pool": "^6.0.0", - "toposort-class": "^1.0.1", - "uuid": "^8.1.0", - "validator": "^10.11.0", - "wkx": "^0.5.0" - } - }, - "node_modules/sequelize-pool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", - "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==" - }, - "node_modules/sequelize/node_modules/debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dependencies": { - "ms": "2.1.2" - } - }, - "node_modules/sequelize/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/sequelize/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - }, - "node_modules/sequelize/node_modules/validator": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" - }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "node_modules/sqlstring": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.2.tgz", - "integrity": "sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==" - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" - }, - "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dependencies": { - "is-utf8": "^0.2.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - } - }, - "node_modules/tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "node_modules/toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - } - }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "dependencies": { - "abbrev": "1" - } - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "dependencies": { - "debug": "^2.2.0" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "node_modules/update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "dependencies": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - } - }, - "node_modules/url-template": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "node_modules/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==" - }, - "node_modules/validator": { - "version": "13.1.17", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.17.tgz", - "integrity": "sha512-zL5QBoemJ3jYFb2/j38y7ljhwYGXVLUp8H6W1nVxadnAOvUOytec+L7BHh1oBQ82/TzWXHd+GSaxUWp4lROkLg==" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - } - }, - "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==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - }, "dependencies": { "@sindresorhus/is": { "version": "0.14.0", @@ -3424,14 +898,6 @@ "json-bigint": "^1.0.0" } }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "requires": { - "is-property": "^1.0.2" - } - }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -3807,11 +1273,6 @@ "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" - }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -4131,55 +1592,6 @@ "xtend": "^4.0.0" } }, - "mysql2": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.2.5.tgz", - "integrity": "sha512-XRqPNxcZTpmFdXbJqb+/CtYVLCx14x1RTeNMD4954L331APu75IC74GDqnZMEt1kwaXy6TySo55rF2F3YJS78g==", - "requires": { - "denque": "^1.4.1", - "generate-function": "^2.3.1", - "iconv-lite": "^0.6.2", - "long": "^4.0.0", - "lru-cache": "^6.0.0", - "named-placeholders": "^1.1.2", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "named-placeholders": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", - "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", - "requires": { - "lru-cache": "^4.1.3" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } - }, "needle": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", @@ -4457,11 +1869,6 @@ "ipaddr.js": "1.9.1" } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, "pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -4651,11 +2058,6 @@ } } }, - "seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" - }, "sequelize": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.3.5.tgz", @@ -4732,11 +2134,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, - "sqlstring": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.2.tgz", - "integrity": "sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==" - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -4747,11 +2144,6 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -4762,6 +2154,11 @@ "strip-ansi": "^3.0.0" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", diff --git a/package.json b/package.json index 0fded85..9986364 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "test": "node ./server/config/test", "db:install": "node ./server/db/install", "db:data-fake": "node ./server/db/data-fake", - "db:antiguo": "node ./server/db/antiguo", "dev": "nodemon ./server/app", "start": "node ./server/app" }, @@ -15,7 +14,7 @@ "type": "git", "url": "https://repositorio.acatlan.unam.mx/CIDWA/servicio_social_api.git" }, - "author": "cidwa", + "author": "CIDWA", "license": "ISC", "dependencies": { "axios": "^0.21.0", @@ -33,7 +32,6 @@ "mariadb": "^2.5.1", "moment": "^2.29.1", "multer": "^1.4.2", - "mysql2": "^2.2.5", "sequelize": "^6.3.5", "validator": "^13.1.17" }, diff --git a/server/app.js b/server/app.js index 36acec1..a2a0806 100644 --- a/server/app.js +++ b/server/app.js @@ -21,6 +21,6 @@ app.get('/', (req, res) => res.send('API IRIS')); app.use(require('./routes/index')); -app.listen(process.env.PORT, () => +app.listen(Number(process.env.PORT), () => console.log(`API IRIS corriendo en el puerto: ${process.env.PORT}`.rainbow) ); diff --git a/server/config/config.js b/server/config/config.js index 35d3525..b7736ee 100644 --- a/server/config/config.js +++ b/server/config/config.js @@ -1,6 +1,6 @@ const dotenv = require('dotenv'); const colors = require('colors'); -var result = {}; +let result = {}; try { result = dotenv.config(); @@ -9,19 +9,3 @@ try { } catch (err) { console.log('El archivo .env no se cargo.'.underline.bold.red); } - -// process.env.TYPEDB = process.env.TYPEDB - -// process.env.DB = process.env.DB - -// process.env.USERDB = process.env.USERDB - -// process.env.PASSWORDDB = process.env.PASSWORDDB - -// process.env.HOSTDB = process.env.HOSTDB - -// process.env.PORT = process.env.PORT - -// process.env.SALT_ROUNDS = process.env.SALT_ROUNDS - -process.env.CADUCIDAD_TOKEN = 1800000; diff --git a/server/config/sybase.js b/server/config/sybase.js deleted file mode 100644 index 0ffc607..0000000 --- a/server/config/sybase.js +++ /dev/null @@ -1,27 +0,0 @@ -require('./config'); -const Sybase = require('sybase'); -const db = new Sybase( - process.env.SYBASE_IP, - Number(process.env.SYBASE_PORT), - process.env.SYBASE_DB, - process.env.SYBASE_USER, - process.env.SYBASE_PASSWORD -); - -const alumno = (numeroCuenta) => { - return new Promise((resolve, reject) => { - db.connect((err) => { - if (err) reject(err); - db.query( - `select * from servicio_social where cuenta = '${numeroCuenta}'`, - (err, data) => { - if (err) reject(err); - db.disconnect(); - resolve(data); - } - ); - }); - }); -}; - -module.exports = alumno; diff --git a/server/middleware/autentificacion.js b/server/middleware/autentificacion.js index 8f610d9..b5c52cd 100644 --- a/server/middleware/autentificacion.js +++ b/server/middleware/autentificacion.js @@ -20,7 +20,7 @@ const verificaToken = (req, res, next) => { const crearToken = (info) => { return jwt.sign({ info }, process.env.KEY, { - expiresIn: process.env.CADUCIDAD_TOKEN, + expiresIn: Number(process.env.CADUCIDAD_TOKEN), }); }; From 325a47f9cb9b737931c6c9c881132fcbd7206145 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Wed, 5 May 2021 18:49:23 -0500 Subject: [PATCH 02/19] reduccion de codigo en requires --- .../controller/CasoEspecial/casoEspecial.js | 11 +++--- server/controller/CasoEspecial/liberacion.js | 5 ++- server/controller/CasoEspecial/nuevo.js | 9 +++-- .../CasoEspecial/serviciosEspeciales.js | 11 +++--- server/controller/CuestionarioAlumno/get.js | 9 +++-- server/controller/CuestionarioAlumno/nuevo.js | 5 ++- server/controller/CuestionarioPrograma/get.js | 9 +++-- .../controller/CuestionarioPrograma/nuevo.js | 5 ++- server/controller/Programa/cargaMasiva.js | 20 ++++++---- server/controller/Programa/programasAdmin.js | 5 ++- .../Programa/programasResponsable.js | 5 ++- server/controller/Servicio/admin.js | 13 ++++--- server/controller/Servicio/alumno.js | 11 +++--- server/controller/Servicio/cancelar.js | 14 ++++--- server/controller/Servicio/cartaAceptacion.js | 5 ++- server/controller/Servicio/cartaTermino.js | 5 ++- server/controller/Servicio/gustavoBazPrada.js | 7 ++-- server/controller/Servicio/informeGlobal.js | 5 ++- server/controller/Servicio/liberacion.js | 14 ++++--- server/controller/Servicio/nuevo.js | 8 ++-- .../controller/Servicio/rechazarAceptacion.js | 14 ++++--- server/controller/Servicio/rechazarInforme.js | 14 ++++--- server/controller/Servicio/rechazarTermino.js | 14 ++++--- server/controller/Servicio/registro.js | 14 ++++--- .../controller/Servicio/registroValidado.js | 14 ++++--- server/controller/Servicio/reporte.js | 11 +++--- server/controller/Servicio/serviciosAdmin.js | 11 +++--- .../Servicio/serviciosResponsable.js | 13 ++++--- server/controller/Servicio/update.js | 5 ++- server/controller/Usuario/escolares.js | 17 ++++----- server/controller/Usuario/login.js | 11 +++--- .../controller/Usuario/newPasswordAlumno.js | 14 ++++--- .../Usuario/newPasswordResponsable.js | 9 +++-- server/controller/Usuario/responsable.js | 5 ++- server/routes/CasoEspecial.js | 11 +++--- server/routes/CuestionarioAlumno.js | 5 ++- server/routes/CuestionarioPrograma.js | 5 ++- server/routes/Programa.js | 7 ++-- server/routes/Servicio.js | 37 ++++++++++--------- server/routes/Status.js | 2 +- server/routes/Usuario.js | 13 ++++--- 41 files changed, 236 insertions(+), 186 deletions(-) diff --git a/server/controller/CasoEspecial/casoEspecial.js b/server/controller/CasoEspecial/casoEspecial.js index 7e67ffc..c0bf8da 100644 --- a/server/controller/CasoEspecial/casoEspecial.js +++ b/server/controller/CasoEspecial/casoEspecial.js @@ -1,9 +1,10 @@ const validar = require('../../helper/validar'); -const CasoEspecial = require('../../db/tablas/CasoEspecial'); -const Usuario = require('../../db/tablas/Usuario'); -const TipoUsuario = require('../../db/tablas/TipoUsuario'); -const Carrera = require('../../db/tablas/Carrera'); -const Status = require('../../db/tablas/Status'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const CasoEspecial = require(`${dbPath}/CasoEspecial`); +const Status = require(`${dbPath}/Status`); +const TipoUsuario = require(`${dbPath}/TipoUsuario`); +const Usuario = require(`${dbPath}/Usuario`); const admin = async (body) => { const idCasoEspecial = validar.validarId(body.idCasoEspecial); diff --git a/server/controller/CasoEspecial/liberacion.js b/server/controller/CasoEspecial/liberacion.js index 3292285..6da5f5a 100644 --- a/server/controller/CasoEspecial/liberacion.js +++ b/server/controller/CasoEspecial/liberacion.js @@ -1,8 +1,9 @@ const validar = require('../../helper/validar'); const gmail = require('../../helper/gmail'); const correos = require('../../helper/correos'); -const CasoEspecial = require('../../db/tablas/CasoEspecial'); -const Usuario = require('../../db/tablas/Usuario'); +const dbPath = '../../db/tablas'; +const CasoEspecial = require(`${dbPath}/CasoEspecial`); +const Usuario = require(`${dbPath}/Usuario`); const liberacion = async (body) => { const idCasoEspecial = validar.validarId(body.idCasoEspecial); diff --git a/server/controller/CasoEspecial/nuevo.js b/server/controller/CasoEspecial/nuevo.js index 9fa0860..cb356b3 100644 --- a/server/controller/CasoEspecial/nuevo.js +++ b/server/controller/CasoEspecial/nuevo.js @@ -1,8 +1,9 @@ -const drive = require('../../helper/drive'); -const CasoEspecial = require('../../db/tablas/CasoEspecial'); -const Usuario = require('../../db/tablas/Usuario'); -const Carrera = require('../../db/tablas/Carrera'); const validar = require('../../helper/validar'); +const drive = require('../../helper/drive'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const CasoEspecial = require(`${dbPath}/CasoEspecial`); +const Usuario = require(`${dbPath}/Usuario`); const nuevo = async (body, file) => { const idUsuario = validar.validarId(body.idUsuario); diff --git a/server/controller/CasoEspecial/serviciosEspeciales.js b/server/controller/CasoEspecial/serviciosEspeciales.js index fe9baf6..0b4e311 100644 --- a/server/controller/CasoEspecial/serviciosEspeciales.js +++ b/server/controller/CasoEspecial/serviciosEspeciales.js @@ -1,10 +1,11 @@ const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const CasoEspecial = require('../../db/tablas/CasoEspecial'); -const Usuario = require('../../db/tablas/Usuario'); -const Carrera = require('../../db/tablas/Carrera'); -const Status = require('../../db/tablas/Status'); -const TipoUsuario = require('../../db/tablas/TipoUsuario'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const CasoEspecial = require(`${dbPath}/CasoEspecial`); +const Status = require(`${dbPath}/Status`); +const TipoUsuario = require(`${dbPath}/TipoUsuario`); +const Usuario = require(`${dbPath}/Usuario`); const serviciosEspeciales = async (body) => { const pagina = validar.validarId(body.pagina); diff --git a/server/controller/CuestionarioAlumno/get.js b/server/controller/CuestionarioAlumno/get.js index fa6ee41..5c13a33 100644 --- a/server/controller/CuestionarioAlumno/get.js +++ b/server/controller/CuestionarioAlumno/get.js @@ -2,10 +2,11 @@ const fs = require('fs'); const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const CuestionarioAlumno = require('../../db/tablas/CuestionarioAlumno'); -const Servicio = require('../../db/tablas/Servicio'); -const Programa = require('../../db/tablas/Programa'); -const Usuario = require('../../db/tablas/Usuario'); +const dbPath = '../../db/tablas'; +const CuestionarioAlumno = require(`${dbPath}/CuestionarioAlumno`); +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const get = async (body) => { const year = validar.validarNumero(body.year, 4); diff --git a/server/controller/CuestionarioAlumno/nuevo.js b/server/controller/CuestionarioAlumno/nuevo.js index 6feb5ae..57a7b59 100644 --- a/server/controller/CuestionarioAlumno/nuevo.js +++ b/server/controller/CuestionarioAlumno/nuevo.js @@ -1,6 +1,7 @@ const validar = require('../../helper/validar'); -const CuestionarioAlumno = require('../../db/tablas/CuestionarioAlumno'); -const Servicio = require('../../db/tablas/Servicio'); +const dbPath = '../../db/tablas'; +const CuestionarioAlumno = require(`${dbPath}/CuestionarioAlumno`); +const Servicio = require(`${dbPath}/Servicio`); const nuevo = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/CuestionarioPrograma/get.js b/server/controller/CuestionarioPrograma/get.js index 797bf5a..eec23ed 100644 --- a/server/controller/CuestionarioPrograma/get.js +++ b/server/controller/CuestionarioPrograma/get.js @@ -2,10 +2,11 @@ const fs = require('fs'); const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const CuestionarioPrograma = require('../../db/tablas/CuestionarioPrograma'); -const Servicio = require('../../db/tablas/Servicio'); -const Programa = require('../../db/tablas/Programa'); -const Usuario = require('../../db/tablas/Usuario'); +const dbPath = '../../db/tablas'; +const CuestionarioPrograma = require(`${dbPath}/CuestionarioPrograma`); +const Servicio = require(`${dbPath}/Servicio`); +const Programa = require(`${dbPath}/Programa`); +const Usuario = require(`${dbPath}/Usuario`); const get = async (body) => { const year = validar.validarNumero(body.year, 4); diff --git a/server/controller/CuestionarioPrograma/nuevo.js b/server/controller/CuestionarioPrograma/nuevo.js index 55bb2ff..0ed51ba 100644 --- a/server/controller/CuestionarioPrograma/nuevo.js +++ b/server/controller/CuestionarioPrograma/nuevo.js @@ -1,6 +1,7 @@ const validar = require('../../helper/validar'); -const CuestionarioPrograma = require('../../db/tablas/CuestionarioPrograma'); -const Servicio = require('../../db/tablas/Servicio'); +const dbPath = '../../db/tablas'; +const CuestionarioPrograma = require(`${dbPath}/CuestionarioPrograma`); +const Servicio = require(`${dbPath}/Servicio`); const nuevo = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Programa/cargaMasiva.js b/server/controller/Programa/cargaMasiva.js index 2260380..d3ffe51 100644 --- a/server/controller/Programa/cargaMasiva.js +++ b/server/controller/Programa/cargaMasiva.js @@ -1,12 +1,14 @@ const fs = require('fs'); const moment = require('moment'); const csv = require('csvtojson'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const encriptar = require('../../helper/encriptar'); -const validar = require('../../helper/validar'); -const Programa = require('../../db/tablas/Programa'); -const Usuario = require('../../db/tablas/Usuario'); +const helperPath = '../../helper'; +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const encriptar = require(`${helperPath}/encriptar`); +const validar = require(`${helperPath}/validar`); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Usuario = require(`${dbPath}/Usuario`); const cargaMasiva = async (file) => { const path = `server/uploads/${file}`; @@ -133,7 +135,11 @@ const cargaMasiva = async (file) => { } await gmail('Reporte carga masiva', 'lemuel@acatlan.unam.mx', mensaje); await gmail('Reporte carga masiva', 'dscad@acatlan.unam.mx', mensaje); - await gmail('Reporte carga masiva', 'tramites.ss@acatlan.unam.mx', mensaje); + await gmail( + 'Reporte carga masiva', + 'tramites.ss@acatlan.unam.mx', + mensaje + ); fs.unlinkSync(path); }); diff --git a/server/controller/Programa/programasAdmin.js b/server/controller/Programa/programasAdmin.js index 14d0a31..b0fe14a 100644 --- a/server/controller/Programa/programasAdmin.js +++ b/server/controller/Programa/programasAdmin.js @@ -1,6 +1,7 @@ const validar = require('../../helper/validar'); -const Programa = require('../../db/tablas/Programa'); -const Usuario = require('../../db/tablas/Usuario'); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Usuario = require(`${dbPath}/Usuario`); const programasAdmin = async (body) => { const idUsuario = validar.validarId(body.idUsuario); diff --git a/server/controller/Programa/programasResponsable.js b/server/controller/Programa/programasResponsable.js index a81ad02..71e9855 100644 --- a/server/controller/Programa/programasResponsable.js +++ b/server/controller/Programa/programasResponsable.js @@ -1,6 +1,7 @@ const validar = require('../../helper/validar'); -const Programa = require('../../db/tablas/Programa'); -const Usuario = require('../../db/tablas/Usuario'); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Usuario = require(`${dbPath}/Usuario`); const programasResponsable = async (body) => { const idUsuario = validar.validarId(body.idUsuario); diff --git a/server/controller/Servicio/admin.js b/server/controller/Servicio/admin.js index 9c1bcf7..4a40624 100644 --- a/server/controller/Servicio/admin.js +++ b/server/controller/Servicio/admin.js @@ -1,10 +1,11 @@ const validar = require('../../helper/validar'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const TipoUsuario = require('../../db/tablas/TipoUsuario'); -const Carrera = require('../../db/tablas/Carrera'); -const Status = require('../../db/tablas/Status'); -const Programa = require('../../db/tablas/Programa'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Status = require(`${dbPath}/Status`); +const TipoUsuario = require(`${dbPath}/TipoUsuario`); +const Usuario = require(`${dbPath}/Usuario`); const admin = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Servicio/alumno.js b/server/controller/Servicio/alumno.js index c76c6b0..292ac27 100644 --- a/server/controller/Servicio/alumno.js +++ b/server/controller/Servicio/alumno.js @@ -1,10 +1,11 @@ const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Carrera = require('../../db/tablas/Carrera'); -const Status = require('../../db/tablas/Status'); -const Programa = require('../../db/tablas/Programa'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Status = require(`${dbPath}/Status`); +const Usuario = require(`${dbPath}/Usuario`); const alumno = async (body) => { let idUsuario = validar.validarId(body.idUsuario); diff --git a/server/controller/Servicio/cancelar.js b/server/controller/Servicio/cancelar.js index d38b4f2..d503a11 100644 --- a/server/controller/Servicio/cancelar.js +++ b/server/controller/Servicio/cancelar.js @@ -1,9 +1,11 @@ -const validar = require('../../helper/validar'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Programa = require('../../db/tablas/Programa'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const cancelar = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Servicio/cartaAceptacion.js b/server/controller/Servicio/cartaAceptacion.js index 9780cb4..c2ee64d 100644 --- a/server/controller/Servicio/cartaAceptacion.js +++ b/server/controller/Servicio/cartaAceptacion.js @@ -1,5 +1,6 @@ -const validar = require('../../helper/validar'); -const drive = require('../../helper/drive'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const drive = require(`${helperPath}/drive`); const Servicio = require('../../db/tablas/Servicio'); const cartaTermino = async (body, file) => { diff --git a/server/controller/Servicio/cartaTermino.js b/server/controller/Servicio/cartaTermino.js index c9c920d..e27ad14 100644 --- a/server/controller/Servicio/cartaTermino.js +++ b/server/controller/Servicio/cartaTermino.js @@ -1,5 +1,6 @@ -const validar = require('../../helper/validar'); -const drive = require('../../helper/drive'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const drive = require(`${helperPath}/drive`); const Servicio = require('../../db/tablas/Servicio'); const cartaTermino = async (body, file) => { diff --git a/server/controller/Servicio/gustavoBazPrada.js b/server/controller/Servicio/gustavoBazPrada.js index 230fd1b..294aeb3 100644 --- a/server/controller/Servicio/gustavoBazPrada.js +++ b/server/controller/Servicio/gustavoBazPrada.js @@ -3,9 +3,10 @@ const moment = require('moment'); const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Carrera = require('../../db/tablas/Carrera'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const gustavoBazPrada = async (body) => { const year = validar.validarNumero(body.year, 4); diff --git a/server/controller/Servicio/informeGlobal.js b/server/controller/Servicio/informeGlobal.js index 0ea0a56..9443122 100644 --- a/server/controller/Servicio/informeGlobal.js +++ b/server/controller/Servicio/informeGlobal.js @@ -1,5 +1,6 @@ -const validar = require('../../helper/validar'); -const drive = require('../../helper/drive'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const drive = require(`${helperPath}/drive`); const Servicio = require('../../db/tablas/Servicio'); const informeGlobal = async (body, file) => { diff --git a/server/controller/Servicio/liberacion.js b/server/controller/Servicio/liberacion.js index 049b253..b53667d 100644 --- a/server/controller/Servicio/liberacion.js +++ b/server/controller/Servicio/liberacion.js @@ -1,10 +1,12 @@ const moment = require('moment'); -const validar = require('../../helper/validar'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Programa = require('../../db/tablas/Programa'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const liberacion = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Servicio/nuevo.js b/server/controller/Servicio/nuevo.js index 0ca68b6..73f13f6 100644 --- a/server/controller/Servicio/nuevo.js +++ b/server/controller/Servicio/nuevo.js @@ -1,10 +1,12 @@ const { Op } = require('sequelize'); +const helperPath = '../../helper'; +const validar = require('../../helper/validar'); const drive = require('../../helper/drive'); +const dbPath = '../../db/tablas'; +const Carrera = require('../../db/tablas/Carrera'); +const Programa = require('../../db/tablas/Programa'); const Servicio = require('../../db/tablas/Servicio'); const Usuario = require('../../db/tablas/Usuario'); -const Programa = require('../../db/tablas/Programa'); -const Carrera = require('../../db/tablas/Carrera'); -const validar = require('../../helper/validar'); const nuevo = async (body, file) => { const idUsuario = validar.validarId(body.idUsuario); diff --git a/server/controller/Servicio/rechazarAceptacion.js b/server/controller/Servicio/rechazarAceptacion.js index 5b087df..764471e 100644 --- a/server/controller/Servicio/rechazarAceptacion.js +++ b/server/controller/Servicio/rechazarAceptacion.js @@ -1,9 +1,11 @@ -const validar = require('../../helper/validar'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Programa = require('../../db/tablas/Programa'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const cancelar = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Servicio/rechazarInforme.js b/server/controller/Servicio/rechazarInforme.js index ca00989..04022d3 100644 --- a/server/controller/Servicio/rechazarInforme.js +++ b/server/controller/Servicio/rechazarInforme.js @@ -1,9 +1,11 @@ -const validar = require('../../helper/validar'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Programa = require('../../db/tablas/Programa'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const cancelar = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Servicio/rechazarTermino.js b/server/controller/Servicio/rechazarTermino.js index a2cb982..ee25eec 100644 --- a/server/controller/Servicio/rechazarTermino.js +++ b/server/controller/Servicio/rechazarTermino.js @@ -1,9 +1,11 @@ -const validar = require('../../helper/validar'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Programa = require('../../db/tablas/Programa'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const cancelar = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Servicio/registro.js b/server/controller/Servicio/registro.js index e3601d1..51fb385 100644 --- a/server/controller/Servicio/registro.js +++ b/server/controller/Servicio/registro.js @@ -1,9 +1,11 @@ -const validar = require('../../helper/validar'); -const encriptar = require('../../helper/encriptar'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const encriptar = require(`${helperPath}/encriptar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const dbPath = '../../db/tablas'; +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const registro = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Servicio/registroValidado.js b/server/controller/Servicio/registroValidado.js index 6642178..b6b0217 100644 --- a/server/controller/Servicio/registroValidado.js +++ b/server/controller/Servicio/registroValidado.js @@ -1,9 +1,11 @@ -const validar = require('../../helper/validar'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Programa = require('../../db/tablas/Programa'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const registroValidado = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Servicio/reporte.js b/server/controller/Servicio/reporte.js index 23a93fc..e8e371b 100644 --- a/server/controller/Servicio/reporte.js +++ b/server/controller/Servicio/reporte.js @@ -2,11 +2,12 @@ const fs = require('fs'); const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const Servicio = require('../../db/tablas/Servicio'); -const Programa = require('../../db/tablas/Programa'); -const Usuario = require('../../db/tablas/Usuario'); -const Carrera = require('../../db/tablas/Carrera'); -const Status = require('../../db/tablas/Status'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Status = require(`${dbPath}/Status`); +const Usuario = require(`${dbPath}/Usuario`); const reporte = async (body) => { const inicio = validar.validarFecha(body.inicio); diff --git a/server/controller/Servicio/serviciosAdmin.js b/server/controller/Servicio/serviciosAdmin.js index 369c98f..31e5694 100644 --- a/server/controller/Servicio/serviciosAdmin.js +++ b/server/controller/Servicio/serviciosAdmin.js @@ -1,10 +1,11 @@ const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Carrera = require('../../db/tablas/Carrera'); -const Status = require('../../db/tablas/Status'); -const TipoUsuario = require('../../db/tablas/TipoUsuario'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const Servicio = require(`${dbPath}/Servicio`); +const Status = require(`${dbPath}/Status`); +const TipoUsuario = require(`${dbPath}/TipoUsuario`); +const Usuario = require(`${dbPath}/Usuario`); const serviciosAdmin = async (body) => { const pagina = validar.validarId(body.pagina); diff --git a/server/controller/Servicio/serviciosResponsable.js b/server/controller/Servicio/serviciosResponsable.js index 6ae73c8..bb8e64a 100644 --- a/server/controller/Servicio/serviciosResponsable.js +++ b/server/controller/Servicio/serviciosResponsable.js @@ -1,11 +1,12 @@ const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); -const Carrera = require('../../db/tablas/Carrera'); -const Status = require('../../db/tablas/Status'); -const TipoUsuario = require('../../db/tablas/TipoUsuario'); -const Programa = require('../../db/tablas/Programa'); +const dbPath = '../../db/tablas'; +const Carrera = require(`${dbPath}/Carrera`); +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Status = require(`${dbPath}/Status`); +const TipoUsuario = require(`${dbPath}/TipoUsuario`); +const Usuario = require(`${dbPath}/Usuario`); const serviciosResponsable = async (body) => { const pagina = validar.validarId(body.pagina); diff --git a/server/controller/Servicio/update.js b/server/controller/Servicio/update.js index 5d96c7c..a75c4df 100644 --- a/server/controller/Servicio/update.js +++ b/server/controller/Servicio/update.js @@ -1,5 +1,6 @@ -const drive = require('../../helper/drive'); -const validar = require('../../helper/validar'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const drive = require(`${helperPath}/drive`); const Servicio = require('../../db/tablas/Servicio'); const update = async (body, files) => { diff --git a/server/controller/Usuario/escolares.js b/server/controller/Usuario/escolares.js index 1e78ee9..c4b9f9b 100644 --- a/server/controller/Usuario/escolares.js +++ b/server/controller/Usuario/escolares.js @@ -1,14 +1,14 @@ require('../../config/config'); -const validar = require('../../helper/validar'); const axios = require('axios'); -const Usuario = require('../../db/tablas/Usuario'); -const Carrera = require('../../db/tablas/Carrera'); +const validar = require('../../helper/validar'); +const dbPath = '../../db/tablas'; +const Usuario = require(`${dbPath}/Usuario`); +const Carrera = require(`${dbPath}/Carrera`); const escolares = async (body) => { const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); let alumno; - //return sybase(numeroCuenta) return axios({ method: 'post', url: `${process.env.ESCOLARES}${numeroCuenta}`, @@ -24,13 +24,10 @@ const escolares = async (body) => { creditos: res.data.avance, carrera: res.data.carrconst.trim(), }; - while ( - alumno.nombre.search('‘') != -1 && - alumno.nombre.search('Ã') != -1 - ) { - alumno.nombre = alumno.nombre.replace('Ã', 'Ñ'); + while (alumno.nombre.search('‘') != -1) alumno.nombre = alumno.nombre.replace('‘', ''); - } + while (alumno.nombre.search('Ã') != -1) + alumno.nombre = alumno.nombre.replace('Ã', 'Ñ'); return Carrera.findOne({ where: { carrera: alumno.carrera } }); }) diff --git a/server/controller/Usuario/login.js b/server/controller/Usuario/login.js index 3627937..9eca3dc 100644 --- a/server/controller/Usuario/login.js +++ b/server/controller/Usuario/login.js @@ -1,14 +1,15 @@ -const encriptar = require('../../helper/encriptar'); const validar = require('../../helper/validar'); const { crearToken } = require('../../middleware/autentificacion'); -const Usuario = require('../../db/tablas/Usuario'); -const TipoUsuario = require('../../db/tablas/TipoUsuario'); +const { comparar } = require('../../helper/encriptar'); +const dbPath = '../../db/tablas'; +const Usuario = require(`${dbPath}/Usuario`); +const TipoUsuario = require(`${dbPath}/TipoUsuario`); const login = async (body) => { const usuario = validar.validar(body.usuario, 'El usuario', 60); const password = validar.validarAlfanumerico( body.password, - 'El password', + 'La contraseña', 20 ); @@ -18,7 +19,7 @@ const login = async (body) => { }).then((res) => { if (!res) throw new Error('No existe este usuario.'); if (!res.activo) throw new Error('Este usuario no esta activo.'); - if (encriptar.comparar(password, res.password)) { + if (comparar(password, res.password)) { delete res.dataValues.password; delete res.dataValues.activo; return { diff --git a/server/controller/Usuario/newPasswordAlumno.js b/server/controller/Usuario/newPasswordAlumno.js index ddf4088..bc09e59 100644 --- a/server/controller/Usuario/newPasswordAlumno.js +++ b/server/controller/Usuario/newPasswordAlumno.js @@ -1,9 +1,11 @@ -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const encriptar = require('../../helper/encriptar'); -const validar = require('../../helper/validar'); -const Usuario = require('../../db/tablas/Usuario'); -const Servicio = require('../../db/tablas/Servicio'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const encriptar = require(`${helperPath}/encriptar`); +const dbPath = '../../db/tablas'; +const Usuario = require(`${dbPath}/Usuario`); +const Servicio = require(`${dbPath}/Servicio`); const newPasswordAlumno = async (body) => { const idServicio = validar.validarId(body.idServicio); diff --git a/server/controller/Usuario/newPasswordResponsable.js b/server/controller/Usuario/newPasswordResponsable.js index 45d193a..9767461 100644 --- a/server/controller/Usuario/newPasswordResponsable.js +++ b/server/controller/Usuario/newPasswordResponsable.js @@ -1,7 +1,8 @@ -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); -const encriptar = require('../../helper/encriptar'); -const validar = require('../../helper/validar'); +const helperPath = '../../helper'; +const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const correos = require(`${helperPath}/correos`); +const encriptar = require(`${helperPath}/encriptar`); const Usuario = require('../../db/tablas/Usuario'); const newPasswordResponsable = async (body) => { diff --git a/server/controller/Usuario/responsable.js b/server/controller/Usuario/responsable.js index f1e0469..77c8a14 100644 --- a/server/controller/Usuario/responsable.js +++ b/server/controller/Usuario/responsable.js @@ -1,7 +1,8 @@ const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const Usuario = require('../../db/tablas/Usuario'); -const TipoUsuario = require('../../db/tablas/TipoUsuario'); +const dbPath = '../../db/tablas'; +const Usuario = require(`${dbPath}/Usuario`); +const TipoUsuario = require(`${dbPath}/TipoUsuario`); const responsable = async (body) => { const pagina = validar.validarId(body.pagina); diff --git a/server/routes/CasoEspecial.js b/server/routes/CasoEspecial.js index ece6979..4db1f99 100644 --- a/server/routes/CasoEspecial.js +++ b/server/routes/CasoEspecial.js @@ -5,11 +5,12 @@ const app = express(); const upload = multer({ dest: 'server/uploads' }); const { verificaToken } = require('../middleware/autentificacion'); const route = '/caso_especial'; -const nuevo = require('../controller/CasoEspecial/nuevo'); -const serviciosEspeciales = require('../controller/CasoEspecial/serviciosEspeciales'); -const casoEspecial = require('../controller/CasoEspecial/casoEspecial'); -const liberacion = require('../controller/CasoEspecial/liberacion'); -const update = require('../controller/CasoEspecial/update'); +const controllerPath = '../controller/CasoEspecial'; +const nuevo = require(`${controllerPath}/nuevo`); +const serviciosEspeciales = require(`${controllerPath}/serviciosEspeciales`); +const casoEspecial = require(`${controllerPath}/casoEspecial`); +const liberacion = require(`${controllerPath}/liberacion`); +const update = require(`${controllerPath}/update`); const eliminarArchivo = (filename) => { fs.unlinkSync(`./server/uploads/${filename}`); diff --git a/server/routes/CuestionarioAlumno.js b/server/routes/CuestionarioAlumno.js index 960df15..bcdba3b 100644 --- a/server/routes/CuestionarioAlumno.js +++ b/server/routes/CuestionarioAlumno.js @@ -2,8 +2,9 @@ const express = require('express'); const app = express(); const { verificaToken } = require('../middleware/autentificacion'); const route = '/cuestionario_alumno'; -const nuevo = require('../controller/CuestionarioAlumno/nuevo'); -const get = require('../controller/CuestionarioAlumno/get'); +const controllerPath = '../controller/CuestionarioAlumno'; +const nuevo = require(`${controllerPath}/nuevo`); +const get = require(`${controllerPath}/get`); app.post(`${route}`, verificaToken, (req, res) => { return nuevo(req.body) diff --git a/server/routes/CuestionarioPrograma.js b/server/routes/CuestionarioPrograma.js index 4e0a691..34d61be 100644 --- a/server/routes/CuestionarioPrograma.js +++ b/server/routes/CuestionarioPrograma.js @@ -2,8 +2,9 @@ const express = require('express'); const app = express(); const { verificaToken } = require('../middleware/autentificacion'); const route = '/cuestionario_programa'; -const nuevo = require('../controller/CuestionarioPrograma/nuevo'); -const get = require('../controller/CuestionarioPrograma/get'); +const controllerPath = '../controller/CuestionarioPrograma'; +const nuevo = require(`${controllerPath}/nuevo`); +const get = require(`${controllerPath}/get`); app.post(`${route}`, verificaToken, (req, res) => { return nuevo(req.body) diff --git a/server/routes/Programa.js b/server/routes/Programa.js index 5316452..e0595d8 100644 --- a/server/routes/Programa.js +++ b/server/routes/Programa.js @@ -4,9 +4,10 @@ const app = express(); const upload = multer({ dest: 'server/uploads' }); const { verificaToken } = require('../middleware/autentificacion'); const route = '/programa'; -const programasResponsable = require('../controller/Programa/programasResponsable'); -const programasAdmin = require('../controller/Programa/programasAdmin'); -const cargaMasiva = require('../controller/Programa/cargaMasiva'); +const controllerPath = '../controller/Programa'; +const programasResponsable = require(`${controllerPath}/programasResponsable`); +const programasAdmin = require(`${controllerPath}/programasAdmin`); +const cargaMasiva = require(`${controllerPath}/cargaMasiva`); app.get(`${route}/programas_responsable`, verificaToken, (req, res) => { return programasResponsable(req.query) diff --git a/server/routes/Servicio.js b/server/routes/Servicio.js index a9aa3f4..b781dd5 100644 --- a/server/routes/Servicio.js +++ b/server/routes/Servicio.js @@ -5,24 +5,25 @@ const app = express(); const upload = multer({ dest: 'server/uploads' }); const { verificaToken } = require('../middleware/autentificacion'); const route = '/servicio'; -const nuevo = require('../controller/Servicio/nuevo'); -const serviciosAdmin = require('../controller/Servicio/serviciosAdmin'); -const serviciosResponsable = require('../controller/Servicio/serviciosResponsable'); -const admin = require('../controller/Servicio/admin'); -const alumno = require('../controller/Servicio/alumno'); -const cancelar = require('../controller/Servicio/cancelar'); -const registro = require('../controller/Servicio/registro'); -const registroValidado = require('../controller/Servicio/registroValidado'); -const cartaAceptacion = require('../controller/Servicio/cartaAceptacion'); -const cartaTermino = require('../controller/Servicio/cartaTermino'); -const informeGlobal = require('../controller/Servicio/informeGlobal'); -const liberacion = require('../controller/Servicio/liberacion'); -const rechazarAceptacion = require('../controller/Servicio/rechazarAceptacion'); -const rechazarTermino = require('../controller/Servicio/rechazarTermino'); -const rechazarInforme = require('../controller/Servicio/rechazarInforme'); -const update = require('../controller/Servicio/update'); -const reporte = require('../controller/Servicio/reporte'); -const gustavoBazPrada = require('../controller/Servicio/gustavoBazPrada'); +const controllerPath = '../controller/Servicio'; +const nuevo = require(`${controllerPath}/nuevo`); +const serviciosAdmin = require(`${controllerPath}/serviciosAdmin`); +const serviciosResponsable = require(`${controllerPath}/serviciosResponsable`); +const admin = require(`${controllerPath}/admin`); +const alumno = require(`${controllerPath}/alumno`); +const cancelar = require(`${controllerPath}/cancelar`); +const registro = require(`${controllerPath}/registro`); +const registroValidado = require(`${controllerPath}/registroValidado`); +const cartaAceptacion = require(`${controllerPath}/cartaAceptacion`); +const cartaTermino = require(`${controllerPath}/cartaTermino`); +const informeGlobal = require(`${controllerPath}/informeGlobal`); +const liberacion = require(`${controllerPath}/liberacion`); +const rechazarAceptacion = require(`${controllerPath}/rechazarAceptacion`); +const rechazarTermino = require(`${controllerPath}/rechazarTermino`); +const rechazarInforme = require(`${controllerPath}/rechazarInforme`); +const update = require(`${controllerPath}/update`); +const reporte = require(`${controllerPath}/reporte`); +const gustavoBazPrada = require(`${controllerPath}/gustavoBazPrada`); const eliminarArchivo = (filename) => { fs.unlinkSync(`./server/uploads/${filename}`); diff --git a/server/routes/Status.js b/server/routes/Status.js index e3f50b5..b09bd3b 100644 --- a/server/routes/Status.js +++ b/server/routes/Status.js @@ -10,7 +10,7 @@ app.get(`${route}`, verificaToken, (req, res) => { res.status(200).json(data); }) .catch((err) => { - res.status(400).json(err); + res.status(400).json({ message: err.message }); }); }); diff --git a/server/routes/Usuario.js b/server/routes/Usuario.js index 665a825..2270240 100644 --- a/server/routes/Usuario.js +++ b/server/routes/Usuario.js @@ -2,12 +2,13 @@ const express = require('express'); const app = express(); const { verificaToken } = require('../middleware/autentificacion'); const route = '/usuario'; -const escolares = require('../controller/Usuario/escolares'); -const login = require('../controller/Usuario/login'); -const responsable = require('../controller/Usuario/responsable'); -const responsableUpdate = require('../controller/Usuario/responsableUpdate'); -const newPasswordAlumno = require('../controller/Usuario/newPasswordAlumno'); -const newPasswordResponsable = require('../controller/Usuario/newPasswordResponsable'); +const controllerPath = '../controller/Usuario'; +const escolares = require(`${controllerPath}/escolares`); +const login = require(`${controllerPath}/login`); +const responsable = require(`${controllerPath}/responsable`); +const responsableUpdate = require(`${controllerPath}/responsableUpdate`); +const newPasswordAlumno = require(`${controllerPath}/newPasswordAlumno`); +const newPasswordResponsable = require(`${controllerPath}/newPasswordResponsable`); app.post(`${route}/login`, (req, res) => { return login(req.body) From eb2313d671cbe18374ad7192fde05b6e2c3011a4 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Wed, 5 May 2021 19:16:15 -0500 Subject: [PATCH 03/19] paginacion con find and caount all 2 --- .../CasoEspecial/serviciosEspeciales.js | 29 +++++------------ server/controller/Servicio/serviciosAdmin.js | 31 +++++------------- .../Servicio/serviciosResponsable.js | 32 +++++-------------- server/controller/Usuario/responsable.js | 20 +++++------- server/helper/validar.js | 3 +- 5 files changed, 34 insertions(+), 81 deletions(-) diff --git a/server/controller/CasoEspecial/serviciosEspeciales.js b/server/controller/CasoEspecial/serviciosEspeciales.js index 0b4e311..9f1bfc1 100644 --- a/server/controller/CasoEspecial/serviciosEspeciales.js +++ b/server/controller/CasoEspecial/serviciosEspeciales.js @@ -8,7 +8,7 @@ const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const serviciosEspeciales = async (body) => { - const pagina = validar.validarId(body.pagina); + const pagina = validar.validarNumero(body.pagina, true); const where = body.idStatus ? { idStatus: validar.validarId(body.idStatus) } : { idStatus: { [Op.gt]: 10 } }; @@ -18,9 +18,8 @@ const serviciosEspeciales = async (body) => { const numeroCuenta = body.numeroCuenta ? validar.validarNumeroCuenta(body.numeroCuenta) : ''; - const data = []; - return CasoEspecial.findAll({ + return CasoEspecial.findAndCountAll({ include: [ { model: Usuario, @@ -34,25 +33,13 @@ const serviciosEspeciales = async (body) => { { model: Status, where }, ], order: [['updatedAt', 'DESC']], + limit: 25, + offset: 25 * (pagina - 1), }).then((res) => { - for (let i = pagina * 25 - 25; i < res.length && i < pagina * 25; i++) - data.push({ - idCasoEspecial: res[i].idCasoEspecial, - createdAt: res[i].createdAt, - Usuario: { - idUsuario: res[i].Usuario.idUsuario, - usuario: res[i].Usuario.usuario, - nombre: res[i].Usuario.nombre, - TipoUsuario: res[i].Usuario.TipoUsuario, - }, - Carrera: res[i].Carrera, - Status: res[i].Status, - }); - return { - registros: res.length, - faltantes: res.length - data.length - (pagina - 1) * 25, - servicios: data, - }; + for (let i = 0; i < res.rows.length; i++) { + // delete res.rows[i].dataValues.idUsuario + } + return { count: res.count, serviciosEspeciales: res.rows }; }); }; diff --git a/server/controller/Servicio/serviciosAdmin.js b/server/controller/Servicio/serviciosAdmin.js index 31e5694..7d6a7b1 100644 --- a/server/controller/Servicio/serviciosAdmin.js +++ b/server/controller/Servicio/serviciosAdmin.js @@ -8,7 +8,7 @@ const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const serviciosAdmin = async (body) => { - const pagina = validar.validarId(body.pagina); + const pagina = validar.validarNumero(body.pagina, true); const where = body.idStatus ? { idStatus: validar.validarId(body.idStatus) } : {}; @@ -18,9 +18,8 @@ const serviciosAdmin = async (body) => { const numeroCuenta = body.numeroCuenta ? validar.validarNumeroCuenta(body.numeroCuenta) : ''; - const data = []; - return Servicio.findAll({ + return Servicio.findAndCountAll({ include: [ { model: Usuario, @@ -34,27 +33,13 @@ const serviciosAdmin = async (body) => { { model: Status, where }, ], order: [['updatedAt', 'DESC']], + limit: 25, + offset: 25 * (pagina - 1), }).then((res) => { - for (let i = pagina * 25 - 25; i < res.length && i < pagina * 25; i++) - data.push({ - idServicio: res[i].idServicio, - fechaInicio: res[i].fechaInicio, - fechaFin: res[i].fechaFin, - createdAt: res[i].createdAt, - Usuario: { - idUsuario: res[i].Usuario.idUsuario, - usuario: res[i].Usuario.usuario, - nombre: res[i].Usuario.nombre, - TipoUsuario: res[i].Usuario.TipoUsuario, - }, - Carrera: res[i].Carrera, - Status: res[i].Status, - }); - return { - registros: res.length, - faltantes: res.length - data.length - (pagina - 1) * 25, - servicios: data, - }; + for (let i = 0; i < res.rows.length; i++) { + // delete res.rows[i].dataValues.idUsuario + } + return { count: res.count, serviciosAdmin: res.rows }; }); }; diff --git a/server/controller/Servicio/serviciosResponsable.js b/server/controller/Servicio/serviciosResponsable.js index bb8e64a..bf8fa70 100644 --- a/server/controller/Servicio/serviciosResponsable.js +++ b/server/controller/Servicio/serviciosResponsable.js @@ -9,7 +9,7 @@ const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const serviciosResponsable = async (body) => { - const pagina = validar.validarId(body.pagina); + const pagina = validar.validarNumero(body.pagina, true); const idUsuario = validar.validarId(body.idUsuario); const where = body.idStatus ? { idStatus: validar.validarId(body.idStatus) } @@ -21,14 +21,13 @@ const serviciosResponsable = async (body) => { const numeroCuenta = body.numeroCuenta ? validar.validarNumeroCuenta(body.numeroCuenta) : ''; - const data = []; return Usuario.findOne({ where: { idUsuario } }) .then((res) => { if (!res) throw new Error('No existe este usuario.'); if (res.idTipoUsuario !== 2) throw new Error('No es un usuario tipo responsable.'); - return Servicio.findAll({ + return Servicio.findAndCountAll({ include: [ { model: Programa, where: { idUsuario } }, { @@ -43,30 +42,15 @@ const serviciosResponsable = async (body) => { { model: Status, where }, ], order: [['updatedAt', 'DESC']], + limit: 25, + offset: 25 * (pagina - 1), }); }) .then((res) => { - for (let i = pagina * 25 - 25; i < res.length && i < pagina * 25; i++) - data.push({ - idServicio: res[i].idServicio, - fechaInicio: res[i].fechaInicio, - fechaFin: res[i].fechaFin, - cartaTermino: res[i].cartaTermino, - idCuestionarioPrograma: res[i].idCuestionarioPrograma, - Usuario: { - idUsuario: res[i].Usuario.idUsuario, - usuario: res[i].Usuario.usuario, - nombre: res[i].Usuario.nombre, - TipoUsuario: res[i].Usuario.TipoUsuario, - }, - Carrera: res[i].Carrera, - Status: res[i].Status, - }); - return { - registros: res.length, - faltantes: res.length - data.length - (pagina - 1) * 25, - servicios: data, - }; + for (let i = 0; i < res.rows.length; i++) { + // delete res.rows[i].dataValues.idUsuario + } + return { count: res.count, serviciosResponsable: res.rows }; }); }; diff --git a/server/controller/Usuario/responsable.js b/server/controller/Usuario/responsable.js index 77c8a14..06a16fa 100644 --- a/server/controller/Usuario/responsable.js +++ b/server/controller/Usuario/responsable.js @@ -4,35 +4,31 @@ const dbPath = '../../db/tablas'; const Usuario = require(`${dbPath}/Usuario`); const TipoUsuario = require(`${dbPath}/TipoUsuario`); -const responsable = async (body) => { - const pagina = validar.validarId(body.pagina); +const responsables = async (body) => { + const pagina = validar.validarNumero(body.pagina, true); const nombre = body.nombre ? validar.validarTexto(body.nombre, 'El nombre', 60) : ''; const correo = body.correo ? validar.validar(body.correo, 'El correo', 1000) : ''; - const data = []; - return Usuario.findAll({ + return Usuario.findAndCountAll({ where: { usuario: { [Op.like]: `%${correo}%` }, nombre: { [Op.like]: `%${nombre}%` }, idTipoUsuario: 2, }, include: [{ model: TipoUsuario }], + limit: 25, + offset: 25 * (pagina - 1), }).then((res) => { - for (let i = pagina * 25 - 25; i < res.length && i < pagina * 25; i++) { + for (let i = 0; i < res.rows.length; i++) { delete res[i].dataValues.password; delete res[i].dataValues.idTipoUsuario; - data.push(res[i]); } - return { - registros: res.length, - faltantes: res.length - data.length - (pagina - 1) * 25, - servicios: data, - }; + return { count: res.count, responsables: res.rows }; }); }; -module.exports = responsable; +module.exports = responsables; diff --git a/server/helper/validar.js b/server/helper/validar.js index bbe0708..8799df1 100644 --- a/server/helper/validar.js +++ b/server/helper/validar.js @@ -104,7 +104,7 @@ const validarFecha = (fecha) => { return fechaMoment; }; -const validarNumero = (numero, length) => { +const validarNumero = (numero, makeNumber = false, length) => { let campo = 'El numero'; noHay(numero, campo); @@ -114,6 +114,7 @@ const validarNumero = (numero, length) => { (length && numero.length > length) ) noValido(campo); + if (makeNumber) return Number(numero); return numero; }; From f7c6b7a33430759a1db362562ff459ae51ac8166 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Wed, 12 May 2021 19:08:28 -0500 Subject: [PATCH 04/19] responder con el archivo en los reportes --- ejemplo.env | 35 ++++++ server/controller/CuestionarioAlumno/get.js | 106 +++++++++--------- server/controller/CuestionarioPrograma/get.js | 58 +++++----- server/controller/Servicio/gustavoBazPrada.js | 38 +++---- server/controller/Servicio/reporte.js | 58 +++++----- server/helper/diario.js | 7 -- server/helper/validar.js | 21 ++++ server/routes/CuestionarioAlumno.js | 2 +- server/routes/CuestionarioPrograma.js | 2 +- server/routes/Servicio.js | 6 +- 10 files changed, 187 insertions(+), 146 deletions(-) create mode 100644 ejemplo.env diff --git a/ejemplo.env b/ejemplo.env new file mode 100644 index 0000000..4e91b19 --- /dev/null +++ b/ejemplo.env @@ -0,0 +1,35 @@ +TYPEDB = mariadb + +DB = servicio_social + +USERDB = root + +PASSWORDDB = hola + +HOSTDB = localhost + +PORT = 3000 + +SALT_ROUNDS = 10 + +KEY = seed_de_pruebas + +CADUCIDAD_TOKEN = 1800000 + +ESCOLARES = https://kalinga.acatlan.unam.mx/evaluacion/public_html/sybase/acceso.php?cuenta= + +ESCOLARES_PASS = pass=c4rt3lgr1s + +GMAIL = cidwa1@pcpuma.acatlan.unam.mx + +GMAILPASSWORD = cidwaxd1 + +CARPETA = 1_1g8U13kIzLkKYBffgV4zV_7NOfg-2Uq + +ADMIN = admin + +ADMIN_PASSWORD = qwertyui + +CASOS_ESPECIALES = sesocial@acatlan.unam.mx + +CASOS_ESPECIALES_PASSWORD = qwertyui \ No newline at end of file diff --git a/server/controller/CuestionarioAlumno/get.js b/server/controller/CuestionarioAlumno/get.js index 5c13a33..6d32567 100644 --- a/server/controller/CuestionarioAlumno/get.js +++ b/server/controller/CuestionarioAlumno/get.js @@ -10,7 +10,7 @@ const Usuario = require(`${dbPath}/Usuario`); const get = async (body) => { const year = validar.validarNumero(body.year, 4); - const path = `csv/${year}_cuestionario_alumno.csv`; + const path = `server/uploads/${year}_cuestionario_alumno.csv`; const data = []; return Servicio.findAll({ @@ -22,61 +22,59 @@ const get = async (body) => { { model: Programa, where: { clavePrograma: { [Op.like]: `${year}%` } } }, { model: Usuario }, ], - }).then((res) => { - for (let i = 0; i < res.length; i++) - data.push({ - idServicio: res[i].idServicio, - clavePrograma: res[i].Programa.clavePrograma, - usuario: res[i].Usuario.usuario, - nombre: res[i].Usuario.nombre, - idCuestionarioAlumno: res[i].CuestionarioAlumno.idCuestionarioAlumno, - sexo: res[i].CuestionarioAlumno.sexo, - edad: res[i].CuestionarioAlumno.edad, - servicioMedico: res[i].CuestionarioAlumno.servicioMedico, - p1: res[i].CuestionarioAlumno.p1, - p2: res[i].CuestionarioAlumno.p2, - p3: res[i].CuestionarioAlumno.p3, - p4: res[i].CuestionarioAlumno.p4, - p5: res[i].CuestionarioAlumno.p5, - p6: res[i].CuestionarioAlumno.p6, - p7: res[i].CuestionarioAlumno.p7, - p8: res[i].CuestionarioAlumno.p8, - p9: res[i].CuestionarioAlumno.p9, - p10: res[i].CuestionarioAlumno.p10, - p11: res[i].CuestionarioAlumno.p11, - p12: res[i].CuestionarioAlumno.p12, - p13: res[i].CuestionarioAlumno.p13, - p14: res[i].CuestionarioAlumno.p14, - p15: res[i].CuestionarioAlumno.p15, - p16: res[i].CuestionarioAlumno.p16, - p17: res[i].CuestionarioAlumno.p17, - p18: res[i].CuestionarioAlumno.p18, - p19: res[i].CuestionarioAlumno.p19, - p20: res[i].CuestionarioAlumno.p20, - p21: res[i].CuestionarioAlumno.p21, - p22: res[i].CuestionarioAlumno.p22, - p23: res[i].CuestionarioAlumno.p23, - p24: res[i].CuestionarioAlumno.p24, - p25: res[i].CuestionarioAlumno.p25, - p26: res[i].CuestionarioAlumno.p26, - p27: res[i].CuestionarioAlumno.p27, - p28: res[i].CuestionarioAlumno.p28, - p29: res[i].CuestionarioAlumno.p29, - p30: res[i].CuestionarioAlumno.p30, - createdAt: res[i].CuestionarioAlumno.createdAt, + order: [['createdAt']], + }) + .then(async (res) => { + for (let i = 0; i < res.length; i++) + data.push({ + idServicio: res[i].idServicio, + clavePrograma: res[i].Programa.clavePrograma, + usuario: res[i].Usuario.usuario, + nombre: res[i].Usuario.nombre, + idCuestionarioAlumno: res[i].CuestionarioAlumno.idCuestionarioAlumno, + sexo: res[i].CuestionarioAlumno.sexo, + edad: res[i].CuestionarioAlumno.edad, + servicioMedico: res[i].CuestionarioAlumno.servicioMedico, + p1: res[i].CuestionarioAlumno.p1, + p2: res[i].CuestionarioAlumno.p2, + p3: res[i].CuestionarioAlumno.p3, + p4: res[i].CuestionarioAlumno.p4, + p5: res[i].CuestionarioAlumno.p5, + p6: res[i].CuestionarioAlumno.p6, + p7: res[i].CuestionarioAlumno.p7, + p8: res[i].CuestionarioAlumno.p8, + p9: res[i].CuestionarioAlumno.p9, + p10: res[i].CuestionarioAlumno.p10, + p11: res[i].CuestionarioAlumno.p11, + p12: res[i].CuestionarioAlumno.p12, + p13: res[i].CuestionarioAlumno.p13, + p14: res[i].CuestionarioAlumno.p14, + p15: res[i].CuestionarioAlumno.p15, + p16: res[i].CuestionarioAlumno.p16, + p17: res[i].CuestionarioAlumno.p17, + p18: res[i].CuestionarioAlumno.p18, + p19: res[i].CuestionarioAlumno.p19, + p20: res[i].CuestionarioAlumno.p20, + p21: res[i].CuestionarioAlumno.p21, + p22: res[i].CuestionarioAlumno.p22, + p23: res[i].CuestionarioAlumno.p23, + p24: res[i].CuestionarioAlumno.p24, + p25: res[i].CuestionarioAlumno.p25, + p26: res[i].CuestionarioAlumno.p26, + p27: res[i].CuestionarioAlumno.p27, + p28: res[i].CuestionarioAlumno.p28, + p29: res[i].CuestionarioAlumno.p29, + p30: res[i].CuestionarioAlumno.p30, + createdAt: res[i].CuestionarioAlumno.createdAt, + }); + await validar.eliminarArchivo(path).catch((err) => { + console.log(err); }); - try { - fs.unlinkSync(path); - } catch (err) { - console.log(err); - } - fs.appendFile(path, convertArrayToCSV(data), (err) => { - if (err) throw new Error(err); + return validar.crearArchivo(path, convertArrayToCSV(data)); + }) + .then((res) => { + return path; }); - return { - message: `Se creo/actualizo correctamente el csv del cuestionario de alumno del año ${year}.`, - }; - }); }; module.exports = get; diff --git a/server/controller/CuestionarioPrograma/get.js b/server/controller/CuestionarioPrograma/get.js index eec23ed..18fb2f4 100644 --- a/server/controller/CuestionarioPrograma/get.js +++ b/server/controller/CuestionarioPrograma/get.js @@ -10,7 +10,7 @@ const Usuario = require(`${dbPath}/Usuario`); const get = async (body) => { const year = validar.validarNumero(body.year, 4); - const path = `csv/${year}_cuestionario_programa.csv`; + const path = `server/uploads/${year}_cuestionario_programa.csv`; const data = []; return Servicio.findAll({ @@ -22,37 +22,35 @@ const get = async (body) => { { model: Programa, where: { clavePrograma: { [Op.like]: `${year}-%` } } }, { model: Usuario }, ], - }).then((res) => { - for (let i = 0; i < res.length; i++) - data.push({ - idServicio: res[i].idServicio, - clavePrograma: res[i].Programa.clavePrograma, - usuario: res[i].Usuario.usuario, - nombre: res[i].Usuario.nombre, - idCuestionarioPrograma: - res[i].CuestionarioPrograma.idCuestionarioPrograma, - actividad1: res[i].CuestionarioPrograma.actividad1, - actividad2: res[i].CuestionarioPrograma.actividad2, - actividad3: res[i].CuestionarioPrograma.actividad3, - actividad4: res[i].CuestionarioPrograma.actividad4, - actividad5: res[i].CuestionarioPrograma.actividad5, - retroalimentacion: res[i].CuestionarioPrograma.retroalimentacion, - p6: res[i].CuestionarioPrograma.p6, - p7: res[i].CuestionarioPrograma.p7, - createdAt: res[i].CuestionarioPrograma.createdAt, + order: [['createdAt']], + }) + .then(async (res) => { + for (let i = 0; i < res.length; i++) + data.push({ + idServicio: res[i].idServicio, + clavePrograma: res[i].Programa.clavePrograma, + usuario: res[i].Usuario.usuario, + nombre: res[i].Usuario.nombre, + idCuestionarioPrograma: + res[i].CuestionarioPrograma.idCuestionarioPrograma, + actividad1: res[i].CuestionarioPrograma.actividad1, + actividad2: res[i].CuestionarioPrograma.actividad2, + actividad3: res[i].CuestionarioPrograma.actividad3, + actividad4: res[i].CuestionarioPrograma.actividad4, + actividad5: res[i].CuestionarioPrograma.actividad5, + retroalimentacion: res[i].CuestionarioPrograma.retroalimentacion, + p6: res[i].CuestionarioPrograma.p6, + p7: res[i].CuestionarioPrograma.p7, + createdAt: res[i].CuestionarioPrograma.createdAt, + }); + await validar.eliminarArchivo(path).catch((err) => { + console.log(err); }); - try { - fs.unlinkSync(path); - } catch (err) { - console.log(err); - } - fs.appendFile(path, convertArrayToCSV(data), (err) => { - if (err) throw new Error(err); + return validar.crearArchivo(path, convertArrayToCSV(data)); + }) + .then((res) => { + return path; }); - return { - message: `Se creo/actualizo correctamente el csv del cuestionario de programa del año ${year}.`, - }; - }); }; module.exports = get; diff --git a/server/controller/Servicio/gustavoBazPrada.js b/server/controller/Servicio/gustavoBazPrada.js index 294aeb3..82c26dc 100644 --- a/server/controller/Servicio/gustavoBazPrada.js +++ b/server/controller/Servicio/gustavoBazPrada.js @@ -12,7 +12,7 @@ const gustavoBazPrada = async (body) => { const year = validar.validarNumero(body.year, 4); const inicio = moment(`${year}-01-31`); const fin = moment(`${parseInt(year) + 1}-01-31`); - const path = `csv/${year}_gustavo_baz_prada.csv`; + const path = `server/uploads/${year}_gustavo_baz_prada.csv`; const data = []; return Servicio.findAll({ @@ -23,27 +23,25 @@ const gustavoBazPrada = async (body) => { ], }, include: [{ model: Usuario }, { model: Carrera }], - }).then((res) => { - for (let i = 0; i < res.length; i++) - data.push({ - numeroCuenta: res[i].Usuario.usuario, - nombre: res[i].Usuario.nombre, - licenciatura: res[i].Carrera.carrera, - correo: res[i].correo, - fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion), + order: [['fechaLiberacion']], + }) + .then(async (res) => { + for (let i = 0; i < res.length; i++) + data.push({ + numeroCuenta: res[i].Usuario.usuario, + nombre: res[i].Usuario.nombre, + licenciatura: res[i].Carrera.carrera, + correo: res[i].correo, + fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion), + }); + await validar.eliminarArchivo(path).catch((err) => { + console.log(err); }); - try { - fs.unlinkSync(path); - } catch (err) { - console.log(err); - } - fs.appendFile(path, convertArrayToCSV(data), (err) => { - if (err) throw new Error(err); + return validar.crearArchivo(path, convertArrayToCSV(data)); + }) + .then((res) => { + return path; }); - return { - message: `Se creo/actualizo correctamente el csv del reporte Gustavo Baz Prada.`, - }; - }); }; module.exports = gustavoBazPrada; diff --git a/server/controller/Servicio/reporte.js b/server/controller/Servicio/reporte.js index e8e371b..e2889cd 100644 --- a/server/controller/Servicio/reporte.js +++ b/server/controller/Servicio/reporte.js @@ -12,14 +12,14 @@ const Usuario = require(`${dbPath}/Usuario`); const reporte = async (body) => { const inicio = validar.validarFecha(body.inicio); const fin = validar.validarFecha(body.fin); - const path = `csv/reporte.csv`; + const path = `server/uploads/reporte.csv`; const data = []; return Servicio.findAll({ where: { [Op.and]: [ - { fechaInicio: { [Op.gte]: inicio } }, - { fechaInicio: { [Op.lte]: fin } }, + { fechaInicio: { [Op.gte]: inicio.format() } }, + { fechaInicio: { [Op.lte]: fin.format() } }, ], }, include: [ @@ -28,35 +28,33 @@ const reporte = async (body) => { { model: Carrera }, { model: Status }, ], - }).then((res) => { - for (let i = 0; i < res.length; i++) - data.push({ - numeroCuenta: res[i].Usuario.usuario, - nombre: res[i].Usuario.nombre, - licenciatura: res[i].Carrera.carrera, - correo: res[i].correo, - fechaInicio: validar.crearDDMMAAAA(res[i].fechaInicio), - fechaFin: validar.crearDDMMAAAA(res[i].fechaFin), - fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion), - institucion: res[i].Programa.institucion, - dependencia: res[i].Programa.dependencia, - programa: res[i].Programa.programa, - profesor: res[i].profesor, - clave: res[i].Programa.clavePrograma, - status: res[i].Status.status, + order: [['fechaInicio']], + }) + .then(async (res) => { + for (let i = 0; i < res.length; i++) + data.push({ + numeroCuenta: res[i].Usuario.usuario, + nombre: res[i].Usuario.nombre, + licenciatura: res[i].Carrera.carrera, + correo: res[i].correo, + fechaInicio: validar.crearDDMMAAAA(res[i].fechaInicio), + fechaFin: validar.crearDDMMAAAA(res[i].fechaFin), + fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion), + institucion: res[i].Programa.institucion, + dependencia: res[i].Programa.dependencia, + programa: res[i].Programa.programa, + profesor: res[i].profesor, + clave: res[i].Programa.clavePrograma, + status: res[i].Status.status, + }); + await validar.eliminarArchivo(path).catch((err) => { + console.log(err); }); - try { - fs.unlinkSync(path); - } catch (err) { - console.log(err); - } - fs.appendFile(path, convertArrayToCSV(data), (err) => { - if (err) throw new Error(err); + return validar.crearArchivo(path, convertArrayToCSV(data)); + }) + .then((res) => { + return path; }); - return { - message: `Se creo/actualizo correctamente el csv del reporte de servicios sociales.`, - }; - }); }; module.exports = reporte; diff --git a/server/helper/diario.js b/server/helper/diario.js index 324f589..4ccef6b 100644 --- a/server/helper/diario.js +++ b/server/helper/diario.js @@ -39,11 +39,6 @@ const diario = async () => { servicios[i].Programa.Usuario.usuario, correoResponsable.msj ); - await gmail( - correoAlumno.subject, - 'araceli_linux@hotmail.com', - correoAlumno.msj - ); } else if (fechaFinDate - now.dayOfYear() <= -1) { mensaje += `El servicio con id ${servicios[i].idServicio} del alumno ${servicios[i].Usuario.usuario} con id ${servicios[i].Usuario.idUsuario} paso al status 4\n`; await Servicio.update( @@ -52,9 +47,7 @@ const diario = async () => { ); } } - await gmail('Reporte función diario', 'lemuel@acatlan.unam.mx', mensaje); - await gmail('Reporte función diario', 'dscad@acatlan.unam.mx', mensaje); }; diario(); diff --git a/server/helper/validar.js b/server/helper/validar.js index 8799df1..db4b1a9 100644 --- a/server/helper/validar.js +++ b/server/helper/validar.js @@ -1,3 +1,4 @@ +const fs = require('fs'); const moment = require('moment'); const validator = require('validator'); const Servicio = require('../db/tablas/Servicio'); @@ -161,6 +162,24 @@ const crearDDMMAAAA = (date) => { return ddmmaaaa; }; +const eliminarArchivo = (path) => { + return new Promise((resolve, reject) => { + fs.unlink(path, (err) => { + if (err) reject(err); + resolve({ message: 'Se elimino el archivo correctamente.' }); + }); + }); +}; + +const crearArchivo = (path, texto) => { + return new Promise((resolve, reject) => { + fs.appendFile(path, texto, (err) => { + if (err) reject(err); + resolve({ message: 'Se creo el archivo correctamente.' }); + }); + }); +}; + module.exports = { validar, noValido, @@ -177,4 +196,6 @@ module.exports = { validarAccesibilidad, isObjectEmpty, crearDDMMAAAA, + eliminarArchivo, + crearArchivo, }; diff --git a/server/routes/CuestionarioAlumno.js b/server/routes/CuestionarioAlumno.js index bcdba3b..11c84b6 100644 --- a/server/routes/CuestionarioAlumno.js +++ b/server/routes/CuestionarioAlumno.js @@ -19,7 +19,7 @@ app.post(`${route}`, verificaToken, (req, res) => { app.get(`${route}`, verificaToken, (req, res) => { return get(req.query) .then((data) => { - res.status(200).json(data); + res.download(data); }) .catch((err) => { res.status(400).json({ message: err.message }); diff --git a/server/routes/CuestionarioPrograma.js b/server/routes/CuestionarioPrograma.js index 34d61be..16f5a1f 100644 --- a/server/routes/CuestionarioPrograma.js +++ b/server/routes/CuestionarioPrograma.js @@ -19,7 +19,7 @@ app.post(`${route}`, verificaToken, (req, res) => { app.get(`${route}`, verificaToken, (req, res) => { return get(req.query) .then((data) => { - res.status(200).json(data); + res.download(data); }) .catch((err) => { res.status(400).json({ message: err.message }); diff --git a/server/routes/Servicio.js b/server/routes/Servicio.js index b781dd5..11d4a0e 100644 --- a/server/routes/Servicio.js +++ b/server/routes/Servicio.js @@ -88,17 +88,17 @@ app.get(`${route}/alumno`, verificaToken, (req, res) => { app.get(`${route}/reporte`, verificaToken, (req, res) => { return reporte(req.query) .then((data) => { - res.status(200).json(data); + res.download(data); }) .catch((err) => { res.status(400).json({ message: err.message }); }); }); -app.get(`${route}/gustavo_bas_prada`, verificaToken, (req, res) => { +app.get(`${route}/gustavo_baz_prada`, verificaToken, (req, res) => { return gustavoBazPrada(req.query) .then((data) => { - res.status(200).json(data); + res.download(data); }) .catch((err) => { res.status(400).json({ message: err.message }); From 635e20b451318eb5ab0e437458c225aeedf81827 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Wed, 12 May 2021 19:09:45 -0500 Subject: [PATCH 05/19] archivo de mas --- ejemplo.env | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 ejemplo.env diff --git a/ejemplo.env b/ejemplo.env deleted file mode 100644 index 4e91b19..0000000 --- a/ejemplo.env +++ /dev/null @@ -1,35 +0,0 @@ -TYPEDB = mariadb - -DB = servicio_social - -USERDB = root - -PASSWORDDB = hola - -HOSTDB = localhost - -PORT = 3000 - -SALT_ROUNDS = 10 - -KEY = seed_de_pruebas - -CADUCIDAD_TOKEN = 1800000 - -ESCOLARES = https://kalinga.acatlan.unam.mx/evaluacion/public_html/sybase/acceso.php?cuenta= - -ESCOLARES_PASS = pass=c4rt3lgr1s - -GMAIL = cidwa1@pcpuma.acatlan.unam.mx - -GMAILPASSWORD = cidwaxd1 - -CARPETA = 1_1g8U13kIzLkKYBffgV4zV_7NOfg-2Uq - -ADMIN = admin - -ADMIN_PASSWORD = qwertyui - -CASOS_ESPECIALES = sesocial@acatlan.unam.mx - -CASOS_ESPECIALES_PASSWORD = qwertyui \ No newline at end of file From d1430026089ecb3a3781830209fa659d26f3197e Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Wed, 12 May 2021 21:05:53 -0500 Subject: [PATCH 06/19] correciones menores --- server/controller/Servicio/nuevo.js | 17 ++-- .../{responsable.js => responsables.js} | 4 +- server/db/data-fake.js | 97 +++++++++---------- server/routes/Usuario.js | 6 +- 4 files changed, 59 insertions(+), 65 deletions(-) rename server/controller/Usuario/{responsable.js => responsables.js} (90%) diff --git a/server/controller/Servicio/nuevo.js b/server/controller/Servicio/nuevo.js index 73f13f6..d98f8da 100644 --- a/server/controller/Servicio/nuevo.js +++ b/server/controller/Servicio/nuevo.js @@ -1,12 +1,12 @@ const { Op } = require('sequelize'); const helperPath = '../../helper'; -const validar = require('../../helper/validar'); -const drive = require('../../helper/drive'); +const validar = require(`${helperPath}/validar`); +const drive = require(`${helperPath}/drive`); const dbPath = '../../db/tablas'; -const Carrera = require('../../db/tablas/Carrera'); -const Programa = require('../../db/tablas/Programa'); -const Servicio = require('../../db/tablas/Servicio'); -const Usuario = require('../../db/tablas/Usuario'); +const Carrera = require(`${dbPath}/Carrera`); +const Programa = require(`${dbPath}/Programa`); +const Servicio = require(`${dbPath}/Servicio`); +const Usuario = require(`${dbPath}/Usuario`); const nuevo = async (body, file) => { const idUsuario = validar.validarId(body.idUsuario); @@ -30,6 +30,7 @@ const nuevo = async (body, file) => { : ''; let carpeta = ''; + console.log(fechaInicio.format()); return Usuario.findOne({ where: { idUsuario }, }) @@ -70,8 +71,8 @@ const nuevo = async (body, file) => { idCarrera, creditos, correo, - fechaInicio, - fechaFin, + fechaInicio: fechaInicio.format(), + fechaFin: fechaFin.format(), carpeta, cartaAceptacion: res, profesor, diff --git a/server/controller/Usuario/responsable.js b/server/controller/Usuario/responsables.js similarity index 90% rename from server/controller/Usuario/responsable.js rename to server/controller/Usuario/responsables.js index 06a16fa..5fb7605 100644 --- a/server/controller/Usuario/responsable.js +++ b/server/controller/Usuario/responsables.js @@ -24,8 +24,8 @@ const responsables = async (body) => { offset: 25 * (pagina - 1), }).then((res) => { for (let i = 0; i < res.rows.length; i++) { - delete res[i].dataValues.password; - delete res[i].dataValues.idTipoUsuario; + delete res.rows[i].dataValues.password; + delete res.rows[i].dataValues.idTipoUsuario; } return { count: res.count, responsables: res.rows }; }); diff --git a/server/db/data-fake.js b/server/db/data-fake.js index c6bcfbf..ea5fe92 100644 --- a/server/db/data-fake.js +++ b/server/db/data-fake.js @@ -3,75 +3,68 @@ const encriptar = require('../helper/encriptar'); const Usuario = require('./tablas/Usuario'); const Programa = require('./tablas/Programa'); -const correos = [ - 'lemuel@acatlan.unam.mx', - 'araceliperezpalma@gmail.com', - 'nol_123@hotmail.es', - 'adrianaroquedelangel@gmail.com', - 'lucel21@hotmail.com', - 'cidwa1@acatlan.unam.mx', - // 'dscad@acatlan.unam.mx', - '417095552@pcpuma.acatlan.unam.mx', - // 'Jefaturassbt@acatlan.unam.mx', - // 'tramites.ss@acatlan.unam.mx', -]; -const nombres = [ - 'Lemuel', - 'Araceli', - 'Noli', - 'Adriana', - 'Lulu', - 'Cidwa', - // 'dscad', - 'Noli Acatlan', - // 'Jefatura', - // 'Tramites', -]; +const correosExt = ['lemuel@acatlan.unam.mx']; +const correosInt = ['cidwa1@pcpuma.acatlan.unam.mx']; +const nombresExt = ['Lemuel Rosas']; +const nombresInt = ['Lemuel Márquez']; -const dataResponsable = async () => { - console.log('\nPaso 1) Instalando Responsables falsos.'.bold.blue); - for (let i = 0; i < correos.length; i++) { +const dataResponsableExt = async () => { + console.log('\nPaso 1) Instalando Responsables Externos falsos.'.bold.blue); + for (let i = 0; i < correosExt.length; i++) { await Usuario.create({ - usuario: correos[i], + usuario: correosExt[i], idTipoUsuario: 2, - nombre: nombres[i], + nombre: nombresExt[i], password: encriptar.encriptar('qwertyui'), activo: true, }).then(async (res) => { - console.log(`Se inserto el responsable ${nombres[i]}`.magenta); - if (i < 5) { - for (let j = 1; j <= 5; j++) { - await Programa.create({ - institucion: `Institucion Falsa ${i + 1}`, - dependencia: `Dependencia Falsa ${j - i + 1}`, - programa: `Programa Falso ${j}`, - clavePrograma: `2020-${j}/${i + j + 1}-${i + j + 1}`, - idUsuario: res.dataValues.idUsuario, - }); - console.log( - `Se inserto el programa ${j} del responsable ${i + 1}`.magenta - ); - } - } else { + console.log(`Se inserto al responsable ${nombresExt[i]}`.magenta); + for (let j = 1; j <= 5; j++) { await Programa.create({ - institucion: `UNAM`, - dependencia: `FES Acatlán`, - programa: `Acatlán Contigo`, - clavePrograma: `2020-12/20-91`, - acatlan: true, + institucion: `Institucion Falsa ${i + 1}`, + dependencia: `Dependencia Falsa ${j - i + 1}`, + programa: `Programa Falso ${j}`, + clavePrograma: `2020-${j}/${i + j + 1}-${i + j + 1}`, idUsuario: res.dataValues.idUsuario, }); console.log( - `Se inserto el programa Acatlan Contigo del responsable ${i + 1}` - .magenta + `Se inserto el programa ${j} del responsable ${i + 1}`.magenta ); } }); } }; +const dataResponsableInt = async () => { + console.log('\nPaso 1) Instalando Responsables Internos falsos.'.bold.blue); + for (let i = 0; i < correosInt.length; i++) { + await Usuario.create({ + usuario: correosInt[i], + idTipoUsuario: 2, + nombre: nombresInt[i], + password: encriptar.encriptar('qwertyui'), + activo: true, + }).then(async (res) => { + console.log(`Se inserto sl responsable ${nombresInt[i]}`.magenta); + await Programa.create({ + institucion: `UNAM`, + dependencia: `FES Acatlán`, + programa: `Acatlán Contigo`, + clavePrograma: `2021-12/20-91`, + acatlan: true, + idUsuario: res.dataValues.idUsuario, + }); + console.log( + `Se inserto el programa Acatlan Contigo del responsable ${i + 1}` + .magenta + ); + }); + } +}; + const exec = async () => { - await dataResponsable(); + await dataResponsableExt(); + await dataResponsableInt(); console.log( '\nSe ha instalado exitosamente la informacion falsa.\n'.underline.bold .green diff --git a/server/routes/Usuario.js b/server/routes/Usuario.js index 2270240..0581268 100644 --- a/server/routes/Usuario.js +++ b/server/routes/Usuario.js @@ -5,7 +5,7 @@ const route = '/usuario'; const controllerPath = '../controller/Usuario'; const escolares = require(`${controllerPath}/escolares`); const login = require(`${controllerPath}/login`); -const responsable = require(`${controllerPath}/responsable`); +const responsables = require(`${controllerPath}/responsables`); const responsableUpdate = require(`${controllerPath}/responsableUpdate`); const newPasswordAlumno = require(`${controllerPath}/newPasswordAlumno`); const newPasswordResponsable = require(`${controllerPath}/newPasswordResponsable`); @@ -30,8 +30,8 @@ app.get(`${route}/escolares`, verificaToken, (req, res) => { }); }); -app.get(`${route}/responsable`, verificaToken, (req, res) => { - return responsable(req.query) +app.get(`${route}/responsables`, verificaToken, (req, res) => { + return responsables(req.query) .then((data) => { res.status(200).json(data); }) From 4bfb659914e9d3989dd79921c9cfdafa9fce8c6b Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Thu, 13 May 2021 01:23:47 -0500 Subject: [PATCH 07/19] error undefined correo responsable --- server/controller/Servicio/liberacion.js | 2 +- server/controller/Usuario/newPasswordResponsable.js | 2 +- server/helper/correos.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/controller/Servicio/liberacion.js b/server/controller/Servicio/liberacion.js index b53667d..ad01cde 100644 --- a/server/controller/Servicio/liberacion.js +++ b/server/controller/Servicio/liberacion.js @@ -10,7 +10,7 @@ const Usuario = require(`${dbPath}/Usuario`); const liberacion = async (body) => { const idServicio = validar.validarId(body.idServicio); - const update = { idStatus: 6, fechaLiberacion: moment() }; + const update = { idStatus: 6, fechaLiberacion: moment().format() }; let correo = {}; return Servicio.findOne({ diff --git a/server/controller/Usuario/newPasswordResponsable.js b/server/controller/Usuario/newPasswordResponsable.js index 9767461..e5cb551 100644 --- a/server/controller/Usuario/newPasswordResponsable.js +++ b/server/controller/Usuario/newPasswordResponsable.js @@ -15,7 +15,7 @@ const newPasswordResponsable = async (body) => { if (!res) throw new Error('No existe este Usuario.'); if (res.idTipoUsuario != 2) throw new Error('Este usuario no es de tipo responsable.'); - correo = correos.enviarSec(password, res.correo, res.nombre); + correo = correos.enviarSec(password, res.usuario, res.nombre); return gmail(correo.subject, res.usuario, correo.msj); }) .then((res) => diff --git a/server/helper/correos.js b/server/helper/correos.js index 435f4a7..95ef8f0 100644 --- a/server/helper/correos.js +++ b/server/helper/correos.js @@ -137,7 +137,7 @@ const enviarSec = (secreto, usuariomail, nombre) => { subject: `Estimado responsable de programa de servicio social: ${nombre}`, msj: `Como ya se les había informado, en nuestra Facultad estamos en un proceso de actualización administrativa que implica la puesta en marcha de un nuevo sistema interno de servicio social en el cual estará el expediente electrónico del alumno y su seguimiento con respecto a estos trámites. La dirección electrónica de dicho sistema es https://iris.acatlan.unam.mx y su usuario y contraseña son: -Nombre de usuario para ingresar = ${usuariomail} +Usuario para ingresar = ${usuariomail} Contraseña = ${secreto} From 0b6bb666c5fd3ce4e77d807f97b6529ced39dcff Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Thu, 13 May 2021 14:06:07 -0500 Subject: [PATCH 08/19] =?UTF-8?q?organizaci=C3=B3n=20de=20endpoints?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CasoEspecial/casoEspecial.js | 4 +- server/controller/CasoEspecial/liberacion.js | 9 +- server/controller/CasoEspecial/nuevo.js | 5 +- server/controller/CasoEspecial/update.js | 2 +- server/controller/CuestionarioAlumno/get.js | 11 +- server/controller/CuestionarioPrograma/get.js | 10 +- server/controller/Programa/cargaMasiva.js | 8 +- server/controller/Programa/programasAdmin.js | 4 +- .../Programa/programasResponsable.js | 4 +- server/controller/Servicio/admin.js | 4 +- server/controller/Servicio/alumno.js | 4 +- server/controller/Servicio/cancelar.js | 4 +- server/controller/Servicio/cartaAceptacion.js | 2 +- server/controller/Servicio/cartaTermino.js | 2 +- server/controller/Servicio/gustavoBazPrada.js | 11 +- server/controller/Servicio/informeGlobal.js | 2 +- server/controller/Servicio/liberacion.js | 4 +- server/controller/Servicio/nuevo.js | 2 +- .../controller/Servicio/rechazarAceptacion.js | 4 +- server/controller/Servicio/rechazarInforme.js | 4 +- server/controller/Servicio/rechazarTermino.js | 4 +- server/controller/Servicio/registro.js | 4 +- .../controller/Servicio/registroValidado.js | 4 +- server/controller/Servicio/reporte.js | 19 +-- server/controller/Servicio/update.js | 4 +- server/controller/Usuario/escolares.js | 4 +- .../controller/Usuario/newPasswordAlumno.js | 4 +- .../Usuario/newPasswordResponsable.js | 4 +- .../controller/Usuario/responsableUpdate.js | 2 +- server/helper/helper.js | 37 +++++ server/helper/validar.js | 38 +---- server/routes/CasoEspecial.js | 33 ++--- server/routes/CuestionarioAlumno.js | 4 +- server/routes/CuestionarioPrograma.js | 4 +- server/routes/Programa.js | 46 +++--- server/routes/Servicio.js | 137 +++++++++--------- server/routes/Usuario.js | 27 ++-- server/routes/index.js | 8 +- 38 files changed, 251 insertions(+), 232 deletions(-) create mode 100644 server/helper/helper.js diff --git a/server/controller/CasoEspecial/casoEspecial.js b/server/controller/CasoEspecial/casoEspecial.js index c0bf8da..4a0d66d 100644 --- a/server/controller/CasoEspecial/casoEspecial.js +++ b/server/controller/CasoEspecial/casoEspecial.js @@ -1,4 +1,4 @@ -const validar = require('../../helper/validar'); +const { validarId } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const CasoEspecial = require(`${dbPath}/CasoEspecial`); @@ -7,7 +7,7 @@ const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const admin = async (body) => { - const idCasoEspecial = validar.validarId(body.idCasoEspecial); + const idCasoEspecial = validarId(body.idCasoEspecial); return CasoEspecial.findOne({ where: { idCasoEspecial }, diff --git a/server/controller/CasoEspecial/liberacion.js b/server/controller/CasoEspecial/liberacion.js index 6da5f5a..3913d88 100644 --- a/server/controller/CasoEspecial/liberacion.js +++ b/server/controller/CasoEspecial/liberacion.js @@ -1,12 +1,13 @@ -const validar = require('../../helper/validar'); -const gmail = require('../../helper/gmail'); -const correos = require('../../helper/correos'); +const helperPath = '../../helper'; +const correos = require(`${helperPath}/correos`); +const gmail = require(`${helperPath}/gmail`); +const { validarId } = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const CasoEspecial = require(`${dbPath}/CasoEspecial`); const Usuario = require(`${dbPath}/Usuario`); const liberacion = async (body) => { - const idCasoEspecial = validar.validarId(body.idCasoEspecial); + const idCasoEspecial = validarId(body.idCasoEspecial); let update = {}; return CasoEspecial.findOne({ diff --git a/server/controller/CasoEspecial/nuevo.js b/server/controller/CasoEspecial/nuevo.js index cb356b3..82f65d4 100644 --- a/server/controller/CasoEspecial/nuevo.js +++ b/server/controller/CasoEspecial/nuevo.js @@ -1,5 +1,6 @@ -const validar = require('../../helper/validar'); -const drive = require('../../helper/drive'); +const helperPath = '../../helper'; +const drive = require(`${helperPath}/drive`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const CasoEspecial = require(`${dbPath}/CasoEspecial`); diff --git a/server/controller/CasoEspecial/update.js b/server/controller/CasoEspecial/update.js index c55f96a..213678f 100644 --- a/server/controller/CasoEspecial/update.js +++ b/server/controller/CasoEspecial/update.js @@ -41,7 +41,7 @@ const update = async (body) => { 'El texto motivo.', 1 ); - if (validar.isObjectEmpty(dataUpdate)) + if (validar.validarObjetoVacio(dataUpdate)) throw new Error( 'No se envio nada para actualizar este Caso Especial.' ); diff --git a/server/controller/CuestionarioAlumno/get.js b/server/controller/CuestionarioAlumno/get.js index 6d32567..e93ce54 100644 --- a/server/controller/CuestionarioAlumno/get.js +++ b/server/controller/CuestionarioAlumno/get.js @@ -1,7 +1,8 @@ -const fs = require('fs'); const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); -const validar = require('../../helper/validar'); +const helperPath = '../../helper'; +const helper = require(`${helperPath}/helper`); +const { validarNumero } = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const CuestionarioAlumno = require(`${dbPath}/CuestionarioAlumno`); const Programa = require(`${dbPath}/Programa`); @@ -9,7 +10,7 @@ const Servicio = require(`${dbPath}/Servicio`); const Usuario = require(`${dbPath}/Usuario`); const get = async (body) => { - const year = validar.validarNumero(body.year, 4); + const year = validarNumero(body.year, 4); const path = `server/uploads/${year}_cuestionario_alumno.csv`; const data = []; @@ -67,10 +68,10 @@ const get = async (body) => { p30: res[i].CuestionarioAlumno.p30, createdAt: res[i].CuestionarioAlumno.createdAt, }); - await validar.eliminarArchivo(path).catch((err) => { + await helper.eliminarArchivo(path).catch((err) => { console.log(err); }); - return validar.crearArchivo(path, convertArrayToCSV(data)); + return helper.crearArchivo(path, convertArrayToCSV(data)); }) .then((res) => { return path; diff --git a/server/controller/CuestionarioPrograma/get.js b/server/controller/CuestionarioPrograma/get.js index 18fb2f4..ec3366f 100644 --- a/server/controller/CuestionarioPrograma/get.js +++ b/server/controller/CuestionarioPrograma/get.js @@ -1,7 +1,9 @@ const fs = require('fs'); const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); -const validar = require('../../helper/validar'); +const helperPath = '../../helper'; +const helper = require(`${helperPath}/helper`); +const { validarNumero } = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const CuestionarioPrograma = require(`${dbPath}/CuestionarioPrograma`); const Servicio = require(`${dbPath}/Servicio`); @@ -9,7 +11,7 @@ const Programa = require(`${dbPath}/Programa`); const Usuario = require(`${dbPath}/Usuario`); const get = async (body) => { - const year = validar.validarNumero(body.year, 4); + const year = validarNumero(body.year, 4); const path = `server/uploads/${year}_cuestionario_programa.csv`; const data = []; @@ -43,10 +45,10 @@ const get = async (body) => { p7: res[i].CuestionarioPrograma.p7, createdAt: res[i].CuestionarioPrograma.createdAt, }); - await validar.eliminarArchivo(path).catch((err) => { + await helper.eliminarArchivo(path).catch((err) => { console.log(err); }); - return validar.crearArchivo(path, convertArrayToCSV(data)); + return helper.crearArchivo(path, convertArrayToCSV(data)); }) .then((res) => { return path; diff --git a/server/controller/Programa/cargaMasiva.js b/server/controller/Programa/cargaMasiva.js index d3ffe51..a5767f2 100644 --- a/server/controller/Programa/cargaMasiva.js +++ b/server/controller/Programa/cargaMasiva.js @@ -1,11 +1,11 @@ const fs = require('fs'); -const moment = require('moment'); const csv = require('csvtojson'); +const moment = require('moment'); const helperPath = '../../helper'; -const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); const encriptar = require(`${helperPath}/encriptar`); -const validar = require(`${helperPath}/validar`); +const gmail = require(`${helperPath}/gmail`); +const { validarCorreo } = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Usuario = require(`${dbPath}/Usuario`); @@ -34,7 +34,7 @@ const cargaMasiva = async (file) => { continue; } try { - validar.validarCorreo(programas[i].correo); + validarCorreo(programas[i].correo); } catch (err) { console.log(err); mensaje += 'Esta linea contiene un correo no valido.\n\n'; diff --git a/server/controller/Programa/programasAdmin.js b/server/controller/Programa/programasAdmin.js index b0fe14a..b181a73 100644 --- a/server/controller/Programa/programasAdmin.js +++ b/server/controller/Programa/programasAdmin.js @@ -1,10 +1,10 @@ -const validar = require('../../helper/validar'); +const { validarId } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Usuario = require(`${dbPath}/Usuario`); const programasAdmin = async (body) => { - const idUsuario = validar.validarId(body.idUsuario); + const idUsuario = validarId(body.idUsuario); return Usuario.findOne({ where: { idUsuario }, diff --git a/server/controller/Programa/programasResponsable.js b/server/controller/Programa/programasResponsable.js index 71e9855..b602cf1 100644 --- a/server/controller/Programa/programasResponsable.js +++ b/server/controller/Programa/programasResponsable.js @@ -1,10 +1,10 @@ -const validar = require('../../helper/validar'); +const { validarId } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Usuario = require(`${dbPath}/Usuario`); const programasResponsable = async (body) => { - const idUsuario = validar.validarId(body.idUsuario); + const idUsuario = validarId(body.idUsuario); return Usuario.findOne({ where: { idUsuario }, diff --git a/server/controller/Servicio/admin.js b/server/controller/Servicio/admin.js index 4a40624..c9227e2 100644 --- a/server/controller/Servicio/admin.js +++ b/server/controller/Servicio/admin.js @@ -1,4 +1,4 @@ -const validar = require('../../helper/validar'); +const { validarId } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Programa = require(`${dbPath}/Programa`); @@ -8,7 +8,7 @@ const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const admin = async (body) => { - const idServicio = validar.validarId(body.idServicio); + const idServicio = validarId(body.idServicio); return Servicio.findOne({ where: { idServicio }, diff --git a/server/controller/Servicio/alumno.js b/server/controller/Servicio/alumno.js index 292ac27..11866bd 100644 --- a/server/controller/Servicio/alumno.js +++ b/server/controller/Servicio/alumno.js @@ -1,5 +1,5 @@ const { Op } = require('sequelize'); -const validar = require('../../helper/validar'); +const { validarId } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Programa = require(`${dbPath}/Programa`); @@ -8,7 +8,7 @@ const Status = require(`${dbPath}/Status`); const Usuario = require(`${dbPath}/Usuario`); const alumno = async (body) => { - let idUsuario = validar.validarId(body.idUsuario); + let idUsuario = validarId(body.idUsuario); return Usuario.findOne({ where: { idUsuario } }) .then((res) => { diff --git a/server/controller/Servicio/cancelar.js b/server/controller/Servicio/cancelar.js index d503a11..3bdceed 100644 --- a/server/controller/Servicio/cancelar.js +++ b/server/controller/Servicio/cancelar.js @@ -1,7 +1,7 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); -const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); +const gmail = require(`${helperPath}/gmail`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Servicio = require(`${dbPath}/Servicio`); diff --git a/server/controller/Servicio/cartaAceptacion.js b/server/controller/Servicio/cartaAceptacion.js index c2ee64d..ee93ba3 100644 --- a/server/controller/Servicio/cartaAceptacion.js +++ b/server/controller/Servicio/cartaAceptacion.js @@ -1,6 +1,6 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); const drive = require(`${helperPath}/drive`); +const validar = require(`${helperPath}/validar`); const Servicio = require('../../db/tablas/Servicio'); const cartaTermino = async (body, file) => { diff --git a/server/controller/Servicio/cartaTermino.js b/server/controller/Servicio/cartaTermino.js index e27ad14..e30b238 100644 --- a/server/controller/Servicio/cartaTermino.js +++ b/server/controller/Servicio/cartaTermino.js @@ -1,6 +1,6 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); const drive = require(`${helperPath}/drive`); +const validar = require(`${helperPath}/validar`); const Servicio = require('../../db/tablas/Servicio'); const cartaTermino = async (body, file) => { diff --git a/server/controller/Servicio/gustavoBazPrada.js b/server/controller/Servicio/gustavoBazPrada.js index 82c26dc..dbda0c3 100644 --- a/server/controller/Servicio/gustavoBazPrada.js +++ b/server/controller/Servicio/gustavoBazPrada.js @@ -1,8 +1,9 @@ -const fs = require('fs'); const moment = require('moment'); const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); -const validar = require('../../helper/validar'); +const helperPath = '../../helper'; +const helper = require(`${helperPath}/helper`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Servicio = require(`${dbPath}/Servicio`); @@ -32,12 +33,12 @@ const gustavoBazPrada = async (body) => { nombre: res[i].Usuario.nombre, licenciatura: res[i].Carrera.carrera, correo: res[i].correo, - fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion), + fechaLiberacion: helper.crearDDMMAAAA(res[i].fechaLiberacion), }); - await validar.eliminarArchivo(path).catch((err) => { + await helper.eliminarArchivo(path).catch((err) => { console.log(err); }); - return validar.crearArchivo(path, convertArrayToCSV(data)); + return helper.crearArchivo(path, convertArrayToCSV(data)); }) .then((res) => { return path; diff --git a/server/controller/Servicio/informeGlobal.js b/server/controller/Servicio/informeGlobal.js index 9443122..dbcf654 100644 --- a/server/controller/Servicio/informeGlobal.js +++ b/server/controller/Servicio/informeGlobal.js @@ -1,6 +1,6 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); const drive = require(`${helperPath}/drive`); +const validar = require(`${helperPath}/validar`); const Servicio = require('../../db/tablas/Servicio'); const informeGlobal = async (body, file) => { diff --git a/server/controller/Servicio/liberacion.js b/server/controller/Servicio/liberacion.js index ad01cde..8fbd2cc 100644 --- a/server/controller/Servicio/liberacion.js +++ b/server/controller/Servicio/liberacion.js @@ -1,8 +1,8 @@ const moment = require('moment'); const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); -const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); +const gmail = require(`${helperPath}/gmail`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Servicio = require(`${dbPath}/Servicio`); diff --git a/server/controller/Servicio/nuevo.js b/server/controller/Servicio/nuevo.js index d98f8da..3360de3 100644 --- a/server/controller/Servicio/nuevo.js +++ b/server/controller/Servicio/nuevo.js @@ -1,7 +1,7 @@ const { Op } = require('sequelize'); const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); const drive = require(`${helperPath}/drive`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Programa = require(`${dbPath}/Programa`); diff --git a/server/controller/Servicio/rechazarAceptacion.js b/server/controller/Servicio/rechazarAceptacion.js index 764471e..99d7521 100644 --- a/server/controller/Servicio/rechazarAceptacion.js +++ b/server/controller/Servicio/rechazarAceptacion.js @@ -1,7 +1,7 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); -const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); +const gmail = require(`${helperPath}/gmail`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Servicio = require(`${dbPath}/Servicio`); diff --git a/server/controller/Servicio/rechazarInforme.js b/server/controller/Servicio/rechazarInforme.js index 04022d3..a36bf06 100644 --- a/server/controller/Servicio/rechazarInforme.js +++ b/server/controller/Servicio/rechazarInforme.js @@ -1,7 +1,7 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); -const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); +const gmail = require(`${helperPath}/gmail`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Servicio = require(`${dbPath}/Servicio`); diff --git a/server/controller/Servicio/rechazarTermino.js b/server/controller/Servicio/rechazarTermino.js index ee25eec..c6fb084 100644 --- a/server/controller/Servicio/rechazarTermino.js +++ b/server/controller/Servicio/rechazarTermino.js @@ -1,7 +1,7 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); -const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); +const gmail = require(`${helperPath}/gmail`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Servicio = require(`${dbPath}/Servicio`); diff --git a/server/controller/Servicio/registro.js b/server/controller/Servicio/registro.js index 51fb385..6f84032 100644 --- a/server/controller/Servicio/registro.js +++ b/server/controller/Servicio/registro.js @@ -1,8 +1,8 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); +const correos = require(`${helperPath}/correos`); const encriptar = require(`${helperPath}/encriptar`); const gmail = require(`${helperPath}/gmail`); -const correos = require(`${helperPath}/correos`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Servicio = require(`${dbPath}/Servicio`); const Usuario = require(`${dbPath}/Usuario`); diff --git a/server/controller/Servicio/registroValidado.js b/server/controller/Servicio/registroValidado.js index b6b0217..f90c61e 100644 --- a/server/controller/Servicio/registroValidado.js +++ b/server/controller/Servicio/registroValidado.js @@ -1,7 +1,7 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); -const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); +const gmail = require(`${helperPath}/gmail`); +const validar = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Programa = require(`${dbPath}/Programa`); const Servicio = require(`${dbPath}/Servicio`); diff --git a/server/controller/Servicio/reporte.js b/server/controller/Servicio/reporte.js index e2889cd..39e3dec 100644 --- a/server/controller/Servicio/reporte.js +++ b/server/controller/Servicio/reporte.js @@ -1,7 +1,8 @@ -const fs = require('fs'); const { convertArrayToCSV } = require('convert-array-to-csv'); const { Op } = require('sequelize'); -const validar = require('../../helper/validar'); +const helperPath = '../../helper'; +const helper = require(`${helperPath}/helper`); +const { validarFecha } = require(`${helperPath}/validar`); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Programa = require(`${dbPath}/Programa`); @@ -10,8 +11,8 @@ const Status = require(`${dbPath}/Status`); const Usuario = require(`${dbPath}/Usuario`); const reporte = async (body) => { - const inicio = validar.validarFecha(body.inicio); - const fin = validar.validarFecha(body.fin); + const inicio = validarFecha(body.inicio); + const fin = validarFecha(body.fin); const path = `server/uploads/reporte.csv`; const data = []; @@ -37,9 +38,9 @@ const reporte = async (body) => { nombre: res[i].Usuario.nombre, licenciatura: res[i].Carrera.carrera, correo: res[i].correo, - fechaInicio: validar.crearDDMMAAAA(res[i].fechaInicio), - fechaFin: validar.crearDDMMAAAA(res[i].fechaFin), - fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion), + fechaInicio: helper.crearDDMMAAAA(res[i].fechaInicio), + fechaFin: helper.crearDDMMAAAA(res[i].fechaFin), + fechaLiberacion: helper.crearDDMMAAAA(res[i].fechaLiberacion), institucion: res[i].Programa.institucion, dependencia: res[i].Programa.dependencia, programa: res[i].Programa.programa, @@ -47,10 +48,10 @@ const reporte = async (body) => { clave: res[i].Programa.clavePrograma, status: res[i].Status.status, }); - await validar.eliminarArchivo(path).catch((err) => { + await helper.eliminarArchivo(path).catch((err) => { console.log(err); }); - return validar.crearArchivo(path, convertArrayToCSV(data)); + return helper.crearArchivo(path, convertArrayToCSV(data)); }) .then((res) => { return path; diff --git a/server/controller/Servicio/update.js b/server/controller/Servicio/update.js index a75c4df..32d7e3a 100644 --- a/server/controller/Servicio/update.js +++ b/server/controller/Servicio/update.js @@ -1,6 +1,6 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); const drive = require(`${helperPath}/drive`); +const validar = require(`${helperPath}/validar`); const Servicio = require('../../db/tablas/Servicio'); const update = async (body, files) => { @@ -52,7 +52,7 @@ const update = async (body, files) => { ); if (body.telefono) dataUpdate.telefono = validar.validarNumero(body.telefono, 15); - if (validar.isObjectEmpty(dataUpdate)) + if (validar.validarObjetoVacio(dataUpdate)) throw new Error( 'No se envio nada para actualizar este Servicio Social' ); diff --git a/server/controller/Usuario/escolares.js b/server/controller/Usuario/escolares.js index c4b9f9b..ea04b1b 100644 --- a/server/controller/Usuario/escolares.js +++ b/server/controller/Usuario/escolares.js @@ -1,12 +1,12 @@ require('../../config/config'); const axios = require('axios'); -const validar = require('../../helper/validar'); +const { validarNumeroCuenta } = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Usuario = require(`${dbPath}/Usuario`); const Carrera = require(`${dbPath}/Carrera`); const escolares = async (body) => { - const numeroCuenta = validar.validarNumeroCuenta(body.numeroCuenta); + const numeroCuenta = validarNumeroCuenta(body.numeroCuenta); let alumno; return axios({ diff --git a/server/controller/Usuario/newPasswordAlumno.js b/server/controller/Usuario/newPasswordAlumno.js index bc09e59..932aa1e 100644 --- a/server/controller/Usuario/newPasswordAlumno.js +++ b/server/controller/Usuario/newPasswordAlumno.js @@ -1,5 +1,5 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); +const { validarId } = require(`${helperPath}/validar`); const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); const encriptar = require(`${helperPath}/encriptar`); @@ -8,7 +8,7 @@ const Usuario = require(`${dbPath}/Usuario`); const Servicio = require(`${dbPath}/Servicio`); const newPasswordAlumno = async (body) => { - const idServicio = validar.validarId(body.idServicio); + const idServicio = validarId(body.idServicio); const password = encriptar.generarPassword(); let idUsuario; let correo = {}; diff --git a/server/controller/Usuario/newPasswordResponsable.js b/server/controller/Usuario/newPasswordResponsable.js index e5cb551..2a7a86c 100644 --- a/server/controller/Usuario/newPasswordResponsable.js +++ b/server/controller/Usuario/newPasswordResponsable.js @@ -1,12 +1,12 @@ const helperPath = '../../helper'; -const validar = require(`${helperPath}/validar`); +const { validarId } = require(`${helperPath}/validar`); const gmail = require(`${helperPath}/gmail`); const correos = require(`${helperPath}/correos`); const encriptar = require(`${helperPath}/encriptar`); const Usuario = require('../../db/tablas/Usuario'); const newPasswordResponsable = async (body) => { - const idUsuario = await validar.validarId(body.idUsuario); + const idUsuario = await validarId(body.idUsuario); const password = encriptar.generarPassword(); let correo = {}; diff --git a/server/controller/Usuario/responsableUpdate.js b/server/controller/Usuario/responsableUpdate.js index cbc6535..cdfbfec 100644 --- a/server/controller/Usuario/responsableUpdate.js +++ b/server/controller/Usuario/responsableUpdate.js @@ -26,7 +26,7 @@ const responsableUpdate = async (body) => { if (body.nombre) dataUpdate.nombre = validar.validarTexto(body.nombre, 'el nombre', 70); - if (validar.isObjectEmpty(dataUpdate)) + if (validar.validarObjetoVacio(dataUpdate)) throw new Error('No se a envio nada para actualizar.'); return Usuario.update(dataUpdate, { where: { idUsuario } }); }) diff --git a/server/helper/helper.js b/server/helper/helper.js new file mode 100644 index 0000000..f269aa5 --- /dev/null +++ b/server/helper/helper.js @@ -0,0 +1,37 @@ +const fs = require('fs'); +const moment = require('moment'); + +const crearDDMMAAAA = (date) => { + const fechaMoment = moment(date); + let ddmmaaaa = ''; + + if (fechaMoment.isValid()) + ddmmaaaa = `${fechaMoment.date()}/${ + fechaMoment.month() + 1 + }/${fechaMoment.year()}`; + return ddmmaaaa; +}; + +const eliminarArchivo = (path) => { + return new Promise((resolve, reject) => { + fs.unlink(path, (err) => { + if (err) reject(err); + resolve({ message: 'Se elimino el archivo correctamente.' }); + }); + }); +}; + +const crearArchivo = (path, texto) => { + return new Promise((resolve, reject) => { + fs.appendFile(path, texto, (err) => { + if (err) reject(err); + resolve({ message: 'Se creo el archivo correctamente.' }); + }); + }); +}; + +module.exports = { + crearDDMMAAAA, + eliminarArchivo, + crearArchivo, +}; diff --git a/server/helper/validar.js b/server/helper/validar.js index db4b1a9..54ca01b 100644 --- a/server/helper/validar.js +++ b/server/helper/validar.js @@ -1,4 +1,4 @@ -const fs = require('fs'); +// const fs = require('fs'); const moment = require('moment'); const validator = require('validator'); const Servicio = require('../db/tablas/Servicio'); @@ -144,42 +144,13 @@ const validarAccesibilidad = (usuariosValidos = [], idTipoUsuario) => { throw new Error('Este usuario no tiene permitido usar esta linea de la API.'); }; -const isObjectEmpty = (obj) => { +const validarObjetoVacio = (obj) => { for (let key in obj) { if (obj.hasOwnProperty(key)) return false; } return true; }; -const crearDDMMAAAA = (date) => { - const fechaMoment = moment(date); - let ddmmaaaa = ''; - - if (fechaMoment.isValid()) - ddmmaaaa = `${fechaMoment.date()}/${ - fechaMoment.month() + 1 - }/${fechaMoment.year()}`; - return ddmmaaaa; -}; - -const eliminarArchivo = (path) => { - return new Promise((resolve, reject) => { - fs.unlink(path, (err) => { - if (err) reject(err); - resolve({ message: 'Se elimino el archivo correctamente.' }); - }); - }); -}; - -const crearArchivo = (path, texto) => { - return new Promise((resolve, reject) => { - fs.appendFile(path, texto, (err) => { - if (err) reject(err); - resolve({ message: 'Se creo el archivo correctamente.' }); - }); - }); -}; - module.exports = { validar, noValido, @@ -194,8 +165,5 @@ module.exports = { validarNumero, validarPreTermino, validarAccesibilidad, - isObjectEmpty, - crearDDMMAAAA, - eliminarArchivo, - crearArchivo, + validarObjetoVacio, }; diff --git a/server/routes/CasoEspecial.js b/server/routes/CasoEspecial.js index 4db1f99..b393b7b 100644 --- a/server/routes/CasoEspecial.js +++ b/server/routes/CasoEspecial.js @@ -1,21 +1,18 @@ -const fs = require('fs'); const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'server/uploads' }); const { verificaToken } = require('../middleware/autentificacion'); +const { eliminarArchivo } = require('../helper/helper'); const route = '/caso_especial'; const controllerPath = '../controller/CasoEspecial'; -const nuevo = require(`${controllerPath}/nuevo`); -const serviciosEspeciales = require(`${controllerPath}/serviciosEspeciales`); const casoEspecial = require(`${controllerPath}/casoEspecial`); const liberacion = require(`${controllerPath}/liberacion`); +const nuevo = require(`${controllerPath}/nuevo`); +const serviciosEspeciales = require(`${controllerPath}/serviciosEspeciales`); const update = require(`${controllerPath}/update`); -const eliminarArchivo = (filename) => { - fs.unlinkSync(`./server/uploads/${filename}`); -}; - +// POST app.post( `${route}/nuevo`, // verificaToken, @@ -32,16 +29,7 @@ app.post( } ); -app.get(`${route}/servicios_especiales`, verificaToken, (req, res) => { - return serviciosEspeciales(req.query) - .then((data) => { - res.status(200).json(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - +// GET app.get(`${route}`, verificaToken, (req, res) => { return casoEspecial(req.query) .then((data) => { @@ -52,6 +40,17 @@ app.get(`${route}`, verificaToken, (req, res) => { }); }); +app.get(`${route}/servicios_especiales`, verificaToken, (req, res) => { + return serviciosEspeciales(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +// PUT app.put(`${route}/liberacion`, verificaToken, (req, res) => { return liberacion(req.body) .then((data) => { diff --git a/server/routes/CuestionarioAlumno.js b/server/routes/CuestionarioAlumno.js index 11c84b6..764bb4a 100644 --- a/server/routes/CuestionarioAlumno.js +++ b/server/routes/CuestionarioAlumno.js @@ -3,9 +3,10 @@ const app = express(); const { verificaToken } = require('../middleware/autentificacion'); const route = '/cuestionario_alumno'; const controllerPath = '../controller/CuestionarioAlumno'; -const nuevo = require(`${controllerPath}/nuevo`); const get = require(`${controllerPath}/get`); +const nuevo = require(`${controllerPath}/nuevo`); +// POST app.post(`${route}`, verificaToken, (req, res) => { return nuevo(req.body) .then((data) => { @@ -16,6 +17,7 @@ app.post(`${route}`, verificaToken, (req, res) => { }); }); +// GET app.get(`${route}`, verificaToken, (req, res) => { return get(req.query) .then((data) => { diff --git a/server/routes/CuestionarioPrograma.js b/server/routes/CuestionarioPrograma.js index 16f5a1f..7183d54 100644 --- a/server/routes/CuestionarioPrograma.js +++ b/server/routes/CuestionarioPrograma.js @@ -3,9 +3,10 @@ const app = express(); const { verificaToken } = require('../middleware/autentificacion'); const route = '/cuestionario_programa'; const controllerPath = '../controller/CuestionarioPrograma'; -const nuevo = require(`${controllerPath}/nuevo`); const get = require(`${controllerPath}/get`); +const nuevo = require(`${controllerPath}/nuevo`); +// POST app.post(`${route}`, verificaToken, (req, res) => { return nuevo(req.body) .then((data) => { @@ -16,6 +17,7 @@ app.post(`${route}`, verificaToken, (req, res) => { }); }); +// GET app.get(`${route}`, verificaToken, (req, res) => { return get(req.query) .then((data) => { diff --git a/server/routes/Programa.js b/server/routes/Programa.js index e0595d8..469fcb0 100644 --- a/server/routes/Programa.js +++ b/server/routes/Programa.js @@ -5,30 +5,11 @@ const upload = multer({ dest: 'server/uploads' }); const { verificaToken } = require('../middleware/autentificacion'); const route = '/programa'; const controllerPath = '../controller/Programa'; -const programasResponsable = require(`${controllerPath}/programasResponsable`); -const programasAdmin = require(`${controllerPath}/programasAdmin`); const cargaMasiva = require(`${controllerPath}/cargaMasiva`); +const programasAdmin = require(`${controllerPath}/programasAdmin`); +const programasResponsable = require(`${controllerPath}/programasResponsable`); -app.get(`${route}/programas_responsable`, verificaToken, (req, res) => { - return programasResponsable(req.query) - .then((data) => { - res.status(200).json(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - -app.get(`${route}/programas_admin`, verificaToken, (req, res) => { - return programasAdmin(req.query) - .then((data) => { - res.status(200).json(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - +// POST app.post( `${route}/carga_masiva`, // verificaToken, @@ -49,4 +30,25 @@ app.post( } ); +// GET +app.get(`${route}/programas_admin`, verificaToken, (req, res) => { + return programasAdmin(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.get(`${route}/programas_responsable`, verificaToken, (req, res) => { + return programasResponsable(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + module.exports = app; diff --git a/server/routes/Servicio.js b/server/routes/Servicio.js index 11d4a0e..217155b 100644 --- a/server/routes/Servicio.js +++ b/server/routes/Servicio.js @@ -1,9 +1,9 @@ -const fs = require('fs'); const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'server/uploads' }); const { verificaToken } = require('../middleware/autentificacion'); +const { eliminarArchivo } = require('../helper/helper'); const route = '/servicio'; const controllerPath = '../controller/Servicio'; const nuevo = require(`${controllerPath}/nuevo`); @@ -25,10 +25,7 @@ const update = require(`${controllerPath}/update`); const reporte = require(`${controllerPath}/reporte`); const gustavoBazPrada = require(`${controllerPath}/gustavoBazPrada`); -const eliminarArchivo = (filename) => { - fs.unlinkSync(`./server/uploads/${filename}`); -}; - +// POST app.post( `${route}/nuevo`, // verificaToken, @@ -45,6 +42,47 @@ app.post( } ); +// GET +app.get(`${route}/admin`, verificaToken, (req, res) => { + return admin(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.get(`${route}/alumno`, verificaToken, (req, res) => { + return alumno(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.get(`${route}/gustavo_baz_prada`, verificaToken, (req, res) => { + return gustavoBazPrada(req.query) + .then((data) => { + res.download(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.get(`${route}/reporte`, verificaToken, (req, res) => { + return reporte(req.query) + .then((data) => { + res.download(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + app.get(`${route}/servicios_admin`, verificaToken, (req, res) => { return serviciosAdmin(req.query) .then((data) => { @@ -65,46 +103,7 @@ app.get(`${route}/servicios_responsable`, verificaToken, (req, res) => { }); }); -app.get(`${route}/admin`, verificaToken, (req, res) => { - return admin(req.query) - .then((data) => { - res.status(200).json(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - -app.get(`${route}/alumno`, verificaToken, (req, res) => { - return alumno(req.query) - .then((data) => { - res.status(200).json(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - -app.get(`${route}/reporte`, verificaToken, (req, res) => { - return reporte(req.query) - .then((data) => { - res.download(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - -app.get(`${route}/gustavo_baz_prada`, verificaToken, (req, res) => { - return gustavoBazPrada(req.query) - .then((data) => { - res.download(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - +// PUT app.put(`${route}/cancelar`, verificaToken, (req, res) => { return cancelar(req.body) .then((data) => { @@ -115,26 +114,6 @@ app.put(`${route}/cancelar`, verificaToken, (req, res) => { }); }); -app.put(`${route}/registro`, verificaToken, (req, res) => { - return registro(req.body) - .then((data) => { - res.status(200).json(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - -app.put(`${route}/registro_validado`, verificaToken, (req, res) => { - return registroValidado(req.body) - .then((data) => { - res.status(200).json(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - app.put( `${route}/carta_aceptacion`, // verificaToken, @@ -193,6 +172,26 @@ app.put(`${route}/liberacion`, verificaToken, (req, res) => { }); }); +app.put(`${route}/registro`, verificaToken, (req, res) => { + return registro(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.put(`${route}/registro_validado`, verificaToken, (req, res) => { + return registroValidado(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + app.put(`${route}/rechazar_aceptacion`, verificaToken, (req, res) => { return rechazarAceptacion(req.body) .then((data) => { @@ -203,8 +202,8 @@ app.put(`${route}/rechazar_aceptacion`, verificaToken, (req, res) => { }); }); -app.put(`${route}/rechazar_termino`, verificaToken, (req, res) => { - return rechazarTermino(req.body) +app.put(`${route}/rechazar_informe`, verificaToken, (req, res) => { + return rechazarInforme(req.body) .then((data) => { res.status(200).json(data); }) @@ -213,8 +212,8 @@ app.put(`${route}/rechazar_termino`, verificaToken, (req, res) => { }); }); -app.put(`${route}/rechazar_informe`, verificaToken, (req, res) => { - return rechazarInforme(req.body) +app.put(`${route}/rechazar_termino`, verificaToken, (req, res) => { + return rechazarTermino(req.body) .then((data) => { res.status(200).json(data); }) diff --git a/server/routes/Usuario.js b/server/routes/Usuario.js index 0581268..7ed175c 100644 --- a/server/routes/Usuario.js +++ b/server/routes/Usuario.js @@ -5,11 +5,12 @@ const route = '/usuario'; const controllerPath = '../controller/Usuario'; const escolares = require(`${controllerPath}/escolares`); const login = require(`${controllerPath}/login`); -const responsables = require(`${controllerPath}/responsables`); -const responsableUpdate = require(`${controllerPath}/responsableUpdate`); const newPasswordAlumno = require(`${controllerPath}/newPasswordAlumno`); const newPasswordResponsable = require(`${controllerPath}/newPasswordResponsable`); +const responsables = require(`${controllerPath}/responsables`); +const responsableUpdate = require(`${controllerPath}/responsableUpdate`); +// POST app.post(`${route}/login`, (req, res) => { return login(req.body) .then((data) => { @@ -20,6 +21,7 @@ app.post(`${route}/login`, (req, res) => { }); }); +// GET app.get(`${route}/escolares`, verificaToken, (req, res) => { return escolares(req.query) .then((data) => { @@ -40,16 +42,7 @@ app.get(`${route}/responsables`, verificaToken, (req, res) => { }); }); -app.put(`${route}/responsable/update`, verificaToken, (req, res) => { - return responsableUpdate(req.body) - .then((data) => { - res.status(200).json(data); - }) - .catch((err) => { - res.status(400).json({ message: err.message }); - }); -}); - +// PUT app.put(`${route}/new_password_alumno`, verificaToken, (req, res) => { return newPasswordAlumno(req.body) .then((data) => { @@ -70,4 +63,14 @@ app.put(`${route}/new_password_responsable`, verificaToken, (req, res) => { }); }); +app.put(`${route}/responsable/update`, verificaToken, (req, res) => { + return responsableUpdate(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + module.exports = app; diff --git a/server/routes/index.js b/server/routes/index.js index 69195f8..69d782f 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -1,12 +1,12 @@ const express = require('express'); const app = express(); -app.use(require('./Status')); -app.use(require('./Usuario')); -app.use(require('./Servicio')); app.use(require('./CasoEspecial')); -app.use(require('./Programa')); app.use(require('./CuestionarioAlumno')); app.use(require('./CuestionarioPrograma')); +app.use(require('./Programa')); +app.use(require('./Servicio')); +app.use(require('./Status')); +app.use(require('./Usuario')); module.exports = app; From 340cc86504942322e6c521eb9560a111c3db2fa9 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Fri, 14 May 2021 14:13:03 -0500 Subject: [PATCH 09/19] cambios error token --- .../Servicio/serviciosResponsable.js | 22 +++++++++++++++++-- server/middleware/autentificacion.js | 17 +++++++++----- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/server/controller/Servicio/serviciosResponsable.js b/server/controller/Servicio/serviciosResponsable.js index bf8fa70..7c6204b 100644 --- a/server/controller/Servicio/serviciosResponsable.js +++ b/server/controller/Servicio/serviciosResponsable.js @@ -1,3 +1,4 @@ +const moment = require('moment'); const { Op } = require('sequelize'); const validar = require('../../helper/validar'); const dbPath = '../../db/tablas'; @@ -47,10 +48,27 @@ const serviciosResponsable = async (body) => { }); }) .then((res) => { + let data = []; + for (let i = 0; i < res.rows.length; i++) { - // delete res.rows[i].dataValues.idUsuario + data.push({ + idServicio: res.rows[i].idServicio, + fechaInicio: moment(res.rows[i].fechaInicio).format(), + fechaFin: moment(res.rows[i].fechaFin).format(), + createdAt: moment(res.rows[i].createdAt).format(), + cartaTermino: res.rows[i].cartaTermino, + idCuestionarioPrograma: res.rows[i].idCuestionarioPrograma, + Usuario: { + idUsuario: res.rows[i].Usuario.idUsuario, + usuario: res.rows[i].Usuario.usuario, + nombre: res.rows[i].Usuario.nombre, + TipoUsuario: res.rows[i].Usuario.TipoUsuario, + }, + Carrera: res.rows[i].Carrera, + Status: res.rows[i].Status, + }); } - return { count: res.count, serviciosResponsable: res.rows }; + return { count: res.count, serviciosResponsable: data }; }); }; diff --git a/server/middleware/autentificacion.js b/server/middleware/autentificacion.js index b5c52cd..bc99d03 100644 --- a/server/middleware/autentificacion.js +++ b/server/middleware/autentificacion.js @@ -6,13 +6,20 @@ const verificaToken = (req, res, next) => { if (!token) return res.status(400).json({ - message: 'No hay token', + message: 'No se envio el token.', }); jwt.verify(token, process.env.KEY, (err, decoded) => { - if (err) - return res.status(401).json({ - message: err.message, - }); + if (err) { + let message = ''; + + if (err.message === 'invalid signature') + message = 'El token no es valido. Inicia sesión de nuevo.'; + if (err.message === 'jwt expired') + message = 'El token expiro. Inicia sesión de nuevo.'; + if (err.message === 'jwt malformed') + message = 'Hubo un problema con el token. Inicia sesión de nuevo.'; + return res.status(401).json({ message, err: 'token error' }); + } req.decoded = decoded; next(); }); From 65b4934bfdf84eca5fda4ded235cda2e75a8eba2 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Fri, 14 May 2021 19:31:12 -0500 Subject: [PATCH 10/19] cambios en gets --- .../CasoEspecial/serviciosEspeciales.js | 2 -- server/controller/Servicio/serviciosAdmin.js | 21 +++++++++++++++---- .../Servicio/serviciosResponsable.js | 4 ---- server/controller/Usuario/responsables.js | 5 +---- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/server/controller/CasoEspecial/serviciosEspeciales.js b/server/controller/CasoEspecial/serviciosEspeciales.js index 9f1bfc1..521e295 100644 --- a/server/controller/CasoEspecial/serviciosEspeciales.js +++ b/server/controller/CasoEspecial/serviciosEspeciales.js @@ -4,7 +4,6 @@ const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const CasoEspecial = require(`${dbPath}/CasoEspecial`); const Status = require(`${dbPath}/Status`); -const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const serviciosEspeciales = async (body) => { @@ -23,7 +22,6 @@ const serviciosEspeciales = async (body) => { include: [ { model: Usuario, - include: { model: TipoUsuario }, where: { usuario: { [Op.like]: `%${numeroCuenta}%` }, nombre: { [Op.like]: `%${nombre}%` }, diff --git a/server/controller/Servicio/serviciosAdmin.js b/server/controller/Servicio/serviciosAdmin.js index 7d6a7b1..571f3c1 100644 --- a/server/controller/Servicio/serviciosAdmin.js +++ b/server/controller/Servicio/serviciosAdmin.js @@ -1,10 +1,10 @@ +const moment = require('moment'); const { Op } = require('sequelize'); const validar = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Servicio = require(`${dbPath}/Servicio`); const Status = require(`${dbPath}/Status`); -const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const serviciosAdmin = async (body) => { @@ -23,7 +23,6 @@ const serviciosAdmin = async (body) => { include: [ { model: Usuario, - include: { model: TipoUsuario }, where: { usuario: { [Op.like]: `%${numeroCuenta}%` }, nombre: { [Op.like]: `%${nombre}%` }, @@ -36,10 +35,24 @@ const serviciosAdmin = async (body) => { limit: 25, offset: 25 * (pagina - 1), }).then((res) => { + let data = []; + for (let i = 0; i < res.rows.length; i++) { - // delete res.rows[i].dataValues.idUsuario + data.push({ + idServicio: res.rows[i].idServicio, + fechaInicio: moment(res.rows[i].fechaInicio).format(), + fechaFin: moment(res.rows[i].fechaFin).format(), + createdAt: moment(res.rows[i].fechaFin).format(), + Usuario: { + idUsuario: res.rows[i].Usuario.idUsuario, + usuario: res.rows[i].Usuario.usuario, + nombre: res.rows[i].Usuario.nombre, + }, + Carrera: res.rows[i].Carrera, + Status: res.rows[i].Status, + }); } - return { count: res.count, serviciosAdmin: res.rows }; + return { count: res.count, serviciosAdmin: data }; }); }; diff --git a/server/controller/Servicio/serviciosResponsable.js b/server/controller/Servicio/serviciosResponsable.js index 7c6204b..5ca7b03 100644 --- a/server/controller/Servicio/serviciosResponsable.js +++ b/server/controller/Servicio/serviciosResponsable.js @@ -6,7 +6,6 @@ const Carrera = require(`${dbPath}/Carrera`); const Programa = require(`${dbPath}/Programa`); const Servicio = require(`${dbPath}/Servicio`); const Status = require(`${dbPath}/Status`); -const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const serviciosResponsable = async (body) => { @@ -33,7 +32,6 @@ const serviciosResponsable = async (body) => { { model: Programa, where: { idUsuario } }, { model: Usuario, - include: { model: TipoUsuario }, where: { usuario: { [Op.like]: `%${numeroCuenta}%` }, nombre: { [Op.like]: `%${nombre}%` }, @@ -55,14 +53,12 @@ const serviciosResponsable = async (body) => { idServicio: res.rows[i].idServicio, fechaInicio: moment(res.rows[i].fechaInicio).format(), fechaFin: moment(res.rows[i].fechaFin).format(), - createdAt: moment(res.rows[i].createdAt).format(), cartaTermino: res.rows[i].cartaTermino, idCuestionarioPrograma: res.rows[i].idCuestionarioPrograma, Usuario: { idUsuario: res.rows[i].Usuario.idUsuario, usuario: res.rows[i].Usuario.usuario, nombre: res.rows[i].Usuario.nombre, - TipoUsuario: res.rows[i].Usuario.TipoUsuario, }, Carrera: res.rows[i].Carrera, Status: res.rows[i].Status, diff --git a/server/controller/Usuario/responsables.js b/server/controller/Usuario/responsables.js index 5fb7605..c6362c5 100644 --- a/server/controller/Usuario/responsables.js +++ b/server/controller/Usuario/responsables.js @@ -1,8 +1,6 @@ const { Op } = require('sequelize'); const validar = require('../../helper/validar'); -const dbPath = '../../db/tablas'; -const Usuario = require(`${dbPath}/Usuario`); -const TipoUsuario = require(`${dbPath}/TipoUsuario`); +const Usuario = require('../../db/tablas/Usuario'); const responsables = async (body) => { const pagina = validar.validarNumero(body.pagina, true); @@ -19,7 +17,6 @@ const responsables = async (body) => { nombre: { [Op.like]: `%${nombre}%` }, idTipoUsuario: 2, }, - include: [{ model: TipoUsuario }], limit: 25, offset: 25 * (pagina - 1), }).then((res) => { From 02f576a8b0d54806ba8151c7c6102f495800bef4 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Tue, 25 May 2021 13:06:57 -0500 Subject: [PATCH 11/19] cambios minimos --- server/controller/Programa/cargaMasiva.js | 21 ++++++++++---------- server/controller/Servicio/serviciosAdmin.js | 6 ++++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/server/controller/Programa/cargaMasiva.js b/server/controller/Programa/cargaMasiva.js index a5767f2..8e0d2c5 100644 --- a/server/controller/Programa/cargaMasiva.js +++ b/server/controller/Programa/cargaMasiva.js @@ -44,7 +44,7 @@ const cargaMasiva = async (file) => { const activo = Number(programas[i].clave.substr(0, 4)) === today.year(); const responsable = await Usuario.findOne({ where: { usuario: programas[i].correo, idTipoUsuario: 2 }, - }).then(async (res) => { + }).then((res) => { if (!res) { const password = encriptar.generarPassword(); const correo = correos.enviarSec( @@ -52,8 +52,6 @@ const cargaMasiva = async (file) => { programas[i].correo, programas[i].nombre ); - - await gmail(correo.subject, programas[i].correo, correo.msj); return Usuario.create({ usuario: programas[i].correo, password: encriptar.encriptar(password), @@ -61,12 +59,13 @@ const cargaMasiva = async (file) => { activo: true, idTipoUsuario: 2, }) - .then((res) => { - mensaje += `Se creo el responsable con id ${res.idUsuario} y correo ${res.usuario}\n`; + .then(async (res) => { + await gmail(correo.subject, programas[i].correo, correo.msj); + mensaje += `Se creo al responsable con id ${res.idUsuario} y correo ${res.usuario}\n`; return res; }) .catch((err) => { - mensaje += err; + mensaje = mensaje + err.message + err; }); } return res; @@ -86,13 +85,13 @@ const cargaMasiva = async (file) => { activo, idUsuario: responsable.idUsuario, }).catch((err) => { - mensaje += err; + mensaje = mensaje + err.message + err; }); } mensaje += `El programa ${res.clavePrograma} ya ${ programas[i].correo === res.Usuario.usuario ? 'le pertenece a este responsable' - : 'fue asignado a otro responsable' + : 'fue asignado al responsable' } con id ${res.Usuario.idUsuario} y correo ${ res.Usuario.usuario }.\n`; @@ -100,7 +99,7 @@ const cargaMasiva = async (file) => { }) .then((res) => { if (res) - mensaje += `Se asigno el programa ${res.clavePrograma} con id ${res.idPrograma} al usuario con correo ${responsable.idUsuario} y correo ${responsable.usuario}\n`; + mensaje += `Se asigno el programa ${res.clavePrograma} con id ${res.idPrograma} al usuario con id ${responsable.idUsuario} y correo ${responsable.usuario}\n`; }); } else { await Programa.findOne({ @@ -120,7 +119,7 @@ const cargaMasiva = async (file) => { acatlan, idUsuario: responsable.idUsuario, }).catch((err) => { - mensaje += err; + mensaje = mensaje + err.message + err; }); } mensaje += `El programa ${res.clavePrograma} ya pertenece al responsable con id ${responsable.idUsuario} y correo ${responsable.usuario}\n`; @@ -128,7 +127,7 @@ const cargaMasiva = async (file) => { }) .then((res) => { if (res) - mensaje += `Se asigno el programa ${res.clavePrograma} con id ${res.idPrograma} al usuario con correo ${responsable.idUsuario} y correo ${responsable.usuario}\n`; + mensaje += `Se asigno el programa ${res.clavePrograma} con id ${res.idPrograma} al usuario con id ${responsable.idUsuario} y correo ${responsable.usuario}\n`; }); } mensaje += '\n'; diff --git a/server/controller/Servicio/serviciosAdmin.js b/server/controller/Servicio/serviciosAdmin.js index 571f3c1..54ce0ea 100644 --- a/server/controller/Servicio/serviciosAdmin.js +++ b/server/controller/Servicio/serviciosAdmin.js @@ -24,8 +24,10 @@ const serviciosAdmin = async (body) => { { model: Usuario, where: { - usuario: { [Op.like]: `%${numeroCuenta}%` }, - nombre: { [Op.like]: `%${nombre}%` }, + [Op.and]: [ + { usuario: { [Op.like]: `%${numeroCuenta}%` } }, + { nombre: { [Op.like]: `%${nombre}%` } }, + ], }, }, { model: Carrera }, From 33305091274896f533442fd5f28dea97a814f641 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Mon, 31 May 2021 13:54:02 -0500 Subject: [PATCH 12/19] caso especila corregido --- package-lock.json | 3064 +++++++++++++++++++++++++++++++++++++++++- server/db/install.js | 2 +- 2 files changed, 3059 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index c638a37..83c74bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,3060 @@ { "name": "servicio_social_api", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^0.21.0", + "bcrypt": "^5.0.0", + "body-parser": "^1.19.0", + "colors": "^1.4.0", + "convert-array-to-csv": "^2.0.0", + "cors": "^2.8.5", + "csvtojson": "^2.0.10", + "dotenv": "^8.2.0", + "express": "^4.17.1", + "gmail-send": "^1.8.10", + "googleapis": "^65.0.0", + "jsonwebtoken": "^8.5.1", + "mariadb": "^2.5.1", + "moment": "^2.29.1", + "multer": "^1.4.2", + "sequelize": "^6.3.5", + "validator": "^13.1.17" + }, + "devDependencies": { + "nodemon": "^2.0.6" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.7", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==" + }, + "node_modules/@types/node": { + "version": "14.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "dependencies": { + "string-width": "^3.0.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "engines": { + "node": ">=8" + } + }, + "node_modules/axios": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz", + "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==", + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/bcrypt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", + "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", + "dependencies": { + "node-addon-api": "^3.0.0", + "node-pre-gyp": "0.15.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "engines": { + "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.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/boxen/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "dependencies": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-array-to-csv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-array-to-csv/-/convert-array-to-csv-2.0.0.tgz", + "integrity": "sha512-dxUINCt28k6WbXGMoB+AaKjGY0Y6GkKwZmT+kvD4nJgVCOKsnIQ3G6n0v2II1lG4NwXQk6EWZ+pPDub9wcqqMg==" + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "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": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/csvtojson": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", + "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", + "dependencies": { + "bluebird": "^3.5.1", + "lodash": "^4.17.3", + "strip-bom": "^2.0.0" + }, + "bin": { + "csvtojson": "bin/csvtojson" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/denque": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", + "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "dependencies": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dottie": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gaxios": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz", + "integrity": "sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ==", + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gcp-metadata": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz", + "integrity": "sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==", + "dependencies": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "dependencies": { + "ini": "^1.3.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gmail-send": { + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/gmail-send/-/gmail-send-1.8.10.tgz", + "integrity": "sha512-QMpWwzeA64U69HzOEzI37UNc73xXkhTg8LuqsfKX9W7LjiQY3yRvViVn7ZhuJWLTV4136vsLJf2sXiZKmdykbw==", + "dependencies": { + "lodash": "^4.17.15", + "nodemailer": "^6.3.0" + } + }, + "node_modules/google-auth-library": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.3.tgz", + "integrity": "sha512-m9mwvY3GWbr7ZYEbl61isWmk+fvTmOt0YNUfPOUY2VH8K5pZlAIWJjxEi0PqR3OjMretyiQLI6GURMrPSwHQ2g==", + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-auth-library/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-auth-library/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-p12-pem": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz", + "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==", + "dependencies": { + "node-forge": "^0.10.0" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/googleapis": { + "version": "65.0.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-65.0.0.tgz", + "integrity": "sha512-dcfZVkML8H6mPAsph0hgfyRQYKJpw2XjKchAXx5YEfDYWU7021Mpzaf+ejNSipa3QmcfOLOcWg6sUr0I7M4jjQ==", + "dependencies": { + "google-auth-library": "^6.0.0", + "googleapis-common": "^4.4.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/googleapis-common": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-4.4.3.tgz", + "integrity": "sha512-W46WKCk3QtlCCfmZyQIH5zxmDOyeV5Qj+qs7nr2ox08eRkEJMWp6iwv542R/PsokXaGUSrmif4vCC4+rGzRSsQ==", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^4.0.0", + "google-auth-library": "^6.0.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/gtoken": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.1.0.tgz", + "integrity": "sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg==", + "dependencies": { + "gaxios": "^4.0.0", + "google-p12-pem": "^3.0.3", + "jws": "^4.0.0", + "mime": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gtoken/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gtoken/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gtoken/node_modules/mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "node_modules/ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "dependencies": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/mariadb": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-2.5.1.tgz", + "integrity": "sha512-LPm/1qXKLdMX16WOalAQAf93JtApW8z3NXq38BKlSUfjkb/VyXW4VjckmNChmC2Ypouba1SY/3mCOW+6nT6vvQ==", + "dependencies": { + "@types/geojson": "^7946.0.7", + "@types/node": "^14.11.2", + "denque": "^1.4.1", + "iconv-lite": "^0.6.2", + "long": "^4.0.0", + "moment-timezone": "^0.5.31", + "please-upgrade-node": "^3.2.0" + }, + "engines": { + "node": ">= 10.13" + } + }, + "node_modules/mariadb/node_modules/iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dependencies": { + "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.32", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.32.tgz", + "integrity": "sha512-Z8QNyuQHQAmWucp8Knmgei8YNo28aLjJq6Ma+jy1ZSpSk5nyfRT8xgUbSQvD2+2UajISfenndwvFuH3NGS+nvA==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/multer": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", + "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/needle": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", + "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", + "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-pre-gyp": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", + "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.3", + "needle": "^2.5.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/nodemailer": { + "version": "6.4.16", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.16.tgz", + "integrity": "sha512-68K0LgZ6hmZ7PVmwL78gzNdjpj5viqBdFqKrTtr9bZbJYj6BRj5W6WGkxXrEnUl3Co3CBXi3CZBUlpV/foGnOQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/nodemon": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.6.tgz", + "integrity": "sha512-4I3YDSKXg6ltYpcnZeHompqac4E6JeAMpGm8tJnB9Y3T0ehasLa4139dJOcCrB93HHrUMsCrKtoAlXTqT5n4AQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.3", + "update-notifier": "^4.1.0" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "node_modules/npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/retry-as-promised": { + "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/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "node_modules/sequelize": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.3.5.tgz", + "integrity": "sha512-MiwiPkYSA8NWttRKAXdU9h0TxP6HAc1fl7qZmMO/VQqQOND83G4nZLXd0kWILtAoT9cxtZgFqeb/MPYgEeXwsw==", + "dependencies": { + "debug": "^4.1.1", + "dottie": "^2.0.0", + "inflection": "1.12.0", + "lodash": "^4.17.15", + "moment": "^2.26.0", + "moment-timezone": "^0.5.31", + "retry-as-promised": "^3.2.0", + "semver": "^7.3.2", + "sequelize-pool": "^6.0.0", + "toposort-class": "^1.0.1", + "uuid": "^8.1.0", + "validator": "^10.11.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sequelize-pool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", + "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/sequelize/node_modules/debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/sequelize/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/sequelize/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize/node_modules/validator": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", + "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/touch/node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "dependencies": { + "debug": "^2.2.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "dependencies": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", + "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validator": { + "version": "13.1.17", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.17.tgz", + "integrity": "sha512-zL5QBoemJ3jYFb2/j38y7ljhwYGXVLUp8H6W1nVxadnAOvUOytec+L7BHh1oBQ82/TzWXHd+GSaxUWp4lROkLg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/widest-line/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "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==" + } + }, "dependencies": { "@sindresorhus/is": { "version": "0.14.0", @@ -2144,6 +5196,11 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -2154,11 +5211,6 @@ "strip-ansi": "^3.0.0" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", diff --git a/server/db/install.js b/server/db/install.js index b07451c..6c9ef67 100644 --- a/server/db/install.js +++ b/server/db/install.js @@ -80,7 +80,7 @@ const sync = async () => { }; const dataTipoUsuario = async () => { - const data = ['admin', 'responsable', 'alumno', 'caso especial']; + const data = ['admin', 'responsable', 'alumno', 'casoEspecial']; console.log('\nPaso 3) Instalando data de TipoUsuario.'.bold.blue); for (let i = 0; i < data.length; i++) { From e5b1171f1a0418035bb538fb5094d76b05b23c86 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Mon, 7 Jun 2021 23:52:42 -0500 Subject: [PATCH 13/19] busqueda mas avanzada --- server/controller/CasoEspecial/serviciosEspeciales.js | 6 ++++-- server/controller/Servicio/serviciosResponsable.js | 6 ++++-- server/helper/correos.js | 4 ---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/server/controller/CasoEspecial/serviciosEspeciales.js b/server/controller/CasoEspecial/serviciosEspeciales.js index 521e295..1a51a60 100644 --- a/server/controller/CasoEspecial/serviciosEspeciales.js +++ b/server/controller/CasoEspecial/serviciosEspeciales.js @@ -23,8 +23,10 @@ const serviciosEspeciales = async (body) => { { model: Usuario, where: { - usuario: { [Op.like]: `%${numeroCuenta}%` }, - nombre: { [Op.like]: `%${nombre}%` }, + [Op.and]: [ + { usuario: { [Op.like]: `%${numeroCuenta}%` } }, + { nombre: { [Op.like]: `%${nombre}%` } }, + ], }, }, { model: Carrera }, diff --git a/server/controller/Servicio/serviciosResponsable.js b/server/controller/Servicio/serviciosResponsable.js index 5ca7b03..744099c 100644 --- a/server/controller/Servicio/serviciosResponsable.js +++ b/server/controller/Servicio/serviciosResponsable.js @@ -33,8 +33,10 @@ const serviciosResponsable = async (body) => { { model: Usuario, where: { - usuario: { [Op.like]: `%${numeroCuenta}%` }, - nombre: { [Op.like]: `%${nombre}%` }, + [Op.and]: [ + { usuario: { [Op.like]: `%${numeroCuenta}%` } }, + { nombre: { [Op.like]: `%${nombre}%` } }, + ], }, }, { model: Carrera }, diff --git a/server/helper/correos.js b/server/helper/correos.js index 95ef8f0..c517b52 100644 --- a/server/helper/correos.js +++ b/server/helper/correos.js @@ -169,10 +169,6 @@ Otras consideraciones: - De cualquier forma para atender dudas o comentarios al respecto, podrá comunicarse con el equipo del Departamento de Servicio Social: -Lic. Marcela Martínez Rangel -56231600 -marcemartinez@acatlan.unam.mx. - Lic. Lourdes Ibarra Celorio 56231686 registross@acatlan.unam.mx From 00f2fb385e756aacee54badf7496a2983143fa70 Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Tue, 8 Jun 2021 22:01:14 -0500 Subject: [PATCH 14/19] linea responsable agregada --- server/controller/Usuario/responsable.js | 16 ++++++++++++++++ server/controller/Usuario/responsables.js | 8 +++++--- server/routes/Usuario.js | 11 +++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 server/controller/Usuario/responsable.js diff --git a/server/controller/Usuario/responsable.js b/server/controller/Usuario/responsable.js new file mode 100644 index 0000000..3c304b3 --- /dev/null +++ b/server/controller/Usuario/responsable.js @@ -0,0 +1,16 @@ +const { validarId } = require('../../helper/validar'); +const Usuario = require('../../db/tablas/Usuario'); + +const responsable = async (body) => { + const idUsuario = validarId(body.idUsuario); + + return Usuario.findOne({ + where: { idUsuario }, + }).then((res) => { + delete res.dataValues.password; + delete res.dataValues.idTipoUsuario; + return res; + }); +}; + +module.exports = responsable; diff --git a/server/controller/Usuario/responsables.js b/server/controller/Usuario/responsables.js index c6362c5..64f9802 100644 --- a/server/controller/Usuario/responsables.js +++ b/server/controller/Usuario/responsables.js @@ -13,9 +13,11 @@ const responsables = async (body) => { return Usuario.findAndCountAll({ where: { - usuario: { [Op.like]: `%${correo}%` }, - nombre: { [Op.like]: `%${nombre}%` }, - idTipoUsuario: 2, + [Op.and]: [ + { usuario: { [Op.like]: `%${correo}%` } }, + { nombre: { [Op.like]: `%${nombre}%` } }, + { idTipoUsuario: 2 }, + ], }, limit: 25, offset: 25 * (pagina - 1), diff --git a/server/routes/Usuario.js b/server/routes/Usuario.js index 7ed175c..9d602fb 100644 --- a/server/routes/Usuario.js +++ b/server/routes/Usuario.js @@ -7,6 +7,7 @@ const escolares = require(`${controllerPath}/escolares`); const login = require(`${controllerPath}/login`); const newPasswordAlumno = require(`${controllerPath}/newPasswordAlumno`); const newPasswordResponsable = require(`${controllerPath}/newPasswordResponsable`); +const responsable = require(`${controllerPath}/responsable`); const responsables = require(`${controllerPath}/responsables`); const responsableUpdate = require(`${controllerPath}/responsableUpdate`); @@ -32,6 +33,16 @@ app.get(`${route}/escolares`, verificaToken, (req, res) => { }); }); +app.get(`${route}/responsable`, verificaToken, (req, res) => { + return responsable(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + app.get(`${route}/responsables`, verificaToken, (req, res) => { return responsables(req.query) .then((data) => { From fd2878c514661bcf9d3c2d674c80c1fd64bf1d95 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Mon, 13 Sep 2021 14:55:01 -0500 Subject: [PATCH 15/19] ds --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index d63f05486cd359fd415b042f60433d4498489faf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z<*_w-vDmLBY#jyj5svOYtCtSP$NWh#pkh#1rzzL9rd z$C=%YSnR=*h@FAmZ)Rs^H}jS54`Ynm<8GC)5@Sq2L*%F|5FB3US~0?H_tycxJ;!cY#3tVK>-P`*D6UlA`AROoy0$JvQ4}|eH%>pCI^iQ zeb4CUVL15IUGKv0P1~jI<1mO_Kj@8Avfu4N$n~Wkbi=6~j)QKb=5e$`h=M4zOM6Lj zP;E5oW!Y#R&dM^W)*7|4Y}T8zSwZaVSC39R_YaTB)9m?0Q_SHPP_kt(gI7>Yg%f8K z48q_JMzZKEijWu}28aP-V0joYXMosPo|36jVt^RY45k{v1HyGGpibrHiNSR`j7t+|8B8_mbjH=nFppU|d%SS9I*dyd&bXzK zdSZYWm}elT%@UsfC-9e9_{g76A&VFw2L2fXJl}F!HWX#f)^FwESu3G+prK$~iV6tm mbC&=xa39%KPVJYdL!4zW)rhm;xJn14i-018I%41#82A8q$xw~} From b30b7ec57bb85269d2431ffd7f3100b8eaa7c1f1 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Mon, 29 Nov 2021 00:46:38 -0600 Subject: [PATCH 16/19] =?UTF-8?q?errores=20peque=C3=B1os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controller/Programa/cargaMasiva.js | 12 ++++++------ server/controller/Servicio/nuevo.js | 1 - server/controller/Servicio/serviciosAdmin.js | 2 +- server/controller/Usuario/responsableUpdate.js | 2 +- server/helper/correos.js | 4 ++-- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/server/controller/Programa/cargaMasiva.js b/server/controller/Programa/cargaMasiva.js index 8e0d2c5..c31c331 100644 --- a/server/controller/Programa/cargaMasiva.js +++ b/server/controller/Programa/cargaMasiva.js @@ -133,12 +133,12 @@ const cargaMasiva = async (file) => { mensaje += '\n'; } await gmail('Reporte carga masiva', 'lemuel@acatlan.unam.mx', mensaje); - await gmail('Reporte carga masiva', 'dscad@acatlan.unam.mx', mensaje); - await gmail( - 'Reporte carga masiva', - 'tramites.ss@acatlan.unam.mx', - mensaje - ); + // await gmail('Reporte carga masiva', 'dscad@acatlan.unam.mx', mensaje); + // await gmail( + // 'Reporte carga masiva', + // 'tramites.ss@acatlan.unam.mx', + // mensaje + // ); fs.unlinkSync(path); }); diff --git a/server/controller/Servicio/nuevo.js b/server/controller/Servicio/nuevo.js index 3360de3..ff47253 100644 --- a/server/controller/Servicio/nuevo.js +++ b/server/controller/Servicio/nuevo.js @@ -30,7 +30,6 @@ const nuevo = async (body, file) => { : ''; let carpeta = ''; - console.log(fechaInicio.format()); return Usuario.findOne({ where: { idUsuario }, }) diff --git a/server/controller/Servicio/serviciosAdmin.js b/server/controller/Servicio/serviciosAdmin.js index 54ce0ea..e834118 100644 --- a/server/controller/Servicio/serviciosAdmin.js +++ b/server/controller/Servicio/serviciosAdmin.js @@ -44,7 +44,7 @@ const serviciosAdmin = async (body) => { idServicio: res.rows[i].idServicio, fechaInicio: moment(res.rows[i].fechaInicio).format(), fechaFin: moment(res.rows[i].fechaFin).format(), - createdAt: moment(res.rows[i].fechaFin).format(), + createdAt: moment(res.rows[i].createdAt).format(), Usuario: { idUsuario: res.rows[i].Usuario.idUsuario, usuario: res.rows[i].Usuario.usuario, diff --git a/server/controller/Usuario/responsableUpdate.js b/server/controller/Usuario/responsableUpdate.js index cdfbfec..02250c0 100644 --- a/server/controller/Usuario/responsableUpdate.js +++ b/server/controller/Usuario/responsableUpdate.js @@ -11,7 +11,7 @@ const responsableUpdate = async (body) => { if (!res) throw new Error('No existe este responsable en la base de datos.'); if (res.idTipoUsuario !== 2) - throw new Error('No es un usuaior de tipo responasble.'); + throw new Error('Este usuario no es un responsable de programa.'); if (body.correo) { const yaUsado = await Usuario.findOne({ where: { usuario: body.correo, idUsuario: { [Op.not]: idUsuario } }, diff --git a/server/helper/correos.js b/server/helper/correos.js index c517b52..1c4d588 100644 --- a/server/helper/correos.js +++ b/server/helper/correos.js @@ -137,9 +137,9 @@ const enviarSec = (secreto, usuariomail, nombre) => { subject: `Estimado responsable de programa de servicio social: ${nombre}`, msj: `Como ya se les había informado, en nuestra Facultad estamos en un proceso de actualización administrativa que implica la puesta en marcha de un nuevo sistema interno de servicio social en el cual estará el expediente electrónico del alumno y su seguimiento con respecto a estos trámites. La dirección electrónica de dicho sistema es https://iris.acatlan.unam.mx y su usuario y contraseña son: -Usuario para ingresar = ${usuariomail} +Usuario: ${usuariomail} -Contraseña = ${secreto} +Contraseña: ${secreto} Le pedimos sea cuidadoso de sus claves de acceso ya que con ellos tiene la facultad para registrar el trámite de inicio y término de servicio social de nuestros alumnos, lo que genera un riesgo para malas prácticas si comparte sus datos con otras personas. From 3cfff170e87da05daf233951d9b33ec366128333 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Tue, 30 Nov 2021 12:18:12 -0600 Subject: [PATCH 17/19] reasignar programas --- .../controller/Programa/reasignarProgramas.js | 40 +++++++++++++++++++ server/routes/Programa.js | 12 ++++++ 2 files changed, 52 insertions(+) create mode 100644 server/controller/Programa/reasignarProgramas.js diff --git a/server/controller/Programa/reasignarProgramas.js b/server/controller/Programa/reasignarProgramas.js new file mode 100644 index 0000000..bc453c4 --- /dev/null +++ b/server/controller/Programa/reasignarProgramas.js @@ -0,0 +1,40 @@ +const { validarId, validarCorreo } = require('../../helper/validar'); +const dbPath = '../../db/tablas'; +const Programa = require(`${dbPath}/Programa`); +const Usuario = require(`${dbPath}/Usuario`); + +const reasignarProgramas = async (body) => { + const idUsuario = validarId(body.idUsuario); + const correoOtroResponsable = validarCorreo(body.correoOtroResponsable); + let otorResponsable = {}; + + return Usuario.findOne({ + where: { idUsuario }, + }) + .then((res) => { + if (!res) throw new Error('No existe este usuario.'); + if (res.idTipoUsuario != 2) + throw new Error('No es un usuario de tipo responsable'); + if (res.usuario === correoOtroResponsable) + throw new Error('Son el mismo usuario.'); + return Usuario.findOne({ where: { usuario: correoOtroResponsable } }); + }) + .then((res) => { + if (!res) throw new Error('No existe este usuario.'); + otorResponsable = res; + return Programa.update( + { idUsuario }, + { + where: { idUsuario: otorResponsable.idUsuario }, + } + ); + }) + .then((res) => + Usuario.destroy({ where: { idUsuario: otorResponsable.idUsuario } }) + ) + .then((res) => ({ + message: `Se elimino correctamente al usuario ${correoOtroResponsable} y se reasigno correctamente sus programas.`, + })); +}; + +module.exports = reasignarProgramas; diff --git a/server/routes/Programa.js b/server/routes/Programa.js index 469fcb0..fbce79a 100644 --- a/server/routes/Programa.js +++ b/server/routes/Programa.js @@ -8,6 +8,7 @@ const controllerPath = '../controller/Programa'; const cargaMasiva = require(`${controllerPath}/cargaMasiva`); const programasAdmin = require(`${controllerPath}/programasAdmin`); const programasResponsable = require(`${controllerPath}/programasResponsable`); +const reasignarProgramas = require(`${controllerPath}/reasignarProgramas`); // POST app.post( @@ -30,6 +31,17 @@ app.post( } ); +// PUT +app.put(`${route}/reasignar_programas`, verificaToken, (req, res) => { + return reasignarProgramas(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + // GET app.get(`${route}/programas_admin`, verificaToken, (req, res) => { return programasAdmin(req.query) From fb57ee6b9323bdc0d48d01ab9a539f330f9ab2d5 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Tue, 7 Dec 2021 11:53:22 -0600 Subject: [PATCH 18/19] =?UTF-8?q?drive=20un=20poco=20m=C3=A1s=20clean=20el?= =?UTF-8?q?=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/helper/drive.js | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/server/helper/drive.js b/server/helper/drive.js index bb42f82..3c3cf84 100644 --- a/server/helper/drive.js +++ b/server/helper/drive.js @@ -133,44 +133,40 @@ const folder = async (numeroCuenta) => { let pageToken = ''; do { - let response = await list(pageToken); - let files = response.files; + let res = await list(pageToken); - for (let i = 0; i < files.length; i++) + for (let i = 0; i < res.files.length; i++) if ( - files[i].name === numeroCuenta && - files[i].mimeType === 'application/vnd.google-apps.folder' + res.files[i].name === numeroCuenta && + res.files[i].mimeType === 'application/vnd.google-apps.folder' ) - return files[i].id; - pageToken = ''; - if (response.nextPageToken) pageToken = response.nextPageToken; + return res.files[i].id; + pageToken = res.nextPageToken ? res.nextPageToken : ''; } while (pageToken); return mkDir(numeroCuenta); }; const borrarTodo = () => { return list().then(async (res) => { - console.log(res); + console.log(res.files); // for (let i = 0; i < res.files.length; i++) - // if (res.files[i].name !== 'Babyhelon') await deleteFile(res.files[i].id); + // if (res.files[i].id !== process.env.CARPETA) + // await deleteFile(res.files[i].id); }); }; // borrarTodo(); const archivosFicheros = async () => { - let pageToken = ''; const pdf = []; const carpetas = []; + let pageToken = ''; do { let response = await list(pageToken); - console.log(response); - if (response.nextPageToken) pageToken = response.nextPageToken; - else pageToken = ''; + pageToken = response.nextPageToken ? response.nextPageToken : ''; } while (pageToken); - return { pdf, carpetas }; }; From d469b1cdc632486c7bd7cb62b183dc917bcf0c93 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Tue, 7 Dec 2021 13:25:51 -0600 Subject: [PATCH 19/19] carga masiva y diario mejorado --- server/controller/Programa/cargaMasiva.js | 7 --- server/helper/diario.js | 75 ++++++++++++----------- 2 files changed, 40 insertions(+), 42 deletions(-) diff --git a/server/controller/Programa/cargaMasiva.js b/server/controller/Programa/cargaMasiva.js index c31c331..3d32bc4 100644 --- a/server/controller/Programa/cargaMasiva.js +++ b/server/controller/Programa/cargaMasiva.js @@ -133,13 +133,6 @@ const cargaMasiva = async (file) => { mensaje += '\n'; } await gmail('Reporte carga masiva', 'lemuel@acatlan.unam.mx', mensaje); - // await gmail('Reporte carga masiva', 'dscad@acatlan.unam.mx', mensaje); - // await gmail( - // 'Reporte carga masiva', - // 'tramites.ss@acatlan.unam.mx', - // mensaje - // ); - fs.unlinkSync(path); }); return { diff --git a/server/helper/diario.js b/server/helper/diario.js index 4ccef6b..2663470 100644 --- a/server/helper/diario.js +++ b/server/helper/diario.js @@ -1,53 +1,58 @@ const moment = require('moment'); +const gmail = require('./gmail'); +const correos = require('./correos'); const Servicio = require('../db/tablas/Servicio'); const Usuario = require('../db/tablas/Usuario'); const Programa = require('../db/tablas/Programa'); -const gmail = require('./gmail'); -const correos = require('./correos'); +const now = moment(); const diario = async () => { - let mensaje = ''; - const now = moment(); - const servicios = await Servicio.findAll({ + return Servicio.findAll({ where: { idStatus: 3 }, include: [ { model: Usuario }, { model: Programa, include: [{ model: Usuario }] }, ], - }); + }).then(async (servicios) => { + let mensaje = ''; - for (let i = 0; i < servicios.length; i++) { - let fechaFin = moment(servicios[i].fechaFin); - let fechaFinDate = fechaFin.dayOfYear(); + for (let i = 0; i < servicios.length; i++) { + let fechaFin = moment(servicios[i].fechaFin); + let fechaFinDate = fechaFin.dayOfYear(); - if (fechaFin.year() > now.year()) - fechaFinDate += 365 * (fechaFin.year() - now.year()); - if (fechaFin.year() < now.year()) - fechaFinDate -= 365 * (now.year() - fechaFin.year()); - if (fechaFinDate - now.dayOfYear() === 7) { - let correoAlumno = correos.avisoTerminoAlumno( - servicios[i].Usuario.nombre - ); - let correoResponsable = correos.avisoTerminoResponsable( - servicios[i].Usuario.nombre - ); + if (fechaFin.year() > now.year()) + fechaFinDate += 365 * (fechaFin.year() - now.year()); + if (fechaFin.year() < now.year()) + fechaFinDate -= 365 * (now.year() - fechaFin.year()); + if (fechaFinDate - now.dayOfYear() === 7) { + let correoAlumno = correos.avisoTerminoAlumno( + servicios[i].Usuario.nombre + ); + let correoResponsable = correos.avisoTerminoResponsable( + servicios[i].Usuario.nombre + ); - mensaje += `Se envio correo al alumno ${servicios[i].Usuario.usuario} con id ${servicios[i].Usuario.idUsuario} al correo ${servicios[i].correo} y al responsable ${servicios[i].Programa.Usuario.nombre} con id ${servicios[i].Programa.Usuario.idUsuario} y correo ${servicios[i].Programa.Usuario.usuario}\n`; - await gmail(correoAlumno.subject, servicios[i].correo, correoAlumno.msj); - await gmail( - correoResponsable.subject, - servicios[i].Programa.Usuario.usuario, - correoResponsable.msj - ); - } else if (fechaFinDate - now.dayOfYear() <= -1) { - mensaje += `El servicio con id ${servicios[i].idServicio} del alumno ${servicios[i].Usuario.usuario} con id ${servicios[i].Usuario.idUsuario} paso al status 4\n`; - await Servicio.update( - { idStatus: 4 }, - { where: { idServicio: servicios[i].idServicio } } - ); + mensaje += `Se envio correo al alumno ${servicios[i].Usuario.usuario} con id ${servicios[i].Usuario.idUsuario} al correo ${servicios[i].correo} y al responsable ${servicios[i].Programa.Usuario.nombre} con id ${servicios[i].Programa.Usuario.idUsuario} y correo ${servicios[i].Programa.Usuario.usuario}\n\n`; + await gmail( + correoAlumno.subject, + servicios[i].correo, + correoAlumno.msj + ); + await gmail( + correoResponsable.subject, + servicios[i].Programa.Usuario.usuario, + correoResponsable.msj + ); + } else if (fechaFinDate - now.dayOfYear() <= -1) { + mensaje += `El servicio con id ${servicios[i].idServicio} del alumno ${servicios[i].Usuario.usuario} con id ${servicios[i].Usuario.idUsuario} paso al status 4\n\n`; + await Servicio.update( + { idStatus: 4 }, + { where: { idServicio: servicios[i].idServicio } } + ); + } } - } - await gmail('Reporte función diario', 'lemuel@acatlan.unam.mx', mensaje); + return gmail('Reporte función diario', 'lemuel@acatlan.unam.mx', mensaje); + }); }; diario();