From dac3bb8da14f30dd6fd4b77a1808eb1338337107 Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Fri, 3 Dec 2021 21:51:16 +0200 Subject: [PATCH 01/15] Update server.js --- src/server.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server.js b/src/server.js index 4affea1..21fbca7 100644 --- a/src/server.js +++ b/src/server.js @@ -1,6 +1,7 @@ const { PORT } = require('./common/config'); const app = require('./app'); + app.listen(PORT, () => console.log(`App is running on http://localhost:${PORT}`) ); From 8ab2d02aef64bc0e7ca9f5b8914fad1df6cc9820 Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Fri, 3 Dec 2021 22:06:11 +0200 Subject: [PATCH 02/15] delete empty string --- src/server.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server.js b/src/server.js index 21fbca7..4affea1 100644 --- a/src/server.js +++ b/src/server.js @@ -1,7 +1,6 @@ const { PORT } = require('./common/config'); const app = require('./app'); - app.listen(PORT, () => console.log(`App is running on http://localhost:${PORT}`) ); From 43f8492f7c1f2e89fa09004aa9776efb9134bd65 Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Fri, 3 Dec 2021 22:15:17 +0200 Subject: [PATCH 03/15] delete empty string --- src/resources/users/user.memory.repository.js | 6 +++--- src/server.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/resources/users/user.memory.repository.js b/src/resources/users/user.memory.repository.js index b070a0e..786b265 100644 --- a/src/resources/users/user.memory.repository.js +++ b/src/resources/users/user.memory.repository.js @@ -1,6 +1,6 @@ -const getAll = async () => { +const getAll = async () => // TODO: mock implementation. should be replaced during task development - return []; -}; + [] +; module.exports = { getAll }; diff --git a/src/server.js b/src/server.js index 4affea1..ead4b95 100644 --- a/src/server.js +++ b/src/server.js @@ -1,6 +1,6 @@ const { PORT } = require('./common/config'); const app = require('./app'); -app.listen(PORT, () => - console.log(`App is running on http://localhost:${PORT}`) +app.listen(PORT, () => {} + // console.log(`App is running on http://localhost:${PORT}`) ); From 4249f2291b5a415db2af5c4f57f2486f5d0e680e Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 5 Dec 2021 17:55:38 +0200 Subject: [PATCH 04/15] user routes --- package-lock.json | 1220 +++++++++-------- package.json | 4 +- src/app.js | 28 +- src/resources/users/user.memory.repository.js | 32 +- src/resources/users/user.router.js | 46 +- src/resources/users/user.service.js | 10 +- src/server.js | 12 +- src/test.http | 25 + 8 files changed, 780 insertions(+), 597 deletions(-) create mode 100644 src/test.http diff --git a/package-lock.json b/package-lock.json index b4c9992..8ccc795 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "cross-env": "7.0.3", "dotenv": "10.0.0", - "express": "4.17.1", - "swagger-ui-express": "4.1.6", + "fastify": "^3.24.1", + "fastify-swagger": "^4.12.6", "uuid": "8.3.2", "yamljs": "0.3.0" }, @@ -670,6 +670,14 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fastify/ajv-compiler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-1.1.0.tgz", + "integrity": "sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==", + "dependencies": { + "ajv": "^6.12.6" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", @@ -1235,17 +1243,10 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "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/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" }, "node_modules/acorn": { "version": "8.6.0", @@ -1328,7 +1329,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1451,16 +1451,15 @@ "node": ">= 8" } }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-includes": { "version": "3.1.4", @@ -1522,6 +1521,25 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/avvio": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-7.2.2.tgz", + "integrity": "sha512-XW2CMCmZaCmCCsIaJaLKxAzPwF37fXi1KGxNOvedOpeisLdmxZnblGc3hpHWYnlP+KOUxZsazh43WXNHgXpbqw==", + "dependencies": { + "archy": "^1.0.0", + "debug": "^4.0.0", + "fastq": "^1.6.1", + "queue-microtask": "^1.1.2" + } + }, "node_modules/babel-jest": { "version": "27.3.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", @@ -1653,39 +1671,6 @@ "node": ">=8" } }, - "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/body-parser/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/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/boxen": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", @@ -1814,14 +1799,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "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", @@ -2220,14 +2197,6 @@ "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-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -2245,11 +2214,6 @@ "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/cookiejar": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", @@ -2353,7 +2317,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -2421,7 +2384,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2589,6 +2551,14 @@ "node": ">= 0.8" } }, + "node_modules/encoding-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/encoding-negotiator/-/encoding-negotiator-2.0.1.tgz", + "integrity": "sha512-GSK7qphNR4iPcejfAlZxKDoz3xMhnspwImK+Af5WhePS9jUpK/Oh7rUdyENWu+9rgDflOCTmAojBsgsvM8neAQ==", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3282,64 +3252,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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/express/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/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.2.0", @@ -3350,8 +3271,21 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-json-stringify": { + "version": "2.7.12", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-2.7.12.tgz", + "integrity": "sha512-4hjwZDPmgj/ZUKXhEWovGPciE/5mWtAIQQxN+2VBDFun7DRTk2oOItbu9ZZp6kqj+eZ/u7z+dgBgM74cfGRnBQ==", + "dependencies": { + "ajv": "^6.11.0", + "deepmerge": "^4.2.2", + "rfdc": "^1.2.0", + "string-similarity": "^4.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -3359,11 +3293,103 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "node_modules/fast-redact": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.0.2.tgz", + "integrity": "sha512-YN+CYfCVRVMUZOUPeinHNKgytM1wPI/C/UCLEi56EsY2dwwvI00kIJHJoI7pMVqGoMew8SMZ2SSfHKHULHXDsg==", + "engines": { + "node": ">=6" + } + }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/fastify": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-3.24.1.tgz", + "integrity": "sha512-ZL0V6u37d65tAY8lMwVMFtFvnEeJcG80QBNSdChqCm4i4x+is/38OU14gzJuRXhpenTL+pTJzNcu5Kn1ouzM3Q==", + "dependencies": { + "@fastify/ajv-compiler": "^1.0.0", + "abstract-logging": "^2.0.0", + "avvio": "^7.1.2", + "fast-json-stringify": "^2.5.2", + "fastify-error": "^0.3.0", + "fastify-warning": "^0.2.0", + "find-my-way": "^4.1.0", + "flatstr": "^1.0.12", + "light-my-request": "^4.2.0", + "pino": "^6.13.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.1.4", + "secure-json-parse": "^2.0.0", + "semver": "^7.3.2", + "tiny-lru": "^7.0.0" + } + }, + "node_modules/fastify-error": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/fastify-error/-/fastify-error-0.3.1.tgz", + "integrity": "sha512-oCfpcsDndgnDVgiI7bwFKAun2dO+4h84vBlkWsWnz/OUK9Reff5UFoFl241xTiLeHWX/vU9zkDVXqYUxjOwHcQ==" + }, + "node_modules/fastify-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.0.tgz", + "integrity": "sha512-ZdCvKEEd92DNLps5n0v231Bha8bkz1DjnPP/aEz37rz/q42Z5JVLmgnqR4DYuNn3NXAO3IDCPyRvgvxtJ4Ym4w==" + }, + "node_modules/fastify-static": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fastify-static/-/fastify-static-4.5.0.tgz", + "integrity": "sha512-Q7Tgl55AjsmBwiO4hKYib2BUCt+XTWLJ6Xp8YPPHU3EsrKNpevJ4cz8pjf1Ey1QhHw9O8Y2FDKdu+IC74oHvqw==", + "dependencies": { + "content-disposition": "^0.5.3", + "encoding-negotiator": "^2.0.1", + "fastify-plugin": "^3.0.0", + "glob": "^7.1.4", + "p-limit": "^3.1.0", + "readable-stream": "^3.4.0", + "send": "^0.17.1" + } + }, + "node_modules/fastify-static/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fastify-swagger": { + "version": "4.12.6", + "resolved": "https://registry.npmjs.org/fastify-swagger/-/fastify-swagger-4.12.6.tgz", + "integrity": "sha512-XuHyi+aPQETMsB5oOw5m8j8hror/08MSa/7Gpxon3Mu2ZtlulG8q8/XmBGB1UM0WDRifGw456IgO7kVQVPLU8A==", + "dependencies": { + "fastify-plugin": "^3.0.0", + "fastify-static": "^4.0.0", + "js-yaml": "^4.0.0", + "json-schema-resolver": "^1.3.0", + "openapi-types": "^9.1.0" + } + }, + "node_modules/fastify-warning": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz", + "integrity": "sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==" + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dependencies": { + "reusify": "^1.0.4" + } }, "node_modules/fb-watchman": { "version": "2.0.1", @@ -3398,36 +3424,20 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/find-my-way": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-4.4.0.tgz", + "integrity": "sha512-hpntHvK0iOHp3pqWRRUEzioar4tp8euBD8DkPG3VauOriZLgwGZLTNp6yZSrdctJ8RCDS7zhZSR2V+yOaBbNow==", "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" + "fast-decode-uri-component": "^1.0.1", + "fast-deep-equal": "^3.1.3", + "safe-regex2": "^2.0.0", + "semver-store": "^0.3.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/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": ">=10" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -3468,6 +3478,11 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, "node_modules/flatted": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", @@ -3987,6 +4002,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5226,7 +5242,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -5304,11 +5319,23 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-schema-resolver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/json-schema-resolver/-/json-schema-resolver-1.3.0.tgz", + "integrity": "sha512-EX7W1r8aZ/T3j8GbbBxPXi60bnsELfT90OiA1QrbGMvwzVSbyMNOAzvMFcFb8m7gKCXZLJpGe+cJOvWgoFl29A==", + "dependencies": { + "debug": "^4.1.1", + "rfdc": "^1.1.4", + "uri-js": "^4.2.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -5383,6 +5410,37 @@ "node": ">= 0.8.0" } }, + "node_modules/light-my-request": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-4.7.0.tgz", + "integrity": "sha512-LTa8YZp3K2AUpqUnwwKajoIHcsKOBnzwJNQSrk7unziPwo6CjOYjyO0F9wfkxFvP+nBsCGe3eMPnedVgIIgdAw==", + "dependencies": { + "ajv": "^8.1.0", + "cookie": "^0.4.0", + "fastify-warning": "^0.2.0", + "set-cookie-parser": "^2.4.1" + } + }, + "node_modules/light-my-request/node_modules/ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/light-my-request/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, "node_modules/lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -5633,7 +5691,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5674,19 +5731,6 @@ "tmpl": "1.0.5" } }, - "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/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -5697,6 +5741,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, "engines": { "node": ">= 0.6" } @@ -5729,6 +5774,7 @@ "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -5737,6 +5783,7 @@ "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, "dependencies": { "mime-db": "1.51.0" }, @@ -5782,8 +5829,7 @@ "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -5791,14 +5837,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "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-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -6040,6 +6078,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/openapi-types": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-9.3.1.tgz", + "integrity": "sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw==" + }, "node_modules/opencollective-postinstall": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", @@ -6183,14 +6226,6 @@ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "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==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -6222,11 +6257,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "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/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -6263,6 +6293,28 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pino": { + "version": "6.13.3", + "resolved": "https://registry.npmjs.org/pino/-/pino-6.13.3.tgz", + "integrity": "sha512-tJy6qVgkh9MwNgqX1/oYi3ehfl2Y9H0uHyEEMsBe74KinESIjdMrMQDWpcZPpPicg3VV35d/GLQZmo4QgU2Xkg==", + "dependencies": { + "fast-redact": "^3.0.0", + "fast-safe-stringify": "^2.0.8", + "fastify-warning": "^0.2.0", + "flatstr": "^1.0.12", + "pino-std-serializers": "^3.1.0", + "quick-format-unescaped": "^4.0.3", + "sonic-boom": "^1.0.2" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, "node_modules/pirates": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", @@ -6425,7 +6477,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, "engines": { "node": ">=6" } @@ -6442,13 +6493,29 @@ "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/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" }, "node_modules/range-parser": { "version": "1.2.1", @@ -6458,20 +6525,6 @@ "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", @@ -6512,7 +6565,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6579,6 +6631,14 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -6653,6 +6713,28 @@ "node": ">=8" } }, + "node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -6682,10 +6764,19 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/safe-regex2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", + "integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==", + "dependencies": { + "ret": "~0.2.0" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/saxes": { "version": "5.0.1", @@ -6699,11 +6790,15 @@ "node": ">=10" } }, + "node_modules/secure-json-parse": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.4.0.tgz", + "integrity": "sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==" + }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -6753,6 +6848,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semver-store": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz", + "integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==" + }, "node_modules/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -6794,19 +6894,10 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, - "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-cookie-parser": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.4.8.tgz", + "integrity": "sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg==" }, "node_modules/setprototypeof": { "version": "1.1.1", @@ -6895,6 +6986,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/sonic-boom": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", + "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "flatstr": "^1.0.12" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6952,7 +7052,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -6961,7 +7060,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -6999,6 +7097,11 @@ "node": ">=10" } }, + "node_modules/string-similarity": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", + "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" + }, "node_modules/string-width": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", @@ -7195,26 +7298,7 @@ "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/swagger-ui-dist": { - "version": "3.52.5", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.52.5.tgz", - "integrity": "sha512-8z18eX8G/jbTXYzyNIaobrnD7PSN7yU/YkSasMmajrXtw0FGS64XjrKn5v37d36qmU3o1xLeuYnktshRr7uIFw==" - }, - "node_modules/swagger-ui-express": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.6.tgz", - "integrity": "sha512-Xs2BGGudvDBtL7RXcYtNvHsFtP1DBFPMJFRxHe5ez/VG/rzVOEjazJOOSc/kSCyxreCTKfJrII6MJlL9a6t8vw==", - "dependencies": { - "swagger-ui-dist": "^3.18.1" - }, - "engines": { - "node": ">= v0.10.32" - }, - "peerDependencies": { - "express": ">=4.0.0" + "node": ">=8" } }, "node_modules/symbol-tree": { @@ -7271,6 +7355,14 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "node_modules/tiny-lru": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-7.0.6.tgz", + "integrity": "sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow==", + "engines": { + "node": ">=6" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -7425,18 +7517,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -7488,14 +7568,6 @@ "node": ">= 4.0.0" } }, - "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": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -7528,7 +7600,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -7548,16 +7619,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "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" - } + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "node_modules/uuid": { "version": "8.3.2", @@ -7596,14 +7658,6 @@ "node": ">= 8" } }, - "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/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -7875,8 +7929,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", @@ -7968,7 +8021,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -8461,6 +8513,14 @@ "strip-json-comments": "^3.1.1" } }, + "@fastify/ajv-compiler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-1.1.0.tgz", + "integrity": "sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==", + "requires": { + "ajv": "^6.12.6" + } + }, "@humanwhocodes/config-array": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", @@ -8934,14 +8994,10 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } + "abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" }, "acorn": { "version": "8.6.0", @@ -9003,7 +9059,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -9093,16 +9148,15 @@ "picomatch": "^2.0.4" } }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "array-includes": { "version": "3.1.4", @@ -9146,6 +9200,22 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" + }, + "avvio": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-7.2.2.tgz", + "integrity": "sha512-XW2CMCmZaCmCCsIaJaLKxAzPwF37fXi1KGxNOvedOpeisLdmxZnblGc3hpHWYnlP+KOUxZsazh43WXNHgXpbqw==", + "requires": { + "archy": "^1.0.0", + "debug": "^4.0.0", + "fastq": "^1.6.1", + "queue-microtask": "^1.1.2" + } + }, "babel-jest": { "version": "27.3.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", @@ -9249,38 +9319,6 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "boxen": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", @@ -9380,11 +9418,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -9695,11 +9728,6 @@ "safe-buffer": "5.1.2" } }, - "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==" - }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -9714,11 +9742,6 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, "cookiejar": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", @@ -9800,7 +9823,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -9850,8 +9872,7 @@ "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" }, "defer-to-connect": { "version": "1.1.3", @@ -9977,6 +9998,11 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/encoding-negotiator/-/encoding-negotiator-2.0.1.tgz", + "integrity": "sha512-GSK7qphNR4iPcejfAlZxKDoz3xMhnspwImK+Af5WhePS9jUpK/Oh7rUdyENWu+9rgDflOCTmAojBsgsvM8neAQ==" + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -10492,63 +10518,15 @@ } } }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } + "fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", @@ -10559,8 +10537,18 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-json-stringify": { + "version": "2.7.12", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-2.7.12.tgz", + "integrity": "sha512-4hjwZDPmgj/ZUKXhEWovGPciE/5mWtAIQQxN+2VBDFun7DRTk2oOItbu9ZZp6kqj+eZ/u7z+dgBgM74cfGRnBQ==", + "requires": { + "ajv": "^6.11.0", + "deepmerge": "^4.2.2", + "rfdc": "^1.2.0", + "string-similarity": "^4.0.1" + } }, "fast-levenshtein": { "version": "2.0.6", @@ -10568,11 +10556,96 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-redact": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.0.2.tgz", + "integrity": "sha512-YN+CYfCVRVMUZOUPeinHNKgytM1wPI/C/UCLEi56EsY2dwwvI00kIJHJoI7pMVqGoMew8SMZ2SSfHKHULHXDsg==" + }, "fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "fastify": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-3.24.1.tgz", + "integrity": "sha512-ZL0V6u37d65tAY8lMwVMFtFvnEeJcG80QBNSdChqCm4i4x+is/38OU14gzJuRXhpenTL+pTJzNcu5Kn1ouzM3Q==", + "requires": { + "@fastify/ajv-compiler": "^1.0.0", + "abstract-logging": "^2.0.0", + "avvio": "^7.1.2", + "fast-json-stringify": "^2.5.2", + "fastify-error": "^0.3.0", + "fastify-warning": "^0.2.0", + "find-my-way": "^4.1.0", + "flatstr": "^1.0.12", + "light-my-request": "^4.2.0", + "pino": "^6.13.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.1.4", + "secure-json-parse": "^2.0.0", + "semver": "^7.3.2", + "tiny-lru": "^7.0.0" + } + }, + "fastify-error": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/fastify-error/-/fastify-error-0.3.1.tgz", + "integrity": "sha512-oCfpcsDndgnDVgiI7bwFKAun2dO+4h84vBlkWsWnz/OUK9Reff5UFoFl241xTiLeHWX/vU9zkDVXqYUxjOwHcQ==" + }, + "fastify-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.0.tgz", + "integrity": "sha512-ZdCvKEEd92DNLps5n0v231Bha8bkz1DjnPP/aEz37rz/q42Z5JVLmgnqR4DYuNn3NXAO3IDCPyRvgvxtJ4Ym4w==" + }, + "fastify-static": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fastify-static/-/fastify-static-4.5.0.tgz", + "integrity": "sha512-Q7Tgl55AjsmBwiO4hKYib2BUCt+XTWLJ6Xp8YPPHU3EsrKNpevJ4cz8pjf1Ey1QhHw9O8Y2FDKdu+IC74oHvqw==", + "requires": { + "content-disposition": "^0.5.3", + "encoding-negotiator": "^2.0.1", + "fastify-plugin": "^3.0.0", + "glob": "^7.1.4", + "p-limit": "^3.1.0", + "readable-stream": "^3.4.0", + "send": "^0.17.1" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + } + } + }, + "fastify-swagger": { + "version": "4.12.6", + "resolved": "https://registry.npmjs.org/fastify-swagger/-/fastify-swagger-4.12.6.tgz", + "integrity": "sha512-XuHyi+aPQETMsB5oOw5m8j8hror/08MSa/7Gpxon3Mu2ZtlulG8q8/XmBGB1UM0WDRifGw456IgO7kVQVPLU8A==", + "requires": { + "fastify-plugin": "^3.0.0", + "fastify-static": "^4.0.0", + "js-yaml": "^4.0.0", + "json-schema-resolver": "^1.3.0", + "openapi-types": "^9.1.0" + } + }, + "fastify-warning": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz", + "integrity": "sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==" + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } }, "fb-watchman": { "version": "2.0.1", @@ -10601,33 +10674,15 @@ "to-regex-range": "^5.0.1" } }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "find-my-way": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-4.4.0.tgz", + "integrity": "sha512-hpntHvK0iOHp3pqWRRUEzioar4tp8euBD8DkPG3VauOriZLgwGZLTNp6yZSrdctJ8RCDS7zhZSR2V+yOaBbNow==", "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "fast-decode-uri-component": "^1.0.1", + "fast-deep-equal": "^3.1.3", + "safe-regex2": "^2.0.0", + "semver-store": "^0.3.0" } }, "find-up": { @@ -10658,6 +10713,11 @@ "rimraf": "^3.0.2" } }, + "flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, "flatted": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", @@ -11026,6 +11086,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -11951,7 +12012,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "requires": { "argparse": "^2.0.1" } @@ -12009,11 +12069,20 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "json-schema-resolver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/json-schema-resolver/-/json-schema-resolver-1.3.0.tgz", + "integrity": "sha512-EX7W1r8aZ/T3j8GbbBxPXi60bnsELfT90OiA1QrbGMvwzVSbyMNOAzvMFcFb8m7gKCXZLJpGe+cJOvWgoFl29A==", + "requires": { + "debug": "^4.1.1", + "rfdc": "^1.1.4", + "uri-js": "^4.2.2" + } + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -12070,6 +12139,35 @@ "type-check": "~0.4.0" } }, + "light-my-request": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-4.7.0.tgz", + "integrity": "sha512-LTa8YZp3K2AUpqUnwwKajoIHcsKOBnzwJNQSrk7unziPwo6CjOYjyO0F9wfkxFvP+nBsCGe3eMPnedVgIIgdAw==", + "requires": { + "ajv": "^8.1.0", + "cookie": "^0.4.0", + "fastify-warning": "^0.2.0", + "set-cookie-parser": "^2.4.1" + }, + "dependencies": { + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -12258,7 +12356,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -12289,16 +12386,6 @@ "tmpl": "1.0.5" } }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -12308,7 +12395,8 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true }, "micromatch": { "version": "4.0.4", @@ -12328,12 +12416,14 @@ "mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true }, "mime-types": { "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, "requires": { "mime-db": "1.51.0" } @@ -12367,8 +12457,7 @@ "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "natural-compare": { "version": "1.4.0", @@ -12376,11 +12465,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -12556,6 +12640,11 @@ "mimic-fn": "^2.1.0" } }, + "openapi-types": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-9.3.1.tgz", + "integrity": "sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw==" + }, "opencollective-postinstall": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", @@ -12662,11 +12751,6 @@ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -12689,11 +12773,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "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=" - }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -12718,6 +12797,25 @@ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, + "pino": { + "version": "6.13.3", + "resolved": "https://registry.npmjs.org/pino/-/pino-6.13.3.tgz", + "integrity": "sha512-tJy6qVgkh9MwNgqX1/oYi3ehfl2Y9H0uHyEEMsBe74KinESIjdMrMQDWpcZPpPicg3VV35d/GLQZmo4QgU2Xkg==", + "requires": { + "fast-redact": "^3.0.0", + "fast-safe-stringify": "^2.0.8", + "fastify-warning": "^0.2.0", + "flatstr": "^1.0.12", + "pino-std-serializers": "^3.1.0", + "quick-format-unescaped": "^4.0.3", + "sonic-boom": "^1.0.2" + } + }, + "pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, "pirates": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", @@ -12842,8 +12940,7 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "pupa": { "version": "2.1.1", @@ -12854,27 +12951,21 @@ "escape-goat": "^2.0.0" } }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" }, "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==" }, - "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==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -12911,7 +13002,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -12957,6 +13047,11 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -13015,6 +13110,21 @@ "signal-exit": "^3.0.2" } }, + "ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -13038,10 +13148,19 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-regex2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", + "integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==", + "requires": { + "ret": "~0.2.0" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "saxes": { "version": "5.0.1", @@ -13052,11 +13171,15 @@ "xmlchars": "^2.2.0" } }, + "secure-json-parse": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.4.0.tgz", + "integrity": "sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==" + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -13090,6 +13213,11 @@ "integrity": "sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ==", "dev": true }, + "semver-store": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz", + "integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==" + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -13132,16 +13260,10 @@ } } }, - "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==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } + "set-cookie-parser": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.4.8.tgz", + "integrity": "sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg==" }, "setprototypeof": { "version": "1.1.1", @@ -13208,6 +13330,15 @@ } } }, + "sonic-boom": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", + "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "requires": { + "atomic-sleep": "^1.0.0", + "flatstr": "^1.0.12" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13255,7 +13386,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "requires": { "safe-buffer": "~5.2.0" }, @@ -13263,8 +13393,7 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, @@ -13284,6 +13413,11 @@ "strip-ansi": "^6.0.0" } }, + "string-similarity": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", + "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" + }, "string-width": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", @@ -13424,19 +13558,6 @@ "supports-color": "^7.0.0" } }, - "swagger-ui-dist": { - "version": "3.52.5", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.52.5.tgz", - "integrity": "sha512-8z18eX8G/jbTXYzyNIaobrnD7PSN7yU/YkSasMmajrXtw0FGS64XjrKn5v37d36qmU3o1xLeuYnktshRr7uIFw==" - }, - "swagger-ui-express": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.6.tgz", - "integrity": "sha512-Xs2BGGudvDBtL7RXcYtNvHsFtP1DBFPMJFRxHe5ez/VG/rzVOEjazJOOSc/kSCyxreCTKfJrII6MJlL9a6t8vw==", - "requires": { - "swagger-ui-dist": "^3.18.1" - } - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -13482,6 +13603,11 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "tiny-lru": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-7.0.6.tgz", + "integrity": "sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow==" + }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -13599,15 +13725,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -13650,11 +13767,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, "update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", @@ -13681,7 +13793,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -13698,13 +13809,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { "version": "8.3.2", @@ -13736,11 +13841,6 @@ } } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -13954,8 +14054,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.2", @@ -14031,8 +14130,7 @@ "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index 5260ef4..7979ab0 100644 --- a/package.json +++ b/package.json @@ -46,8 +46,8 @@ "dependencies": { "cross-env": "7.0.3", "dotenv": "10.0.0", - "express": "4.17.1", - "swagger-ui-express": "4.1.6", + "fastify": "^3.24.1", + "fastify-swagger": "^4.12.6", "uuid": "8.3.2", "yamljs": "0.3.0" }, diff --git a/src/app.js b/src/app.js index ecf6004..1feddec 100644 --- a/src/app.js +++ b/src/app.js @@ -1,24 +1,16 @@ -const express = require('express'); -const swaggerUI = require('swagger-ui-express'); -const path = require('path'); -const YAML = require('yamljs'); +const fastify = require('fastify'); const userRouter = require('./resources/users/user.router'); -const app = express(); -const swaggerDocument = YAML.load(path.join(__dirname, '../doc/api.yaml')); +const app = fastify({ logger: true}); -app.use(express.json()); +app.register(require('fastify-swagger'), { + exposeRoute: true, + routePrefix: '/docs', + swagger: { + info: {title: 'task4 Rest-server'} + } +}) -app.use('/doc', swaggerUI.serve, swaggerUI.setup(swaggerDocument)); - -app.use('/', (req, res, next) => { - if (req.originalUrl === '/') { - res.send('Service is running!'); - return; - } - next(); -}); - -app.use('/users', userRouter); +app.register(userRouter, {prefix: '/users'}); module.exports = app; diff --git a/src/resources/users/user.memory.repository.js b/src/resources/users/user.memory.repository.js index 786b265..ad14a2c 100644 --- a/src/resources/users/user.memory.repository.js +++ b/src/resources/users/user.memory.repository.js @@ -1,6 +1,28 @@ -const getAll = async () => - // TODO: mock implementation. should be replaced during task development - [] -; +const {v4: uuid} = require('uuid'); -module.exports = { getAll }; +let users = []; + +const getAll = async () => users; + +const getById = async (id) => users.find((user) => user.id === id); + +const create = async (name, login, password) => { + const newUser = { + id: uuid(), + name, login, password + } + users.push(newUser) + return newUser; +}; + +const deleteById = async (id) => { + users = users.filter((user) => user.id !== id); +}; + +const updateById = async (id, name, login, password) => { + users = users.map((user) => user.id === id ? {id, name, login, password} : user); + const updatedUser = await getById(id); + return updatedUser; +}; + +module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/resources/users/user.router.js b/src/resources/users/user.router.js index 1a7c56a..6c7f4c9 100644 --- a/src/resources/users/user.router.js +++ b/src/resources/users/user.router.js @@ -1,11 +1,43 @@ -const router = require('express').Router(); const User = require('./user.model'); const usersService = require('./user.service'); -router.route('/').get(async (req, res) => { - const users = await usersService.getAll(); - // map user fields to exclude secret fields like "password" - res.json(users.map(User.toResponse)); -}); +function userRoutes(app, options, done) { -module.exports = router; + app.get('/', async (req, reply) => { + const users = await usersService.getAll(); + reply.send(users.map(User.toResponse)); + }) + + app.get('/:id', async (req, reply) => { + const { id } = req.params; + const user = await usersService.getById(id); + reply.code(200); + reply.send(User.toResponse(user)); + }) + + app.post('/', async (req, reply) => { + const { name, login, password } = req.body; + const user = await usersService.create(name, login, password); + reply.code(201); + reply.send(User.toResponse(user)); + }) + + app.delete('/:id', async (req, reply) => { + const { id } = req.params; + await usersService.deleteById(id); + reply.code(204); + reply.send(); + }) + + app.put('/:id', async (req, reply) => { + const { id } = req.params; + const { name, login, password } = req.body; + const user = await usersService.updateById(id, name, login, password); + reply.code(200); + reply.send(User.toResponse(user)); + }) + + done() +} + +module.exports = userRoutes; diff --git a/src/resources/users/user.service.js b/src/resources/users/user.service.js index 814391e..d4cd36a 100644 --- a/src/resources/users/user.service.js +++ b/src/resources/users/user.service.js @@ -2,4 +2,12 @@ const usersRepo = require('./user.memory.repository'); const getAll = () => usersRepo.getAll(); -module.exports = { getAll }; +const getById = (id) => usersRepo.getById(id); + +const create = (name, login, password) => usersRepo.create(name, login, password) + +const deleteById = (id) => usersRepo.deleteById(id); + +const updateById = (id, name, login, password) => usersRepo.updateById(id, name, login, password); + +module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/server.js b/src/server.js index ead4b95..69c03d1 100644 --- a/src/server.js +++ b/src/server.js @@ -1,6 +1,12 @@ const { PORT } = require('./common/config'); const app = require('./app'); -app.listen(PORT, () => {} - // console.log(`App is running on http://localhost:${PORT}`) -); +const start = async () => { + try { + await app.listen(PORT); + } catch (error) { + app.log.error(error); + } +} + +start(); \ No newline at end of file diff --git a/src/test.http b/src/test.http new file mode 100644 index 0000000..9aad659 --- /dev/null +++ b/src/test.http @@ -0,0 +1,25 @@ +### GET ALL ITEMS +GET http://localhost:4000/users/ HTTP/1.1 + +### GET ITEM BY ID +GET http://localhost:4000/users/uuid2 HTTP/1.1 + +### CREATE USER +POST http://localhost:4000/users HTTP/1.1 +Content-Type: application/json + +{ + "name": "Alex", "login": "alex", "password": "test" +} + + +### DELETE USER +DELETE http://localhost:4000/users/uuid2 HTTP/1.1 + +### UPDATE USER +PUT http://localhost:4000/users/uuid2 HTTP/1.1 +Content-Type: application/json + +{ + "name": "Alex", "login": "alex", "password": "test" +} \ No newline at end of file From 24f3f4a92e233b3608015402db65e3c6263bb5bd Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 5 Dec 2021 20:08:29 +0200 Subject: [PATCH 05/15] add basic routs for tasks and boards --- src/app.js | 4 ++ .../boards/board.memory.repository.js | 28 ++++++++++ src/resources/boards/board.model.js | 22 ++++++++ src/resources/boards/board.router.js | 42 +++++++++++++++ src/resources/boards/board.service.js | 13 +++++ src/resources/tasks/task.memory.repository.js | 38 ++++++++++++++ src/resources/tasks/task.model.js | 22 ++++++++ src/resources/tasks/task.router.js | 52 +++++++++++++++++++ src/resources/tasks/task.service.js | 23 ++++++++ 9 files changed, 244 insertions(+) create mode 100644 src/resources/boards/board.memory.repository.js create mode 100644 src/resources/boards/board.model.js create mode 100644 src/resources/boards/board.router.js create mode 100644 src/resources/boards/board.service.js create mode 100644 src/resources/tasks/task.memory.repository.js create mode 100644 src/resources/tasks/task.model.js create mode 100644 src/resources/tasks/task.router.js create mode 100644 src/resources/tasks/task.service.js diff --git a/src/app.js b/src/app.js index 1feddec..1d83b01 100644 --- a/src/app.js +++ b/src/app.js @@ -1,5 +1,7 @@ const fastify = require('fastify'); const userRouter = require('./resources/users/user.router'); +const boardRouter = require('./resources/boards/board.router'); +const taskRouter = require('./resources/tasks/task.router'); const app = fastify({ logger: true}); @@ -12,5 +14,7 @@ app.register(require('fastify-swagger'), { }) app.register(userRouter, {prefix: '/users'}); +app.register(boardRouter, {prefix: '/boards'}); +app.register(taskRouter, {prefix: '/boards/:id/tasks'}); module.exports = app; diff --git a/src/resources/boards/board.memory.repository.js b/src/resources/boards/board.memory.repository.js new file mode 100644 index 0000000..15e727a --- /dev/null +++ b/src/resources/boards/board.memory.repository.js @@ -0,0 +1,28 @@ +const {v4: uuid} = require('uuid'); + +let boards = []; + +const getAll = async () => boards; + +const getById = async (id) => boards.find((board) => board.id === id); + +const create = async (title, columns) => { + const newBoard = { + id: uuid(), + title, columns + } + boards.push(newBoard) + return newBoard; +}; + +const deleteById = async (id) => { + boards = boards.filter((board) => board.id !== id); +}; + +const updateById = async (id, title, columns) => { + boards = boards.map((board) => board.id === id ? {id, title, columns} : board); + const updatedBoard = await getById(id); + return updatedBoard; +}; + +module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/resources/boards/board.model.js b/src/resources/boards/board.model.js new file mode 100644 index 0000000..0b95a90 --- /dev/null +++ b/src/resources/boards/board.model.js @@ -0,0 +1,22 @@ +const uuid = require('uuid'); + +class User { + constructor({ + id = uuid(), + name = 'USER', + login = 'user', + password = 'P@55w0rd' + } = {}) { + this.id = id; + this.name = name; + this.login = login; + this.password = password; + } + + static toResponse(user) { + const { id, name, login } = user; + return { id, name, login }; + } +} + +module.exports = User; diff --git a/src/resources/boards/board.router.js b/src/resources/boards/board.router.js new file mode 100644 index 0000000..32286f4 --- /dev/null +++ b/src/resources/boards/board.router.js @@ -0,0 +1,42 @@ +const boardService = require('./board.service'); + +function boardRoutes(app, options, done) { + + app.get('/', async (req, reply) => { + const boards = await boardService.getAll(); + reply.send(boards); + }) + + app.get('/:id', async (req, reply) => { + const { id } = req.params; + const board = await boardService.getById(id); + reply.code(200); + reply.send(board); + }) + + app.post('/', async (req, reply) => { + const { title, columns } = req.body; + const board = await boardService.create(title, columns); + reply.code(201); + reply.send(board); + }) + + app.delete('/:id', async (req, reply) => { + const { id } = req.params; + await boardService.deleteById(id); + reply.code(204); + reply.send(); + }) + + app.put('/:id', async (req, reply) => { + const { id } = req.params; + const { title, columns } = req.body; + const board = await boardService.updateById(id, title, columns); + reply.code(200); + reply.send(board); + }) + + done() +} + +module.exports = boardRoutes; diff --git a/src/resources/boards/board.service.js b/src/resources/boards/board.service.js new file mode 100644 index 0000000..3a89aca --- /dev/null +++ b/src/resources/boards/board.service.js @@ -0,0 +1,13 @@ +const boardsRepo = require('./board.memory.repository'); + +const getAll = () => boardsRepo.getAll(); + +const getById = (id) => boardsRepo.getById(id); + +const create = (title, columns) => boardsRepo.create(title, columns) + +const deleteById = (id) => boardsRepo.deleteById(id); + +const updateById = (id, title, columns) => boardsRepo.updateById(id, title, columns); + +module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/resources/tasks/task.memory.repository.js b/src/resources/tasks/task.memory.repository.js new file mode 100644 index 0000000..60862ec --- /dev/null +++ b/src/resources/tasks/task.memory.repository.js @@ -0,0 +1,38 @@ +const {v4: uuid} = require('uuid'); + +let tasks = []; + +const getAll = async () => tasks; + +const getById = async (id) => tasks.find((task) => task.id === id); + +const create = async (title, + order, + description, + userId, + boardId, + columnId) => { + const newTask = { + id: uuid(), + title, + order, + description, + userId, + boardId, + columnId + } + tasks.push(newTask) + return newTask; +}; + +const deleteById = async (id) => { + tasks = tasks.filter((task) => task.id !== id); +}; + +const updateById = async (id, title, columns) => { + tasks = tasks.map((task) => task.id === id ? {id, title, columns} : task); + const updatedTask = await getById(id); + return updatedTask; +}; + +module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/resources/tasks/task.model.js b/src/resources/tasks/task.model.js new file mode 100644 index 0000000..0b95a90 --- /dev/null +++ b/src/resources/tasks/task.model.js @@ -0,0 +1,22 @@ +const uuid = require('uuid'); + +class User { + constructor({ + id = uuid(), + name = 'USER', + login = 'user', + password = 'P@55w0rd' + } = {}) { + this.id = id; + this.name = name; + this.login = login; + this.password = password; + } + + static toResponse(user) { + const { id, name, login } = user; + return { id, name, login }; + } +} + +module.exports = User; diff --git a/src/resources/tasks/task.router.js b/src/resources/tasks/task.router.js new file mode 100644 index 0000000..56fa263 --- /dev/null +++ b/src/resources/tasks/task.router.js @@ -0,0 +1,52 @@ +const taskService = require('./task.service'); + +function taskRoutes(app, options, done) { + + app.get('/', async (req, reply) => { + const tasks = await taskService.getAll(); + reply.send(tasks); + }) + + app.get('/:id', async (req, reply) => { + const { id } = req.params; + const task = await taskService.getById(id); + reply.code(200); + reply.send(task); + }) + + app.post('/', async (req, reply) => { + const { title, + order, + description, + userId, + boardId, + columnId } = req.body; + const task = await taskService.create(title, + order, + description, + userId, + boardId, + columnId); + reply.code(201); + reply.send(task); + }) + + app.delete('/:id', async (req, reply) => { + const { id } = req.params; + await taskService.deleteById(id); + reply.code(204); + reply.send(); + }) + + app.put('/:id', async (req, reply) => { + const { id } = req.params; + const { title, columns } = req.body; + const task = await taskService.updateById(id, title, columns); + reply.code(200); + reply.send(task); + }) + + done() +} + +module.exports = taskRoutes; diff --git a/src/resources/tasks/task.service.js b/src/resources/tasks/task.service.js new file mode 100644 index 0000000..33b8adc --- /dev/null +++ b/src/resources/tasks/task.service.js @@ -0,0 +1,23 @@ +const tasksRepo = require('./task.memory.repository'); + +const getAll = () => tasksRepo.getAll(); + +const getById = (id) => tasksRepo.getById(id); + +const create = (title, + order, + description, + userId, + boardId, + columnId) => tasksRepo.create(title, + order, + description, + userId, + boardId, + columnId); + +const deleteById = (id) => tasksRepo.deleteById(id); + +const updateById = (id, title, columns) => tasksRepo.updateById(id, title, columns); + +module.exports = { getAll, getById, create, deleteById, updateById }; From 3662a21a68ef7bad9ad29ae2eeca2a06558f9304 Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 5 Dec 2021 21:58:28 +0200 Subject: [PATCH 06/15] bug fixes with Id --- src/resources/tasks/task.memory.repository.js | 28 +++++++++++-- src/resources/tasks/task.router.js | 37 +++++++++++------ src/resources/tasks/task.service.js | 40 +++++++++++++------ src/resources/users/user.router.js | 13 ++++++ 4 files changed, 90 insertions(+), 28 deletions(-) diff --git a/src/resources/tasks/task.memory.repository.js b/src/resources/tasks/task.memory.repository.js index 60862ec..cf16bb6 100644 --- a/src/resources/tasks/task.memory.repository.js +++ b/src/resources/tasks/task.memory.repository.js @@ -29,10 +29,32 @@ const deleteById = async (id) => { tasks = tasks.filter((task) => task.id !== id); }; -const updateById = async (id, title, columns) => { - tasks = tasks.map((task) => task.id === id ? {id, title, columns} : task); +const updateById = async ( + id, + title, + order, + description, + userId, + boardId, + columnId) => { + tasks = tasks.map((task) => task.id === id ? { + id, + title, + order, + description, + userId, + boardId, + columnId} : task); const updatedTask = await getById(id); return updatedTask; }; -module.exports = { getAll, getById, create, deleteById, updateById }; +const updateUserIdToNull = (userId, nullUserId) => { + tasks.forEach((task) => { + if(task.userId === userId) { + Object.assign(task, {"userId": nullUserId}); + } + }) +} + +module.exports = { getAll, getById, create, deleteById, updateById, updateUserIdToNull }; diff --git a/src/resources/tasks/task.router.js b/src/resources/tasks/task.router.js index 56fa263..f23a833 100644 --- a/src/resources/tasks/task.router.js +++ b/src/resources/tasks/task.router.js @@ -15,12 +15,13 @@ function taskRoutes(app, options, done) { }) app.post('/', async (req, reply) => { - const { title, - order, - description, - userId, - boardId, - columnId } = req.body; + const { + title, + order, + description, + userId, + columnId } = req.body; + const boardId = req.params.id const task = await taskService.create(title, order, description, @@ -31,17 +32,27 @@ function taskRoutes(app, options, done) { reply.send(task); }) - app.delete('/:id', async (req, reply) => { - const { id } = req.params; - await taskService.deleteById(id); + app.delete('/:taskid', async (req, reply) => { + const { taskid } = req.params; + await taskService.deleteById(taskid); reply.code(204); reply.send(); }) - app.put('/:id', async (req, reply) => { - const { id } = req.params; - const { title, columns } = req.body; - const task = await taskService.updateById(id, title, columns); + app.put('/:taskid', async (req, reply) => { + const { taskid } = req.params; + const { title, + order, + description, + userId, + boardId, + columnId } = req.body; + const task = await taskService.updateById(taskid, title, + order, + description, + userId, + boardId, + columnId); reply.code(200); reply.send(task); }) diff --git a/src/resources/tasks/task.service.js b/src/resources/tasks/task.service.js index 33b8adc..8c8eaba 100644 --- a/src/resources/tasks/task.service.js +++ b/src/resources/tasks/task.service.js @@ -4,20 +4,36 @@ const getAll = () => tasksRepo.getAll(); const getById = (id) => tasksRepo.getById(id); -const create = (title, - order, - description, - userId, - boardId, - columnId) => tasksRepo.create(title, - order, - description, - userId, - boardId, - columnId); +const create = ( + title, + order, + description, + userId, + boardId, + columnId) => tasksRepo.create( + title, + order, + description, + userId, + boardId, + columnId); const deleteById = (id) => tasksRepo.deleteById(id); -const updateById = (id, title, columns) => tasksRepo.updateById(id, title, columns); +const updateById = ( + id, + title, + order, + description, + userId, + boardId, + columnId) => tasksRepo.updateById( + id, + title, + order, + description, + userId, + boardId, + columnId); module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/resources/users/user.router.js b/src/resources/users/user.router.js index 6c7f4c9..08cc539 100644 --- a/src/resources/users/user.router.js +++ b/src/resources/users/user.router.js @@ -1,5 +1,6 @@ const User = require('./user.model'); const usersService = require('./user.service'); +const taskRepo = require('../tasks/task.memory.repository'); function userRoutes(app, options, done) { @@ -25,6 +26,18 @@ function userRoutes(app, options, done) { app.delete('/:id', async (req, reply) => { const { id } = req.params; await usersService.deleteById(id); + taskRepo.updateUserIdToNull(id, null); + // const tasks4DeletedUser = tasks.filter((task) => task.userId === id); + // for await(const task of tasks4DeletedUser) { + // task.userId = null; + // taskService.updateById(task.id, + // task.title, + // task.order, + // task.description, + // task.userId, + // task.boardId, + // task.columnId) + // } reply.code(204); reply.send(); }) From 7ec2af81742b4f48dc86554e161af5c4ea0a3b5b Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 5 Dec 2021 22:22:16 +0200 Subject: [PATCH 07/15] add condition if task and board not found --- src/resources/boards/board.router.js | 12 ++++++++++-- src/resources/tasks/task.memory.repository.js | 6 +++++- src/resources/tasks/task.router.js | 9 +++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/resources/boards/board.router.js b/src/resources/boards/board.router.js index 32286f4..ac152ba 100644 --- a/src/resources/boards/board.router.js +++ b/src/resources/boards/board.router.js @@ -1,4 +1,5 @@ const boardService = require('./board.service'); +const tasksRepo = require('../tasks/task.memory.repository'); function boardRoutes(app, options, done) { @@ -10,8 +11,14 @@ function boardRoutes(app, options, done) { app.get('/:id', async (req, reply) => { const { id } = req.params; const board = await boardService.getById(id); - reply.code(200); - reply.send(board); + if(board) { + reply.code(200); + reply.send(board); + } else { + reply.code(404); + reply.send(); + } + }) app.post('/', async (req, reply) => { @@ -24,6 +31,7 @@ function boardRoutes(app, options, done) { app.delete('/:id', async (req, reply) => { const { id } = req.params; await boardService.deleteById(id); + tasksRepo.deleteTasksWithBoard(id); reply.code(204); reply.send(); }) diff --git a/src/resources/tasks/task.memory.repository.js b/src/resources/tasks/task.memory.repository.js index cf16bb6..7810340 100644 --- a/src/resources/tasks/task.memory.repository.js +++ b/src/resources/tasks/task.memory.repository.js @@ -57,4 +57,8 @@ const updateUserIdToNull = (userId, nullUserId) => { }) } -module.exports = { getAll, getById, create, deleteById, updateById, updateUserIdToNull }; +const deleteTasksWithBoard = (boardId) => { + tasks = tasks.filter((task) => task.boardId !== boardId); +} + +module.exports = { getAll, getById, create, deleteById, updateById, updateUserIdToNull, deleteTasksWithBoard }; diff --git a/src/resources/tasks/task.router.js b/src/resources/tasks/task.router.js index f23a833..54fb4a8 100644 --- a/src/resources/tasks/task.router.js +++ b/src/resources/tasks/task.router.js @@ -10,8 +10,13 @@ function taskRoutes(app, options, done) { app.get('/:id', async (req, reply) => { const { id } = req.params; const task = await taskService.getById(id); - reply.code(200); - reply.send(task); + if(task) { + reply.code(200); + reply.send(task); + } else { + reply.code(404); + reply.send(); + } }) app.post('/', async (req, reply) => { From 89101aac957c3803c0df01792d042b3cb32d0f6e Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 5 Dec 2021 22:42:47 +0200 Subject: [PATCH 08/15] change swagger url, change README --- README.md | 2 +- src/app.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index da42486..c20d20e 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ## Downloading ``` -git clone {repository URL} +git clone https://github.com/RohovAlex/nodejs2021Q4-service.git ``` ## Installing NPM modules diff --git a/src/app.js b/src/app.js index 1d83b01..3a86634 100644 --- a/src/app.js +++ b/src/app.js @@ -7,7 +7,7 @@ const app = fastify({ logger: true}); app.register(require('fastify-swagger'), { exposeRoute: true, - routePrefix: '/docs', + routePrefix: '/doc', swagger: { info: {title: 'task4 Rest-server'} } From a32f3f19a459a46f7f56662135d7bf8860fa93ea Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Thu, 9 Dec 2021 15:14:41 +0200 Subject: [PATCH 09/15] task 5 initial commit --- src/server.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server.js b/src/server.js index 69c03d1..a616922 100644 --- a/src/server.js +++ b/src/server.js @@ -1,3 +1,4 @@ +// migration to ts const { PORT } = require('./common/config'); const app = require('./app'); From 8ce9e77f0f53e46b87edddc57ccb078ac0bdcc91 Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Thu, 9 Dec 2021 21:16:46 +0200 Subject: [PATCH 10/15] change files to ts and add classes for repositories files --- dist/app.js | 18 ++ dist/app.js.map | 1 + dist/common/config.js | 14 + dist/common/config.js.map | 1 + .../boards/board.memory.repository.js | 46 ++++ .../boards/board.memory.repository.js.map | 1 + dist/resources/boards/board.model.js | 21 ++ dist/resources/boards/board.model.js.map | 1 + dist/resources/boards/board.router.js | 44 ++++ dist/resources/boards/board.router.js.map | 1 + dist/resources/boards/board.service.js | 9 + dist/resources/boards/board.service.js.map | 1 + .../resources/tasks/task.memory.repository.js | 106 ++++++++ .../tasks/task.memory.repository.js.map | 1 + dist/resources/tasks/task.model.js | 21 ++ dist/resources/tasks/task.model.js.map | 1 + dist/resources/tasks/task.router.js | 43 ++++ dist/resources/tasks/task.router.js.map | 1 + dist/resources/tasks/task.service.js | 9 + dist/resources/tasks/task.service.js.map | 1 + .../resources/users/user.memory.repository.js | 50 ++++ .../users/user.memory.repository.js.map | 1 + dist/resources/users/user.model.js | 21 ++ dist/resources/users/user.model.js.map | 1 + {src => dist}/resources/users/user.router.js | 26 +- dist/resources/users/user.router.js.map | 1 + {src => dist}/resources/users/user.service.js | 11 +- dist/resources/users/user.service.js.map | 1 + dist/server.js | 14 + dist/server.js.map | 1 + package-lock.json | 243 +++++++++++++++++- package.json | 10 +- src/{app.js => app.ts} | 0 src/common/{config.js => config.ts} | 0 .../boards/board.memory.repository.js | 28 -- .../boards/board.memory.repository.ts | 56 ++++ src/resources/boards/board.model.js | 22 -- src/resources/boards/board.model.ts | 22 ++ .../{board.router.js => board.router.ts} | 10 +- src/resources/boards/board.service.js | 13 - src/resources/boards/board.service.ts | 13 + src/resources/tasks/task.memory.repository.js | 64 ----- src/resources/tasks/task.memory.repository.ts | 130 ++++++++++ src/resources/tasks/task.model.js | 22 -- src/resources/tasks/task.model.ts | 22 ++ .../tasks/{task.router.js => task.router.ts} | 10 +- .../{task.service.js => task.service.ts} | 16 +- src/resources/users/user.memory.repository.js | 28 -- src/resources/users/user.memory.repository.ts | 61 +++++ src/resources/users/user.model.js | 22 -- src/resources/users/user.model.ts | 22 ++ src/resources/users/user.router.ts | 56 ++++ src/resources/users/user.service.ts | 15 ++ src/{server.js => server.ts} | 0 tsconfig.json | 104 ++++++++ 55 files changed, 1203 insertions(+), 254 deletions(-) create mode 100644 dist/app.js create mode 100644 dist/app.js.map create mode 100644 dist/common/config.js create mode 100644 dist/common/config.js.map create mode 100644 dist/resources/boards/board.memory.repository.js create mode 100644 dist/resources/boards/board.memory.repository.js.map create mode 100644 dist/resources/boards/board.model.js create mode 100644 dist/resources/boards/board.model.js.map create mode 100644 dist/resources/boards/board.router.js create mode 100644 dist/resources/boards/board.router.js.map create mode 100644 dist/resources/boards/board.service.js create mode 100644 dist/resources/boards/board.service.js.map create mode 100644 dist/resources/tasks/task.memory.repository.js create mode 100644 dist/resources/tasks/task.memory.repository.js.map create mode 100644 dist/resources/tasks/task.model.js create mode 100644 dist/resources/tasks/task.model.js.map create mode 100644 dist/resources/tasks/task.router.js create mode 100644 dist/resources/tasks/task.router.js.map create mode 100644 dist/resources/tasks/task.service.js create mode 100644 dist/resources/tasks/task.service.js.map create mode 100644 dist/resources/users/user.memory.repository.js create mode 100644 dist/resources/users/user.memory.repository.js.map create mode 100644 dist/resources/users/user.model.js create mode 100644 dist/resources/users/user.model.js.map rename {src => dist}/resources/users/user.router.js (89%) create mode 100644 dist/resources/users/user.router.js.map rename {src => dist}/resources/users/user.service.js (76%) create mode 100644 dist/resources/users/user.service.js.map create mode 100644 dist/server.js create mode 100644 dist/server.js.map rename src/{app.js => app.ts} (100%) rename src/common/{config.js => config.ts} (100%) delete mode 100644 src/resources/boards/board.memory.repository.js create mode 100644 src/resources/boards/board.memory.repository.ts delete mode 100644 src/resources/boards/board.model.js create mode 100644 src/resources/boards/board.model.ts rename src/resources/boards/{board.router.js => board.router.ts} (76%) delete mode 100644 src/resources/boards/board.service.js create mode 100644 src/resources/boards/board.service.ts delete mode 100644 src/resources/tasks/task.memory.repository.js create mode 100644 src/resources/tasks/task.memory.repository.ts delete mode 100644 src/resources/tasks/task.model.js create mode 100644 src/resources/tasks/task.model.ts rename src/resources/tasks/{task.router.js => task.router.ts} (82%) rename src/resources/tasks/{task.service.js => task.service.ts} (57%) delete mode 100644 src/resources/users/user.memory.repository.js create mode 100644 src/resources/users/user.memory.repository.ts delete mode 100644 src/resources/users/user.model.js create mode 100644 src/resources/users/user.model.ts create mode 100644 src/resources/users/user.router.ts create mode 100644 src/resources/users/user.service.ts rename src/{server.js => server.ts} (100%) create mode 100644 tsconfig.json diff --git a/dist/app.js b/dist/app.js new file mode 100644 index 0000000..085c583 --- /dev/null +++ b/dist/app.js @@ -0,0 +1,18 @@ +"use strict"; +const fastify = require('fastify'); +const userRouter = require('./resources/users/user.router'); +const boardRouter = require('./resources/boards/board.router'); +const taskRouter = require('./resources/tasks/task.router'); +const app = fastify({ logger: true }); +app.register(require('fastify-swagger'), { + exposeRoute: true, + routePrefix: '/doc', + swagger: { + info: { title: 'task4 Rest-server' } + } +}); +app.register(userRouter, { prefix: '/users' }); +app.register(boardRouter, { prefix: '/boards' }); +app.register(taskRouter, { prefix: '/boards/:id/tasks' }); +module.exports = app; +//# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/dist/app.js.map b/dist/app.js.map new file mode 100644 index 0000000..56e5577 --- /dev/null +++ b/dist/app.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";AAAA,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,UAAU,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE5D,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;AAErC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;IACrC,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE;QACL,IAAI,EAAE,EAAC,KAAK,EAAE,mBAAmB,EAAC;KACrC;CACJ,CAAC,CAAA;AAEF,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;AAC7C,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;AAC/C,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAC,MAAM,EAAE,mBAAmB,EAAC,CAAC,CAAC;AAExD,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC"} \ No newline at end of file diff --git a/dist/common/config.js b/dist/common/config.js new file mode 100644 index 0000000..ef084cd --- /dev/null +++ b/dist/common/config.js @@ -0,0 +1,14 @@ +"use strict"; +const dotenv = require('dotenv'); +const path = require('path'); +dotenv.config({ + path: path.join(__dirname, '../../.env') +}); +module.exports = { + PORT: process.env.PORT, + NODE_ENV: process.env.NODE_ENV, + MONGO_CONNECTION_STRING: process.env.MONGO_CONNECTION_STRING, + JWT_SECRET_KEY: process.env.JWT_SECRET_KEY, + AUTH_MODE: process.env.AUTH_MODE === 'true' +}; +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/dist/common/config.js.map b/dist/common/config.js.map new file mode 100644 index 0000000..2cc832a --- /dev/null +++ b/dist/common/config.js.map @@ -0,0 +1 @@ +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":";AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,GAAG;IACf,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;IACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;IAC9B,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IAC5D,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IAC1C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;CAC5C,CAAC"} \ No newline at end of file diff --git a/dist/resources/boards/board.memory.repository.js b/dist/resources/boards/board.memory.repository.js new file mode 100644 index 0000000..b4a9b9a --- /dev/null +++ b/dist/resources/boards/board.memory.repository.js @@ -0,0 +1,46 @@ +"use strict"; +var _a; +const { v4: uuid } = require('uuid'); +let boards = []; +class Board { +} +_a = Board; +Board.getById = async (id) => boards.find((board) => board.id === id); +Board.getAll = async () => boards; +Board.create = async (title, columns) => { + const newBoard = { + id: uuid(), + title, columns + }; + boards.push(newBoard); + return newBoard; +}; +Board.deleteById = async (id) => { + boards = boards.filter((board) => board.id !== id); +}; +Board.updateById = async (id, title, columns) => { + boards = boards.map((board) => board.id === id ? { id, title, columns } : board); + const updatedBoard = await getById(id); + return updatedBoard; +}; +// const getAllBoards = async () => boards; +// const getBoardById = async (id) => boards.find((board) => board.id === id); +// const create = async (title, columns) => { +// const newBoard = { +// id: uuid(), +// title, columns +// } +// boards.push(newBoard) +// return newBoard; +// }; +// const deleteById = async (id) => { +// boards = boards.filter((board) => board.id !== id); +// }; +// const updateById = async (id, title, columns) => { +// boards = boards.map((board) => board.id === id ? {id, title, columns} : board); +// const updatedBoard = await getById(id); +// return updatedBoard; +// }; +// module.exports = { getAll, getById, create, deleteById, updateById }; +module.exports = Board; +//# sourceMappingURL=board.memory.repository.js.map \ No newline at end of file diff --git a/dist/resources/boards/board.memory.repository.js.map b/dist/resources/boards/board.memory.repository.js.map new file mode 100644 index 0000000..aae0567 --- /dev/null +++ b/dist/resources/boards/board.memory.repository.js.map @@ -0,0 +1 @@ +{"version":3,"file":"board.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/boards/board.memory.repository.ts"],"names":[],"mappings":";;AAAA,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC,IAAI,MAAM,GAAS,EAAE,CAAC;AACtB,MAAM,KAAK;;;AAGF,aAAO,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAEhE,YAAM,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC;AAE5B,YAAM,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACvC,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,IAAI,EAAE;QACV,KAAK,EAAE,OAAO;KACf,CAAA;IACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrB,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEK,gBAAU,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;IAC/B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEK,gBAAU,GAAG,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/C,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAKJ,2CAA2C;AAE3C,8EAA8E;AAE9E,6CAA6C;AAC7C,yBAAyB;AACzB,oBAAoB;AACpB,uBAAuB;AACvB,QAAQ;AACR,4BAA4B;AAC5B,qBAAqB;AACrB,KAAK;AAEL,qCAAqC;AACrC,wDAAwD;AACxD,KAAK;AAEL,qDAAqD;AACrD,oFAAoF;AACpF,4CAA4C;AAC5C,yBAAyB;AACzB,KAAK;AAEL,wEAAwE;AACxE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/dist/resources/boards/board.model.js b/dist/resources/boards/board.model.js new file mode 100644 index 0000000..e29725e --- /dev/null +++ b/dist/resources/boards/board.model.js @@ -0,0 +1,21 @@ +"use strict"; +// const uuid = require('uuid'); +// class User { +// constructor({ +// id = uuid(), +// name = 'USER', +// login = 'user', +// password = 'P@55w0rd' +// } = {}) { +// this.id = id; +// this.name = name; +// this.login = login; +// this.password = password; +// } +// static toResponse(user) { +// const { id, name, login } = user; +// return { id, name, login }; +// } +// } +// module.exports = User; +//# sourceMappingURL=board.model.js.map \ No newline at end of file diff --git a/dist/resources/boards/board.model.js.map b/dist/resources/boards/board.model.js.map new file mode 100644 index 0000000..b87c281 --- /dev/null +++ b/dist/resources/boards/board.model.js.map @@ -0,0 +1 @@ +{"version":3,"file":"board.model.js","sourceRoot":"","sources":["../../../src/resources/boards/board.model.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAEhC,eAAe;AACf,kBAAkB;AAClB,mBAAmB;AACnB,qBAAqB;AACrB,sBAAsB;AACtB,4BAA4B;AAC5B,cAAc;AACd,oBAAoB;AACpB,wBAAwB;AACxB,0BAA0B;AAC1B,gCAAgC;AAChC,MAAM;AAEN,8BAA8B;AAC9B,wCAAwC;AACxC,kCAAkC;AAClC,MAAM;AACN,IAAI;AAEJ,yBAAyB"} \ No newline at end of file diff --git a/dist/resources/boards/board.router.js b/dist/resources/boards/board.router.js new file mode 100644 index 0000000..4a7c68d --- /dev/null +++ b/dist/resources/boards/board.router.js @@ -0,0 +1,44 @@ +"use strict"; +const boardService = require('./board.service'); +const tasksRepo = require('../tasks/task.memory.repository'); +function boardRoutes(app, options, done) { + app.get('/', async (req, reply) => { + const boards = await boardService.getAllBoards(); + reply.send(boards); + }); + app.get('/:id', async (req, reply) => { + const { id } = req.params; + const board = await boardService.getBoardById(id); + if (board) { + reply.code(200); + reply.send(board); + } + else { + reply.code(404); + reply.send(); + } + }); + app.post('/', async (req, reply) => { + const { title, columns } = req.body; + const board = await boardService.createBoard(title, columns); + reply.code(201); + reply.send(board); + }); + app.delete('/:id', async (req, reply) => { + const { id } = req.params; + await boardService.deleteBoardById(id); + tasksRepo.deleteTasksWithBoard(id); + reply.code(204); + reply.send(); + }); + app.put('/:id', async (req, reply) => { + const { id } = req.params; + const { title, columns } = req.body; + const board = await boardService.updateBoardById(id, title, columns); + reply.code(200); + reply.send(board); + }); + done(); +} +module.exports = boardRoutes; +//# sourceMappingURL=board.router.js.map \ No newline at end of file diff --git a/dist/resources/boards/board.router.js.map b/dist/resources/boards/board.router.js.map new file mode 100644 index 0000000..5c7f7a6 --- /dev/null +++ b/dist/resources/boards/board.router.js.map @@ -0,0 +1 @@ +{"version":3,"file":"board.router.js","sourceRoot":"","sources":["../../../src/resources/boards/board.router.ts"],"names":[],"mappings":";AAAA,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChD,MAAM,SAAS,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAE7D,SAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI;IAEnC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAClD,IAAG,KAAK,EAAE;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;aAAM;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,EAAE,CAAC;SAChB;IAEL,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACvC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/dist/resources/boards/board.service.js b/dist/resources/boards/board.service.js new file mode 100644 index 0000000..d5e02ea --- /dev/null +++ b/dist/resources/boards/board.service.js @@ -0,0 +1,9 @@ +"use strict"; +const boardsRepo = require('./board.memory.repository'); +const getAllBoards = () => boardsRepo.getAll(); +const getBoardById = (id) => boardsRepo.getById(id); +const createBoard = (title, columns) => boardsRepo.create(title, columns); +const deleteBoardById = (id) => boardsRepo.deleteById(id); +const updateBoardById = (id, title, columns) => boardsRepo.updateById(id, title, columns); +module.exports = { getAllBoards, getBoardById, createBoard, deleteBoardById, updateBoardById }; +//# sourceMappingURL=board.service.js.map \ No newline at end of file diff --git a/dist/resources/boards/board.service.js.map b/dist/resources/boards/board.service.js.map new file mode 100644 index 0000000..066789f --- /dev/null +++ b/dist/resources/boards/board.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"board.service.js","sourceRoot":"","sources":["../../../src/resources/boards/board.service.ts"],"names":[],"mappings":";AAAA,MAAM,UAAU,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAExD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AAE/C,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAEzE,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAE1D,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAE1F,MAAM,CAAC,OAAO,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"} \ No newline at end of file diff --git a/dist/resources/tasks/task.memory.repository.js b/dist/resources/tasks/task.memory.repository.js new file mode 100644 index 0000000..9e10857 --- /dev/null +++ b/dist/resources/tasks/task.memory.repository.js @@ -0,0 +1,106 @@ +"use strict"; +var _a; +const { v4: uuid } = require('uuid'); +let tasks = []; +class Task { + constructor() { + this.tasks = tasks; + } +} +_a = Task; +Task.getAll = async () => tasks; +Task.getById = async (id) => tasks.find((task) => task.id === id); +Task.create = async (title, order, description, userId, boardId, columnId) => { + const newTask = { + id: uuid(), + title, + order, + description, + userId, + boardId, + columnId + }; + tasks.push(newTask); + return newTask; +}; +Task.deleteById = async (id) => { + tasks = tasks.filter((task) => task.id !== id); +}; +Task.updateById = async (id, title, order, description, userId, boardId, columnId) => { + tasks = tasks.map((task) => task.id === id ? { + id, + title, + order, + description, + userId, + boardId, + columnId + } : task); + const updatedTask = await getById(id); + return updatedTask; +}; +Task.updateUserIdToNull = (userId, nullUserId) => { + tasks.forEach((task) => { + if (task.userId === userId) { + Object.assign(task, { "userId": nullUserId }); + } + }); +}; +Task.deleteTasksWithBoard = (boardId) => { + tasks = tasks.filter((task) => task.boardId !== boardId); +}; +// const getAll = async () => tasks; +// const getById = async (id) => tasks.find((task) => task.id === id); +// const create = async (title, +// order, +// description, +// userId, +// boardId, +// columnId) => { +// const newTask = { +// id: uuid(), +// title, +// order, +// description, +// userId, +// boardId, +// columnId +// } +// tasks.push(newTask) +// return newTask; +// }; +// const deleteById = async (id) => { +// tasks = tasks.filter((task) => task.id !== id); +// }; +// const updateById = async ( +// id, +// title, +// order, +// description, +// userId, +// boardId, +// columnId) => { +// tasks = tasks.map((task) => task.id === id ? { +// id, +// title, +// order, +// description, +// userId, +// boardId, +// columnId} : task); +// const updatedTask = await getById(id); +// return updatedTask; +// }; +// const updateUserIdToNull = (userId, nullUserId) => { +// tasks.forEach((task) => { +// if(task.userId === userId) { +// Object.assign(task, {"userId": nullUserId}); +// } +// }) +// } +// const deleteTasksWithBoard = (boardId) => { +// tasks = tasks.filter((task) => task.boardId !== boardId); +// } +// module.exports = { getAll, getById, create, deleteById, updateById, updateUserIdToNull, deleteTasksWithBoard }; +module.exports = Task; +//# sourceMappingURL=task.memory.repository.js.map \ No newline at end of file diff --git a/dist/resources/tasks/task.memory.repository.js.map b/dist/resources/tasks/task.memory.repository.js.map new file mode 100644 index 0000000..9e94fa8 --- /dev/null +++ b/dist/resources/tasks/task.memory.repository.js.map @@ -0,0 +1 @@ +{"version":3,"file":"task.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.memory.repository.ts"],"names":[],"mappings":";;AAAA,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEnC,IAAI,KAAK,GAAG,EAAE,CAAC;AAEf,MAAM,IAAI;IAAV;QACE,UAAK,GAAU,KAAK,CAAC;IA4DvB,CAAC;;;AA1DQ,WAAM,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC;AAE3B,YAAO,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAE7D,WAAM,GAAG,KAAK,EAAE,KAAK,EAC1B,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,EAAE;IACV,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,IAAI,EAAE;QACV,KAAK;QACL,KAAK;QACL,WAAW;QACX,MAAM;QACN,OAAO;QACP,QAAQ;KACT,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EACvB,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,EAAE;IACZ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3C,EAAE;QACF,KAAK;QACL,KAAK;QACL,WAAW;QACX,MAAM;QACN,OAAO;QACP,QAAQ;KAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEK,uBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;IACjD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAG,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,UAAU,EAAC,CAAC,CAAC;SAC7C;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEM,yBAAoB,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;AAC3D,CAAC,CAAA;AAGH,oCAAoC;AAEpC,sEAAsE;AAEtE,+BAA+B;AAC/B,WAAW;AACX,iBAAiB;AACjB,YAAY;AACZ,aAAa;AACb,mBAAmB;AACnB,wBAAwB;AACxB,oBAAoB;AACpB,eAAe;AACf,eAAe;AACf,qBAAqB;AACrB,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;AACjB,QAAQ;AACR,0BAA0B;AAC1B,oBAAoB;AACpB,KAAK;AAEL,qCAAqC;AACrC,oDAAoD;AACpD,KAAK;AAEL,6BAA6B;AAC7B,SAAS;AACT,WAAW;AACX,WAAW;AACX,iBAAiB;AACjB,YAAY;AACZ,aAAa;AACb,mBAAmB;AACnB,mDAAmD;AACnD,WAAW;AACX,aAAa;AACb,aAAa;AACb,mBAAmB;AACnB,cAAc;AACd,eAAe;AACf,yBAAyB;AACzB,2CAA2C;AAC3C,wBAAwB;AACxB,KAAK;AAEL,uDAAuD;AACvD,8BAA8B;AAC9B,mCAAmC;AACnC,qDAAqD;AACrD,QAAQ;AACR,YAAY;AACZ,IAAI;AAEJ,8CAA8C;AAC9C,mEAAmE;AACnE,IAAI;AAEJ,kHAAkH;AAGlH,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/dist/resources/tasks/task.model.js b/dist/resources/tasks/task.model.js new file mode 100644 index 0000000..f8a7915 --- /dev/null +++ b/dist/resources/tasks/task.model.js @@ -0,0 +1,21 @@ +"use strict"; +// const uuid = require('uuid'); +// class User { +// constructor({ +// id = uuid(), +// name = 'USER', +// login = 'user', +// password = 'P@55w0rd' +// } = {}) { +// this.id = id; +// this.name = name; +// this.login = login; +// this.password = password; +// } +// static toResponse(user) { +// const { id, name, login } = user; +// return { id, name, login }; +// } +// } +// module.exports = User; +//# sourceMappingURL=task.model.js.map \ No newline at end of file diff --git a/dist/resources/tasks/task.model.js.map b/dist/resources/tasks/task.model.js.map new file mode 100644 index 0000000..d5858b9 --- /dev/null +++ b/dist/resources/tasks/task.model.js.map @@ -0,0 +1 @@ +{"version":3,"file":"task.model.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.model.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAEhC,eAAe;AACf,kBAAkB;AAClB,mBAAmB;AACnB,qBAAqB;AACrB,sBAAsB;AACtB,4BAA4B;AAC5B,cAAc;AACd,oBAAoB;AACpB,wBAAwB;AACxB,0BAA0B;AAC1B,gCAAgC;AAChC,MAAM;AAEN,8BAA8B;AAC9B,wCAAwC;AACxC,kCAAkC;AAClC,MAAM;AACN,IAAI;AAEJ,yBAAyB"} \ No newline at end of file diff --git a/dist/resources/tasks/task.router.js b/dist/resources/tasks/task.router.js new file mode 100644 index 0000000..34551be --- /dev/null +++ b/dist/resources/tasks/task.router.js @@ -0,0 +1,43 @@ +"use strict"; +const taskService = require('./task.service'); +function taskRoutes(app, options, done) { + app.get('/', async (req, reply) => { + const tasks = await taskService.getAllTasks(); + reply.send(tasks); + }); + app.get('/:id', async (req, reply) => { + const { id } = req.params; + const task = await taskService.getTaskById(id); + if (task) { + reply.code(200); + reply.send(task); + } + else { + reply.code(404); + reply.send(); + } + }); + app.post('/', async (req, reply) => { + const { title, order, description, userId, columnId } = req.body; + const boardId = req.params.id; + const task = await taskService.createTask(title, order, description, userId, boardId, columnId); + reply.code(201); + reply.send(task); + }); + app.delete('/:taskid', async (req, reply) => { + const { taskid } = req.params; + await taskService.deleteTaskById(taskid); + reply.code(204); + reply.send(); + }); + app.put('/:taskid', async (req, reply) => { + const { taskid } = req.params; + const { title, order, description, userId, boardId, columnId } = req.body; + const task = await taskService.updateTaskById(taskid, title, order, description, userId, boardId, columnId); + reply.code(200); + reply.send(task); + }); + done(); +} +module.exports = taskRoutes; +//# sourceMappingURL=task.router.js.map \ No newline at end of file diff --git a/dist/resources/tasks/task.router.js.map b/dist/resources/tasks/task.router.js.map new file mode 100644 index 0000000..6ce76e7 --- /dev/null +++ b/dist/resources/tasks/task.router.js.map @@ -0,0 +1 @@ +{"version":3,"file":"task.router.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.router.ts"],"names":[],"mappings":";AAAA,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE9C,SAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI;IAElC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAG,IAAI,EAAE;YACL,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpB;aAAM;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,EAAE,CAAC;SAChB;IACL,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK,EAC3C,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC9B,MAAM,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC9B,MAAM,EAAE,KAAK,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EACvD,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/dist/resources/tasks/task.service.js b/dist/resources/tasks/task.service.js new file mode 100644 index 0000000..df4727e --- /dev/null +++ b/dist/resources/tasks/task.service.js @@ -0,0 +1,9 @@ +"use strict"; +const TaskRepo = require('./task.memory.repository'); +const getAllTasks = () => TaskRepo.getAll(); +const getTaskById = (id) => TaskRepo.getById(id); +const createTask = (title, order, description, userId, boardId, columnId) => TaskRepo.create(title, order, description, userId, boardId, columnId); +const deleteTaskById = (id) => TaskRepo.deleteById(id); +const updateTaskById = (id, title, order, description, userId, boardId, columnId) => TaskRepo.updateById(id, title, order, description, userId, boardId, columnId); +module.exports = { getAll, getById, create, deleteById, updateById }; +//# sourceMappingURL=task.service.js.map \ No newline at end of file diff --git a/dist/resources/tasks/task.service.js.map b/dist/resources/tasks/task.service.js.map new file mode 100644 index 0000000..cbb64d1 --- /dev/null +++ b/dist/resources/tasks/task.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"task.service.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.service.ts"],"names":[],"mappings":";AAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAErD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAE5C,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEjD,MAAM,UAAU,GAAG,CACf,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CACxB,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;AAElB,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEvD,MAAM,cAAc,GAAG,CACnB,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAC5B,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;AAElB,MAAM,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC"} \ No newline at end of file diff --git a/dist/resources/users/user.memory.repository.js b/dist/resources/users/user.memory.repository.js new file mode 100644 index 0000000..3e9a9ee --- /dev/null +++ b/dist/resources/users/user.memory.repository.js @@ -0,0 +1,50 @@ +"use strict"; +var _a; +const { v4: uuid } = require('uuid'); +let users = []; +class User { + static toResponse(user) { + const { id, name, login } = user; + return { id, name, login }; + } +} +_a = User; +User.getAll = async () => users; +User.getById = async (id) => users.find((user) => user.id === id); +User.create = async (name, login, password) => { + const newUser = { + id: uuid(), + name, login, password + }; + users.push(newUser); + return newUser; +}; +User.deleteById = async (id) => { + users = users.filter((user) => user.id !== id); +}; +User.updateById = async (id, name, login, password) => { + users = users.map((user) => user.id === id ? { id, name, login, password } : user); + const updatedUser = await getById(id); + return updatedUser; +}; +// const getAll = async () => users; +// const getById = async (id) => users.find((user) => user.id === id); +// const create = async (name, login, password) => { +// const newUser = { +// id: uuid(), +// name, login, password +// } +// users.push(newUser) +// return newUser; +// }; +// const deleteById = async (id) => { +// users = users.filter((user) => user.id !== id); +// }; +// const updateById = async (id, name, login, password) => { +// users = users.map((user) => user.id === id ? {id, name, login, password} : user); +// const updatedUser = await getById(id); +// return updatedUser; +// }; +// module.exports = { getAll, getById, create, deleteById, updateById }; +module.exports = User; +//# sourceMappingURL=user.memory.repository.js.map \ No newline at end of file diff --git a/dist/resources/users/user.memory.repository.js.map b/dist/resources/users/user.memory.repository.js.map new file mode 100644 index 0000000..78ff2b4 --- /dev/null +++ b/dist/resources/users/user.memory.repository.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/users/user.memory.repository.ts"],"names":[],"mappings":";;AAAA,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEnC,IAAI,KAAK,GAAU,EAAE,CAAC;AAEtB,MAAM,IAAI;IA0BR,MAAM,CAAC,UAAU,CAAC,IAAI;QACpB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;;;AA1BM,WAAM,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC;AAE3B,YAAO,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAE7D,WAAM,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAC9C,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,IAAI,EAAE;QACV,IAAI,EAAE,KAAK,EAAE,QAAQ;KACtB,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACtD,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAQJ,oCAAoC;AAEpC,sEAAsE;AAEtE,oDAAoD;AACpD,wBAAwB;AACxB,oBAAoB;AACpB,8BAA8B;AAC9B,QAAQ;AACR,0BAA0B;AAC1B,oBAAoB;AACpB,KAAK;AAEL,qCAAqC;AACrC,oDAAoD;AACpD,KAAK;AAEL,4DAA4D;AAC5D,sFAAsF;AACtF,2CAA2C;AAC3C,wBAAwB;AACxB,KAAK;AAEL,wEAAwE;AACxE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/dist/resources/users/user.model.js b/dist/resources/users/user.model.js new file mode 100644 index 0000000..bd1ff25 --- /dev/null +++ b/dist/resources/users/user.model.js @@ -0,0 +1,21 @@ +"use strict"; +// const uuid = require('uuid'); +// class User { +// constructor({ +// id = uuid(), +// name = 'USER', +// login = 'user', +// password = 'P@55w0rd' +// } = {}) { +// this.id = id; +// this.name = name; +// this.login = login; +// this.password = password; +// } +// static toResponse(user) { +// const { id, name, login } = user; +// return { id, name, login }; +// } +// } +// module.exports = User; +//# sourceMappingURL=user.model.js.map \ No newline at end of file diff --git a/dist/resources/users/user.model.js.map b/dist/resources/users/user.model.js.map new file mode 100644 index 0000000..9bee798 --- /dev/null +++ b/dist/resources/users/user.model.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user.model.js","sourceRoot":"","sources":["../../../src/resources/users/user.model.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAEhC,eAAe;AACf,kBAAkB;AAClB,mBAAmB;AACnB,qBAAqB;AACrB,sBAAsB;AACtB,4BAA4B;AAC5B,cAAc;AACd,oBAAoB;AACpB,wBAAwB;AACxB,0BAA0B;AAC1B,gCAAgC;AAChC,MAAM;AAEN,8BAA8B;AAC9B,wCAAwC;AACxC,kCAAkC;AAClC,MAAM;AACN,IAAI;AAEJ,yBAAyB"} \ No newline at end of file diff --git a/src/resources/users/user.router.js b/dist/resources/users/user.router.js similarity index 89% rename from src/resources/users/user.router.js rename to dist/resources/users/user.router.js index 08cc539..ebd5e0b 100644 --- a/src/resources/users/user.router.js +++ b/dist/resources/users/user.router.js @@ -1,28 +1,24 @@ -const User = require('./user.model'); +"use strict"; +// const User = require('./user.model'); const usersService = require('./user.service'); const taskRepo = require('../tasks/task.memory.repository'); - function userRoutes(app, options, done) { - app.get('/', async (req, reply) => { const users = await usersService.getAll(); - reply.send(users.map(User.toResponse)); - }) - + reply.send(users.map(usersService.toResponse)); + }); app.get('/:id', async (req, reply) => { const { id } = req.params; const user = await usersService.getById(id); reply.code(200); reply.send(User.toResponse(user)); - }) - + }); app.post('/', async (req, reply) => { const { name, login, password } = req.body; const user = await usersService.create(name, login, password); reply.code(201); reply.send(User.toResponse(user)); - }) - + }); app.delete('/:id', async (req, reply) => { const { id } = req.params; await usersService.deleteById(id); @@ -40,17 +36,15 @@ function userRoutes(app, options, done) { // } reply.code(204); reply.send(); - }) - + }); app.put('/:id', async (req, reply) => { const { id } = req.params; const { name, login, password } = req.body; const user = await usersService.updateById(id, name, login, password); reply.code(200); reply.send(User.toResponse(user)); - }) - - done() + }); + done(); } - module.exports = userRoutes; +//# sourceMappingURL=user.router.js.map \ No newline at end of file diff --git a/dist/resources/users/user.router.js.map b/dist/resources/users/user.router.js.map new file mode 100644 index 0000000..3876135 --- /dev/null +++ b/dist/resources/users/user.router.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user.router.js","sourceRoot":"","sources":["../../../src/resources/users/user.router.ts"],"names":[],"mappings":";AAAA,wCAAwC;AACxC,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAE5D,SAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI;IAElC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtC,wEAAwE;QACxE,+CAA+C;QAC/C,0BAA0B;QAC1B,uCAAuC;QACvC,sBAAsB;QACtB,sBAAsB;QACtB,4BAA4B;QAC5B,uBAAuB;QACvB,wBAAwB;QACxB,yBAAyB;QACzB,IAAI;QACJ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/src/resources/users/user.service.js b/dist/resources/users/user.service.js similarity index 76% rename from src/resources/users/user.service.js rename to dist/resources/users/user.service.js index d4cd36a..cae4c33 100644 --- a/src/resources/users/user.service.js +++ b/dist/resources/users/user.service.js @@ -1,13 +1,10 @@ +"use strict"; const usersRepo = require('./user.memory.repository'); - const getAll = () => usersRepo.getAll(); - const getById = (id) => usersRepo.getById(id); - -const create = (name, login, password) => usersRepo.create(name, login, password) - +const create = (name, login, password) => usersRepo.create(name, login, password); const deleteById = (id) => usersRepo.deleteById(id); - const updateById = (id, name, login, password) => usersRepo.updateById(id, name, login, password); - +const toResponse = (user) => usersRepo.toResponse(user); module.exports = { getAll, getById, create, deleteById, updateById }; +//# sourceMappingURL=user.service.js.map \ No newline at end of file diff --git a/dist/resources/users/user.service.js.map b/dist/resources/users/user.service.js.map new file mode 100644 index 0000000..a2f1a63 --- /dev/null +++ b/dist/resources/users/user.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../../src/resources/users/user.service.ts"],"names":[],"mappings":";AAAA,MAAM,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAEtD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AAExC,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE9C,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;AAEjF,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAElG,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAEvD,MAAM,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC"} \ No newline at end of file diff --git a/dist/server.js b/dist/server.js new file mode 100644 index 0000000..c3729f0 --- /dev/null +++ b/dist/server.js @@ -0,0 +1,14 @@ +"use strict"; +// migration to ts +const { PORT } = require('./common/config'); +const app = require('./app'); +const start = async () => { + try { + await app.listen(PORT); + } + catch (error) { + app.log.error(error); + } +}; +start(); +//# sourceMappingURL=server.js.map \ No newline at end of file diff --git a/dist/server.js.map b/dist/server.js.map new file mode 100644 index 0000000..50ff79d --- /dev/null +++ b/dist/server.js.map @@ -0,0 +1 @@ +{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA,kBAAkB;AAClB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7B,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IACvB,IAAI;QACF,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACxB;IAAC,OAAO,KAAK,EAAE;QACd,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACtB;AACH,CAAC,CAAA;AAED,KAAK,EAAE,CAAC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8ccc795..a714a93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,10 +13,12 @@ "dotenv": "10.0.0", "fastify": "^3.24.1", "fastify-swagger": "^4.12.6", + "ts-node": "^10.4.0", "uuid": "8.3.2", "yamljs": "0.3.0" }, "devDependencies": { + "@types/node": "^16.11.12", "chai": "4.3.4", "debug": "4.3.2", "dirty-chai": "2.0.1", @@ -31,7 +33,9 @@ "lint-staged": "12.0.3", "nodemon": "2.0.15", "prettier": "2.4.1", - "supertest": "6.1.6" + "rimraf": "^3.0.2", + "supertest": "6.1.6", + "typescript": "^4.5.2" }, "engines": { "node": ">=16.0.0 <17" @@ -650,6 +654,25 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dependencies": { + "@cspotcode/source-map-consumer": "0.8.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", @@ -1112,6 +1135,26 @@ "node": ">= 6" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" + }, "node_modules/@types/babel__core": { "version": "7.1.16", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", @@ -1193,10 +1236,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz", - "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==", - "dev": true + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -1252,7 +1294,6 @@ "version": "8.6.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1456,6 +1497,11 @@ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2236,6 +2282,11 @@ "node": ">=10" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -2437,6 +2488,14 @@ "node": ">=8" } }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diff-sequences": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", @@ -5722,6 +5781,11 @@ "semver": "bin/semver.js" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -7445,6 +7509,54 @@ "node": ">=8" } }, + "node_modules/ts-node": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "dependencies": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -7526,6 +7638,18 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", + "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -8017,6 +8141,14 @@ "node": ">=8" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -8496,6 +8628,19 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" + }, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, "@eslint/eslintrc": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", @@ -8863,6 +9008,26 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" + }, "@types/babel__core": { "version": "7.1.16", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", @@ -8944,10 +9109,9 @@ "dev": true }, "@types/node": { - "version": "16.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz", - "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==", - "dev": true + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==" }, "@types/parse-json": { "version": "4.0.0", @@ -9002,8 +9166,7 @@ "acorn": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "dev": true + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==" }, "acorn-globals": { "version": "6.0.0", @@ -9153,6 +9316,11 @@ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -9761,6 +9929,11 @@ "yaml": "^1.10.0" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, "cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -9911,6 +10084,11 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + }, "diff-sequences": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", @@ -12377,6 +12555,11 @@ } } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, "makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -13669,6 +13852,32 @@ "punycode": "^2.1.1" } }, + "ts-node": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", + "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "requires": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + } + } + }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -13734,6 +13943,11 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", + "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==" + }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -14127,6 +14341,11 @@ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 7979ab0..5dc9a66 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,9 @@ "description": "REST service starter for RS School", "main": "src/server.js", "scripts": { - "start": "nodemon src/server.js", + "start": "npm run build && node dist/server.js", + "dev": "nodemon src/server.js", + "build": "rimraf dist && tsc", "lint": "eslint --ext .js,.ts --fix src/", "test": "cross-env DEBUG=rs:* jest --testMatch \"/test/e2e/test/*.test.js\" --noStackTrace --runInBand", "test:auth": "cross-env DEBUG=rs:* TEST_MODE=auth jest --noStackTrace" @@ -48,10 +50,12 @@ "dotenv": "10.0.0", "fastify": "^3.24.1", "fastify-swagger": "^4.12.6", + "ts-node": "^10.4.0", "uuid": "8.3.2", "yamljs": "0.3.0" }, "devDependencies": { + "@types/node": "^16.11.12", "chai": "4.3.4", "debug": "4.3.2", "dirty-chai": "2.0.1", @@ -66,6 +70,8 @@ "lint-staged": "12.0.3", "nodemon": "2.0.15", "prettier": "2.4.1", - "supertest": "6.1.6" + "rimraf": "^3.0.2", + "supertest": "6.1.6", + "typescript": "^4.5.2" } } diff --git a/src/app.js b/src/app.ts similarity index 100% rename from src/app.js rename to src/app.ts diff --git a/src/common/config.js b/src/common/config.ts similarity index 100% rename from src/common/config.js rename to src/common/config.ts diff --git a/src/resources/boards/board.memory.repository.js b/src/resources/boards/board.memory.repository.js deleted file mode 100644 index 15e727a..0000000 --- a/src/resources/boards/board.memory.repository.js +++ /dev/null @@ -1,28 +0,0 @@ -const {v4: uuid} = require('uuid'); - -let boards = []; - -const getAll = async () => boards; - -const getById = async (id) => boards.find((board) => board.id === id); - -const create = async (title, columns) => { - const newBoard = { - id: uuid(), - title, columns - } - boards.push(newBoard) - return newBoard; -}; - -const deleteById = async (id) => { - boards = boards.filter((board) => board.id !== id); -}; - -const updateById = async (id, title, columns) => { - boards = boards.map((board) => board.id === id ? {id, title, columns} : board); - const updatedBoard = await getById(id); - return updatedBoard; -}; - -module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/resources/boards/board.memory.repository.ts b/src/resources/boards/board.memory.repository.ts new file mode 100644 index 0000000..8534f03 --- /dev/null +++ b/src/resources/boards/board.memory.repository.ts @@ -0,0 +1,56 @@ +const {v4: uuid} = require('uuid'); +let boards: any[]= []; +class Board { + boards: any + + static getById = async (id) => boards.find((board) => board.id === id); + + static getAll = async () => boards; + + static create = async (title, columns) => { + const newBoard = { + id: uuid(), + title, columns + } + boards.push(newBoard) + return newBoard; + }; + + static deleteById = async (id) => { + boards = boards.filter((board) => board.id !== id); + }; + + static updateById = async (id, title, columns) => { + boards = boards.map((board) => board.id === id ? {id, title, columns} : board); + const updatedBoard = await getById(id); + return updatedBoard; + }; + +} + + +// const getAllBoards = async () => boards; + +// const getBoardById = async (id) => boards.find((board) => board.id === id); + +// const create = async (title, columns) => { +// const newBoard = { +// id: uuid(), +// title, columns +// } +// boards.push(newBoard) +// return newBoard; +// }; + +// const deleteById = async (id) => { +// boards = boards.filter((board) => board.id !== id); +// }; + +// const updateById = async (id, title, columns) => { +// boards = boards.map((board) => board.id === id ? {id, title, columns} : board); +// const updatedBoard = await getById(id); +// return updatedBoard; +// }; + +// module.exports = { getAll, getById, create, deleteById, updateById }; +module.exports = Board; \ No newline at end of file diff --git a/src/resources/boards/board.model.js b/src/resources/boards/board.model.js deleted file mode 100644 index 0b95a90..0000000 --- a/src/resources/boards/board.model.js +++ /dev/null @@ -1,22 +0,0 @@ -const uuid = require('uuid'); - -class User { - constructor({ - id = uuid(), - name = 'USER', - login = 'user', - password = 'P@55w0rd' - } = {}) { - this.id = id; - this.name = name; - this.login = login; - this.password = password; - } - - static toResponse(user) { - const { id, name, login } = user; - return { id, name, login }; - } -} - -module.exports = User; diff --git a/src/resources/boards/board.model.ts b/src/resources/boards/board.model.ts new file mode 100644 index 0000000..6b7fa76 --- /dev/null +++ b/src/resources/boards/board.model.ts @@ -0,0 +1,22 @@ +// const uuid = require('uuid'); + +// class User { +// constructor({ +// id = uuid(), +// name = 'USER', +// login = 'user', +// password = 'P@55w0rd' +// } = {}) { +// this.id = id; +// this.name = name; +// this.login = login; +// this.password = password; +// } + +// static toResponse(user) { +// const { id, name, login } = user; +// return { id, name, login }; +// } +// } + +// module.exports = User; diff --git a/src/resources/boards/board.router.js b/src/resources/boards/board.router.ts similarity index 76% rename from src/resources/boards/board.router.js rename to src/resources/boards/board.router.ts index ac152ba..fc6ce35 100644 --- a/src/resources/boards/board.router.js +++ b/src/resources/boards/board.router.ts @@ -4,13 +4,13 @@ const tasksRepo = require('../tasks/task.memory.repository'); function boardRoutes(app, options, done) { app.get('/', async (req, reply) => { - const boards = await boardService.getAll(); + const boards = await boardService.getAllBoards(); reply.send(boards); }) app.get('/:id', async (req, reply) => { const { id } = req.params; - const board = await boardService.getById(id); + const board = await boardService.getBoardById(id); if(board) { reply.code(200); reply.send(board); @@ -23,14 +23,14 @@ function boardRoutes(app, options, done) { app.post('/', async (req, reply) => { const { title, columns } = req.body; - const board = await boardService.create(title, columns); + const board = await boardService.createBoard(title, columns); reply.code(201); reply.send(board); }) app.delete('/:id', async (req, reply) => { const { id } = req.params; - await boardService.deleteById(id); + await boardService.deleteBoardById(id); tasksRepo.deleteTasksWithBoard(id); reply.code(204); reply.send(); @@ -39,7 +39,7 @@ function boardRoutes(app, options, done) { app.put('/:id', async (req, reply) => { const { id } = req.params; const { title, columns } = req.body; - const board = await boardService.updateById(id, title, columns); + const board = await boardService.updateBoardById(id, title, columns); reply.code(200); reply.send(board); }) diff --git a/src/resources/boards/board.service.js b/src/resources/boards/board.service.js deleted file mode 100644 index 3a89aca..0000000 --- a/src/resources/boards/board.service.js +++ /dev/null @@ -1,13 +0,0 @@ -const boardsRepo = require('./board.memory.repository'); - -const getAll = () => boardsRepo.getAll(); - -const getById = (id) => boardsRepo.getById(id); - -const create = (title, columns) => boardsRepo.create(title, columns) - -const deleteById = (id) => boardsRepo.deleteById(id); - -const updateById = (id, title, columns) => boardsRepo.updateById(id, title, columns); - -module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/resources/boards/board.service.ts b/src/resources/boards/board.service.ts new file mode 100644 index 0000000..7e9bf2e --- /dev/null +++ b/src/resources/boards/board.service.ts @@ -0,0 +1,13 @@ +const boardsRepo = require('./board.memory.repository'); + +const getAllBoards = () => boardsRepo.getAll(); + +const getBoardById = (id) => boardsRepo.getById(id); + +const createBoard = (title, columns) => boardsRepo.create(title, columns) + +const deleteBoardById = (id) => boardsRepo.deleteById(id); + +const updateBoardById = (id, title, columns) => boardsRepo.updateById(id, title, columns); + +module.exports = { getAllBoards, getBoardById, createBoard, deleteBoardById, updateBoardById }; diff --git a/src/resources/tasks/task.memory.repository.js b/src/resources/tasks/task.memory.repository.js deleted file mode 100644 index 7810340..0000000 --- a/src/resources/tasks/task.memory.repository.js +++ /dev/null @@ -1,64 +0,0 @@ -const {v4: uuid} = require('uuid'); - -let tasks = []; - -const getAll = async () => tasks; - -const getById = async (id) => tasks.find((task) => task.id === id); - -const create = async (title, - order, - description, - userId, - boardId, - columnId) => { - const newTask = { - id: uuid(), - title, - order, - description, - userId, - boardId, - columnId - } - tasks.push(newTask) - return newTask; -}; - -const deleteById = async (id) => { - tasks = tasks.filter((task) => task.id !== id); -}; - -const updateById = async ( - id, - title, - order, - description, - userId, - boardId, - columnId) => { - tasks = tasks.map((task) => task.id === id ? { - id, - title, - order, - description, - userId, - boardId, - columnId} : task); - const updatedTask = await getById(id); - return updatedTask; -}; - -const updateUserIdToNull = (userId, nullUserId) => { - tasks.forEach((task) => { - if(task.userId === userId) { - Object.assign(task, {"userId": nullUserId}); - } - }) -} - -const deleteTasksWithBoard = (boardId) => { - tasks = tasks.filter((task) => task.boardId !== boardId); -} - -module.exports = { getAll, getById, create, deleteById, updateById, updateUserIdToNull, deleteTasksWithBoard }; diff --git a/src/resources/tasks/task.memory.repository.ts b/src/resources/tasks/task.memory.repository.ts new file mode 100644 index 0000000..70fdc0d --- /dev/null +++ b/src/resources/tasks/task.memory.repository.ts @@ -0,0 +1,130 @@ +const {v4: uuid} = require('uuid'); + +let tasks = []; + +class Task { + tasks: any[] = tasks; + + static getAll = async () => tasks; + + static getById = async (id) => tasks.find((task) => task.id === id); + + static create = async (title, + order, + description, + userId, + boardId, + columnId) => { + const newTask = { + id: uuid(), + title, + order, + description, + userId, + boardId, + columnId + } + tasks.push(newTask) + return newTask; + }; + + static deleteById = async (id) => { + tasks = tasks.filter((task) => task.id !== id); + }; + + static updateById = async ( + id, + title, + order, + description, + userId, + boardId, + columnId) => { + tasks = tasks.map((task) => task.id === id ? { + id, + title, + order, + description, + userId, + boardId, + columnId} : task); + const updatedTask = await getById(id); + return updatedTask; + }; + + static updateUserIdToNull = (userId, nullUserId) => { + tasks.forEach((task) => { + if(task.userId === userId) { + Object.assign(task, {"userId": nullUserId}); + } + }) + } + + static deleteTasksWithBoard = (boardId) => { + tasks = tasks.filter((task) => task.boardId !== boardId); + } +} + +// const getAll = async () => tasks; + +// const getById = async (id) => tasks.find((task) => task.id === id); + +// const create = async (title, +// order, +// description, +// userId, +// boardId, +// columnId) => { +// const newTask = { +// id: uuid(), +// title, +// order, +// description, +// userId, +// boardId, +// columnId +// } +// tasks.push(newTask) +// return newTask; +// }; + +// const deleteById = async (id) => { +// tasks = tasks.filter((task) => task.id !== id); +// }; + +// const updateById = async ( +// id, +// title, +// order, +// description, +// userId, +// boardId, +// columnId) => { +// tasks = tasks.map((task) => task.id === id ? { +// id, +// title, +// order, +// description, +// userId, +// boardId, +// columnId} : task); +// const updatedTask = await getById(id); +// return updatedTask; +// }; + +// const updateUserIdToNull = (userId, nullUserId) => { +// tasks.forEach((task) => { +// if(task.userId === userId) { +// Object.assign(task, {"userId": nullUserId}); +// } +// }) +// } + +// const deleteTasksWithBoard = (boardId) => { +// tasks = tasks.filter((task) => task.boardId !== boardId); +// } + +// module.exports = { getAll, getById, create, deleteById, updateById, updateUserIdToNull, deleteTasksWithBoard }; + + +module.exports = Task; \ No newline at end of file diff --git a/src/resources/tasks/task.model.js b/src/resources/tasks/task.model.js deleted file mode 100644 index 0b95a90..0000000 --- a/src/resources/tasks/task.model.js +++ /dev/null @@ -1,22 +0,0 @@ -const uuid = require('uuid'); - -class User { - constructor({ - id = uuid(), - name = 'USER', - login = 'user', - password = 'P@55w0rd' - } = {}) { - this.id = id; - this.name = name; - this.login = login; - this.password = password; - } - - static toResponse(user) { - const { id, name, login } = user; - return { id, name, login }; - } -} - -module.exports = User; diff --git a/src/resources/tasks/task.model.ts b/src/resources/tasks/task.model.ts new file mode 100644 index 0000000..6b7fa76 --- /dev/null +++ b/src/resources/tasks/task.model.ts @@ -0,0 +1,22 @@ +// const uuid = require('uuid'); + +// class User { +// constructor({ +// id = uuid(), +// name = 'USER', +// login = 'user', +// password = 'P@55w0rd' +// } = {}) { +// this.id = id; +// this.name = name; +// this.login = login; +// this.password = password; +// } + +// static toResponse(user) { +// const { id, name, login } = user; +// return { id, name, login }; +// } +// } + +// module.exports = User; diff --git a/src/resources/tasks/task.router.js b/src/resources/tasks/task.router.ts similarity index 82% rename from src/resources/tasks/task.router.js rename to src/resources/tasks/task.router.ts index 54fb4a8..5aa1de3 100644 --- a/src/resources/tasks/task.router.js +++ b/src/resources/tasks/task.router.ts @@ -3,13 +3,13 @@ const taskService = require('./task.service'); function taskRoutes(app, options, done) { app.get('/', async (req, reply) => { - const tasks = await taskService.getAll(); + const tasks = await taskService.getAllTasks(); reply.send(tasks); }) app.get('/:id', async (req, reply) => { const { id } = req.params; - const task = await taskService.getById(id); + const task = await taskService.getTaskById(id); if(task) { reply.code(200); reply.send(task); @@ -27,7 +27,7 @@ function taskRoutes(app, options, done) { userId, columnId } = req.body; const boardId = req.params.id - const task = await taskService.create(title, + const task = await taskService.createTask(title, order, description, userId, @@ -39,7 +39,7 @@ function taskRoutes(app, options, done) { app.delete('/:taskid', async (req, reply) => { const { taskid } = req.params; - await taskService.deleteById(taskid); + await taskService.deleteTaskById(taskid); reply.code(204); reply.send(); }) @@ -52,7 +52,7 @@ function taskRoutes(app, options, done) { userId, boardId, columnId } = req.body; - const task = await taskService.updateById(taskid, title, + const task = await taskService.updateTaskById(taskid, title, order, description, userId, diff --git a/src/resources/tasks/task.service.js b/src/resources/tasks/task.service.ts similarity index 57% rename from src/resources/tasks/task.service.js rename to src/resources/tasks/task.service.ts index 8c8eaba..deb349a 100644 --- a/src/resources/tasks/task.service.js +++ b/src/resources/tasks/task.service.ts @@ -1,16 +1,16 @@ -const tasksRepo = require('./task.memory.repository'); +const TaskRepo = require('./task.memory.repository'); -const getAll = () => tasksRepo.getAll(); +const getAllTasks = () => TaskRepo.getAll(); -const getById = (id) => tasksRepo.getById(id); +const getTaskById = (id) => TaskRepo.getById(id); -const create = ( +const createTask = ( title, order, description, userId, boardId, - columnId) => tasksRepo.create( + columnId) => TaskRepo.create( title, order, description, @@ -18,16 +18,16 @@ const create = ( boardId, columnId); -const deleteById = (id) => tasksRepo.deleteById(id); +const deleteTaskById = (id) => TaskRepo.deleteById(id); -const updateById = ( +const updateTaskById = ( id, title, order, description, userId, boardId, - columnId) => tasksRepo.updateById( + columnId) => TaskRepo.updateById( id, title, order, diff --git a/src/resources/users/user.memory.repository.js b/src/resources/users/user.memory.repository.js deleted file mode 100644 index ad14a2c..0000000 --- a/src/resources/users/user.memory.repository.js +++ /dev/null @@ -1,28 +0,0 @@ -const {v4: uuid} = require('uuid'); - -let users = []; - -const getAll = async () => users; - -const getById = async (id) => users.find((user) => user.id === id); - -const create = async (name, login, password) => { - const newUser = { - id: uuid(), - name, login, password - } - users.push(newUser) - return newUser; -}; - -const deleteById = async (id) => { - users = users.filter((user) => user.id !== id); -}; - -const updateById = async (id, name, login, password) => { - users = users.map((user) => user.id === id ? {id, name, login, password} : user); - const updatedUser = await getById(id); - return updatedUser; -}; - -module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/resources/users/user.memory.repository.ts b/src/resources/users/user.memory.repository.ts new file mode 100644 index 0000000..0fcbd95 --- /dev/null +++ b/src/resources/users/user.memory.repository.ts @@ -0,0 +1,61 @@ +const {v4: uuid} = require('uuid'); + +let users: any[] = []; + +class User { + users: any[] + + static getAll = async () => users; + + static getById = async (id) => users.find((user) => user.id === id); + + static create = async (name, login, password) => { + const newUser = { + id: uuid(), + name, login, password + } + users.push(newUser) + return newUser; + }; + + static deleteById = async (id) => { + users = users.filter((user) => user.id !== id); + }; + + static updateById = async (id, name, login, password) => { + users = users.map((user) => user.id === id ? {id, name, login, password} : user); + const updatedUser = await getById(id); + return updatedUser; + }; + + static toResponse(user) { + const { id, name, login } = user; + return { id, name, login }; + } +} + +// const getAll = async () => users; + +// const getById = async (id) => users.find((user) => user.id === id); + +// const create = async (name, login, password) => { +// const newUser = { +// id: uuid(), +// name, login, password +// } +// users.push(newUser) +// return newUser; +// }; + +// const deleteById = async (id) => { +// users = users.filter((user) => user.id !== id); +// }; + +// const updateById = async (id, name, login, password) => { +// users = users.map((user) => user.id === id ? {id, name, login, password} : user); +// const updatedUser = await getById(id); +// return updatedUser; +// }; + +// module.exports = { getAll, getById, create, deleteById, updateById }; +module.exports = User; \ No newline at end of file diff --git a/src/resources/users/user.model.js b/src/resources/users/user.model.js deleted file mode 100644 index 0b95a90..0000000 --- a/src/resources/users/user.model.js +++ /dev/null @@ -1,22 +0,0 @@ -const uuid = require('uuid'); - -class User { - constructor({ - id = uuid(), - name = 'USER', - login = 'user', - password = 'P@55w0rd' - } = {}) { - this.id = id; - this.name = name; - this.login = login; - this.password = password; - } - - static toResponse(user) { - const { id, name, login } = user; - return { id, name, login }; - } -} - -module.exports = User; diff --git a/src/resources/users/user.model.ts b/src/resources/users/user.model.ts new file mode 100644 index 0000000..6b7fa76 --- /dev/null +++ b/src/resources/users/user.model.ts @@ -0,0 +1,22 @@ +// const uuid = require('uuid'); + +// class User { +// constructor({ +// id = uuid(), +// name = 'USER', +// login = 'user', +// password = 'P@55w0rd' +// } = {}) { +// this.id = id; +// this.name = name; +// this.login = login; +// this.password = password; +// } + +// static toResponse(user) { +// const { id, name, login } = user; +// return { id, name, login }; +// } +// } + +// module.exports = User; diff --git a/src/resources/users/user.router.ts b/src/resources/users/user.router.ts new file mode 100644 index 0000000..25ec132 --- /dev/null +++ b/src/resources/users/user.router.ts @@ -0,0 +1,56 @@ +// const User = require('./user.model'); +const usersService = require('./user.service'); +const taskRepo = require('../tasks/task.memory.repository'); + +function userRoutes(app, options, done) { + + app.get('/', async (req, reply) => { + const users = await usersService.getAll(); + reply.send(users.map(usersService.toResponse)); + }) + + app.get('/:id', async (req, reply) => { + const { id } = req.params; + const user = await usersService.getById(id); + reply.code(200); + reply.send(User.toResponse(user)); + }) + + app.post('/', async (req, reply) => { + const { name, login, password } = req.body; + const user = await usersService.create(name, login, password); + reply.code(201); + reply.send(User.toResponse(user)); + }) + + app.delete('/:id', async (req, reply) => { + const { id } = req.params; + await usersService.deleteById(id); + taskRepo.updateUserIdToNull(id, null); + // const tasks4DeletedUser = tasks.filter((task) => task.userId === id); + // for await(const task of tasks4DeletedUser) { + // task.userId = null; + // taskService.updateById(task.id, + // task.title, + // task.order, + // task.description, + // task.userId, + // task.boardId, + // task.columnId) + // } + reply.code(204); + reply.send(); + }) + + app.put('/:id', async (req, reply) => { + const { id } = req.params; + const { name, login, password } = req.body; + const user = await usersService.updateById(id, name, login, password); + reply.code(200); + reply.send(User.toResponse(user)); + }) + + done() +} + +module.exports = userRoutes; diff --git a/src/resources/users/user.service.ts b/src/resources/users/user.service.ts new file mode 100644 index 0000000..38af202 --- /dev/null +++ b/src/resources/users/user.service.ts @@ -0,0 +1,15 @@ +const usersRepo = require('./user.memory.repository'); + +const getAll = () => usersRepo.getAll(); + +const getById = (id) => usersRepo.getById(id); + +const create = (name, login, password) => usersRepo.create(name, login, password) + +const deleteById = (id) => usersRepo.deleteById(id); + +const updateById = (id, name, login, password) => usersRepo.updateById(id, name, login, password); + +const toResponse = (user) => usersRepo.toResponse(user) + +module.exports = { getAll, getById, create, deleteById, updateById }; diff --git a/src/server.js b/src/server.ts similarity index 100% rename from src/server.js rename to src/server.ts diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..048f8b0 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,104 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + // "incremental": true, /* Enable incremental compilation */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ + // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "resolveJsonModule": true, /* Enable importing .json files */ + // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ + // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` method match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ + // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true, + "experimentalDecorators": true, + "strictPropertyInitialization": false, + "emitDecoratorMetadata": true + }, + "include": ["src"] +} From bc76847dfc285593044bba522fcb26e1f5f2c1b9 Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Thu, 9 Dec 2021 21:43:02 +0200 Subject: [PATCH 11/15] change gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3c3629e..76add87 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +dist \ No newline at end of file From 97b69e8fdc33099549071df26585335ce14b77ca Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 19 Dec 2021 17:37:18 +0200 Subject: [PATCH 12/15] changes to import modules --- .eslintrc.json | 11 +- package-lock.json | 608 ++++++++++++++++++ package.json | 2 + src/app.ts | 11 +- src/common/config.ts | 6 +- .../boards/board.memory.repository.ts | 59 +- src/resources/boards/board.router.ts | 23 +- src/resources/boards/board.service.ts | 4 +- src/resources/tasks/task.memory.repository.ts | 68 +- src/resources/tasks/task.router.ts | 17 +- src/resources/tasks/task.service.ts | 4 +- src/resources/users/user.memory.repository.ts | 30 +- src/resources/users/user.router.ts | 32 +- src/resources/users/user.service.ts | 4 +- src/server.ts | 9 +- src/tst.ts | 0 16 files changed, 693 insertions(+), 195 deletions(-) create mode 100644 src/tst.ts diff --git a/.eslintrc.json b/.eslintrc.json index 935c612..6c1524c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -14,7 +14,16 @@ } }, "settings": { - "noInlineConfig": true + "noInlineConfig": true, + "import/resolver": { + "node": { + "extensions": [".js", ".ts"] + } + }, + "node": { + "resolvePaths": ["__dirname"], + "tryExtensions": [".js", ".ts"] + } }, "extends": [ "eslint:recommended", diff --git a/package-lock.json b/package-lock.json index a714a93..2d182f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,8 @@ }, "devDependencies": { "@types/node": "^16.11.12", + "@types/uuid": "^8.3.3", + "@typescript-eslint/eslint-plugin": "^5.7.0", "chai": "4.3.4", "debug": "4.3.2", "dirty-chai": "2.0.1", @@ -1087,6 +1089,41 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -1229,6 +1266,12 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -1258,6 +1301,12 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "node_modules/@types/uuid": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.3.tgz", + "integrity": "sha512-0LbEEx1zxrYB3pgpd1M5lEhLcXjKJnYghvhTRgaBeUivLHMDM1TzF3IJ6hXU2+8uA4Xz+5BA63mtZo5DjVT8iA==", + "dev": true + }, "node_modules/@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -1273,6 +1322,195 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.7.0.tgz", + "integrity": "sha512-8RTGBpNn5a9M628wBPrCbJ+v3YTEOE2qeZb7TDkGKTDXSj36KGRg92SpFFaR/0S3rSXQxM0Og/kV9EyadsYSBg==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "5.7.0", + "@typescript-eslint/scope-manager": "5.7.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/experimental-utils": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.7.0.tgz", + "integrity": "sha512-u57eZ5FbEpzN5kSjmVrSesovWslH2ZyNPnaXQMXWgH57d5+EVHEt76W75vVuI9qKZ5BMDKNfRN+pxcPEjQjb2A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.7.0", + "@typescript-eslint/types": "5.7.0", + "@typescript-eslint/typescript-estree": "5.7.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.7.0.tgz", + "integrity": "sha512-m/gWCCcS4jXw6vkrPQ1BjZ1vomP01PArgzvauBqzsoZ3urLbsRChexB8/YV8z9HwE3qlJM35FxfKZ1nfP/4x8g==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.7.0", + "@typescript-eslint/types": "5.7.0", + "@typescript-eslint/typescript-estree": "5.7.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.7.0.tgz", + "integrity": "sha512-7mxR520DGq5F7sSSgM0HSSMJ+TFUymOeFRMfUfGFAVBv8BR+Jv1vHgAouYUvWRZeszVBJlLcc9fDdktxb5kmxA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.7.0", + "@typescript-eslint/visitor-keys": "5.7.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.7.0.tgz", + "integrity": "sha512-5AeYIF5p2kAneIpnLFve8g50VyAjq7udM7ApZZ9JYjdPjkz0LvODfuSHIDUVnIuUoxafoWzpFyU7Sqbxgi79mA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.7.0.tgz", + "integrity": "sha512-aO1Ql+izMrTnPj5aFFlEJkpD4jRqC4Gwhygu2oHK2wfVQpmOPbyDSveJ+r/NQo+PWV43M6uEAeLVbTi09dFLhg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.7.0", + "@typescript-eslint/visitor-keys": "5.7.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.7.0.tgz", + "integrity": "sha512-hdohahZ4lTFcglZSJ3DGdzxQHBSxsLVqHzkiOmKi7xVAWC4y2c1bIMKmPJSrA4aOEoRUPOKQ87Y/taC7yVHpFg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.7.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -1526,6 +1764,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/array.prototype.flat": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", @@ -2505,6 +2752,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dirty-chai": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/dirty-chai/-/dirty-chai-2.0.1.tgz", @@ -3327,6 +3586,34 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -3758,6 +4045,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -5801,6 +6117,15 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -6814,6 +7139,29 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/rxjs": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", @@ -7596,6 +7944,27 @@ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -8969,6 +9338,32 @@ "chalk": "^4.0.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -9102,6 +9497,12 @@ "@types/istanbul-lib-report": "*" } }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -9131,6 +9532,12 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/uuid": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.3.tgz", + "integrity": "sha512-0LbEEx1zxrYB3pgpd1M5lEhLcXjKJnYghvhTRgaBeUivLHMDM1TzF3IJ6hXU2+8uA4Xz+5BA63mtZo5DjVT8iA==", + "dev": true + }, "@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -9146,6 +9553,114 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.7.0.tgz", + "integrity": "sha512-8RTGBpNn5a9M628wBPrCbJ+v3YTEOE2qeZb7TDkGKTDXSj36KGRg92SpFFaR/0S3rSXQxM0Og/kV9EyadsYSBg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "5.7.0", + "@typescript-eslint/scope-manager": "5.7.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/experimental-utils": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.7.0.tgz", + "integrity": "sha512-u57eZ5FbEpzN5kSjmVrSesovWslH2ZyNPnaXQMXWgH57d5+EVHEt76W75vVuI9qKZ5BMDKNfRN+pxcPEjQjb2A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.7.0", + "@typescript-eslint/types": "5.7.0", + "@typescript-eslint/typescript-estree": "5.7.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + } + } + }, + "@typescript-eslint/parser": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.7.0.tgz", + "integrity": "sha512-m/gWCCcS4jXw6vkrPQ1BjZ1vomP01PArgzvauBqzsoZ3urLbsRChexB8/YV8z9HwE3qlJM35FxfKZ1nfP/4x8g==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/scope-manager": "5.7.0", + "@typescript-eslint/types": "5.7.0", + "@typescript-eslint/typescript-estree": "5.7.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.7.0.tgz", + "integrity": "sha512-7mxR520DGq5F7sSSgM0HSSMJ+TFUymOeFRMfUfGFAVBv8BR+Jv1vHgAouYUvWRZeszVBJlLcc9fDdktxb5kmxA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.7.0", + "@typescript-eslint/visitor-keys": "5.7.0" + } + }, + "@typescript-eslint/types": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.7.0.tgz", + "integrity": "sha512-5AeYIF5p2kAneIpnLFve8g50VyAjq7udM7ApZZ9JYjdPjkz0LvODfuSHIDUVnIuUoxafoWzpFyU7Sqbxgi79mA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.7.0.tgz", + "integrity": "sha512-aO1Ql+izMrTnPj5aFFlEJkpD4jRqC4Gwhygu2oHK2wfVQpmOPbyDSveJ+r/NQo+PWV43M6uEAeLVbTi09dFLhg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.7.0", + "@typescript-eslint/visitor-keys": "5.7.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.7.0.tgz", + "integrity": "sha512-hdohahZ4lTFcglZSJ3DGdzxQHBSxsLVqHzkiOmKi7xVAWC4y2c1bIMKmPJSrA4aOEoRUPOKQ87Y/taC7yVHpFg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.7.0", + "eslint-visitor-keys": "^3.0.0" + } + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -9339,6 +9854,12 @@ "is-string": "^1.0.7" } }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "array.prototype.flat": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", @@ -10095,6 +10616,15 @@ "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, "dirty-chai": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/dirty-chai/-/dirty-chai-2.0.1.tgz", @@ -10712,6 +11242,30 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -11044,6 +11598,28 @@ "type-fest": "^0.20.2" } }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + } + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -12575,6 +13151,12 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -13317,6 +13899,15 @@ "glob": "^7.1.3" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "rxjs": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", @@ -13913,6 +14504,23 @@ "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 5dc9a66..8bd7090 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,8 @@ }, "devDependencies": { "@types/node": "^16.11.12", + "@types/uuid": "^8.3.3", + "@typescript-eslint/eslint-plugin": "^5.7.0", "chai": "4.3.4", "debug": "4.3.2", "dirty-chai": "2.0.1", diff --git a/src/app.ts b/src/app.ts index 3a86634..7532a14 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,7 +1,8 @@ -const fastify = require('fastify'); -const userRouter = require('./resources/users/user.router'); -const boardRouter = require('./resources/boards/board.router'); -const taskRouter = require('./resources/tasks/task.router'); +import fastify from 'fastify'; + +import userRouter from './resources/users/user.router'; +import boardRouter from './resources/boards/board.router'; +import taskRouter from './resources/tasks/task.router'; const app = fastify({ logger: true}); @@ -17,4 +18,4 @@ app.register(userRouter, {prefix: '/users'}); app.register(boardRouter, {prefix: '/boards'}); app.register(taskRouter, {prefix: '/boards/:id/tasks'}); -module.exports = app; +export default app \ No newline at end of file diff --git a/src/common/config.ts b/src/common/config.ts index 6c6a37f..b9d0cc5 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -1,11 +1,11 @@ -const dotenv = require('dotenv'); -const path = require('path'); +import dotenv from 'dotenv'; +import path from 'path'; dotenv.config({ path: path.join(__dirname, '../../.env') }); -module.exports = { +export default { PORT: process.env.PORT, NODE_ENV: process.env.NODE_ENV, MONGO_CONNECTION_STRING: process.env.MONGO_CONNECTION_STRING, diff --git a/src/resources/boards/board.memory.repository.ts b/src/resources/boards/board.memory.repository.ts index 8534f03..173a161 100644 --- a/src/resources/boards/board.memory.repository.ts +++ b/src/resources/boards/board.memory.repository.ts @@ -1,14 +1,21 @@ -const {v4: uuid} = require('uuid'); -let boards: any[]= []; -class Board { - boards: any +import {v4 as uuid} from 'uuid'; - static getById = async (id) => boards.find((board) => board.id === id); +interface IBoard { + id: string, + title: string, + columns: any[] +} + +let boards: IBoard[] = []; +export default class Board { + boards: IBoard[] + + static getById = async (id: string) : Promise => boards.find((board: IBoard) => board.id === id); - static getAll = async () => boards; + static getAll = async () : Promise => boards; - static create = async (title, columns) => { - const newBoard = { + static create = async (title: string, columns: any[]) : Promise => { + const newBoard: IBoard = { id: uuid(), title, columns } @@ -16,41 +23,13 @@ class Board { return newBoard; }; - static deleteById = async (id) => { + static deleteById = async (id: string): Promise => { boards = boards.filter((board) => board.id !== id); }; - static updateById = async (id, title, columns) => { + static updateById = async (id: string, title: string, columns: any[]) : Promise => { boards = boards.map((board) => board.id === id ? {id, title, columns} : board); - const updatedBoard = await getById(id); + const updatedBoard = await Board.getById(id); return updatedBoard; - }; - + }; } - - -// const getAllBoards = async () => boards; - -// const getBoardById = async (id) => boards.find((board) => board.id === id); - -// const create = async (title, columns) => { -// const newBoard = { -// id: uuid(), -// title, columns -// } -// boards.push(newBoard) -// return newBoard; -// }; - -// const deleteById = async (id) => { -// boards = boards.filter((board) => board.id !== id); -// }; - -// const updateById = async (id, title, columns) => { -// boards = boards.map((board) => board.id === id ? {id, title, columns} : board); -// const updatedBoard = await getById(id); -// return updatedBoard; -// }; - -// module.exports = { getAll, getById, create, deleteById, updateById }; -module.exports = Board; \ No newline at end of file diff --git a/src/resources/boards/board.router.ts b/src/resources/boards/board.router.ts index fc6ce35..8ac0636 100644 --- a/src/resources/boards/board.router.ts +++ b/src/resources/boards/board.router.ts @@ -1,14 +1,16 @@ -const boardService = require('./board.service'); -const tasksRepo = require('../tasks/task.memory.repository'); +import { FastifyReply } from "fastify"; -function boardRoutes(app, options, done) { +import boardService from './board.service'; +import tasksRepo from '../tasks/task.memory.repository'; - app.get('/', async (req, reply) => { +export default function boardRoutes(app, options, done) { + + app.get('/', async (req, reply: FastifyReply) => { const boards = await boardService.getAllBoards(); reply.send(boards); }) - app.get('/:id', async (req, reply) => { + app.get('/:id', async (req, reply: FastifyReply) => { const { id } = req.params; const board = await boardService.getBoardById(id); if(board) { @@ -17,18 +19,17 @@ function boardRoutes(app, options, done) { } else { reply.code(404); reply.send(); - } - + } }) - app.post('/', async (req, reply) => { + app.post('/', async (req, reply: FastifyReply) => { const { title, columns } = req.body; const board = await boardService.createBoard(title, columns); reply.code(201); reply.send(board); }) - app.delete('/:id', async (req, reply) => { + app.delete('/:id', async (req, reply: FastifyReply) => { const { id } = req.params; await boardService.deleteBoardById(id); tasksRepo.deleteTasksWithBoard(id); @@ -36,7 +37,7 @@ function boardRoutes(app, options, done) { reply.send(); }) - app.put('/:id', async (req, reply) => { + app.put('/:id', async (req, reply: FastifyReply) => { const { id } = req.params; const { title, columns } = req.body; const board = await boardService.updateBoardById(id, title, columns); @@ -46,5 +47,3 @@ function boardRoutes(app, options, done) { done() } - -module.exports = boardRoutes; diff --git a/src/resources/boards/board.service.ts b/src/resources/boards/board.service.ts index 7e9bf2e..9bb5463 100644 --- a/src/resources/boards/board.service.ts +++ b/src/resources/boards/board.service.ts @@ -1,4 +1,4 @@ -const boardsRepo = require('./board.memory.repository'); +import boardsRepo from './board.memory.repository'; const getAllBoards = () => boardsRepo.getAll(); @@ -10,4 +10,4 @@ const deleteBoardById = (id) => boardsRepo.deleteById(id); const updateBoardById = (id, title, columns) => boardsRepo.updateById(id, title, columns); -module.exports = { getAllBoards, getBoardById, createBoard, deleteBoardById, updateBoardById }; +export default { getAllBoards, getBoardById, createBoard, deleteBoardById, updateBoardById }; diff --git a/src/resources/tasks/task.memory.repository.ts b/src/resources/tasks/task.memory.repository.ts index 70fdc0d..7df6110 100644 --- a/src/resources/tasks/task.memory.repository.ts +++ b/src/resources/tasks/task.memory.repository.ts @@ -1,8 +1,8 @@ -const {v4: uuid} = require('uuid'); +import {v4 as uuid} from 'uuid'; let tasks = []; -class Task { +export default class Task { tasks: any[] = tasks; static getAll = async () => tasks; @@ -64,67 +64,3 @@ class Task { tasks = tasks.filter((task) => task.boardId !== boardId); } } - -// const getAll = async () => tasks; - -// const getById = async (id) => tasks.find((task) => task.id === id); - -// const create = async (title, -// order, -// description, -// userId, -// boardId, -// columnId) => { -// const newTask = { -// id: uuid(), -// title, -// order, -// description, -// userId, -// boardId, -// columnId -// } -// tasks.push(newTask) -// return newTask; -// }; - -// const deleteById = async (id) => { -// tasks = tasks.filter((task) => task.id !== id); -// }; - -// const updateById = async ( -// id, -// title, -// order, -// description, -// userId, -// boardId, -// columnId) => { -// tasks = tasks.map((task) => task.id === id ? { -// id, -// title, -// order, -// description, -// userId, -// boardId, -// columnId} : task); -// const updatedTask = await getById(id); -// return updatedTask; -// }; - -// const updateUserIdToNull = (userId, nullUserId) => { -// tasks.forEach((task) => { -// if(task.userId === userId) { -// Object.assign(task, {"userId": nullUserId}); -// } -// }) -// } - -// const deleteTasksWithBoard = (boardId) => { -// tasks = tasks.filter((task) => task.boardId !== boardId); -// } - -// module.exports = { getAll, getById, create, deleteById, updateById, updateUserIdToNull, deleteTasksWithBoard }; - - -module.exports = Task; \ No newline at end of file diff --git a/src/resources/tasks/task.router.ts b/src/resources/tasks/task.router.ts index 5aa1de3..ee309b2 100644 --- a/src/resources/tasks/task.router.ts +++ b/src/resources/tasks/task.router.ts @@ -1,13 +1,14 @@ -const taskService = require('./task.service'); +import { FastifyReply } from "fastify"; +import taskService from './task.service'; -function taskRoutes(app, options, done) { +export default function taskRoutes(app, options, done) { - app.get('/', async (req, reply) => { + app.get('/', async (req, reply: FastifyReply) => { const tasks = await taskService.getAllTasks(); reply.send(tasks); }) - app.get('/:id', async (req, reply) => { + app.get('/:id', async (req, reply: FastifyReply) => { const { id } = req.params; const task = await taskService.getTaskById(id); if(task) { @@ -19,7 +20,7 @@ function taskRoutes(app, options, done) { } }) - app.post('/', async (req, reply) => { + app.post('/', async (req, reply: FastifyReply) => { const { title, order, @@ -37,14 +38,14 @@ function taskRoutes(app, options, done) { reply.send(task); }) - app.delete('/:taskid', async (req, reply) => { + app.delete('/:taskid', async (req, reply: FastifyReply) => { const { taskid } = req.params; await taskService.deleteTaskById(taskid); reply.code(204); reply.send(); }) - app.put('/:taskid', async (req, reply) => { + app.put('/:taskid', async (req, reply: FastifyReply) => { const { taskid } = req.params; const { title, order, @@ -64,5 +65,3 @@ function taskRoutes(app, options, done) { done() } - -module.exports = taskRoutes; diff --git a/src/resources/tasks/task.service.ts b/src/resources/tasks/task.service.ts index deb349a..edc9827 100644 --- a/src/resources/tasks/task.service.ts +++ b/src/resources/tasks/task.service.ts @@ -1,4 +1,4 @@ -const TaskRepo = require('./task.memory.repository'); +import TaskRepo from './task.memory.repository'; const getAllTasks = () => TaskRepo.getAll(); @@ -36,4 +36,4 @@ const updateTaskById = ( boardId, columnId); -module.exports = { getAll, getById, create, deleteById, updateById }; +export default { getAllTasks, getTaskById, createTask, deleteTaskById, updateTaskById }; diff --git a/src/resources/users/user.memory.repository.ts b/src/resources/users/user.memory.repository.ts index 0fcbd95..a72f155 100644 --- a/src/resources/users/user.memory.repository.ts +++ b/src/resources/users/user.memory.repository.ts @@ -1,8 +1,8 @@ -const {v4: uuid} = require('uuid'); +import {v4 as uuid, } from 'uuid'; let users: any[] = []; -class User { +export default class User { users: any[] static getAll = async () => users; @@ -33,29 +33,3 @@ class User { return { id, name, login }; } } - -// const getAll = async () => users; - -// const getById = async (id) => users.find((user) => user.id === id); - -// const create = async (name, login, password) => { -// const newUser = { -// id: uuid(), -// name, login, password -// } -// users.push(newUser) -// return newUser; -// }; - -// const deleteById = async (id) => { -// users = users.filter((user) => user.id !== id); -// }; - -// const updateById = async (id, name, login, password) => { -// users = users.map((user) => user.id === id ? {id, name, login, password} : user); -// const updatedUser = await getById(id); -// return updatedUser; -// }; - -// module.exports = { getAll, getById, create, deleteById, updateById }; -module.exports = User; \ No newline at end of file diff --git a/src/resources/users/user.router.ts b/src/resources/users/user.router.ts index 25ec132..9d855be 100644 --- a/src/resources/users/user.router.ts +++ b/src/resources/users/user.router.ts @@ -1,48 +1,40 @@ +import { FastifyReply } from "fastify"; + // const User = require('./user.model'); -const usersService = require('./user.service'); -const taskRepo = require('../tasks/task.memory.repository'); +import usersService from './user.service'; +import taskRepo from '../tasks/task.memory.repository'; -function userRoutes(app, options, done) { +export default function userRoutes(app, options, done) { - app.get('/', async (req, reply) => { + app.get('/', async (req, reply: FastifyReply) => { const users = await usersService.getAll(); reply.send(users.map(usersService.toResponse)); }) - app.get('/:id', async (req, reply) => { + app.get('/:id', async (req, reply: FastifyReply) => { const { id } = req.params; const user = await usersService.getById(id); reply.code(200); reply.send(User.toResponse(user)); }) - app.post('/', async (req, reply) => { + app.post('/', async (req, reply: FastifyReply) => { const { name, login, password } = req.body; const user = await usersService.create(name, login, password); reply.code(201); reply.send(User.toResponse(user)); }) - app.delete('/:id', async (req, reply) => { + app.delete('/:id', async (req, reply: FastifyReply) => { const { id } = req.params; await usersService.deleteById(id); taskRepo.updateUserIdToNull(id, null); - // const tasks4DeletedUser = tasks.filter((task) => task.userId === id); - // for await(const task of tasks4DeletedUser) { - // task.userId = null; - // taskService.updateById(task.id, - // task.title, - // task.order, - // task.description, - // task.userId, - // task.boardId, - // task.columnId) - // } + reply.code(204); reply.send(); }) - app.put('/:id', async (req, reply) => { + app.put('/:id', async (req, reply: FastifyReply) => { const { id } = req.params; const { name, login, password } = req.body; const user = await usersService.updateById(id, name, login, password); @@ -52,5 +44,3 @@ function userRoutes(app, options, done) { done() } - -module.exports = userRoutes; diff --git a/src/resources/users/user.service.ts b/src/resources/users/user.service.ts index 38af202..6b2c45f 100644 --- a/src/resources/users/user.service.ts +++ b/src/resources/users/user.service.ts @@ -1,4 +1,4 @@ -const usersRepo = require('./user.memory.repository'); +import usersRepo from './user.memory.repository'; const getAll = () => usersRepo.getAll(); @@ -12,4 +12,4 @@ const updateById = (id, name, login, password) => usersRepo.updateById(id, name, const toResponse = (user) => usersRepo.toResponse(user) -module.exports = { getAll, getById, create, deleteById, updateById }; +export default { getAll, getById, create, deleteById, updateById }; diff --git a/src/server.ts b/src/server.ts index a616922..542dbe5 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,12 +1,13 @@ // migration to ts -const { PORT } = require('./common/config'); -const app = require('./app'); +import PORT from './common/config'; + +import server from './app'; const start = async () => { try { - await app.listen(PORT); + await server.listen(PORT); } catch (error) { - app.log.error(error); + server.log.error(error); } } diff --git a/src/tst.ts b/src/tst.ts new file mode 100644 index 0000000..e69de29 From 9649d83f3bb83ff042d580575204148b84b536d0 Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 19 Dec 2021 18:04:14 +0200 Subject: [PATCH 13/15] types in task repo --- src/resources/tasks/task.memory.repository.ts | 59 +++++++++++-------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/src/resources/tasks/task.memory.repository.ts b/src/resources/tasks/task.memory.repository.ts index 7df6110..87f95e9 100644 --- a/src/resources/tasks/task.memory.repository.ts +++ b/src/resources/tasks/task.memory.repository.ts @@ -1,21 +1,31 @@ import {v4 as uuid} from 'uuid'; - -let tasks = []; +interface ITask { + id: string, + title: string, + order: string, + description: string, + userId: string, + boardId: string, + columnId: string +} +let tasks: ITask[] = []; export default class Task { - tasks: any[] = tasks; + tasks: ITask[] = tasks; + + static getAll = async () : Promise => tasks; - static getAll = async () => tasks; + static getById = async (id: string) : Promise => tasks.find((task) => task.id === id); - static getById = async (id) => tasks.find((task) => task.id === id); + static create = async (params: {[key: string]: string}): Promise => { + const { title, + order, + description, + userId, + boardId, + columnId } = params; - static create = async (title, - order, - description, - userId, - boardId, - columnId) => { - const newTask = { + const newTask: ITask = { id: uuid(), title, order, @@ -28,18 +38,19 @@ export default class Task { return newTask; }; - static deleteById = async (id) => { + static deleteById = async (id: string): Promise => { tasks = tasks.filter((task) => task.id !== id); }; - static updateById = async ( - id, - title, - order, - description, - userId, - boardId, - columnId) => { + static updateById = async (params: {[key: string]: string}): Promise => { + const { id, + title, + order, + description, + userId, + boardId, + columnId } = params; + tasks = tasks.map((task) => task.id === id ? { id, title, @@ -48,11 +59,11 @@ export default class Task { userId, boardId, columnId} : task); - const updatedTask = await getById(id); + const updatedTask = await Task.getById(id); return updatedTask; }; - static updateUserIdToNull = (userId, nullUserId) => { + static updateUserIdToNull = (userId: string, nullUserId: null): void => { tasks.forEach((task) => { if(task.userId === userId) { Object.assign(task, {"userId": nullUserId}); @@ -60,7 +71,7 @@ export default class Task { }) } - static deleteTasksWithBoard = (boardId) => { + static deleteTasksWithBoard = (boardId: string): void => { tasks = tasks.filter((task) => task.boardId !== boardId); } } From f3972dca0dc8f56375ecb8f707f2098025606dbc Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 19 Dec 2021 18:46:52 +0200 Subject: [PATCH 14/15] task service types --- src/resources/tasks/task.interface.ts | 9 ++++++++ src/resources/tasks/task.memory.repository.ts | 11 ++-------- src/resources/tasks/task.model.ts | 22 ------------------- src/resources/tasks/task.service.ts | 20 ++++++++--------- 4 files changed, 21 insertions(+), 41 deletions(-) create mode 100644 src/resources/tasks/task.interface.ts delete mode 100644 src/resources/tasks/task.model.ts diff --git a/src/resources/tasks/task.interface.ts b/src/resources/tasks/task.interface.ts new file mode 100644 index 0000000..ba20ae6 --- /dev/null +++ b/src/resources/tasks/task.interface.ts @@ -0,0 +1,9 @@ +export default interface ITask { + id: string, + title: string, + order: string, + description: string, + userId: string, + boardId: string, + columnId: string + } \ No newline at end of file diff --git a/src/resources/tasks/task.memory.repository.ts b/src/resources/tasks/task.memory.repository.ts index 87f95e9..30eac05 100644 --- a/src/resources/tasks/task.memory.repository.ts +++ b/src/resources/tasks/task.memory.repository.ts @@ -1,16 +1,9 @@ import {v4 as uuid} from 'uuid'; -interface ITask { - id: string, - title: string, - order: string, - description: string, - userId: string, - boardId: string, - columnId: string -} +import ITask from './task.interface'; let tasks: ITask[] = []; export default class Task { + tasks: ITask[] = tasks; static getAll = async () : Promise => tasks; diff --git a/src/resources/tasks/task.model.ts b/src/resources/tasks/task.model.ts deleted file mode 100644 index 6b7fa76..0000000 --- a/src/resources/tasks/task.model.ts +++ /dev/null @@ -1,22 +0,0 @@ -// const uuid = require('uuid'); - -// class User { -// constructor({ -// id = uuid(), -// name = 'USER', -// login = 'user', -// password = 'P@55w0rd' -// } = {}) { -// this.id = id; -// this.name = name; -// this.login = login; -// this.password = password; -// } - -// static toResponse(user) { -// const { id, name, login } = user; -// return { id, name, login }; -// } -// } - -// module.exports = User; diff --git a/src/resources/tasks/task.service.ts b/src/resources/tasks/task.service.ts index edc9827..5b1383c 100644 --- a/src/resources/tasks/task.service.ts +++ b/src/resources/tasks/task.service.ts @@ -1,39 +1,39 @@ import TaskRepo from './task.memory.repository'; +import ITask from './task.interface'; +const getAllTasks = (): Promise => TaskRepo.getAll(); -const getAllTasks = () => TaskRepo.getAll(); +const getTaskById = (id: string): Promise => TaskRepo.getById(id); -const getTaskById = (id) => TaskRepo.getById(id); - -const createTask = ( +const createTask = ({ title, order, description, userId, boardId, - columnId) => TaskRepo.create( + columnId}: {[key: string]: string}) : Promise => TaskRepo.create({ title, order, description, userId, boardId, - columnId); + columnId}); -const deleteTaskById = (id) => TaskRepo.deleteById(id); +const deleteTaskById = (id: string): Promise => TaskRepo.deleteById(id); -const updateTaskById = ( +const updateTaskById = ({ id, title, order, description, userId, boardId, - columnId) => TaskRepo.updateById( + columnId}: {[key: string]: string}) : Promise => TaskRepo.updateById({ id, title, order, description, userId, boardId, - columnId); + columnId}); export default { getAllTasks, getTaskById, createTask, deleteTaskById, updateTaskById }; From 99dce030a9de1e0a0646a61320190ca555719002 Mon Sep 17 00:00:00 2001 From: RohovAlex <47148269+RohovAlex@users.noreply.github.com> Date: Sun, 19 Dec 2021 22:23:34 +0200 Subject: [PATCH 15/15] add types --- .eslintrc.json | 3 +- dist/app.js | 29 ++++---- dist/app.js.map | 2 +- dist/common/config.js | 14 ++-- dist/common/config.js.map | 2 +- .../boards/board.memory.repository.js | 28 ++------ .../boards/board.memory.repository.js.map | 2 +- dist/resources/boards/board.router.js | 22 +++--- dist/resources/boards/board.router.js.map | 2 +- dist/resources/boards/board.service.js | 18 +++-- dist/resources/boards/board.service.js.map | 2 +- .../resources/tasks/task.memory.repository.js | 68 +++---------------- .../tasks/task.memory.repository.js.map | 2 +- dist/resources/tasks/task.model.js | 21 ------ dist/resources/tasks/task.model.js.map | 1 - dist/resources/tasks/task.router.js | 20 +++--- dist/resources/tasks/task.router.js.map | 2 +- dist/resources/tasks/task.service.js | 33 +++++++-- dist/resources/tasks/task.service.js.map | 2 +- .../resources/users/user.memory.repository.js | 26 ++----- .../users/user.memory.repository.js.map | 2 +- dist/resources/users/user.router.js | 35 ++++------ dist/resources/users/user.router.js.map | 2 +- dist/resources/users/user.service.js | 20 +++--- dist/resources/users/user.service.js.map | 2 +- dist/server.js | 12 ++-- dist/server.js.map | 2 +- src/app.ts | 8 --- src/resources/tasks/task.interface.ts | 2 +- src/resources/tasks/task.memory.repository.ts | 3 +- src/resources/tasks/task.router.ts | 14 ++-- src/resources/tasks/task.service.ts | 3 +- tsconfig.json | 2 +- 33 files changed, 163 insertions(+), 243 deletions(-) delete mode 100644 dist/resources/tasks/task.model.js delete mode 100644 dist/resources/tasks/task.model.js.map diff --git a/.eslintrc.json b/.eslintrc.json index 6c1524c..f5a71df 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -29,7 +29,8 @@ "eslint:recommended", "plugin:node/recommended", "airbnb-base", - "prettier" + "prettier", + "plugin:@typescript-eslint/recommended" ], "rules": { "import/extensions": "off", diff --git a/dist/app.js b/dist/app.js index 085c583..1002702 100644 --- a/dist/app.js +++ b/dist/app.js @@ -1,18 +1,15 @@ "use strict"; -const fastify = require('fastify'); -const userRouter = require('./resources/users/user.router'); -const boardRouter = require('./resources/boards/board.router'); -const taskRouter = require('./resources/tasks/task.router'); -const app = fastify({ logger: true }); -app.register(require('fastify-swagger'), { - exposeRoute: true, - routePrefix: '/doc', - swagger: { - info: { title: 'task4 Rest-server' } - } -}); -app.register(userRouter, { prefix: '/users' }); -app.register(boardRouter, { prefix: '/boards' }); -app.register(taskRouter, { prefix: '/boards/:id/tasks' }); -module.exports = app; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const fastify_1 = __importDefault(require("fastify")); +const user_router_1 = __importDefault(require("./resources/users/user.router")); +const board_router_1 = __importDefault(require("./resources/boards/board.router")); +const task_router_1 = __importDefault(require("./resources/tasks/task.router")); +const app = (0, fastify_1.default)({ logger: true }); +app.register(user_router_1.default, { prefix: '/users' }); +app.register(board_router_1.default, { prefix: '/boards' }); +app.register(task_router_1.default, { prefix: '/boards/:id/tasks' }); +exports.default = app; //# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/dist/app.js.map b/dist/app.js.map index 56e5577..efcba3c 100644 --- a/dist/app.js.map +++ b/dist/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";AAAA,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,UAAU,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE5D,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;AAErC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;IACrC,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE;QACL,IAAI,EAAE,EAAC,KAAK,EAAE,mBAAmB,EAAC;KACrC;CACJ,CAAC,CAAA;AAEF,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;AAC7C,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;AAC/C,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAC,MAAM,EAAE,mBAAmB,EAAC,CAAC,CAAC;AAExD,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC"} \ No newline at end of file +{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAE9B,gFAAuD;AACvD,mFAA0D;AAC1D,gFAAuD;AAEvD,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;AAErC,GAAG,CAAC,QAAQ,CAAC,qBAAU,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;AAC7C,GAAG,CAAC,QAAQ,CAAC,sBAAW,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;AAC/C,GAAG,CAAC,QAAQ,CAAC,qBAAU,EAAE,EAAC,MAAM,EAAE,mBAAmB,EAAC,CAAC,CAAC;AAExD,kBAAe,GAAG,CAAA"} \ No newline at end of file diff --git a/dist/common/config.js b/dist/common/config.js index ef084cd..bbc7a1e 100644 --- a/dist/common/config.js +++ b/dist/common/config.js @@ -1,10 +1,14 @@ "use strict"; -const dotenv = require('dotenv'); -const path = require('path'); -dotenv.config({ - path: path.join(__dirname, '../../.env') +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const dotenv_1 = __importDefault(require("dotenv")); +const path_1 = __importDefault(require("path")); +dotenv_1.default.config({ + path: path_1.default.join(__dirname, '../../.env') }); -module.exports = { +exports.default = { PORT: process.env.PORT, NODE_ENV: process.env.NODE_ENV, MONGO_CONNECTION_STRING: process.env.MONGO_CONNECTION_STRING, diff --git a/dist/common/config.js.map b/dist/common/config.js.map index 2cc832a..59503a1 100644 --- a/dist/common/config.js.map +++ b/dist/common/config.js.map @@ -1 +1 @@ -{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":";AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,GAAG;IACf,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;IACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;IAC9B,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IAC5D,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IAC1C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;CAC5C,CAAC"} \ No newline at end of file +{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,gDAAwB;AAExB,gBAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;CACzC,CAAC,CAAC;AAEH,kBAAe;IACb,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;IACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;IAC9B,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IAC5D,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IAC1C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;CAC5C,CAAC"} \ No newline at end of file diff --git a/dist/resources/boards/board.memory.repository.js b/dist/resources/boards/board.memory.repository.js index b4a9b9a..6f3747f 100644 --- a/dist/resources/boards/board.memory.repository.js +++ b/dist/resources/boards/board.memory.repository.js @@ -1,15 +1,17 @@ "use strict"; var _a; -const { v4: uuid } = require('uuid'); +Object.defineProperty(exports, "__esModule", { value: true }); +const uuid_1 = require("uuid"); let boards = []; class Board { } +exports.default = Board; _a = Board; Board.getById = async (id) => boards.find((board) => board.id === id); Board.getAll = async () => boards; Board.create = async (title, columns) => { const newBoard = { - id: uuid(), + id: (0, uuid_1.v4)(), title, columns }; boards.push(newBoard); @@ -20,27 +22,7 @@ Board.deleteById = async (id) => { }; Board.updateById = async (id, title, columns) => { boards = boards.map((board) => board.id === id ? { id, title, columns } : board); - const updatedBoard = await getById(id); + const updatedBoard = await Board.getById(id); return updatedBoard; }; -// const getAllBoards = async () => boards; -// const getBoardById = async (id) => boards.find((board) => board.id === id); -// const create = async (title, columns) => { -// const newBoard = { -// id: uuid(), -// title, columns -// } -// boards.push(newBoard) -// return newBoard; -// }; -// const deleteById = async (id) => { -// boards = boards.filter((board) => board.id !== id); -// }; -// const updateById = async (id, title, columns) => { -// boards = boards.map((board) => board.id === id ? {id, title, columns} : board); -// const updatedBoard = await getById(id); -// return updatedBoard; -// }; -// module.exports = { getAll, getById, create, deleteById, updateById }; -module.exports = Board; //# sourceMappingURL=board.memory.repository.js.map \ No newline at end of file diff --git a/dist/resources/boards/board.memory.repository.js.map b/dist/resources/boards/board.memory.repository.js.map index aae0567..8524fa6 100644 --- a/dist/resources/boards/board.memory.repository.js.map +++ b/dist/resources/boards/board.memory.repository.js.map @@ -1 +1 @@ -{"version":3,"file":"board.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/boards/board.memory.repository.ts"],"names":[],"mappings":";;AAAA,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACnC,IAAI,MAAM,GAAS,EAAE,CAAC;AACtB,MAAM,KAAK;;;AAGF,aAAO,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAEhE,YAAM,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC;AAE5B,YAAM,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACvC,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,IAAI,EAAE;QACV,KAAK,EAAE,OAAO;KACf,CAAA;IACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrB,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEK,gBAAU,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;IAC/B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEK,gBAAU,GAAG,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/C,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAKJ,2CAA2C;AAE3C,8EAA8E;AAE9E,6CAA6C;AAC7C,yBAAyB;AACzB,oBAAoB;AACpB,uBAAuB;AACvB,QAAQ;AACR,4BAA4B;AAC5B,qBAAqB;AACrB,KAAK;AAEL,qCAAqC;AACrC,wDAAwD;AACxD,KAAK;AAEL,qDAAqD;AACrD,oFAAoF;AACpF,4CAA4C;AAC5C,yBAAyB;AACzB,KAAK;AAEL,wEAAwE;AACxE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC"} \ No newline at end of file +{"version":3,"file":"board.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/boards/board.memory.repository.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAQhC,IAAI,MAAM,GAAa,EAAE,CAAC;AAC1B,MAAqB,KAAK;;AAA1B,wBAyBC;;AAtBQ,aAAO,GAAG,KAAK,EAAE,EAAU,EAAgC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAE,CAAA;AAE9G,YAAM,GAAG,KAAK,IAAwB,EAAE,CAAC,MAAO,CAAA;AAEhD,YAAM,GAAG,KAAK,EAAE,KAAa,EAAE,OAAc,EAAoB,EAAE;IACxE,MAAM,QAAQ,GAAW;QACvB,EAAE,EAAE,IAAA,SAAI,GAAE;QACV,KAAK,EAAE,OAAO;KACf,CAAA;IACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrB,OAAO,QAAQ,CAAC;AAClB,CAAE,CAAA;AAEK,gBAAU,GAAG,KAAK,EAAE,EAAU,EAAiB,EAAE;IACtD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,CAAE,CAAA;AAEK,gBAAU,GAAG,KAAK,EAAE,EAAU,EAAE,KAAa,EAAE,OAAc,EAAgC,EAAE;IACpG,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO,YAAY,CAAC;AACtB,CAAE,CAAA"} \ No newline at end of file diff --git a/dist/resources/boards/board.router.js b/dist/resources/boards/board.router.js index 4a7c68d..ecccc59 100644 --- a/dist/resources/boards/board.router.js +++ b/dist/resources/boards/board.router.js @@ -1,14 +1,18 @@ "use strict"; -const boardService = require('./board.service'); -const tasksRepo = require('../tasks/task.memory.repository'); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const board_service_1 = __importDefault(require("./board.service")); +const task_memory_repository_1 = __importDefault(require("../tasks/task.memory.repository")); function boardRoutes(app, options, done) { app.get('/', async (req, reply) => { - const boards = await boardService.getAllBoards(); + const boards = await board_service_1.default.getAllBoards(); reply.send(boards); }); app.get('/:id', async (req, reply) => { const { id } = req.params; - const board = await boardService.getBoardById(id); + const board = await board_service_1.default.getBoardById(id); if (board) { reply.code(200); reply.send(board); @@ -20,25 +24,25 @@ function boardRoutes(app, options, done) { }); app.post('/', async (req, reply) => { const { title, columns } = req.body; - const board = await boardService.createBoard(title, columns); + const board = await board_service_1.default.createBoard(title, columns); reply.code(201); reply.send(board); }); app.delete('/:id', async (req, reply) => { const { id } = req.params; - await boardService.deleteBoardById(id); - tasksRepo.deleteTasksWithBoard(id); + await board_service_1.default.deleteBoardById(id); + task_memory_repository_1.default.deleteTasksWithBoard(id); reply.code(204); reply.send(); }); app.put('/:id', async (req, reply) => { const { id } = req.params; const { title, columns } = req.body; - const board = await boardService.updateBoardById(id, title, columns); + const board = await board_service_1.default.updateBoardById(id, title, columns); reply.code(200); reply.send(board); }); done(); } -module.exports = boardRoutes; +exports.default = boardRoutes; //# sourceMappingURL=board.router.js.map \ No newline at end of file diff --git a/dist/resources/boards/board.router.js.map b/dist/resources/boards/board.router.js.map index 5c7f7a6..cf7dbbd 100644 --- a/dist/resources/boards/board.router.js.map +++ b/dist/resources/boards/board.router.js.map @@ -1 +1 @@ -{"version":3,"file":"board.router.js","sourceRoot":"","sources":["../../../src/resources/boards/board.router.ts"],"names":[],"mappings":";AAAA,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChD,MAAM,SAAS,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAE7D,SAAS,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI;IAEnC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAClD,IAAG,KAAK,EAAE;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;aAAM;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,EAAE,CAAC;SAChB;IAEL,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACvC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC"} \ No newline at end of file +{"version":3,"file":"board.router.js","sourceRoot":"","sources":["../../../src/resources/boards/board.router.ts"],"names":[],"mappings":";;;;;AAEA,oEAA2C;AAC3C,6FAAwD;AAExD,SAAwB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI;IAElD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,uBAAY,CAAC,YAAY,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAC/C,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,uBAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAClD,IAAG,KAAK,EAAE;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;aAAM;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,EAAE,CAAC;SAChB;IACL,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAC7C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,uBAAY,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAClD,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,uBAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACvC,gCAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAC/C,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,uBAAY,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AA3CD,8BA2CC"} \ No newline at end of file diff --git a/dist/resources/boards/board.service.js b/dist/resources/boards/board.service.js index d5e02ea..73d2fe7 100644 --- a/dist/resources/boards/board.service.js +++ b/dist/resources/boards/board.service.js @@ -1,9 +1,13 @@ "use strict"; -const boardsRepo = require('./board.memory.repository'); -const getAllBoards = () => boardsRepo.getAll(); -const getBoardById = (id) => boardsRepo.getById(id); -const createBoard = (title, columns) => boardsRepo.create(title, columns); -const deleteBoardById = (id) => boardsRepo.deleteById(id); -const updateBoardById = (id, title, columns) => boardsRepo.updateById(id, title, columns); -module.exports = { getAllBoards, getBoardById, createBoard, deleteBoardById, updateBoardById }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const board_memory_repository_1 = __importDefault(require("./board.memory.repository")); +const getAllBoards = () => board_memory_repository_1.default.getAll(); +const getBoardById = (id) => board_memory_repository_1.default.getById(id); +const createBoard = (title, columns) => board_memory_repository_1.default.create(title, columns); +const deleteBoardById = (id) => board_memory_repository_1.default.deleteById(id); +const updateBoardById = (id, title, columns) => board_memory_repository_1.default.updateById(id, title, columns); +exports.default = { getAllBoards, getBoardById, createBoard, deleteBoardById, updateBoardById }; //# sourceMappingURL=board.service.js.map \ No newline at end of file diff --git a/dist/resources/boards/board.service.js.map b/dist/resources/boards/board.service.js.map index 066789f..60b6a9e 100644 --- a/dist/resources/boards/board.service.js.map +++ b/dist/resources/boards/board.service.js.map @@ -1 +1 @@ -{"version":3,"file":"board.service.js","sourceRoot":"","sources":["../../../src/resources/boards/board.service.ts"],"names":[],"mappings":";AAAA,MAAM,UAAU,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAExD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AAE/C,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAEzE,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAE1D,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAE1F,MAAM,CAAC,OAAO,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"board.service.js","sourceRoot":"","sources":["../../../src/resources/boards/board.service.ts"],"names":[],"mappings":";;;;;AAAA,wFAAmD;AAEnD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,iCAAU,CAAC,MAAM,EAAE,CAAC;AAE/C,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,iCAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,iCAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAEzE,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,iCAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAE1D,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,iCAAU,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAE1F,kBAAe,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"} \ No newline at end of file diff --git a/dist/resources/tasks/task.memory.repository.js b/dist/resources/tasks/task.memory.repository.js index 9e10857..612930d 100644 --- a/dist/resources/tasks/task.memory.repository.js +++ b/dist/resources/tasks/task.memory.repository.js @@ -1,18 +1,21 @@ "use strict"; var _a; -const { v4: uuid } = require('uuid'); +Object.defineProperty(exports, "__esModule", { value: true }); +const uuid_1 = require("uuid"); let tasks = []; class Task { constructor() { this.tasks = tasks; } } +exports.default = Task; _a = Task; Task.getAll = async () => tasks; Task.getById = async (id) => tasks.find((task) => task.id === id); -Task.create = async (title, order, description, userId, boardId, columnId) => { +Task.create = async (params) => { + const { title, order, description, userId, boardId, columnId } = params; const newTask = { - id: uuid(), + id: (0, uuid_1.v4)(), title, order, description, @@ -26,7 +29,8 @@ Task.create = async (title, order, description, userId, boardId, columnId) => { Task.deleteById = async (id) => { tasks = tasks.filter((task) => task.id !== id); }; -Task.updateById = async (id, title, order, description, userId, boardId, columnId) => { +Task.updateById = async (params) => { + const { id, title, order, description, userId, boardId, columnId } = params; tasks = tasks.map((task) => task.id === id ? { id, title, @@ -36,7 +40,7 @@ Task.updateById = async (id, title, order, description, userId, boardId, columnI boardId, columnId } : task); - const updatedTask = await getById(id); + const updatedTask = await Task.getById(id); return updatedTask; }; Task.updateUserIdToNull = (userId, nullUserId) => { @@ -49,58 +53,4 @@ Task.updateUserIdToNull = (userId, nullUserId) => { Task.deleteTasksWithBoard = (boardId) => { tasks = tasks.filter((task) => task.boardId !== boardId); }; -// const getAll = async () => tasks; -// const getById = async (id) => tasks.find((task) => task.id === id); -// const create = async (title, -// order, -// description, -// userId, -// boardId, -// columnId) => { -// const newTask = { -// id: uuid(), -// title, -// order, -// description, -// userId, -// boardId, -// columnId -// } -// tasks.push(newTask) -// return newTask; -// }; -// const deleteById = async (id) => { -// tasks = tasks.filter((task) => task.id !== id); -// }; -// const updateById = async ( -// id, -// title, -// order, -// description, -// userId, -// boardId, -// columnId) => { -// tasks = tasks.map((task) => task.id === id ? { -// id, -// title, -// order, -// description, -// userId, -// boardId, -// columnId} : task); -// const updatedTask = await getById(id); -// return updatedTask; -// }; -// const updateUserIdToNull = (userId, nullUserId) => { -// tasks.forEach((task) => { -// if(task.userId === userId) { -// Object.assign(task, {"userId": nullUserId}); -// } -// }) -// } -// const deleteTasksWithBoard = (boardId) => { -// tasks = tasks.filter((task) => task.boardId !== boardId); -// } -// module.exports = { getAll, getById, create, deleteById, updateById, updateUserIdToNull, deleteTasksWithBoard }; -module.exports = Task; //# sourceMappingURL=task.memory.repository.js.map \ No newline at end of file diff --git a/dist/resources/tasks/task.memory.repository.js.map b/dist/resources/tasks/task.memory.repository.js.map index 9e94fa8..a0b9cb5 100644 --- a/dist/resources/tasks/task.memory.repository.js.map +++ b/dist/resources/tasks/task.memory.repository.js.map @@ -1 +1 @@ -{"version":3,"file":"task.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.memory.repository.ts"],"names":[],"mappings":";;AAAA,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEnC,IAAI,KAAK,GAAG,EAAE,CAAC;AAEf,MAAM,IAAI;IAAV;QACE,UAAK,GAAU,KAAK,CAAC;IA4DvB,CAAC;;;AA1DQ,WAAM,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC;AAE3B,YAAO,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAE7D,WAAM,GAAG,KAAK,EAAE,KAAK,EAC1B,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,EAAE;IACV,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,IAAI,EAAE;QACV,KAAK;QACL,KAAK;QACL,WAAW;QACX,MAAM;QACN,OAAO;QACP,QAAQ;KACT,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EACvB,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,EAAE;IACZ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3C,EAAE;QACF,KAAK;QACL,KAAK;QACL,WAAW;QACX,MAAM;QACN,OAAO;QACP,QAAQ;KAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEK,uBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;IACjD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAG,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,UAAU,EAAC,CAAC,CAAC;SAC7C;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEM,yBAAoB,GAAG,CAAC,OAAO,EAAE,EAAE;IACxC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;AAC3D,CAAC,CAAA;AAGH,oCAAoC;AAEpC,sEAAsE;AAEtE,+BAA+B;AAC/B,WAAW;AACX,iBAAiB;AACjB,YAAY;AACZ,aAAa;AACb,mBAAmB;AACnB,wBAAwB;AACxB,oBAAoB;AACpB,eAAe;AACf,eAAe;AACf,qBAAqB;AACrB,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;AACjB,QAAQ;AACR,0BAA0B;AAC1B,oBAAoB;AACpB,KAAK;AAEL,qCAAqC;AACrC,oDAAoD;AACpD,KAAK;AAEL,6BAA6B;AAC7B,SAAS;AACT,WAAW;AACX,WAAW;AACX,iBAAiB;AACjB,YAAY;AACZ,aAAa;AACb,mBAAmB;AACnB,mDAAmD;AACnD,WAAW;AACX,aAAa;AACb,aAAa;AACb,mBAAmB;AACnB,cAAc;AACd,eAAe;AACf,yBAAyB;AACzB,2CAA2C;AAC3C,wBAAwB;AACxB,KAAK;AAEL,uDAAuD;AACvD,8BAA8B;AAC9B,mCAAmC;AACnC,qDAAqD;AACrD,QAAQ;AACR,YAAY;AACZ,IAAI;AAEJ,8CAA8C;AAC9C,mEAAmE;AACnE,IAAI;AAEJ,kHAAkH;AAGlH,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC"} \ No newline at end of file +{"version":3,"file":"task.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.memory.repository.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAGhC,IAAI,KAAK,GAAY,EAAE,CAAC;AAExB,MAAqB,IAAI;IAAzB;QAEE,UAAK,GAAY,KAAK,CAAC;IA+DzB,CAAC;;AAjED,uBAiEC;;AA7DQ,WAAM,GAAG,KAAK,IAAuB,EAAE,CAAC,KAAM,CAAA;AAE9C,YAAO,GAAG,KAAK,EAAE,EAAU,EAA+B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAE,CAAA;AAElG,WAAM,GAAG,KAAK,EAAE,MAA+B,EAAkB,EAAE;IACxE,MAAM,EAAE,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAU;QACrB,EAAE,EAAE,IAAA,SAAI,GAAE;QACV,KAAK;QACL,KAAK;QACL,WAAW;QACX,MAAM;QACN,OAAO;QACP,QAAQ;KACT,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrB,OAAO,OAAO,CAAC;AACjB,CAAE,CAAA;AAEK,eAAU,GAAG,KAAK,EAAE,EAAU,EAAiB,EAAE;IACtD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,CAAE,CAAA;AAEK,eAAU,GAAG,KAAK,EAAE,MAA+B,EAA8B,EAAE;IACxF,MAAM,EAAE,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3C,EAAE;QACF,KAAK;QACL,KAAK;QACL,WAAW;QACX,MAAM;QACN,OAAO;QACP,QAAQ;KAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,WAAW,CAAC;AACrB,CAAE,CAAA;AAEK,uBAAkB,GAAG,CAAC,MAAc,EAAE,UAAgB,EAAQ,EAAE;IACrE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAG,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,UAAU,EAAC,CAAC,CAAC;SAC7C;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEM,yBAAoB,GAAG,CAAC,OAAe,EAAQ,EAAE;IACtD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;AAC3D,CAAC,CAAA"} \ No newline at end of file diff --git a/dist/resources/tasks/task.model.js b/dist/resources/tasks/task.model.js deleted file mode 100644 index f8a7915..0000000 --- a/dist/resources/tasks/task.model.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -// const uuid = require('uuid'); -// class User { -// constructor({ -// id = uuid(), -// name = 'USER', -// login = 'user', -// password = 'P@55w0rd' -// } = {}) { -// this.id = id; -// this.name = name; -// this.login = login; -// this.password = password; -// } -// static toResponse(user) { -// const { id, name, login } = user; -// return { id, name, login }; -// } -// } -// module.exports = User; -//# sourceMappingURL=task.model.js.map \ No newline at end of file diff --git a/dist/resources/tasks/task.model.js.map b/dist/resources/tasks/task.model.js.map deleted file mode 100644 index d5858b9..0000000 --- a/dist/resources/tasks/task.model.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"task.model.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.model.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAEhC,eAAe;AACf,kBAAkB;AAClB,mBAAmB;AACnB,qBAAqB;AACrB,sBAAsB;AACtB,4BAA4B;AAC5B,cAAc;AACd,oBAAoB;AACpB,wBAAwB;AACxB,0BAA0B;AAC1B,gCAAgC;AAChC,MAAM;AAEN,8BAA8B;AAC9B,wCAAwC;AACxC,kCAAkC;AAClC,MAAM;AACN,IAAI;AAEJ,yBAAyB"} \ No newline at end of file diff --git a/dist/resources/tasks/task.router.js b/dist/resources/tasks/task.router.js index 34551be..64af9cb 100644 --- a/dist/resources/tasks/task.router.js +++ b/dist/resources/tasks/task.router.js @@ -1,13 +1,17 @@ "use strict"; -const taskService = require('./task.service'); -function taskRoutes(app, options, done) { +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const task_service_1 = __importDefault(require("./task.service")); +async function taskRoutes(app, options, done) { app.get('/', async (req, reply) => { - const tasks = await taskService.getAllTasks(); + const tasks = await task_service_1.default.getAllTasks(); reply.send(tasks); }); app.get('/:id', async (req, reply) => { const { id } = req.params; - const task = await taskService.getTaskById(id); + const task = await task_service_1.default.getTaskById(id); if (task) { reply.code(200); reply.send(task); @@ -20,24 +24,24 @@ function taskRoutes(app, options, done) { app.post('/', async (req, reply) => { const { title, order, description, userId, columnId } = req.body; const boardId = req.params.id; - const task = await taskService.createTask(title, order, description, userId, boardId, columnId); + const task = await task_service_1.default.createTask(title, order, description, userId, boardId, columnId); reply.code(201); reply.send(task); }); app.delete('/:taskid', async (req, reply) => { const { taskid } = req.params; - await taskService.deleteTaskById(taskid); + await task_service_1.default.deleteTaskById(taskid); reply.code(204); reply.send(); }); app.put('/:taskid', async (req, reply) => { const { taskid } = req.params; const { title, order, description, userId, boardId, columnId } = req.body; - const task = await taskService.updateTaskById(taskid, title, order, description, userId, boardId, columnId); + const task = await task_service_1.default.updateTaskById(taskid, title, order, description, userId, boardId, columnId); reply.code(200); reply.send(task); }); done(); } -module.exports = taskRoutes; +exports.default = taskRoutes; //# sourceMappingURL=task.router.js.map \ No newline at end of file diff --git a/dist/resources/tasks/task.router.js.map b/dist/resources/tasks/task.router.js.map index 6ce76e7..a1d6b37 100644 --- a/dist/resources/tasks/task.router.js.map +++ b/dist/resources/tasks/task.router.js.map @@ -1 +1 @@ -{"version":3,"file":"task.router.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.router.ts"],"names":[],"mappings":";AAAA,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE9C,SAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI;IAElC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAG,IAAI,EAAE;YACL,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpB;aAAM;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,EAAE,CAAC;SAChB;IACL,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK,EAC3C,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC9B,MAAM,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC9B,MAAM,EAAE,KAAK,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EACvD,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"task.router.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.router.ts"],"names":[],"mappings":";;;;;AACA,kEAAyC;AAE1B,KAAK,UAAU,UAAU,CAAC,GAAoB,EAAE,OAAO,EAAE,IAAI;IAExE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,MAAM,sBAAW,CAAC,WAAW,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QAC/D,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,sBAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAG,IAAI,EAAE;YACL,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpB;aAAM;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,EAAE,CAAC;SAChB;IACL,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QAC7D,MAAM,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,sBAAW,CAAC,UAAU,CAAC,KAAK,EAC3C,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QACtE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC9B,MAAM,sBAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAmB,EAAE,KAAmB,EAAE,EAAE;QACnE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC9B,MAAM,EAAE,KAAK,EACT,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,sBAAW,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EACvD,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AA/DD,6BA+DC"} \ No newline at end of file diff --git a/dist/resources/tasks/task.service.js b/dist/resources/tasks/task.service.js index df4727e..ef53813 100644 --- a/dist/resources/tasks/task.service.js +++ b/dist/resources/tasks/task.service.js @@ -1,9 +1,28 @@ "use strict"; -const TaskRepo = require('./task.memory.repository'); -const getAllTasks = () => TaskRepo.getAll(); -const getTaskById = (id) => TaskRepo.getById(id); -const createTask = (title, order, description, userId, boardId, columnId) => TaskRepo.create(title, order, description, userId, boardId, columnId); -const deleteTaskById = (id) => TaskRepo.deleteById(id); -const updateTaskById = (id, title, order, description, userId, boardId, columnId) => TaskRepo.updateById(id, title, order, description, userId, boardId, columnId); -module.exports = { getAll, getById, create, deleteById, updateById }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const task_memory_repository_1 = __importDefault(require("./task.memory.repository")); +const getAllTasks = () => task_memory_repository_1.default.getAll(); +const getTaskById = (id) => task_memory_repository_1.default.getById(id); +const createTask = ({ title, order, description, userId, boardId, columnId }) => task_memory_repository_1.default.create({ + title, + order, + description, + userId, + boardId, + columnId +}); +const deleteTaskById = (id) => task_memory_repository_1.default.deleteById(id); +const updateTaskById = ({ id, title, order, description, userId, boardId, columnId }) => task_memory_repository_1.default.updateById({ + id, + title, + order, + description, + userId, + boardId, + columnId +}); +exports.default = { getAllTasks, getTaskById, createTask, deleteTaskById, updateTaskById }; //# sourceMappingURL=task.service.js.map \ No newline at end of file diff --git a/dist/resources/tasks/task.service.js.map b/dist/resources/tasks/task.service.js.map index cbb64d1..ce69997 100644 --- a/dist/resources/tasks/task.service.js.map +++ b/dist/resources/tasks/task.service.js.map @@ -1 +1 @@ -{"version":3,"file":"task.service.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.service.ts"],"names":[],"mappings":";AAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAErD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAE5C,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEjD,MAAM,UAAU,GAAG,CACf,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CACxB,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;AAElB,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEvD,MAAM,cAAc,GAAG,CACnB,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAC5B,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,CAAC;AAElB,MAAM,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"task.service.js","sourceRoot":"","sources":["../../../src/resources/tasks/task.service.ts"],"names":[],"mappings":";;;;;AAAA,sFAAgD;AAGhD,MAAM,WAAW,GAAG,GAAqB,EAAE,CAAC,gCAAQ,CAAC,MAAM,EAAE,CAAC;AAE9D,MAAM,WAAW,GAAG,CAAC,EAAU,EAA8B,EAAE,CAAC,gCAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAErF,MAAM,UAAU,GAAG,CAAC,EAChB,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAA0B,EAAmB,EAAE,CAAC,gCAAQ,CAAC,MAAM,CAAC;IACpE,KAAK;IACL,KAAK;IACL,WAAW;IACX,MAAM;IACN,OAAO;IACP,QAAQ;CAAC,CAAC,CAAC;AAEnB,MAAM,cAAc,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,gCAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAE9E,MAAM,cAAc,GAAG,CAAC,EACpB,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EAA0B,EAA+B,EAAE,CAAC,gCAAQ,CAAC,UAAU,CAAC;IACpF,EAAE;IACF,KAAK;IACL,KAAK;IACL,WAAW;IACX,MAAM;IACN,OAAO;IACP,QAAQ;CAAC,CAAC,CAAC;AAEnB,kBAAe,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"} \ No newline at end of file diff --git a/dist/resources/users/user.memory.repository.js b/dist/resources/users/user.memory.repository.js index 3e9a9ee..7ca0e79 100644 --- a/dist/resources/users/user.memory.repository.js +++ b/dist/resources/users/user.memory.repository.js @@ -1,6 +1,7 @@ "use strict"; var _a; -const { v4: uuid } = require('uuid'); +Object.defineProperty(exports, "__esModule", { value: true }); +const uuid_1 = require("uuid"); let users = []; class User { static toResponse(user) { @@ -8,12 +9,13 @@ class User { return { id, name, login }; } } +exports.default = User; _a = User; User.getAll = async () => users; User.getById = async (id) => users.find((user) => user.id === id); User.create = async (name, login, password) => { const newUser = { - id: uuid(), + id: (0, uuid_1.v4)(), name, login, password }; users.push(newUser); @@ -27,24 +29,4 @@ User.updateById = async (id, name, login, password) => { const updatedUser = await getById(id); return updatedUser; }; -// const getAll = async () => users; -// const getById = async (id) => users.find((user) => user.id === id); -// const create = async (name, login, password) => { -// const newUser = { -// id: uuid(), -// name, login, password -// } -// users.push(newUser) -// return newUser; -// }; -// const deleteById = async (id) => { -// users = users.filter((user) => user.id !== id); -// }; -// const updateById = async (id, name, login, password) => { -// users = users.map((user) => user.id === id ? {id, name, login, password} : user); -// const updatedUser = await getById(id); -// return updatedUser; -// }; -// module.exports = { getAll, getById, create, deleteById, updateById }; -module.exports = User; //# sourceMappingURL=user.memory.repository.js.map \ No newline at end of file diff --git a/dist/resources/users/user.memory.repository.js.map b/dist/resources/users/user.memory.repository.js.map index 78ff2b4..dc0568b 100644 --- a/dist/resources/users/user.memory.repository.js.map +++ b/dist/resources/users/user.memory.repository.js.map @@ -1 +1 @@ -{"version":3,"file":"user.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/users/user.memory.repository.ts"],"names":[],"mappings":";;AAAA,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEnC,IAAI,KAAK,GAAU,EAAE,CAAC;AAEtB,MAAM,IAAI;IA0BR,MAAM,CAAC,UAAU,CAAC,IAAI;QACpB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;;;AA1BM,WAAM,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC;AAE3B,YAAO,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAE7D,WAAM,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAC9C,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,IAAI,EAAE;QACV,IAAI,EAAE,KAAK,EAAE,QAAQ;KACtB,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACtD,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAQJ,oCAAoC;AAEpC,sEAAsE;AAEtE,oDAAoD;AACpD,wBAAwB;AACxB,oBAAoB;AACpB,8BAA8B;AAC9B,QAAQ;AACR,0BAA0B;AAC1B,oBAAoB;AACpB,KAAK;AAEL,qCAAqC;AACrC,oDAAoD;AACpD,KAAK;AAEL,4DAA4D;AAC5D,sFAAsF;AACtF,2CAA2C;AAC3C,wBAAwB;AACxB,KAAK;AAEL,wEAAwE;AACxE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC"} \ No newline at end of file +{"version":3,"file":"user.memory.repository.js","sourceRoot":"","sources":["../../../src/resources/users/user.memory.repository.ts"],"names":[],"mappings":";;;AAAA,+BAAkC;AAElC,IAAI,KAAK,GAAU,EAAE,CAAC;AAEtB,MAAqB,IAAI;IA0BvB,MAAM,CAAC,UAAU,CAAC,IAAI;QACpB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;;AA7BH,uBA8BC;;AA3BQ,WAAM,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC;AAE3B,YAAO,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAE7D,WAAM,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAC9C,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,IAAA,SAAI,GAAE;QACV,IAAI,EAAE,KAAK,EAAE,QAAQ;KACtB,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AAEK,eAAU,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACtD,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/resources/users/user.router.js b/dist/resources/users/user.router.js index ebd5e0b..7c22b77 100644 --- a/dist/resources/users/user.router.js +++ b/dist/resources/users/user.router.js @@ -1,50 +1,43 @@ "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); // const User = require('./user.model'); -const usersService = require('./user.service'); -const taskRepo = require('../tasks/task.memory.repository'); +const user_service_1 = __importDefault(require("./user.service")); +const task_memory_repository_1 = __importDefault(require("../tasks/task.memory.repository")); function userRoutes(app, options, done) { app.get('/', async (req, reply) => { - const users = await usersService.getAll(); - reply.send(users.map(usersService.toResponse)); + const users = await user_service_1.default.getAll(); + reply.send(users.map(user_service_1.default.toResponse)); }); app.get('/:id', async (req, reply) => { const { id } = req.params; - const user = await usersService.getById(id); + const user = await user_service_1.default.getById(id); reply.code(200); reply.send(User.toResponse(user)); }); app.post('/', async (req, reply) => { const { name, login, password } = req.body; - const user = await usersService.create(name, login, password); + const user = await user_service_1.default.create(name, login, password); reply.code(201); reply.send(User.toResponse(user)); }); app.delete('/:id', async (req, reply) => { const { id } = req.params; - await usersService.deleteById(id); - taskRepo.updateUserIdToNull(id, null); - // const tasks4DeletedUser = tasks.filter((task) => task.userId === id); - // for await(const task of tasks4DeletedUser) { - // task.userId = null; - // taskService.updateById(task.id, - // task.title, - // task.order, - // task.description, - // task.userId, - // task.boardId, - // task.columnId) - // } + await user_service_1.default.deleteById(id); + task_memory_repository_1.default.updateUserIdToNull(id, null); reply.code(204); reply.send(); }); app.put('/:id', async (req, reply) => { const { id } = req.params; const { name, login, password } = req.body; - const user = await usersService.updateById(id, name, login, password); + const user = await user_service_1.default.updateById(id, name, login, password); reply.code(200); reply.send(User.toResponse(user)); }); done(); } -module.exports = userRoutes; +exports.default = userRoutes; //# sourceMappingURL=user.router.js.map \ No newline at end of file diff --git a/dist/resources/users/user.router.js.map b/dist/resources/users/user.router.js.map index 3876135..8decc60 100644 --- a/dist/resources/users/user.router.js.map +++ b/dist/resources/users/user.router.js.map @@ -1 +1 @@ -{"version":3,"file":"user.router.js","sourceRoot":"","sources":["../../../src/resources/users/user.router.ts"],"names":[],"mappings":";AAAA,wCAAwC;AACxC,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAE5D,SAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI;IAElC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtC,wEAAwE;QACxE,+CAA+C;QAC/C,0BAA0B;QAC1B,uCAAuC;QACvC,sBAAsB;QACtB,sBAAsB;QACtB,4BAA4B;QAC5B,uBAAuB;QACvB,wBAAwB;QACxB,yBAAyB;QACzB,IAAI;QACJ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"user.router.js","sourceRoot":"","sources":["../../../src/resources/users/user.router.ts"],"names":[],"mappings":";;;;;AAEA,wCAAwC;AACxC,kEAA0C;AAC1C,6FAAuD;AAEvD,SAAwB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI;IAEjD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,MAAM,sBAAY,CAAC,MAAM,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAC/C,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,sBAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAC7C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,sBAAY,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAClD,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,sBAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClC,gCAAQ,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAEtC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAmB,EAAE,EAAE;QAC/C,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,sBAAY,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAA;IAEF,IAAI,EAAE,CAAA;AACV,CAAC;AAvCD,6BAuCC"} \ No newline at end of file diff --git a/dist/resources/users/user.service.js b/dist/resources/users/user.service.js index cae4c33..72ab3fc 100644 --- a/dist/resources/users/user.service.js +++ b/dist/resources/users/user.service.js @@ -1,10 +1,14 @@ "use strict"; -const usersRepo = require('./user.memory.repository'); -const getAll = () => usersRepo.getAll(); -const getById = (id) => usersRepo.getById(id); -const create = (name, login, password) => usersRepo.create(name, login, password); -const deleteById = (id) => usersRepo.deleteById(id); -const updateById = (id, name, login, password) => usersRepo.updateById(id, name, login, password); -const toResponse = (user) => usersRepo.toResponse(user); -module.exports = { getAll, getById, create, deleteById, updateById }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const user_memory_repository_1 = __importDefault(require("./user.memory.repository")); +const getAll = () => user_memory_repository_1.default.getAll(); +const getById = (id) => user_memory_repository_1.default.getById(id); +const create = (name, login, password) => user_memory_repository_1.default.create(name, login, password); +const deleteById = (id) => user_memory_repository_1.default.deleteById(id); +const updateById = (id, name, login, password) => user_memory_repository_1.default.updateById(id, name, login, password); +const toResponse = (user) => user_memory_repository_1.default.toResponse(user); +exports.default = { getAll, getById, create, deleteById, updateById }; //# sourceMappingURL=user.service.js.map \ No newline at end of file diff --git a/dist/resources/users/user.service.js.map b/dist/resources/users/user.service.js.map index a2f1a63..dd9ddab 100644 --- a/dist/resources/users/user.service.js.map +++ b/dist/resources/users/user.service.js.map @@ -1 +1 @@ -{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../../src/resources/users/user.service.ts"],"names":[],"mappings":";AAAA,MAAM,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAEtD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AAExC,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE9C,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;AAEjF,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAElG,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAEvD,MAAM,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../../src/resources/users/user.service.ts"],"names":[],"mappings":";;;;;AAAA,sFAAiD;AAEjD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,gCAAS,CAAC,MAAM,EAAE,CAAC;AAExC,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,gCAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE9C,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,gCAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;AAEjF,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,gCAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,gCAAS,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAElG,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,gCAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAEvD,kBAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC"} \ No newline at end of file diff --git a/dist/server.js b/dist/server.js index c3729f0..adee98f 100644 --- a/dist/server.js +++ b/dist/server.js @@ -1,13 +1,17 @@ "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); // migration to ts -const { PORT } = require('./common/config'); -const app = require('./app'); +const config_1 = __importDefault(require("./common/config")); +const app_1 = __importDefault(require("./app")); const start = async () => { try { - await app.listen(PORT); + await app_1.default.listen(config_1.default); } catch (error) { - app.log.error(error); + app_1.default.log.error(error); } }; start(); diff --git a/dist/server.js.map b/dist/server.js.map index 50ff79d..da04c9b 100644 --- a/dist/server.js.map +++ b/dist/server.js.map @@ -1 +1 @@ -{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA,kBAAkB;AAClB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7B,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IACvB,IAAI;QACF,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACxB;IAAC,OAAO,KAAK,EAAE;QACd,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACtB;AACH,CAAC,CAAA;AAED,KAAK,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;AAAA,kBAAkB;AAClB,6DAAmC;AAEnC,gDAA2B;AAE3B,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IACvB,IAAI;QACF,MAAM,aAAM,CAAC,MAAM,CAAC,gBAAI,CAAC,CAAC;KAC3B;IAAC,OAAO,KAAK,EAAE;QACd,aAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACzB;AACH,CAAC,CAAA;AAED,KAAK,EAAE,CAAC"} \ No newline at end of file diff --git a/src/app.ts b/src/app.ts index 7532a14..df7488f 100644 --- a/src/app.ts +++ b/src/app.ts @@ -6,14 +6,6 @@ import taskRouter from './resources/tasks/task.router'; const app = fastify({ logger: true}); -app.register(require('fastify-swagger'), { - exposeRoute: true, - routePrefix: '/doc', - swagger: { - info: {title: 'task4 Rest-server'} - } -}) - app.register(userRouter, {prefix: '/users'}); app.register(boardRouter, {prefix: '/boards'}); app.register(taskRouter, {prefix: '/boards/:id/tasks'}); diff --git a/src/resources/tasks/task.interface.ts b/src/resources/tasks/task.interface.ts index ba20ae6..eccb355 100644 --- a/src/resources/tasks/task.interface.ts +++ b/src/resources/tasks/task.interface.ts @@ -1,4 +1,4 @@ -export default interface ITask { +export interface ITask { id: string, title: string, order: string, diff --git a/src/resources/tasks/task.memory.repository.ts b/src/resources/tasks/task.memory.repository.ts index 30eac05..27eb400 100644 --- a/src/resources/tasks/task.memory.repository.ts +++ b/src/resources/tasks/task.memory.repository.ts @@ -1,5 +1,6 @@ import {v4 as uuid} from 'uuid'; -import ITask from './task.interface'; +import { ITask } from './task.interface'; + let tasks: ITask[] = []; export default class Task { diff --git a/src/resources/tasks/task.router.ts b/src/resources/tasks/task.router.ts index ee309b2..e0ba699 100644 --- a/src/resources/tasks/task.router.ts +++ b/src/resources/tasks/task.router.ts @@ -1,14 +1,14 @@ -import { FastifyReply } from "fastify"; +import { FastifyInstance, FastifyReply, FastifyRequest } from "fastify"; import taskService from './task.service'; -export default function taskRoutes(app, options, done) { +export default async function taskRoutes(app: FastifyInstance, options, done) { - app.get('/', async (req, reply: FastifyReply) => { + app.get('/', async (req: FastifyRequest, reply: FastifyReply) => { const tasks = await taskService.getAllTasks(); reply.send(tasks); }) - app.get('/:id', async (req, reply: FastifyReply) => { + app.get('/:id', async (req: FastifyRequest, reply: FastifyReply) => { const { id } = req.params; const task = await taskService.getTaskById(id); if(task) { @@ -20,7 +20,7 @@ export default function taskRoutes(app, options, done) { } }) - app.post('/', async (req, reply: FastifyReply) => { + app.post('/', async (req: FastifyRequest, reply: FastifyReply) => { const { title, order, @@ -38,14 +38,14 @@ export default function taskRoutes(app, options, done) { reply.send(task); }) - app.delete('/:taskid', async (req, reply: FastifyReply) => { + app.delete('/:taskid', async (req: FastifyRequest, reply: FastifyReply) => { const { taskid } = req.params; await taskService.deleteTaskById(taskid); reply.code(204); reply.send(); }) - app.put('/:taskid', async (req, reply: FastifyReply) => { + app.put('/:taskid', async (req: FastifyRequest, reply: FastifyReply) => { const { taskid } = req.params; const { title, order, diff --git a/src/resources/tasks/task.service.ts b/src/resources/tasks/task.service.ts index 5b1383c..5a2833b 100644 --- a/src/resources/tasks/task.service.ts +++ b/src/resources/tasks/task.service.ts @@ -1,5 +1,6 @@ import TaskRepo from './task.memory.repository'; -import ITask from './task.interface'; +import { ITask } from './task.interface'; + const getAllTasks = (): Promise => TaskRepo.getAll(); const getTaskById = (id: string): Promise => TaskRepo.getById(id); diff --git a/tsconfig.json b/tsconfig.json index 048f8b0..4408fe5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -37,7 +37,7 @@ // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */