diff --git a/README.md b/README.md index e20aba7..1a0864d 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,3 @@ # Please download from [releases](https://github.com/eartharoid/DiscordTickets/releases) or [v2 branch](https://github.com/eartharoid/DiscordTickets/tree/v2) - master branch is currently a work in progress https://discord.com/oauth2/authorize?permissions=8&scope=applications.commands%20bot&client_id=... - -# DiscordTickets - -[![Run on Repl.it](https://repl.it/badge/github/eartharoid/DiscordTickets)](https://repl.it/github/eartharoid/DiscordTickets) [![GitHub issues](https://img.shields.io/github/issues/eartharoid/DiscordTickets?style=flat-square)](https://github.com/eartharoid/DiscordTickets/issues) [![GitHub stars](https://img.shields.io/github/stars/eartharoid/DiscordTickets?style=flat-square)](https://github.com/eartharoid/DiscordTickets/stargazers) [![GitHub forks](https://img.shields.io/github/forks/eartharoid/DiscordTickets?style=flat-square)](https://github.com/eartharoid/DiscordTickets/network) [![GitHub license](https://img.shields.io/github/license/eartharoid/DiscordTickets?style=flat-square)](https://github.com/eartharoid/DiscordTickets/blob/master/LICENSE) ![Codacy grade](https://img.shields.io/codacy/grade/14e6851c85444424b75b8bc3f93e93db?logo=codacy&style=flat-square) [![Discord support server](https://discordapp.com/api/guilds/451745464480432129/embed.png?style=shield)](https://discord.gg/pXc9vyC) - -DiscordTickets is a Discord bot for managing support ticket channels, to allow you and your team to provide better and quicker assistance to your members/customers. It is a free, open-source, and self-hosted alternative to [Ticket Tool](https://tickettool.xyz/) and [TicketsBot](https://ticketsbot.net/) premium/whitelabel plans. - -## Features - -- Highly customisable -- Ticket "panel" / "widget" (react to embed to create ticket) -- Simple commands -- Supports multiple databases: SQLite (easy, default), MySQL (recommend) storage, MariaDB, PostgreSQL and Microsoft SQL Server -- Most (all of the best) features of the premium bots, for free -- Self-hosted with your bot application, your logo and guild name -- Optional express.js server for web archives: [DiscordTickets-Portal](https://github.com/eartharoid/DiscordTickets-Portal/) - -## Screenshot - -*The mention and embed text are customisable. The images is randomly selected and can be changed or disabled.* -![Screenshot](https://i.imgur.com/Y1uCqJJ.gif) - -## Instructions - -For installation, configuration, usage, and other information, **go to the [wiki](https://github.com/Eartharoid/DiscordTickets/wiki).** - -Basic installation support will be provided on Discord, however if you really don't know what you're doing, you can purchase the [premium support setup service](https://ko-fi.com/s/34ccccfbd6) and I will install the bot and portal (archives web server) for you. - -## Support - -**[Go to the wiki](https://github.com/Eartharoid/DiscordTickets/wiki)**, or ask for help in [#support](https://discordapp.com/channels/451745464480432129/475351519516950548) on [Discord](https://discord.gg/pXc9vyC). - -[![Discord](https://discordapp.com/api/guilds/451745464480432129/widget.png?style=banner4)](https://discord.gg/pXc9vyC) - -## Donate - -[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/eartharoid) - ---- - -
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index f2d712a..e161dbe 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -21,4 +21,75 @@ a code:hover { color: white !important; /* text-decoration: underline; */ font-weight: bold; +} + +footer.sponsorship { + text-align: center +} + +footer.sponsorship hr { + display: inline-block; + width: 1.6rem; + margin: 0 .7rem; + vertical-align: middle; + border-bottom: 2px solid var(--md-default-fg-color--lighter) +} + +footer.sponsorship:hover hr { + border-color: var(--md-accent-fg-color) +} + +footer.sponsorship:not(:hover) .twemoji.heart-throb-hover svg { + color: var(--md-default-fg-color--lighter) !important +} + +.twemoji.heart-throb svg, +.twemoji.heart-throb-hover svg { + position: relative; + color: var(--md-heart); + animation: pulse 1.5s ease infinite +} + +@keyframes pulse { + 0% { + transform: scale(1) + } + + 40% { + color: var(--md-heart-big); + transform: scale(1.3) + } + + 50% { + transform: scale(1.2) + } + + 60% { + color: var(--md-heart-big); + transform: scale(1.3) + } + + 100% { + transform: scale(1) + } +} + +footer.sponsorship { + text-align: center +} + +footer.sponsorship hr { + display: inline-block; + width: 1.6rem; + margin: 0 .7rem; + vertical-align: middle; + border-bottom: 2px solid var(--md-default-fg-color--lighter) +} + +footer.sponsorship:hover hr { + border-color: var(--md-accent-fg-color) +} + +footer.sponsorship:not(:hover) .twemoji.heart-throb-hover svg { + color: var(--md-default-fg-color--lighter) !important } \ No newline at end of file diff --git a/package.json b/package.json index 3346ebd..4d5be2a 100644 --- a/package.json +++ b/package.json @@ -34,21 +34,26 @@ "keyv": "^4.0.3", "leekslazylogger": "^2.0.7", "node-fetch": "^2.6.1", + "sequelize": "^6.5.0", "terminal-link": "^2.1.1" }, + "devDependencies": { + "eslint": "^7.20.0", + "mariadb": "^2.5.2", + "mysql2": "^2.2.5", + "nodemon": "^2.0.7", + "pg": "^8.5.1", + "pg-hstore": "^2.3.3", + "tedious": "^11.0.3" + }, "optionalDependencies": { - "@keyv/sqlite": "^2.0.2" + "sqlite3": "^5.0.2" }, "peerDependencies": { - "@keyv/mongo": "^1.1.0", - "@keyv/mysql": "^1.1.4", - "@keyv/postgres": "^1.0.16" - }, - "devDependencies": { - "@keyv/mongo": "^1.1.0", - "@keyv/mysql": "^1.1.4", - "@keyv/postgres": "^1.0.16", - "eslint": "^7.20.0", - "nodemon": "^2.0.7" + "mariadb": "^2.5.2", + "mysql2": "^2.2.5", + "pg": "^8.5.1", + "pg-hstore": "^2.3.3", + "tedious": "^11.0.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d765ddd..5eacdf2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,17 +5,65 @@ dependencies: keyv: 4.0.3 leekslazylogger: 2.0.7 node-fetch: 2.6.1 + sequelize: 6.5.0_fb66e8c649bde1be622cc06164c9e22d terminal-link: 2.1.1 devDependencies: - '@keyv/mongo': 1.1.0 - '@keyv/mysql': 1.1.4 - '@keyv/postgres': 1.0.16 eslint: 7.20.0 + mariadb: 2.5.2 + mysql2: 2.2.5 nodemon: 2.0.7 + pg: 8.5.1 + pg-hstore: 2.3.3 + tedious: 11.0.3 lockfileVersion: 5.2 optionalDependencies: - '@keyv/sqlite': 2.0.2 + sqlite3: 5.0.2 packages: + /@azure/abort-controller/1.0.2: + dependencies: + tslib: 2.1.0 + dev: true + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-XUyTo+bcyxHEf+jlN2MXA7YU9nxVehaubngHV1MIZZaqYmZqykkoeAz/JMMEeR7t3TcyDwbFa3Zw8BZywmIx4g== + /@azure/core-auth/1.2.0: + dependencies: + '@azure/abort-controller': 1.0.2 + tslib: 2.1.0 + dev: true + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-KUl+Nwn/Sm6Lw5d3U90m1jZfNSL087SPcqHLxwn2T6PupNKmcgsEbDjHB25gDvHO4h7pBsTlrdJAY7dz+Qk8GA== + /@azure/ms-rest-azure-env/2.0.0: + dev: true + resolution: + integrity: sha512-dG76W7ElfLi+fbTjnZVGj+M9e0BIEJmRxU6fHaUQ12bZBe8EJKYb2GV50YWNaP2uJiVQ5+7nXEVj1VN1UQtaEw== + /@azure/ms-rest-js/2.2.3: + dependencies: + '@azure/core-auth': 1.2.0 + '@types/node-fetch': 2.5.8 + '@types/tunnel': 0.0.1 + abort-controller: 3.0.0 + form-data: 2.5.1 + node-fetch: 2.6.1 + tough-cookie: 3.0.1 + tslib: 1.14.1 + tunnel: 0.0.6 + uuid: 3.4.0 + xml2js: 0.4.23 + dev: true + resolution: + integrity: sha512-sXOhOu/37Tr8428f32Jwuwga975Xw64pYg1UeUwOBMhkNgtn5vUuNRa3fhmem+I6f8EKoi6hOsYDFlaHeZ52jA== + /@azure/ms-rest-nodeauth/3.0.6: + dependencies: + '@azure/ms-rest-azure-env': 2.0.0 + '@azure/ms-rest-js': 2.2.3 + adal-node: 0.1.28 + dev: true + resolution: + integrity: sha512-2twuzsXHdKMzEFI2+Sr82o6yS4ppNGZceYwil8PFo+rJxOZIoBm9e0//YC+dKilV/3F+6K/HuW8LdskDrJEQWA== /@babel/code-frame/7.12.11: dependencies: '@babel/highlight': 7.12.13 @@ -73,41 +121,10 @@ packages: node: ^10.12.0 || >=12.0.0 resolution: integrity: sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== - /@keyv/mongo/1.1.0: - dependencies: - mongojs: 2.5.0 - pify: 3.0.0 + /@js-joda/core/3.2.0: dev: true resolution: - integrity: sha512-SoILHI5E4TEZOE52UatgkpYBLxkSInvfVD0VMtgdsGFiotDckgV3d+QEHc+0arLhZV8gvUWrXxXQsKhZbEBnSg== - /@keyv/mysql/1.1.4: - dependencies: - '@keyv/sql': 1.1.2 - mysql2: 1.5.2 - dev: true - resolution: - integrity: sha512-eFR75GiB+lS/I9+w18382Tg5mXhLme6jICR7f57zP2WVFrGshnq05a4inAO4dz9riyvw99w78aSL7YPIRjCIvA== - /@keyv/postgres/1.0.16: - dependencies: - '@keyv/sql': 1.1.2 - pg: 7.4.1 - dev: true - resolution: - integrity: sha512-gmradhx47OwpZtcHcsEgQoOcTS562f7XjBCacVNaFQqeSeKymeV5UAOiwQIYREo7oOSB9WPGMc/1YV+lnMDemA== - /@keyv/sql/1.1.2: - dependencies: - sql: 0.78.0 - resolution: - integrity: sha1-HdhKXFrSOE34k08N3+IKuB3Cp10= - /@keyv/sqlite/2.0.2: - dependencies: - '@keyv/sql': 1.1.2 - pify: 3.0.0 - sqlite3: 4.2.0 - dev: false - optional: true - resolution: - integrity: sha512-vVaAOK/oCNCzNyB8AjiozAuJ0MqXt9uLsJ0oyQIEEdVw61HHOFiyjdYOGVkxHkgXDoJGF7g6T5ekh5JpdYFz5w== + integrity: sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg== /@sindresorhus/is/0.14.0: dev: true engines: @@ -122,13 +139,36 @@ packages: node: '>=6' resolution: integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + /@types/geojson/7946.0.7: + dev: true + resolution: + integrity: sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== + /@types/node-fetch/2.5.8: + dependencies: + '@types/node': 14.14.28 + form-data: 3.0.1 + dev: true + resolution: + integrity: sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw== + /@types/node/14.14.28: + resolution: + integrity: sha512-lg55ArB+ZiHHbBBttLpzD07akz0QPrZgUODNakeC09i62dnrywr9mFErHuaPlB6I7z+sEbK+IYmplahvplCj2g== + /@types/node/8.10.66: + dev: true + resolution: + integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + /@types/tunnel/0.0.1: + dependencies: + '@types/node': 14.14.28 + dev: true + resolution: + integrity: sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== /abbrev/1.1.1: resolution: integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== /abort-controller/3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false engines: node: '>=6.5' resolution: @@ -148,13 +188,44 @@ packages: hasBin: true resolution: integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + /adal-node/0.1.28: + dependencies: + '@types/node': 8.10.66 + async: 3.2.0 + date-utils: 1.2.21 + jws: 3.2.2 + request: 2.88.2 + underscore: 1.12.0 + uuid: 3.4.0 + xmldom: 0.4.0 + xpath.js: 1.1.0 + dev: true + engines: + node: '>= 0.6.15' + resolution: + integrity: sha1-RoxLs+u9lrEnBmn0ucuk4AZepIU= + /adal-node/0.2.2: + dependencies: + '@types/node': 8.10.66 + async: 2.6.3 + axios: 0.21.1 + date-utils: 1.2.21 + jws: 3.2.2 + underscore: 1.12.0 + uuid: 3.4.0 + xmldom: 0.4.0 + xpath.js: 1.1.0 + dev: true + engines: + node: '>= 0.6.15' + resolution: + integrity: sha512-luzQ9cXOjUlZoCiWeYbyR+nHwScSrPTDTbOInFphQs/PnwNz6wAIVkbsHEXtvYBnjLctByTTI8ccfpGX100oRQ== /ajv/6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true resolution: integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== /ajv/7.1.0: @@ -221,10 +292,10 @@ packages: node: '>=8' resolution: integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - /ansicolors/0.2.1: - dev: true + /any-promise/1.3.0: + dev: false resolution: - integrity: sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8= + integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8= /anymatch/3.1.1: dependencies: normalize-path: 3.0.0 @@ -253,25 +324,82 @@ packages: dev: true resolution: integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + /asn1/0.2.4: + dependencies: + safer-buffer: 2.1.2 + resolution: + integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + /assert-plus/1.0.0: + engines: + node: '>=0.8' + resolution: + integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= /astral-regex/2.0.0: dev: true engines: node: '>=8' resolution: integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + /async/2.6.3: + dependencies: + lodash: 4.17.20 + dev: true + resolution: + integrity: sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + /async/3.2.0: + dev: true + resolution: + integrity: sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== /asynckit/0.4.0: - dev: false resolution: integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k= + /aws-sign2/0.7.0: + resolution: + integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + /aws4/1.11.0: + resolution: + integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + /axios/0.21.1: + dependencies: + follow-redirects: 1.13.2 + dev: true + resolution: + integrity: sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== /balanced-match/1.0.0: resolution: integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + /base64-js/1.5.1: + dev: true + resolution: + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + /bcrypt-pbkdf/1.0.2: + dependencies: + tweetnacl: 0.14.5 + resolution: + integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= /binary-extensions/2.2.0: dev: true engines: node: '>=8' resolution: integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + /bl/4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + resolution: + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + /block-stream/0.0.9: + dependencies: + inherits: 2.0.4 + dev: false + engines: + node: 0.4 || >=0.5.8 + optional: true + resolution: + integrity: sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= /boxen/4.2.0: dependencies: ansi-align: 3.0.0 @@ -301,21 +429,23 @@ packages: node: '>=8' resolution: integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - /bson/1.0.9: - deprecated: Fixed a critical issue with BSON serialization documented in CVE-2019-2391, see https://bit.ly/2KcpXdo for more details + /buffer-equal-constant-time/1.0.1: + dev: true + resolution: + integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= + /buffer-writer/2.0.0: dev: true engines: - node: '>=0.6.19' + node: '>=4' resolution: - integrity: sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg== - /buffer-shims/1.0.0: + integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== + /buffer/5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 dev: true resolution: - integrity: sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= - /buffer-writer/1.0.1: - dev: true - resolution: - integrity: sha1-Iqk2kB4wKa/NdUfrRIfOtpejvwg= + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== /cacheable-request/6.1.0: dependencies: clone-response: 1.0.2 @@ -342,14 +472,9 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /cardinal/1.0.0: - dependencies: - ansicolors: 0.2.1 - redeyed: 1.0.1 - dev: true - hasBin: true + /caseless/0.12.0: resolution: - integrity: sha1-UOIcGwqjdyn5N33vGWtanOyTLuk= + integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= /chalk/2.4.2: dependencies: ansi-styles: 3.2.1 @@ -447,7 +572,6 @@ packages: /combined-stream/1.0.8: dependencies: delayed-stream: 1.0.0 - dev: false engines: node: '>= 0.8' resolution: @@ -492,6 +616,19 @@ packages: node: '>=8' resolution: integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + /dashdash/1.14.1: + dependencies: + assert-plus: 1.0.0 + engines: + node: '>=0.10' + resolution: + integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + /date-utils/1.2.21: + dev: true + engines: + node: '>0.4.0' + resolution: + integrity: sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q= /debug/2.6.9: dependencies: ms: 2.0.0 @@ -506,7 +643,6 @@ packages: /debug/4.3.1: dependencies: ms: 2.1.2 - dev: true engines: node: '>=6.0' peerDependencies: @@ -538,7 +674,6 @@ packages: resolution: integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== /delayed-stream/1.0.0: - dev: false engines: node: '>=0.4.0' resolution: @@ -554,6 +689,12 @@ packages: node: '>=0.10' resolution: integrity: sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== + /depd/2.0.0: + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== /detect-libc/1.0.3: dev: false engines: @@ -599,14 +740,26 @@ packages: node: '>=8' resolution: integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + /dottie/2.0.2: + dev: false + resolution: + integrity: sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg== /duplexer3/0.1.4: dev: true resolution: integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - /each-series/1.0.0: + /ecc-jsbn/0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + resolution: + integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + /ecdsa-sig-formatter/1.0.11: + dependencies: + safe-buffer: 5.2.1 dev: true resolution: - integrity: sha1-+Ibmxm39sl7x/nNWQUbuXLR4r8s= + integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== /emoji-regex/7.0.3: dev: true resolution: @@ -629,10 +782,6 @@ packages: node: '>=8.6' resolution: integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - /es6-promise/3.2.1: - dev: true - resolution: - integrity: sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q= /escape-goat/2.1.1: dev: true engines: @@ -729,13 +878,6 @@ packages: node: ^10.12.0 || >=12.0.0 resolution: integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - /esprima/3.0.0: - dev: true - engines: - node: '>=0.10.0' - hasBin: true - resolution: - integrity: sha1-U88kes2ncxPlUcOqLnM0LT+099k= /esprima/4.0.1: dev: true engines: @@ -778,17 +920,22 @@ packages: resolution: integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== /event-target-shim/5.0.1: - dev: false engines: node: '>=6' resolution: integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + /extend/3.0.2: + resolution: + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + /extsprintf/1.3.0: + engines: + '0': node >=0.6.0 + resolution: + integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= /fast-deep-equal/3.1.3: - dev: true resolution: integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== /fast-json-stable-stringify/2.1.0: - dev: true resolution: integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== /fast-levenshtein/2.0.6: @@ -824,6 +971,49 @@ packages: dev: true resolution: integrity: sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + /follow-redirects/1.13.2: + dev: true + engines: + node: '>=4.0' + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + resolution: + integrity: sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== + /forever-agent/0.6.1: + resolution: + integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + /form-data/2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.28 + engines: + node: '>= 0.12' + resolution: + integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + /form-data/2.5.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.28 + dev: true + engines: + node: '>= 0.12' + resolution: + integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + /form-data/3.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.28 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== /fs-minipass/1.2.7: dependencies: minipass: 2.9.0 @@ -843,6 +1033,18 @@ packages: - darwin resolution: integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + /fstream/1.0.12: + dependencies: + graceful-fs: 4.2.6 + inherits: 2.0.4 + mkdirp: 0.5.5 + rimraf: 2.7.1 + dev: false + engines: + node: '>=0.6' + optional: true + resolution: + integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== /functional-red-black-tree/1.0.1: dev: true resolution: @@ -883,6 +1085,11 @@ packages: node: '>=8' resolution: integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + /getpass/0.1.7: + dependencies: + assert-plus: 1.0.0 + resolution: + integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= /glob-parent/5.1.1: dependencies: is-glob: 4.0.1 @@ -936,9 +1143,22 @@ packages: resolution: integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== /graceful-fs/4.2.6: - dev: true resolution: integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + /har-schema/2.0.0: + engines: + node: '>=4' + resolution: + integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + /har-validator/5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + deprecated: this library is no longer supported + engines: + node: '>=6' + resolution: + integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== /has-flag/3.0.0: dev: true engines: @@ -965,13 +1185,37 @@ packages: dev: true resolution: integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + /http-signature/1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.1 + sshpk: 1.16.1 + engines: + node: '>=0.8' + npm: '>=1.3.7' + resolution: + integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= /iconv-lite/0.4.24: dependencies: safer-buffer: 2.1.2 + dev: false + engines: + node: '>=0.10.0' + optional: true + resolution: + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + /iconv-lite/0.6.2: + dependencies: + safer-buffer: 2.1.2 + dev: true engines: node: '>=0.10.0' resolution: - integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + integrity: sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + /ieee754/1.2.1: + dev: true + resolution: + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== /ignore-by-default/1.0.1: dev: true resolution: @@ -1010,6 +1254,12 @@ packages: node: '>=0.8.19' resolution: integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o= + /inflection/1.12.0: + dev: false + engines: + '0': node >= 0.4.0 + resolution: + integrity: sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= /inflight/1.0.6: dependencies: once: 1.4.0 @@ -1026,6 +1276,12 @@ packages: /ini/1.3.8: resolution: integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + /ip-regex/2.1.0: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= /is-binary-path/2.1.0: dependencies: binary-extensions: 2.2.0 @@ -1114,7 +1370,6 @@ packages: resolution: integrity: sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= /is-typedarray/1.0.0: - dev: true resolution: integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= /is-yarn-global/0.3.0: @@ -1122,18 +1377,16 @@ packages: resolution: integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== /isarray/1.0.0: + dev: false + optional: true resolution: integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= /isexe/2.0.0: - dev: true resolution: integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - /js-string-escape/1.0.1: - dev: true - engines: - node: '>= 0.8' + /isstream/0.1.2: resolution: - integrity: sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= + integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= /js-tokens/4.0.0: dev: true resolution: @@ -1146,6 +1399,13 @@ packages: hasBin: true resolution: integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + /jsbi/3.1.4: + dev: true + resolution: + integrity: sha512-52QRRFSsi9impURE8ZUbzAMCLjPm4THO7H2fcuIvaaeFTbSysvkodbQQXIVsNgq/ypDbq6dJiuGKL0vZ/i9hUg== + /jsbn/0.1.1: + resolution: + integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM= /json-buffer/3.0.0: dev: true resolution: @@ -1155,17 +1415,47 @@ packages: resolution: integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== /json-schema-traverse/0.4.1: - dev: true resolution: integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== /json-schema-traverse/1.0.0: dev: true resolution: integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + /json-schema/0.2.3: + resolution: + integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= /json-stable-stringify-without-jsonify/1.0.1: dev: true resolution: integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + /json-stringify-safe/5.0.1: + resolution: + integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + /jsprim/1.4.1: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.2.3 + verror: 1.10.0 + engines: + '0': node >=0.6.0 + resolution: + integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + /jwa/1.4.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: true + resolution: + integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + /jws/3.2.2: + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + dev: true + resolution: + integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== /keyv/3.1.0: dependencies: json-buffer: 3.0.0 @@ -1211,11 +1501,7 @@ packages: dev: false resolution: integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - /lodash/4.1.0: - resolution: - integrity: sha1-KZiUKD3gGp7vvt/0xLmwCmoubpY= /lodash/4.17.20: - dev: true resolution: integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== /long/4.0.0: @@ -1234,10 +1520,6 @@ packages: node: '>=8' resolution: integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - /lru-cache/2.5.0: - dev: true - resolution: - integrity: sha1-2COIrpyWC+y+oMc7uet5tsbOmus= /lru-cache/4.1.5: dependencies: pseudomap: 1.0.2 @@ -1248,7 +1530,6 @@ packages: /lru-cache/6.0.0: dependencies: yallist: 4.0.0 - dev: true engines: node: '>=10' resolution: @@ -1261,8 +1542,21 @@ packages: node: '>=8' resolution: integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + /mariadb/2.5.2: + dependencies: + '@types/geojson': 7946.0.7 + '@types/node': 14.14.28 + denque: 1.5.0 + iconv-lite: 0.6.2 + long: 4.0.0 + moment-timezone: 0.5.33 + please-upgrade-node: 3.2.0 + dev: true + engines: + node: '>= 10.13' + resolution: + integrity: sha512-SfaBl5/LiX2qJNNr7wCQvizVjtWxVm1CUWYKe+y4OMeyYMM6g0GhwX7/BbGtv/O3WthnGrM+Kj1imFnlescO0w== /mime-db/1.45.0: - dev: false engines: node: '>= 0.6' resolution: @@ -1270,7 +1564,6 @@ packages: /mime-types/2.1.28: dependencies: mime-db: 1.45.0 - dev: false engines: node: '>= 0.6' resolution: @@ -1312,77 +1605,51 @@ packages: optional: true resolution: integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - /mongodb-core/2.1.20: + /moment-timezone/0.5.33: dependencies: - bson: 1.0.9 - require_optional: 1.0.1 - dev: true + moment: 2.29.1 resolution: - integrity: sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ== - /mongodb/2.2.36: - dependencies: - es6-promise: 3.2.1 - mongodb-core: 2.1.20 - readable-stream: 2.2.7 - dev: true - engines: - node: '>=0.10.3' + integrity: sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== + /moment/2.29.1: resolution: - integrity: sha512-P2SBLQ8Z0PVx71ngoXwo12+FiSfbNfGOClAao03/bant5DgLNkOPAck5IaJcEk4gKlQhDEURzfR3xuBG1/B+IA== - /mongojs/2.5.0: - dependencies: - each-series: 1.0.0 - mongodb: 2.2.36 - once: 1.4.0 - parse-mongo-url: 1.1.1 - readable-stream: 2.3.7 - thunky: 1.1.0 - to-mongodb-core: 2.0.0 - xtend: 4.0.2 - dev: true - resolution: - integrity: sha512-VJ2WSZheiVI7aFFA+470cMQLNQE3phsVemj1f4Hr1FkQmP5T6h5qInrSlakEliG3WIig8urvCEk2ZOfZvzONxQ== + integrity: sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== /ms/2.0.0: dev: true resolution: integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= /ms/2.1.2: - dev: true resolution: integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== /ms/2.1.3: resolution: integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - /mysql2/1.5.2: + /mysql2/2.2.5: dependencies: - cardinal: 1.0.0 denque: 1.5.0 generate-function: 2.3.1 - iconv-lite: 0.4.24 + iconv-lite: 0.6.2 long: 4.0.0 - lru-cache: 4.1.5 - named-placeholders: 1.1.1 - object-assign: 4.1.1 - readable-stream: 2.3.2 - safe-buffer: 5.2.1 + lru-cache: 6.0.0 + named-placeholders: 1.1.2 seq-queue: 0.0.5 sqlstring: 2.3.2 dev: true engines: - node: '>= 4.0' + node: '>= 8.0' resolution: - integrity: sha512-976p3FxXdNMRRiF6Qe/FCOwaUYw3KXVJiIYu5iE5shM7ggIASgF6G/9gd9rhpBqP8V6MVa3KQJ6Ao1xBeGBljw== - /named-placeholders/1.1.1: + integrity: sha512-XRqPNxcZTpmFdXbJqb+/CtYVLCx14x1RTeNMD4954L331APu75IC74GDqnZMEt1kwaXy6TySo55rF2F3YJS78g== + /named-placeholders/1.1.2: dependencies: - lru-cache: 2.5.0 + lru-cache: 4.1.5 + dev: true + engines: + node: '>=6.0.0' + resolution: + integrity: sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA== + /native-duplexpair/1.0.0: dev: true resolution: - integrity: sha1-O3oNJiA910s6nfTJz7gnsvuQfmQ= - /nan/2.14.2: - dev: false - optional: true - resolution: - integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + integrity: sha1-eJkHjmS/PIo9cyYBs9QP8F21j6A= /natural-compare/1.4.0: dev: true resolution: @@ -1399,12 +1666,41 @@ packages: optional: true resolution: integrity: sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== - /node-fetch/2.6.1: + /node-abort-controller/1.1.0: + dev: true + resolution: + integrity: sha512-dEYmUqjtbivotqjraOe8UvhT/poFfog1BQRNsZm/MSEDDESk2cQ1tvD8kGyuN07TM/zoW+n42odL8zTeJupYdQ== + /node-addon-api/3.1.0: dev: false + optional: true + resolution: + integrity: sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== + /node-fetch/2.6.1: engines: node: 4.x || >=6.0.0 resolution: integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + /node-gyp/3.8.0: + dependencies: + fstream: 1.0.12 + glob: 7.1.6 + graceful-fs: 4.2.6 + mkdirp: 0.5.5 + nopt: 3.0.6 + npmlog: 4.1.2 + osenv: 0.1.5 + request: 2.88.2 + rimraf: 2.7.1 + semver: 5.3.0 + tar: 2.2.2 + which: 1.3.1 + dev: false + engines: + node: '>= 0.8.0' + hasBin: true + optional: true + resolution: + integrity: sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== /node-pre-gyp/0.11.0: dependencies: detect-libc: 1.0.3 @@ -1449,6 +1745,14 @@ packages: hasBin: true resolution: integrity: sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= + /nopt/3.0.6: + dependencies: + abbrev: 1.1.1 + dev: false + hasBin: true + optional: true + resolution: + integrity: sha1-xkZdvwirzU2zWTF/eaxopkayj/k= /nopt/4.0.3: dependencies: abbrev: 1.1.1 @@ -1508,9 +1812,14 @@ packages: optional: true resolution: integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + /oauth-sign/0.9.0: + resolution: + integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== /object-assign/4.1.1: + dev: false engines: node: '>=0.10.0' + optional: true resolution: integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= /once/1.4.0: @@ -1570,10 +1879,10 @@ packages: node: '>=8' resolution: integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - /packet-reader/0.3.1: + /packet-reader/1.0.0: dev: true resolution: - integrity: sha1-zWLmCvjX/qinBexP+ZCHHEaHHyc= + integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== /parent-module/1.0.1: dependencies: callsites: 3.1.0 @@ -1582,10 +1891,6 @@ packages: node: '>=6' resolution: integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - /parse-mongo-url/1.1.1: - dev: true - resolution: - integrity: sha1-ZiON9fjnwMjKTNlw1KtqE3PrdbU= /path-is-absolute/1.0.1: engines: node: '>=0.10.0' @@ -1597,42 +1902,70 @@ packages: node: '>=8' resolution: integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - /pg-connection-string/0.1.3: + /performance-now/2.1.0: + resolution: + integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + /pg-connection-string/2.4.0: dev: true resolution: - integrity: sha1-2hhHsglA5C7hSSvq9l1J2RskXfc= - /pg-pool/2.0.10_pg@7.4.1: + integrity: sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ== + /pg-hstore/2.3.3: dependencies: - pg: 7.4.1 + underscore: 1.12.0 + dev: true + engines: + node: '>= 0.8.x' + resolution: + integrity: sha512-qpeTpdkguFgfdoidtfeTho1Q1zPVPbtMHgs8eQ+Aan05iLmIs3Z3oo5DOZRclPGoQ4i68I1kCtQSJSa7i0ZVYg== + /pg-int8/1.0.1: + dev: true + engines: + node: '>=4.0.0' + resolution: + integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + /pg-pool/3.2.2_pg@8.5.1: + dependencies: + pg: 8.5.1 dev: true peerDependencies: - pg: '>5.0' + pg: '>=8.0' resolution: - integrity: sha512-qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg== - /pg-types/1.12.1: + integrity: sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA== + /pg-protocol/1.4.0: + dev: true + resolution: + integrity: sha512-El+aXWcwG/8wuFICMQjM5ZSAm6OWiJicFdNYo+VY3QP+8vI4SvLIWVe51PppTzMhikUJR+PsyIFKqfdXPz/yxA== + /pg-types/2.2.0: dependencies: - postgres-array: 1.0.3 + pg-int8: 1.0.1 + postgres-array: 2.0.0 postgres-bytea: 1.0.0 postgres-date: 1.0.7 postgres-interval: 1.2.0 dev: true + engines: + node: '>=4' resolution: - integrity: sha1-1kCH45A7WP+q0nnnWVxSIIoUw9I= - /pg/7.4.1: + integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + /pg/8.5.1: dependencies: - buffer-writer: 1.0.1 - js-string-escape: 1.0.1 - packet-reader: 0.3.1 - pg-connection-string: 0.1.3 - pg-pool: 2.0.10_pg@7.4.1 - pg-types: 1.12.1 + buffer-writer: 2.0.0 + packet-reader: 1.0.0 + pg-connection-string: 2.4.0 + pg-pool: 3.2.2_pg@8.5.1 + pg-protocol: 1.4.0 + pg-types: 2.2.0 pgpass: 1.0.4 - semver: 4.3.2 dev: true engines: - node: '>= 4.5.0' + node: '>= 8.0.0' + peerDependencies: + pg-native: '>=2.0.0' + peerDependenciesMeta: + pg-native: + optional: true resolution: - integrity: sha512-Pi5qYuXro5PAD9xXx8h7bFtmHgAQEG6/SCNyi7gS3rvb/ZQYDmxKchfB0zYtiSJNWq9iXTsYsHjrM+21eBcN1A== + integrity: sha512-9wm3yX9lCfjvA98ybCyw2pADUivyNWT/yIP4ZcDVpMN0og70BUWYEGXPCTAQdGTAqnytfRADb7NERrY1qxhIqw== /pgpass/1.0.4: dependencies: split2: 3.2.2 @@ -1645,17 +1978,18 @@ packages: node: '>=8.6' resolution: integrity: sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - /pify/3.0.0: + /please-upgrade-node/3.2.0: + dependencies: + semver-compare: 1.0.0 + dev: true + resolution: + integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + /postgres-array/2.0.0: + dev: true engines: node: '>=4' resolution: - integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - /postgres-array/1.0.3: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ== + integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== /postgres-bytea/1.0.0: dev: true engines: @@ -1706,11 +2040,9 @@ packages: optional: true resolution: integrity: sha512-I1Ys8HA+9aSKQ2jbkO3r6p9Z+tMpSssGhucgxXvc0sSpOi0kK550rDQnKtAS7Z5TzPQeLJdBmK2Br8x+5137lg== - /process-nextick-args/1.0.7: - dev: true - resolution: - integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= /process-nextick-args/2.0.1: + dev: false + optional: true resolution: integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== /progress/2.0.3: @@ -1723,6 +2055,9 @@ packages: dev: true resolution: integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + /psl/1.8.0: + resolution: + integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== /pstree.remy/1.1.8: dev: true resolution: @@ -1735,7 +2070,6 @@ packages: resolution: integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== /punycode/2.1.1: - dev: true engines: node: '>=6' resolution: @@ -1748,6 +2082,11 @@ packages: node: '>=8' resolution: integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + /qs/6.5.2: + engines: + node: '>=0.6' + resolution: + integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== /rc/1.2.8: dependencies: deep-extend: 0.6.0 @@ -1757,30 +2096,6 @@ packages: hasBin: true resolution: integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - /readable-stream/2.2.7: - dependencies: - buffer-shims: 1.0.0 - core-util-is: 1.0.2 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 1.0.7 - string_decoder: 1.0.3 - util-deprecate: 1.0.2 - dev: true - resolution: - integrity: sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE= - /readable-stream/2.3.2: - dependencies: - core-util-is: 1.0.2 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 1.0.7 - safe-buffer: 5.1.2 - string_decoder: 1.0.3 - util-deprecate: 1.0.2 - dev: true - resolution: - integrity: sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00= /readable-stream/2.3.7: dependencies: core-util-is: 1.0.2 @@ -1790,6 +2105,8 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 + dev: false + optional: true resolution: integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== /readable-stream/3.6.0: @@ -1810,12 +2127,6 @@ packages: node: '>=8.10.0' resolution: integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - /redeyed/1.0.1: - dependencies: - esprima: 3.0.0 - dev: true - resolution: - integrity: sha1-6WwZO0DAgWsArshCaY5hGF5VSYo= /regexpp/3.1.0: dev: true engines: @@ -1838,25 +2149,39 @@ packages: node: '>=8' resolution: integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + /request/2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.28 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.2 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + engines: + node: '>= 6' + resolution: + integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== /require-from-string/2.0.2: dev: true engines: node: '>=0.10.0' resolution: integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - /require_optional/1.0.1: - dependencies: - resolve-from: 2.0.0 - semver: 5.7.1 - dev: true - resolution: - integrity: sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== - /resolve-from/2.0.0: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= /resolve-from/4.0.0: dev: true engines: @@ -1869,6 +2194,12 @@ packages: dev: true resolution: integrity: sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + /retry-as-promised/3.2.0: + dependencies: + any-promise: 1.3.0 + dev: false + resolution: + integrity: sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg== /rimraf/2.7.1: dependencies: glob: 7.1.6 @@ -1885,6 +2216,8 @@ packages: resolution: integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== /safe-buffer/5.1.2: + dev: false + optional: true resolution: integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== /safe-buffer/5.2.1: @@ -1894,10 +2227,12 @@ packages: resolution: integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== /sax/1.2.4: - dev: false - optional: true resolution: integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + /semver-compare/1.0.0: + dev: true + resolution: + integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w= /semver-diff/3.1.1: dependencies: semver: 6.3.0 @@ -1906,11 +2241,12 @@ packages: node: '>=8' resolution: integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - /semver/4.3.2: - dev: true + /semver/5.3.0: + dev: false hasBin: true + optional: true resolution: - integrity: sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= + integrity: sha1-myzl094C0XxgEq0yaqa00M9U+U8= /semver/5.7.1: hasBin: true resolution: @@ -1923,7 +2259,6 @@ packages: /semver/7.3.4: dependencies: lru-cache: 6.0.0 - dev: true engines: node: '>=10' hasBin: true @@ -1933,6 +2268,58 @@ packages: dev: true resolution: integrity: sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4= + /sequelize-pool/6.1.0: + dev: false + engines: + node: '>= 10.0.0' + resolution: + integrity: sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg== + /sequelize/6.5.0_fb66e8c649bde1be622cc06164c9e22d: + dependencies: + debug: 4.3.1 + dottie: 2.0.2 + inflection: 1.12.0 + lodash: 4.17.20 + mariadb: 2.5.2 + moment: 2.29.1 + moment-timezone: 0.5.33 + mysql2: 2.2.5 + pg: 8.5.1 + pg-hstore: 2.3.3 + retry-as-promised: 3.2.0 + semver: 7.3.4 + sequelize-pool: 6.1.0 + sqlite3: 5.0.2 + tedious: 11.0.3 + toposort-class: 1.0.1 + uuid: 8.3.2 + validator: 10.11.0 + wkx: 0.5.0 + dev: false + engines: + node: '>=10.0.0' + peerDependencies: + mariadb: '*' + mysql2: '*' + pg: '*' + pg-hstore: '*' + sqlite3: '*' + tedious: '*' + peerDependenciesMeta: + mariadb: + optional: true + mysql2: + optional: true + pg: + optional: true + pg-hstore: + optional: true + sqlite3: + optional: true + tedious: + optional: true + resolution: + integrity: sha512-owBt8fnzVy8E1OvyCyfCdVk7OOLyPVrBCMEf+CvRReC5oCyo+UqeXCtwaex9L6LM9ifZ1i3TG3sFeM5MgLK0CQ== /set-blocking/2.0.0: dev: false optional: true @@ -1969,9 +2356,6 @@ packages: node: '>=10' resolution: integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - /sliced/0.0.5: - resolution: - integrity: sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8= /split2/3.2.2: dependencies: readable-stream: 3.6.0 @@ -1982,27 +2366,46 @@ packages: dev: true resolution: integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - /sql/0.78.0: - dependencies: - lodash: 4.1.0 - sliced: 0.0.5 + /sprintf-js/1.1.2: + dev: true resolution: - integrity: sha1-iUWF1WER27F2h0Gk2ZNcgshZWUk= - /sqlite3/4.2.0: + integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + /sqlite3/5.0.2: dependencies: - nan: 2.14.2 + node-addon-api: 3.1.0 node-pre-gyp: 0.11.0 dev: false optional: true + optionalDependencies: + node-gyp: 3.8.0 + peerDependenciesMeta: + node-gyp: + optional: true requiresBuild: true resolution: - integrity: sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg== + integrity: sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA== /sqlstring/2.3.2: dev: true engines: node: '>= 0.6' resolution: integrity: sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg== + /sshpk/1.16.1: + dependencies: + asn1: 0.2.4 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + engines: + node: '>=0.10.0' + hasBin: true + resolution: + integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== /string-width/1.0.2: dependencies: code-point-at: 1.1.0 @@ -2034,15 +2437,11 @@ packages: node: '>=8' resolution: integrity: sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - /string_decoder/1.0.3: - dependencies: - safe-buffer: 5.1.2 - dev: true - resolution: - integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== /string_decoder/1.1.1: dependencies: safe-buffer: 5.1.2 + dev: false + optional: true resolution: integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== /string_decoder/1.3.0: @@ -2122,6 +2521,15 @@ packages: node: '>=10.0.0' resolution: integrity: sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + /tar/2.2.2: + dependencies: + block-stream: 0.0.9 + fstream: 1.0.12 + inherits: 2.0.4 + dev: false + optional: true + resolution: + integrity: sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== /tar/4.4.13: dependencies: chownr: 1.1.4 @@ -2137,6 +2545,25 @@ packages: optional: true resolution: integrity: sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + /tedious/11.0.3: + dependencies: + '@azure/ms-rest-nodeauth': 3.0.6 + '@js-joda/core': 3.2.0 + adal-node: 0.2.2 + bl: 4.1.0 + depd: 2.0.0 + iconv-lite: 0.6.2 + jsbi: 3.1.4 + native-duplexpair: 1.0.0 + node-abort-controller: 1.1.0 + punycode: 2.1.1 + readable-stream: 3.6.0 + sprintf-js: 1.1.2 + dev: true + engines: + node: '>= 10' + resolution: + integrity: sha512-KoJlY8gFgSf1njhM7wD2po3R5y2tjEbp3lGo4R9uBt5M/ogf/AeTDH8caFDD+RrYqAxRbOmzBOjDNggBI7ERaw== /term-size/2.2.1: dev: true engines: @@ -2156,14 +2583,6 @@ packages: dev: true resolution: integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - /thunky/1.1.0: - dev: true - resolution: - integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - /to-mongodb-core/2.0.0: - dev: true - resolution: - integrity: sha1-NZbsdhOsmtO5ioncua77pWnNJ+s= /to-readable-stream/1.0.0: dev: true engines: @@ -2178,6 +2597,10 @@ packages: node: '>=8.0' resolution: integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + /toposort-class/1.0.1: + dev: false + resolution: + integrity: sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= /touch/3.1.0: dependencies: nopt: 1.0.10 @@ -2185,6 +2608,46 @@ packages: hasBin: true resolution: integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== + /tough-cookie/2.5.0: + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + engines: + node: '>=0.8' + resolution: + integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + /tough-cookie/3.0.1: + dependencies: + ip-regex: 2.1.0 + psl: 1.8.0 + punycode: 2.1.1 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + /tslib/1.14.1: + dev: true + resolution: + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + /tslib/2.1.0: + dev: true + resolution: + integrity: sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + /tunnel-agent/0.6.0: + dependencies: + safe-buffer: 5.2.1 + resolution: + integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + /tunnel/0.0.6: + dev: true + engines: + node: '>=0.6.11 <=0.7.0 || >=0.7.3' + resolution: + integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + /tweetnacl/0.14.5: + resolution: + integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= /tweetnacl/1.0.3: dev: false resolution: @@ -2221,6 +2684,10 @@ packages: dev: true resolution: integrity: sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== + /underscore/1.12.0: + dev: true + resolution: + integrity: sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ== /unique-string/2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -2252,7 +2719,6 @@ packages: /uri-js/4.4.1: dependencies: punycode: 2.1.1 - dev: true resolution: integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== /url-parse-lax/3.0.0: @@ -2266,10 +2732,42 @@ packages: /util-deprecate/1.0.2: resolution: integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + /uuid/3.4.0: + hasBin: true + resolution: + integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + /uuid/8.3.2: + dev: false + hasBin: true + resolution: + integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== /v8-compile-cache/2.2.0: dev: true resolution: integrity: sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + /validator/10.11.0: + dev: false + engines: + node: '>= 0.10' + resolution: + integrity: sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw== + /verror/1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + engines: + '0': node >=0.6.0 + resolution: + integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + /which/1.3.1: + dependencies: + isexe: 2.0.0 + dev: false + hasBin: true + optional: true + resolution: + integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== /which/2.0.2: dependencies: isexe: 2.0.0 @@ -2294,6 +2792,12 @@ packages: node: '>=8' resolution: integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + /wkx/0.5.0: + dependencies: + '@types/node': 14.14.28 + dev: false + resolution: + integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg== /word-wrap/1.2.3: dev: true engines: @@ -2332,6 +2836,33 @@ packages: node: '>=8' resolution: integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + /xml2js/0.4.23: + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + dev: true + engines: + node: '>=4.0.0' + resolution: + integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + /xmlbuilder/11.0.1: + dev: true + engines: + node: '>=4.0' + resolution: + integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + /xmldom/0.4.0: + dev: true + engines: + node: '>=10.0.0' + resolution: + integrity: sha512-2E93k08T30Ugs+34HBSTQLVtpi6mCddaY8uO+pMNk1pqSjV5vElzn4mmh6KLxN3hki8rNcHSYzILoh3TEWORvA== + /xpath.js/1.1.0: + dev: true + engines: + node: '>=0.4.0' + resolution: + integrity: sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ== /xtend/4.0.2: dev: true engines: @@ -2348,20 +2879,22 @@ packages: resolution: integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== /yallist/4.0.0: - dev: true resolution: integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== specifiers: '@eartharoid/i18n': ^0.0.1 - '@keyv/mongo': ^1.1.0 - '@keyv/mysql': ^1.1.4 - '@keyv/postgres': ^1.0.16 - '@keyv/sqlite': ^2.0.2 discord.js: ^12.5.1 dotenv: ^8.2.0 eslint: ^7.20.0 keyv: ^4.0.3 leekslazylogger: ^2.0.7 + mariadb: ^2.5.2 + mysql2: ^2.2.5 node-fetch: ^2.6.1 nodemon: ^2.0.7 + pg: ^8.5.1 + pg-hstore: ^2.3.3 + sequelize: ^6.5.0 + sqlite3: ^5.0.2 + tedious: ^11.0.3 terminal-link: ^2.1.1 diff --git a/src/database/dialects.js b/src/database/dialects.js new file mode 100644 index 0000000..0eb4f31 --- /dev/null +++ b/src/database/dialects.js @@ -0,0 +1,42 @@ +module.exports = { + sqlite: { + name: 'SQLite', + dialect: 'sqlite', + packages: ['sqlite3'], + }, + mysql: { + name: 'MySQL', + dialect: 'mysql', + packages: ['mysql2'] + }, + maria: { + name: 'MariaDB', + dialect: 'mariadb', + package: ['mariadb'] + }, + mariadb: { + name: 'MariaDB', + dialect: 'mariadb', + package: ['mariadb'] + }, + postgre: { + name: 'PostgreSQL', + dialect: 'postgres', + packages: ['pg', 'pg-hstore'] + }, + postgres: { + name: 'PostgreSQL', + dialect: 'postgres', + packages: ['pg', 'pg-hstore'] + }, + postgresql: { + name: 'PostgreSQL', + dialect: 'postgres', + packages: ['pg', 'pg-hstore'] + }, + microsoft: { + name: 'Microsoft SQL', + dialect: 'mssql', + packages: ['tedious'] + }, +}; \ No newline at end of file diff --git a/src/database/index.js b/src/database/index.js new file mode 100644 index 0000000..f22b477 --- /dev/null +++ b/src/database/index.js @@ -0,0 +1,126 @@ +const { + Sequelize, + DataTypes +} = require('sequelize'); +const { path } = require('../utils/fs'); +const config = require('../../user/config'); +const types = require('./dialects'); +const supported = Object.keys(types); + +module.exports = async (log) => { + + const { + DB_TYPE, + DB_HOST, + DB_USER, + DB_PASS, + DB_NAME + } = process.env; + + let type = (DB_TYPE || 'sqlite').toLowerCase(); + + if (!supported.includes(type)) { + log.report('Invalid database type'); + throw new Error(`DB_TYPE (${type}) is not a valid type`); + } + + try { + types[type].packages.forEach(pkg => require(pkg)); + } catch { + log.report('Specified database type is not installed'); + let required = types[type].packages.map(i => `"${i}"`).join(' and '); + throw new Error(`Please install the package(s) for your selected database type: ${required}`); + } + + let sequelize; + + if (type === 'sqlite') { + log.info('Using SQLite storage'); + sequelize = new Sequelize({ + dialect: types[type].dialect, + storage: path('./user/database.sqlite'), + logging: log.debug + }); + } else { + log.info(`Connecting to ${types[type].name} database...`); + sequelize = new Sequelize(DB_NAME, DB_USER, DB_PASS, { + dialect: types[type].dialect, + host: DB_HOST, + logging: log.debug + }); + } + + try { + await sequelize.authenticate(); + log.success('Connected to database successfully'); + } catch (error) { + log.warn('Unable to connect to database'); + log.error(error); + } + + /* let models = {}; + let files = fs.readdirSync(path('src/database/models/')).filter(file => file.endsWith('.js')); + + for (let file of files) { + let table = require(`./models/${file}`); + let model = sequelize.define(table.name, table.model); + models[table.name] = model; + } */ + + const Guild = sequelize.define('Guild', { + id: { + type: DataTypes.CHAR(18), + primaryKey: true + }, + prefix: { + type: DataTypes.STRING, // STRING(255) = VARCHAR(255) + defaultValue: config.defaults.prefix + }, + locale: { + type: DataTypes.STRING, + defaultValue: config.defaults.locale + } + }, { + tableName: 'guilds' + }); + + + const Ticket = sequelize.define('Ticket', { + id: { + type: DataTypes.CHAR(18), + primaryKey: true + }, + guild: { + type: DataTypes.STRING, + allowNull: false, + references: { + model: Guild, + key: 'id' + }, + } + }, { + tableName: 'tickets' + }); + + // eslint-disable-next-line no-unused-vars + const Message = sequelize.define('Message', { + id: { + type: DataTypes.CHAR(18), + primaryKey: true + }, + ticket: { + type: DataTypes.STRING, + allowNull: false, + references: { + model: Ticket, + key: 'id' + }, + } + }, { + tableName: 'messages' + }); + + sequelize.sync(); + + return sequelize.models; +}; \ No newline at end of file diff --git a/src/index.js b/src/index.js index e1e3be7..1ea1ed7 100644 --- a/src/index.js +++ b/src/index.js @@ -28,9 +28,11 @@ const { version } = require('../package.json'); const fs = require('fs'); const { path } = require('./utils/fs'); if (!fs.existsSync(path('./.env'))) return console.log('Please make a copy of \'example.env\' called \'.env\''); -if (!fs.existsSync(path('./user/config.js'))) return console.log('Please make a copy of \'example.config.js\' called \'config.js\''); +if (!fs.existsSync(path('./user/config.js'))) return console.log('Please make a copy of \'user/example.config.js\' called \'user/config.js\''); -require('dotenv').config(); +require('dotenv').config({ + path: path('./.env') +}); const config = require('../user/config'); @@ -43,7 +45,6 @@ const log = new Logger({ }); -const terminalLink = require('terminal-link'); log.report = error => { let report = [ '<< Issue report >>', @@ -57,6 +58,9 @@ log.report = error => { if (error) log.error(error); }; +const terminalLink = require('terminal-link'); +const I18n = require('@eartharoid/i18n'); + const { Client } = require('discord.js'); class Bot extends Client { constructor() { @@ -66,8 +70,9 @@ class Bot extends Client { Object.assign(this, { config, - db: require('./modules/database')(log), + db: require('./database')(log), log, + i18n: new I18n(path('./src/locales'), 'en-GB') }); this.log.info('Connecting to Discord API'); diff --git a/src/locales/en-GB.json b/src/locales/en-GB.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/src/locales/en-GB.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/modules/database.js b/src/modules/database.js deleted file mode 100644 index b3fc696..0000000 --- a/src/modules/database.js +++ /dev/null @@ -1,75 +0,0 @@ -const Keyv = require('keyv'); - -const { homepage } = require('../../package.json'); -const { path } = require('../utils/fs'); - -const types = { - sqlite: 'sqlite', - mysql: 'mysql', - mongo: 'mongo', - mongodb: 'mongo', - postgre: 'postgres', - postgres: 'postgres', - postgresql: 'postgres', -}; - -const supported = Object.keys(types); - -module.exports = (log) => { - - let type = (process.env.DB_TYPE || 'sqlite').toLowerCase(); - - if (!supported.includes(type)) { - log.report('Invalid database type'); - throw new Error(`DB_TYPE (${type}) is not a valid type`); - } - - try { - require(`@keyv/${types[type]}`); - } catch { - log.report('Specified database type is not installed'); - throw new Error(`"@keyv/${types[type]}" is not installed, please install is manually`); - } - - const { - DB_HOST, - DB_USER, - DB_PASS, - DB_NAME - } = process.env; - let database; - - switch (type) { - case 'mysql': - database = `mysql://${DB_USER}:${DB_PASS}@${DB_HOST}/${DB_NAME}`; - log.info('Using MySQL as database backend'); - break; - case 'mongo': - case 'mongodb': - database = `mongodb://${DB_USER}:${DB_PASS}@${DB_HOST}/${DB_NAME}`; - log.info('Using MongoDB as database backend'); - break; - case 'postgre': - case 'postgres': - case 'postgresql': - database = `postgresql://${DB_USER}:${DB_PASS}@${DB_HOST}/${DB_NAME}`; - log.info('Using Postgres as database backend'); - break; - default: // sqlite - database = `sqlite://${path('./user/database.sqlite')}`; - log.info('Using SQLite as database backend'); - break; - } - - return { - servers: new Keyv(database, { - namespace: 'servers' - }), - tickets: new Keyv(database, { - namespace: 'tickets' - }), - messages: new Keyv(database, { - namespace: 'messages' - }) - }; -}; \ No newline at end of file diff --git a/user/example.config.js b/user/example.config.js index 88cb378..cb5f2fe 100644 --- a/user/example.config.js +++ b/user/example.config.js @@ -39,11 +39,12 @@ module.exports = { { activity: 'for new tickets | %shelp', type: 'WATCHING' - } + }, ], defaults: { prefix: '-', colour: '#009999', + locale: 'en-GB' }, logs: { enabled: true,