From 1f2d40234b2ea26dcdec61ca44ed9bcfdd0d9d2f Mon Sep 17 00:00:00 2001 From: Isaac Date: Thu, 25 Feb 2021 12:34:16 +0000 Subject: [PATCH] Logger and fastify, settings server --- example.env | 2 +- package.json | 5 +- pnpm-lock.yaml | 418 +++++++++++++++++++++++++++++++++++++++++++- src/index.js | 10 +- src/server/index.js | 34 ++++ 5 files changed, 460 insertions(+), 9 deletions(-) create mode 100644 src/server/index.js diff --git a/example.env b/example.env index 2b1f03f..19c1dfe 100644 --- a/example.env +++ b/example.env @@ -1,5 +1,5 @@ DISCORD_TOKEN= - +HTTP_PORT=8080 DB_TYPE=sqlite DB_HOST= DB_NAME= diff --git a/package.json b/package.json index 2edd958..cad12b6 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,10 @@ "boxen": "^5.0.0", "discord.js": "^12.5.1", "dotenv": "^8.2.0", + "fastify": "^3.12.0", + "fs-extra": "^9.1.0", "leeks.js": "^0.0.9", - "leekslazylogger": "^2.0.7", + "leekslazylogger-fastify": "^0.0.5", "node-fetch": "^2.6.1", "semver": "^7.3.4", "sequelize": "^6.5.0", @@ -41,6 +43,7 @@ }, "devDependencies": { "eslint": "^7.20.0", + "jsdoc": "^3.6.6", "mariadb": "^2.5.2", "mysql2": "^2.2.5", "nodemon": "^2.0.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb71741..ba4deab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,14 +3,17 @@ dependencies: boxen: 5.0.0 discord.js: 12.5.1 dotenv: 8.2.0 + fastify: 3.12.0 + fs-extra: 9.1.0 leeks.js: 0.0.9 - leekslazylogger: 2.0.7 + leekslazylogger-fastify: 0.0.5 node-fetch: 2.6.1 semver: 7.3.4 sequelize: 6.5.0_fb66e8c649bde1be622cc06164c9e22d terminal-link: 2.1.1 devDependencies: eslint: 7.20.0 + jsdoc: 3.6.6 mariadb: 2.5.2 mysql2: 2.2.5 nodemon: 2.0.7 @@ -84,6 +87,13 @@ packages: dev: true resolution: integrity: sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== + /@babel/parser/7.13.4: + dev: true + engines: + node: '>=6.0.0' + hasBin: true + resolution: + integrity: sha512-uvoOulWHhI+0+1f9L4BoozY7U5cIkZ9PgJqvb041d6vypgUmtVPG4vmGm4pSggjl8BELzvHyUeJSUyEMY6b+qA== /@discordjs/collection/0.1.6: dev: false resolution: @@ -123,6 +133,19 @@ packages: node: ^10.12.0 || >=12.0.0 resolution: integrity: sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== + /@fastify/forwarded/1.0.0: + dev: false + engines: + node: '>= 10' + resolution: + integrity: sha512-VoO+6WD0aRz8bwgJZ8pkkxjq7o/782cQ1j945HWg0obZMgIadYW3Pew0+an+k1QL7IPZHM3db5WF6OP6x4ymMA== + /@fastify/proxy-addr/3.0.0: + dependencies: + '@fastify/forwarded': 1.0.0 + ipaddr.js: 2.0.0 + dev: false + resolution: + integrity: sha512-ty7wnUd/GeSqKTC2Jozsl5xGbnxUnEFC0On2/zPv/8ixywipQmVZwuWvNGnBoitJ2wixwVqofwXNua8j6Y62lQ== /@js-joda/core/3.2.0: dev: true resolution: @@ -175,6 +198,10 @@ packages: node: '>=6.5' resolution: integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + /abstract-logging/2.0.1: + dev: false + resolution: + integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== /acorn-jsx/5.3.1_acorn@7.4.1: dependencies: acorn: 7.4.1 @@ -308,6 +335,10 @@ packages: optional: true resolution: integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + /archy/1.0.0: + dev: false + resolution: + integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= /are-we-there-yet/1.1.5: dependencies: delegates: 1.0.0 @@ -351,6 +382,27 @@ packages: /asynckit/0.4.0: resolution: integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k= + /at-least-node/1.0.0: + dev: false + engines: + node: '>= 4.0.0' + resolution: + integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + /atomic-sleep/1.0.0: + dev: false + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + /avvio/7.2.1: + dependencies: + archy: 1.0.0 + debug: 4.3.1 + fastq: 1.11.0 + queue-microtask: 1.2.2 + dev: false + resolution: + integrity: sha512-b+gox68dqD6c3S3t+bZBKN6rYbVWdwpN12sHQLFTiacDT2rcq7fm07Ww+IKt/AvAkyCIe1f5ArP1bC/vAlx97A== /aws-sign2/0.7.0: resolution: integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= @@ -398,6 +450,10 @@ packages: optional: true resolution: integrity: sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + /bluebird/3.7.2: + dev: true + resolution: + integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== /boxen/4.2.0: dependencies: ansi-align: 3.0.0 @@ -494,6 +550,14 @@ packages: /caseless/0.12.0: resolution: integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + /catharsis/0.8.11: + dependencies: + lodash: 4.17.21 + dev: true + engines: + node: '>= 8' + resolution: + integrity: sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g== /chalk/2.4.2: dependencies: ansi-styles: 3.2.1 @@ -612,6 +676,12 @@ packages: optional: true resolution: integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + /cookie/0.4.1: + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== /core-util-is/1.0.2: resolution: integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -684,6 +754,12 @@ packages: dev: true resolution: integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + /deepmerge/4.2.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== /defer-to-connect/1.1.3: dev: true resolution: @@ -775,6 +851,10 @@ packages: dev: true resolution: integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + /ee-first/1.1.1: + dev: false + resolution: + integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= /emoji-regex/7.0.3: resolution: integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== @@ -795,6 +875,10 @@ packages: node: '>=8.6' resolution: integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + /entities/2.0.3: + dev: true + resolution: + integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== /escape-goat/2.1.1: dev: true engines: @@ -807,6 +891,12 @@ packages: node: '>=0.8.0' resolution: integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + /escape-string-regexp/2.0.0: + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== /eslint-scope/5.1.1: dependencies: esrecurse: 4.3.0 @@ -945,16 +1035,81 @@ packages: '0': node >=0.6.0 resolution: integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + /fast-decode-uri-component/1.0.1: + dev: false + resolution: + integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== /fast-deep-equal/3.1.3: resolution: integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== /fast-json-stable-stringify/2.1.0: resolution: integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + /fast-json-stringify/2.4.2: + dependencies: + ajv: 6.12.6 + deepmerge: 4.2.2 + string-similarity: 4.0.4 + dev: false + engines: + node: '>= 10.0.0' + resolution: + integrity: sha512-hXNC8Hj5ZYf0PRt67JyLwrw72XOIUSOj8IYXk8w8kotBox02L08Dvz6c8IMpCUXof1H+dLlBz1aszGqP9xmrBw== /fast-levenshtein/2.0.6: dev: true resolution: integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + /fast-redact/3.0.0: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-a/S/Hp6aoIjx7EmugtzLqXmcNsyFszqbt6qQ99BdG61QjBZF6shNis0BYR6TsZOQ1twYc0FN2Xdhwwbv6+KD0w== + /fast-safe-stringify/2.0.7: + dev: false + resolution: + integrity: sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + /fastify-error/0.3.0: + dev: false + resolution: + integrity: sha512-Jm2LMTB5rsJqlS1+cmgqqM9tTs0UrlgYR7TvDT3ZgXsUI5ib1NjQlqZHf+tDK5tVPdFGwyq02wAoJtyYIRSiFA== + /fastify-plugin/3.0.0: + dev: false + resolution: + integrity: sha512-ZdCvKEEd92DNLps5n0v231Bha8bkz1DjnPP/aEz37rz/q42Z5JVLmgnqR4DYuNn3NXAO3IDCPyRvgvxtJ4Ym4w== + /fastify-warning/0.2.0: + dev: false + resolution: + integrity: sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw== + /fastify/3.12.0: + dependencies: + '@fastify/proxy-addr': 3.0.0 + abstract-logging: 2.0.1 + ajv: 6.12.6 + avvio: 7.2.1 + fast-json-stringify: 2.4.2 + fastify-error: 0.3.0 + fastify-warning: 0.2.0 + find-my-way: 3.0.5 + flatstr: 1.0.12 + light-my-request: 4.4.1 + pino: 6.11.1 + readable-stream: 3.6.0 + rfdc: 1.2.0 + secure-json-parse: 2.3.1 + semver: 7.3.4 + tiny-lru: 7.0.6 + dev: false + engines: + node: '>=10.16.0' + resolution: + integrity: sha512-xSVzP88dkwBRl/vSm8AnMB3ICOd5p0M/ea9fJWOx0WnC8x4r1WfOUUEHeyxcwlfWoiDDtsHe7DwyeSPrfmfzqQ== + /fastq/1.11.0: + dependencies: + reusify: 1.0.4 + dev: false + resolution: + integrity: sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== /file-entry-cache/6.0.0: dependencies: flat-cache: 3.0.4 @@ -971,6 +1126,16 @@ packages: node: '>=8' resolution: integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + /find-my-way/3.0.5: + dependencies: + fast-decode-uri-component: 1.0.1 + safe-regex2: 2.0.0 + semver-store: 0.3.0 + dev: false + engines: + node: '>=10' + resolution: + integrity: sha512-FweGg0cv1sBX8z7WhvBX5B5AECW4Zdh/NiB38Oa0qwSNIyPgRBCl/YjxuZn/rz38E/MMBHeVKJ22i7W3c626Gg== /flat-cache/3.0.4: dependencies: flatted: 3.1.1 @@ -980,6 +1145,10 @@ packages: node: ^10.12.0 || >=12.0.0 resolution: integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + /flatstr/1.0.12: + dev: false + resolution: + integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== /flatted/3.1.1: dev: true resolution: @@ -1027,6 +1196,17 @@ packages: node: '>= 6' resolution: integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + /fs-extra/9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.6 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + engines: + node: '>=10' + resolution: + integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== /fs-minipass/1.2.7: dependencies: minipass: 2.9.0 @@ -1295,6 +1475,12 @@ packages: node: '>=4' resolution: integrity: sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + /ipaddr.js/2.0.0: + dev: false + engines: + node: '>= 10' + resolution: + integrity: sha512-S54H9mIj0rbxRIyrDMEuuER86LdlgUg9FSeZ8duQb6CUG2iRrA36MYVQBSprTF/ZeAwvyQ5mDGuNvIPM0BIl3w== /is-binary-path/2.1.0: dependencies: binary-extensions: 2.2.0 @@ -1410,6 +1596,12 @@ packages: hasBin: true resolution: integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + /js2xmlparser/4.0.1: + dependencies: + xmlcreate: 2.0.3 + dev: true + resolution: + integrity: sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw== /jsbi/3.1.4: dev: true resolution: @@ -1417,6 +1609,28 @@ packages: /jsbn/0.1.1: resolution: integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + /jsdoc/3.6.6: + dependencies: + '@babel/parser': 7.13.4 + bluebird: 3.7.2 + catharsis: 0.8.11 + escape-string-regexp: 2.0.0 + js2xmlparser: 4.0.1 + klaw: 3.0.0 + markdown-it: 10.0.0 + markdown-it-anchor: 5.3.0_markdown-it@10.0.0 + marked: 0.8.2 + mkdirp: 1.0.4 + requizzle: 0.2.3 + strip-json-comments: 3.1.1 + taffydb: 2.6.2 + underscore: 1.10.2 + dev: true + engines: + node: '>=8.15.0' + hasBin: true + resolution: + integrity: sha512-znR99e1BHeyEkSvgDDpX0sTiTu+8aQyDl9DawrkOGZTTW8hv0deIFXx87114zJ7gRaDZKVQD/4tr1ifmJp9xhQ== /json-buffer/3.0.0: dev: true resolution: @@ -1438,6 +1652,14 @@ packages: /json-stringify-safe/5.0.1: resolution: integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + /jsonfile/6.1.0: + dependencies: + universalify: 2.0.0 + dev: false + optionalDependencies: + graceful-fs: 4.2.6 + resolution: + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== /jsprim/1.4.1: dependencies: assert-plus: 1.0.0 @@ -1469,6 +1691,12 @@ packages: dev: true resolution: integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + /klaw/3.0.0: + dependencies: + graceful-fs: 4.2.6 + dev: true + resolution: + integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== /latest-version/5.1.0: dependencies: package-json: 6.5.0 @@ -1481,14 +1709,22 @@ packages: dev: false resolution: integrity: sha512-e6UVJ1fj8f2clpHy+KpXVWVxjzB3XYFGyKRJHDlT8Gy/75BT+9bYUacpHSCoXp7RTtyMSr4eBjZrp0nHyyQVbg== - /leekslazylogger/2.0.7: + /leekslazylogger-fastify/0.0.5: + dependencies: + fastify-plugin: 3.0.0 + leekslazylogger: 2.1.1 + on-finished: 2.3.0 + dev: false + resolution: + integrity: sha512-b6XoUuqeQTLeNPCRd6x4rl4f572cgAg/tfr10TGlwsCNjrkYOXlwk/L6Qv2HGlBJRhe4ZLZQn+YvVtLFZJ8IOw== + /leekslazylogger/2.1.1: dependencies: '@eartharoid/dtf': 1.0.8 leeks.js: 0.0.9 lodash.merge: 4.6.2 dev: false resolution: - integrity: sha512-HC0kNjPSOAKx4L9HwmKuvJp1OQQgS6U2IjXq6plKc845TcaAFRNw/2ILHze29z+fPn+44xUeI49FrLuVgSUL/A== + integrity: sha512-5CnWiDW+vIH5R0cQfZK2TOaCXvaErF1inPjRuASqarwKCQjEssiUyK6QRUklv9oqqUr1Iq5eQzGIZapOD3GPRQ== /levn/0.4.1: dependencies: prelude-ls: 1.2.1 @@ -1498,6 +1734,22 @@ packages: node: '>= 0.8.0' resolution: integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + /light-my-request/4.4.1: + dependencies: + ajv: 6.12.6 + cookie: 0.4.1 + fastify-warning: 0.2.0 + readable-stream: 3.6.0 + set-cookie-parser: 2.4.7 + dev: false + resolution: + integrity: sha512-FDNRF2mYjthIRWE7O8d/X7AzDx4otQHl4/QXbu3Q/FRwBFcgb+ZoDaUd5HwN53uQXLAiw76osN+Va0NEaOW6rQ== + /linkify-it/2.2.0: + dependencies: + uc.micro: 1.0.6 + dev: true + resolution: + integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== /lodash.merge/4.6.2: dev: false resolution: @@ -1505,6 +1757,10 @@ packages: /lodash/4.17.20: resolution: integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + /lodash/4.17.21: + dev: true + resolution: + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== /long/4.0.0: dev: true resolution: @@ -1557,6 +1813,36 @@ packages: node: '>= 10.13' resolution: integrity: sha512-SfaBl5/LiX2qJNNr7wCQvizVjtWxVm1CUWYKe+y4OMeyYMM6g0GhwX7/BbGtv/O3WthnGrM+Kj1imFnlescO0w== + /markdown-it-anchor/5.3.0_markdown-it@10.0.0: + dependencies: + markdown-it: 10.0.0 + dev: true + peerDependencies: + markdown-it: '*' + resolution: + integrity: sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA== + /markdown-it/10.0.0: + dependencies: + argparse: 1.0.10 + entities: 2.0.3 + linkify-it: 2.2.0 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: true + hasBin: true + resolution: + integrity: sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== + /marked/0.8.2: + dev: true + engines: + node: '>= 8.16.2' + hasBin: true + resolution: + integrity: sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw== + /mdurl/1.0.1: + dev: true + resolution: + integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= /mime-db/1.45.0: engines: node: '>= 0.6' @@ -1606,6 +1892,13 @@ packages: optional: true resolution: integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + /mkdirp/1.0.4: + dev: true + engines: + node: '>=10' + hasBin: true + resolution: + integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== /moment-timezone/0.5.33: dependencies: moment: 2.29.1 @@ -1823,6 +2116,14 @@ packages: optional: true resolution: integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + /on-finished/2.3.0: + dependencies: + ee-first: 1.1.1 + dev: false + engines: + node: '>= 0.8' + resolution: + integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= /once/1.4.0: dependencies: wrappy: 1.0.2 @@ -1979,6 +2280,22 @@ packages: node: '>=8.6' resolution: integrity: sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + /pino-std-serializers/3.2.0: + dev: false + resolution: + integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== + /pino/6.11.1: + dependencies: + fast-redact: 3.0.0 + fast-safe-stringify: 2.0.7 + flatstr: 1.0.12 + pino-std-serializers: 3.2.0 + quick-format-unescaped: 4.0.1 + sonic-boom: 1.3.2 + dev: false + hasBin: true + resolution: + integrity: sha512-PoDR/4jCyaP1k2zhuQ4N0NuhaMtei+C9mUHBRRJQujexl/bq3JkeL2OC23ada6Np3zeUMHbO4TGzY2D/rwZX3w== /please-upgrade-node/3.2.0: dependencies: semver-compare: 1.0.0 @@ -2088,6 +2405,14 @@ packages: node: '>=0.6' resolution: integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + /queue-microtask/1.2.2: + dev: false + resolution: + integrity: sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + /quick-format-unescaped/4.0.1: + dev: false + resolution: + integrity: sha512-RyYpQ6Q5/drsJyOhrWHYMWTedvjTIat+FTwv0K4yoUxzvekw2aRHMQJLlnvt8UantkZg2++bEzD9EdxXqkWf4A== /rc/1.2.8: dependencies: deep-extend: 0.6.0 @@ -2115,7 +2440,6 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: true engines: node: '>= 6' resolution: @@ -2183,6 +2507,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + /requizzle/0.2.3: + dependencies: + lodash: 4.17.21 + dev: true + resolution: + integrity: sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ== /resolve-from/4.0.0: dev: true engines: @@ -2195,12 +2525,29 @@ packages: dev: true resolution: integrity: sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + /ret/0.2.2: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== /retry-as-promised/3.2.0: dependencies: any-promise: 1.3.0 dev: false resolution: integrity: sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg== + /reusify/1.0.4: + dev: false + engines: + iojs: '>=1.0.0' + node: '>=0.10.0' + resolution: + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + /rfdc/1.2.0: + dev: false + resolution: + integrity: sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA== /rimraf/2.7.1: dependencies: glob: 7.1.6 @@ -2224,12 +2571,22 @@ packages: /safe-buffer/5.2.1: resolution: integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + /safe-regex2/2.0.0: + dependencies: + ret: 0.2.2 + dev: false + resolution: + integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ== /safer-buffer/2.1.2: resolution: integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== /sax/1.2.4: resolution: integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + /secure-json-parse/2.3.1: + dev: false + resolution: + integrity: sha512-5uGhQLHSC9tVa7RGPkSwxbZVsJCZvIODOadAimCXkU1aCa1fWdszj2DktcutK8A7dD58PoRdxTYiy0jFl6qjnw== /semver-compare/1.0.0: dev: true resolution: @@ -2242,6 +2599,10 @@ packages: node: '>=8' resolution: integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + /semver-store/0.3.0: + dev: false + resolution: + integrity: sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg== /semver/5.3.0: dev: false hasBin: true @@ -2326,6 +2687,10 @@ packages: optional: true resolution: integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + /set-cookie-parser/2.4.7: + dev: false + resolution: + integrity: sha512-VaSdYN1DlYuKOzBKqhYJnwaPeirZdNNUNmYdnp9/6Umr9s8amidctYitrX2Gk8wCqiBuiG5mpOYCiVhG5o4iMQ== /setimmediate/1.0.5: dev: false resolution: @@ -2357,6 +2722,13 @@ packages: node: '>=10' resolution: integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + /sonic-boom/1.3.2: + dependencies: + atomic-sleep: 1.0.0 + flatstr: 1.0.12 + dev: false + resolution: + integrity: sha512-/B4tAuK2+hIlR94GhhWU1mJHWk5lt0CEuBvG0kvk1qIAzQc4iB1TieMio8DCZxY+Y7tsuzOxSUDOGmaUm3vXMg== /split2/3.2.2: dependencies: readable-stream: 3.6.0 @@ -2407,6 +2779,10 @@ packages: hasBin: true resolution: integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + /string-similarity/4.0.4: + dev: false + resolution: + integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ== /string-width/1.0.2: dependencies: code-point-at: 1.1.0 @@ -2446,7 +2822,6 @@ packages: /string_decoder/1.3.0: dependencies: safe-buffer: 5.2.1 - dev: true resolution: integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== /strip-ansi/3.0.1: @@ -2518,6 +2893,10 @@ packages: node: '>=10.0.0' resolution: integrity: sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + /taffydb/2.6.2: + dev: true + resolution: + integrity: sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= /tar/2.2.2: dependencies: block-stream: 0.0.9 @@ -2580,6 +2959,12 @@ packages: dev: true resolution: integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + /tiny-lru/7.0.6: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow== /to-readable-stream/1.0.0: dev: true engines: @@ -2681,12 +3066,20 @@ packages: dev: true resolution: integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + /uc.micro/1.0.6: + dev: true + resolution: + integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== /undefsafe/2.0.3: dependencies: debug: 2.6.9 dev: true resolution: integrity: sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== + /underscore/1.10.2: + dev: true + resolution: + integrity: sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== /underscore/1.12.0: dev: true resolution: @@ -2699,6 +3092,12 @@ packages: node: '>=8' resolution: integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + /universalify/2.0.0: + dev: false + engines: + node: '>= 10.0.0' + resolution: + integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== /update-notifier/4.1.3: dependencies: boxen: 4.2.0 @@ -2863,6 +3262,10 @@ packages: node: '>=4.0' resolution: integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + /xmlcreate/2.0.3: + dev: true + resolution: + integrity: sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ== /xmldom/0.4.0: dev: true engines: @@ -2899,8 +3302,11 @@ specifiers: discord.js: ^12.5.1 dotenv: ^8.2.0 eslint: ^7.20.0 + fastify: ^3.12.0 + fs-extra: ^9.1.0 + jsdoc: ^3.6.6 leeks.js: ^0.0.9 - leekslazylogger: ^2.0.7 + leekslazylogger-fastify: ^0.0.5 mariadb: ^2.5.2 mysql2: ^2.2.5 node-fetch: ^2.6.1 diff --git a/src/index.js b/src/index.js index 315de8d..c959b86 100644 --- a/src/index.js +++ b/src/index.js @@ -60,7 +60,7 @@ const config = require('../user/config'); require('./banner')(); -const Logger = require('leekslazylogger'); +const Logger = require('leekslazylogger-fastify'); const log = new Logger({ name: 'DiscordTickets by eartharoid', debug: config.debug, @@ -72,6 +72,10 @@ const log = new Logger({ title: 'info', prefix: 'commands' }, + http: { + title: 'info', + prefix: 'http' + }, plugins: { title: 'info', prefix: 'plugins' @@ -88,6 +92,7 @@ const I18n = require('@eartharoid/i18n'); const { CommandManager } = require('./modules/commands'); const TicketManager = require('./modules/tickets'); const { PluginManager } = require('./modules/plugins'); +const SettingsServer = require('./server'); require('./modules/structures')(); // load extended structures before creating the client @@ -142,6 +147,9 @@ class Bot extends Client { this.plugins = new PluginManager(this); this.plugins.load(); // load plugins + /** SettingsServer internal plugin instance */ + this.server = new SettingsServer(this); + this.log.info('Connecting to Discord API...'); this.login(); diff --git a/src/server/index.js b/src/server/index.js new file mode 100644 index 0000000..374fed0 --- /dev/null +++ b/src/server/index.js @@ -0,0 +1,34 @@ +const { Plugin } = require('../modules/plugins'); +const fastify = require('fastify')(); + +module.exports = class SettingsServer extends Plugin { + constructor(client){ + super(client, { + id: 'internal.settings' + }, { + name: 'Settings server', + commands: [] + }); + + this.client.plugins.plugins.set(this.id, this); + this.preload(); + } + + async preload() { + fastify.register(this.client.log.fastify, { + type: 'http' + }); + } + + async load() { + fastify.listen(process.env.HTTP_PORT || 8080, (err, address) => { + if (err) throw err; + this.client.log.info(`Settings server listening at ${address}`); + }); + + fastify.get('/', async (req, res) => { + res.type('application/json').code(200); + return { hello: 'world' }; + }); + } +}; \ No newline at end of file