From e88d71fc44bc0a5b125bb4ebe0df9f05768ab253 Mon Sep 17 00:00:00 2001 From: Denis Anikin Date: Tue, 17 Oct 2023 03:58:54 +0300 Subject: [PATCH] Rewritten backend apis in typescript with some tmp things... --- .gitignore | 1 + back/.dockerignore | 1 + back/Dockerfile | 9 +- back/Inter-Regular.ttf | Bin 0 -> 303504 bytes back/index.ts | 32 + back/package-lock.json | 1615 ++++++------------------------- back/package.json | 17 +- back/server.js | 86 -- back/src/config.ts | 45 + back/src/githubReposView.ts | 58 ++ back/src/otherViews.ts | 46 + back/src/socialMediaView.ts.tmp | 97 ++ back/tsconfig.json | 109 +++ docker-compose.yml | 3 + 14 files changed, 708 insertions(+), 1411 deletions(-) create mode 100644 back/Inter-Regular.ttf create mode 100755 back/index.ts delete mode 100755 back/server.js create mode 100644 back/src/config.ts create mode 100644 back/src/githubReposView.ts create mode 100644 back/src/otherViews.ts create mode 100644 back/src/socialMediaView.ts.tmp create mode 100644 back/tsconfig.json diff --git a/.gitignore b/.gitignore index 04843bf..bd667da 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ report.* store.json .env build +back/*.lmdb* diff --git a/back/.dockerignore b/back/.dockerignore index 713d500..5a00c13 100644 --- a/back/.dockerignore +++ b/back/.dockerignore @@ -1,2 +1,3 @@ node_modules/ .env +.DS_Store diff --git a/back/Dockerfile b/back/Dockerfile index d37f330..5a5e338 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -1,7 +1,14 @@ -FROM node:20.1.0-alpine3.17 +FROM node:20.8.0-slim WORKDIR /srv/www COPY . . +# RUN apt-get update -y +# RUN apt-get install -y build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev RUN npm i +RUN npm run build-prod +RUN mv build/ ../ +RUN rm -rf * +RUN mv ../build/ . +RUN rm -rf src/ USER node CMD ["npm", "start"] diff --git a/back/Inter-Regular.ttf b/back/Inter-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2c164bb2df58ffff8e4fdb6ae96a8654ebc10b4e GIT binary patch literal 303504 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 { + console.log(`Received signal to terminate: ${signal}`); + await myFastifyApp.close(); + process.exit(); +}; + +// api routes +myFastifyApp.get("/api/githubrepos/", fetchGitlabRepos); +// myFastifyApp.get("/rpc/social-media-image/", makeSocialMediaImage); +// myFastifyApp.get("/rpc/read-counter/", storeReadCount); +myFastifyApp.get("/rpc/redirect/", redirectSomewhere); + +// and other tech things +myFastifyApp.listen( + { port: config.APP_PORT, address: "0.0.0.0" } as any, + (err, address) => { + if (err) throw err; + myFastifyApp.log.info(`server listening on ${address}`); + } +); + +process.on("SIGINT", closeGracefully); +process.on("SIGTERM", closeGracefully); diff --git a/back/package-lock.json b/back/package-lock.json index e4f3025..f26320e 100644 --- a/back/package-lock.json +++ b/back/package-lock.json @@ -1,7 +1,7 @@ { "name": "back", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -9,15 +9,20 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "fastify": "^4.13.0", - "node-cache": "^5.1.2", - "octonode": "^0.10.2" + "@octokit/rest": "^19.0.11", + "fastify": "^4.17.0", + "lru-cache": "^9.1.2", + "node-cache": "^5.1.2" + }, + "devDependencies": { + "@types/node": "^20.2.5", + "typescript": "^5.1.3" } }, "node_modules/@fastify/ajv-compiler": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.3.1.tgz", - "integrity": "sha512-IRnids8lblQ8e1i8h4JLyfJmebXE+ohcj8x8X/+Ew6ZB4H0Ui05z5YL6q5FOcl0zItVpu4adRzeyVNNUwmduIg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", + "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", "dependencies": { "ajv": "^8.11.0", "ajv-formats": "^2.1.1", @@ -25,9 +30,9 @@ } }, "node_modules/@fastify/ajv-compiler/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -45,9 +50,9 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/@fastify/deepmerge": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz", - "integrity": "sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", + "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==" }, "node_modules/@fastify/error": { "version": "3.0.0", @@ -55,13 +60,172 @@ "integrity": "sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==" }, "node_modules/@fastify/fast-json-stringify-compiler": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.1.0.tgz", - "integrity": "sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", + "dependencies": { + "fast-json-stringify": "^5.7.0" + } + }, + "node_modules/@octokit/auth-token": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", + "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", + "dependencies": { + "@octokit/types": "^9.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz", + "integrity": "sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw==", + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/endpoint": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", + "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "dependencies": { + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/graphql": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", + "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.2.0.tgz", + "integrity": "sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ==" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", + "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", + "dependencies": { + "@octokit/tsconfig": "^1.0.2", + "@octokit/types": "^9.2.3" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.1.2.tgz", + "integrity": "sha512-R0oJ7j6f/AdqPLtB9qRXLO+wjI9pctUn8Ka8UGfGaFCcCv3Otx14CshQ89K4E88pmyYZS8p0rNTiprML/81jig==", + "dependencies": { + "@octokit/types": "^9.2.3", + "deprecation": "^2.3.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.5.tgz", + "integrity": "sha512-z83E8UIlPNaJUsXpjD8E0V5o/5f+vJJNbNcBwVZsX3/vC650U41cOkTLjq4PKk9BYonQGOnx7N17gvLyNjgGcQ==", + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/request-error": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "dependencies": { + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/rest": { + "version": "19.0.11", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.11.tgz", + "integrity": "sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw==", + "dependencies": { + "@octokit/core": "^4.2.1", + "@octokit/plugin-paginate-rest": "^6.1.2", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^7.1.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/tsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", + "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==" + }, + "node_modules/@octokit/types": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.2.3.tgz", + "integrity": "sha512-MMeLdHyFIALioycq+LFcA71v0S2xpQUX2cw6pPbHQjaibcHYwLnmK/kMZaWuGfGfjBJZ3wRUq+dOaWsvrPJVvA==", "dependencies": { - "fast-json-stringify": "^5.0.0" + "@octokit/openapi-types": "^17.2.0" } }, + "node_modules/@types/node": { + "version": "20.2.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", + "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==", + "dev": true + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -78,21 +242,6 @@ "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", @@ -110,9 +259,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -134,35 +283,6 @@ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" }, - "node_modules/array-uniq": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", - "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -181,19 +301,6 @@ "fastq": "^1.6.1" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -213,18 +320,10 @@ } ] }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "node_modules/buffer": { "version": "6.0.3", @@ -249,11 +348,6 @@ "ieee754": "^1.2.1" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -262,17 +356,6 @@ "node": ">=0.8" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -281,22 +364,6 @@ "node": ">= 0.6" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -313,30 +380,10 @@ } } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "node_modules/event-target-shim": { "version": "5.0.1", @@ -354,19 +401,6 @@ "node": ">=0.8.x" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-content-type-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz", @@ -382,15 +416,10 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "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==" - }, "node_modules/fast-json-stringify": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.4.0.tgz", - "integrity": "sha512-PIzon53oX/zEGLrGbu4DpfNcYiV4K4rk+JsVrawRPO/G8cNBEMZ3KlIk2BCGqN+m1KCCA4zt5E7Hh3GG9ojRVA==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.7.0.tgz", + "integrity": "sha512-sBVPTgnAZseLu1Qgj6lUbQ0HfjFhZWXAmpZ5AaSGkyLh5gAXBga/uPJjQPHpDFjC9adWIpdOcCLSDTgrZ7snoQ==", "dependencies": { "@fastify/deepmerge": "^1.0.0", "ajv": "^8.10.0", @@ -401,9 +430,9 @@ } }, "node_modules/fast-json-stringify/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -421,9 +450,9 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/fast-querystring": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz", - "integrity": "sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.1.tgz", + "integrity": "sha512-qR2r+e3HvhEFmpdHMv//U8FnFlnYjaC6QKDuaXALDkw2kvHO8WDjxH+f/rHGR4Me4pnk8p9JAkRNTjYHAKRn2Q==", "dependencies": { "fast-decode-uri-component": "^1.0.1" } @@ -437,22 +466,23 @@ } }, "node_modules/fast-uri": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz", - "integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.2.0.tgz", + "integrity": "sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==" }, "node_modules/fastify": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.13.0.tgz", - "integrity": "sha512-p9ibdFWH3pZ7KPgmfHPKGUy2W4EWU2TEpwlcu58w4CwGyU3ARFfh2kwq6zpZ5W2ZGVbufi4tZbqHIHAlX/9Z/A==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.17.0.tgz", + "integrity": "sha512-tzuY1tgWJo2Y6qEKwmLhFvACUmr68Io2pqP/sDKU71KRM6A6R3DrCDqLGqANbeLZcKUfdfY58ut35CGqemcTgg==", "dependencies": { - "@fastify/ajv-compiler": "^3.3.1", + "@fastify/ajv-compiler": "^3.5.0", "@fastify/error": "^3.0.0", - "@fastify/fast-json-stringify-compiler": "^4.1.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", "abstract-logging": "^2.0.1", "avvio": "^8.2.0", "fast-content-type-parse": "^1.0.0", - "find-my-way": "^7.3.0", + "fast-json-stringify": "^5.7.0", + "find-my-way": "^7.6.0", "light-my-request": "^5.6.1", "pino": "^8.5.0", "process-warning": "^2.0.0", @@ -460,7 +490,7 @@ "rfdc": "^1.3.0", "secure-json-parse": "^2.5.0", "semver": "^7.3.7", - "tiny-lru": "^10.0.0" + "tiny-lru": "^11.0.1" } }, "node_modules/fastq": { @@ -472,9 +502,9 @@ } }, "node_modules/find-my-way": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.3.1.tgz", - "integrity": "sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.6.2.tgz", + "integrity": "sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", @@ -484,27 +514,6 @@ "node": ">=14" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -513,49 +522,6 @@ "node": ">= 0.6" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -583,48 +549,12 @@ "node": ">= 0.10" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "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==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "engines": { - "node": ">=0.6.0" + "node": ">=0.10.0" } }, "node_modules/light-my-request": { @@ -638,33 +568,11 @@ } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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==", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" + "node": "14 || >=16.14" } }, "node_modules/ms": { @@ -683,26 +591,23 @@ "node": ">= 8.0.0" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/octonode": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/octonode/-/octonode-0.10.2.tgz", - "integrity": "sha512-lxKJxAvrw3BuM0Wu3A/TRyFkYxMFWbMm8p7fDO3EoG9KDgOy53d91bjlGR1mmNk1EoF5LjGBx7BmIB+PfmMKLQ==", + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", "dependencies": { - "bluebird": "^3.5.0", - "deep-extend": "^0.6.0", - "randomstring": "^1.1.5", - "request": "^2.72.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">0.4.11" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/on-exit-leak-free": { @@ -710,10 +615,13 @@ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } }, "node_modules/pino": { "version": "8.7.0", @@ -775,11 +683,6 @@ "node": ">= 0.10" } }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -788,39 +691,11 @@ "node": ">=6" } }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, "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/randombytes": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", - "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=" - }, - "node_modules/randomstring": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.1.tgz", - "integrity": "sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A==", - "dependencies": { - "array-uniq": "1.0.2", - "randombytes": "2.0.3" - }, - "bin": { - "randomstring": "bin/randomstring" - }, - "engines": { - "node": "*" - } - }, "node_modules/readable-stream": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.2.0.tgz", @@ -843,37 +718,6 @@ "node": ">= 12.13.0" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -904,25 +748,6 @@ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" }, - "node_modules/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==", - "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/safe-regex2": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", @@ -939,20 +764,15 @@ "node": ">=10" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "node_modules/secure-json-parse": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.5.0.tgz", "integrity": "sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==" }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -963,6 +783,17 @@ "node": ">=10" } }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/set-cookie-parser": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", @@ -984,30 +815,6 @@ "node": ">= 10.x" } }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/thread-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.2.0.tgz", @@ -1017,40 +824,35 @@ } }, "node_modules/tiny-lru": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-10.0.1.tgz", - "integrity": "sha512-Vst+6kEsWvb17Zpz14sRJV/f8bUWKhqm6Dc+v08iShmIJ/WxqWytHzCTd6m88pS33rE2zpX34TRmOpAJPloNCA==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.0.1.tgz", + "integrity": "sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==", "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" + "node_modules/typescript": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": "*" + "node": ">=14.17" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" }, "node_modules/uri-js": { "version": "4.4.1", @@ -1060,856 +862,29 @@ "punycode": "^2.1.0" } }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } - }, - "dependencies": { - "@fastify/ajv-compiler": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.3.1.tgz", - "integrity": "sha512-IRnids8lblQ8e1i8h4JLyfJmebXE+ohcj8x8X/+Ew6ZB4H0Ui05z5YL6q5FOcl0zItVpu4adRzeyVNNUwmduIg==", - "requires": { - "ajv": "^8.11.0", - "ajv-formats": "^2.1.1", - "fast-uri": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "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==" - } - } - }, - "@fastify/deepmerge": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz", - "integrity": "sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==" - }, - "@fastify/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz", - "integrity": "sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==" - }, - "@fastify/fast-json-stringify-compiler": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.1.0.tgz", - "integrity": "sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==", - "requires": { - "fast-json-stringify": "^5.0.0" - } - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "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==" - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "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==" - } - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" - }, - "array-uniq": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", - "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0=" - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "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": "8.2.0", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz", - "integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==", - "requires": { - "archy": "^1.0.0", - "debug": "^4.0.0", - "fastq": "^1.6.1" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-content-type-parse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz", - "integrity": "sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==" - }, - "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==" - }, - "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==" - }, - "fast-json-stringify": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.4.0.tgz", - "integrity": "sha512-PIzon53oX/zEGLrGbu4DpfNcYiV4K4rk+JsVrawRPO/G8cNBEMZ3KlIk2BCGqN+m1KCCA4zt5E7Hh3GG9ojRVA==", - "requires": { - "@fastify/deepmerge": "^1.0.0", - "ajv": "^8.10.0", - "ajv-formats": "^2.1.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "rfdc": "^1.2.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "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==" - } - } - }, - "fast-querystring": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz", - "integrity": "sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==", - "requires": { - "fast-decode-uri-component": "^1.0.1" - } - }, - "fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==" - }, - "fast-uri": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz", - "integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==" - }, - "fastify": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.13.0.tgz", - "integrity": "sha512-p9ibdFWH3pZ7KPgmfHPKGUy2W4EWU2TEpwlcu58w4CwGyU3ARFfh2kwq6zpZ5W2ZGVbufi4tZbqHIHAlX/9Z/A==", - "requires": { - "@fastify/ajv-compiler": "^3.3.1", - "@fastify/error": "^3.0.0", - "@fastify/fast-json-stringify-compiler": "^4.1.0", - "abstract-logging": "^2.0.1", - "avvio": "^8.2.0", - "fast-content-type-parse": "^1.0.0", - "find-my-way": "^7.3.0", - "light-my-request": "^5.6.1", - "pino": "^8.5.0", - "process-warning": "^2.0.0", - "proxy-addr": "^2.0.7", - "rfdc": "^1.3.0", - "secure-json-parse": "^2.5.0", - "semver": "^7.3.7", - "tiny-lru": "^10.0.0" - } - }, - "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" - } - }, - "find-my-way": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.3.1.tgz", - "integrity": "sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==", - "requires": { - "fast-deep-equal": "^3.1.3", - "fast-querystring": "^1.0.0", - "safe-regex2": "^2.0.0" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "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==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "light-my-request": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.6.1.tgz", - "integrity": "sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==", - "requires": { - "cookie": "^0.5.0", - "process-warning": "^2.0.0", - "set-cookie-parser": "^2.4.1" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - }, - "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==", - "requires": { - "mime-db": "1.51.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node-cache": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", - "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", - "requires": { - "clone": "2.x" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "octonode": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/octonode/-/octonode-0.10.2.tgz", - "integrity": "sha512-lxKJxAvrw3BuM0Wu3A/TRyFkYxMFWbMm8p7fDO3EoG9KDgOy53d91bjlGR1mmNk1EoF5LjGBx7BmIB+PfmMKLQ==", - "requires": { - "bluebird": "^3.5.0", - "deep-extend": "^0.6.0", - "randomstring": "^1.1.5", - "request": "^2.72.0" - } - }, - "on-exit-leak-free": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", - "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pino": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.7.0.tgz", - "integrity": "sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==", - "requires": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", - "thread-stream": "^2.0.0" - } - }, - "pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", - "requires": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, - "pino-std-serializers": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz", - "integrity": "sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "process-warning": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", - "integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==" - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - }, - "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==" - }, - "randombytes": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", - "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=" - }, - "randomstring": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.1.tgz", - "integrity": "sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A==", - "requires": { - "array-uniq": "1.0.2", - "randombytes": "2.0.3" - } - }, - "readable-stream": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.2.0.tgz", - "integrity": "sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - } - }, - "real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==" - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "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==" - }, - "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==" - }, - "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==" - }, - "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" - } - }, - "safe-stable-stringify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", - "integrity": "sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "secure-json-parse": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.5.0.tgz", - "integrity": "sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==" - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==" - }, - "sonic-boom": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.0.tgz", - "integrity": "sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==", - "requires": { - "atomic-sleep": "^1.0.0" - } - }, - "split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "thread-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.2.0.tgz", - "integrity": "sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==", - "requires": { - "real-require": "^0.2.0" - } - }, - "tiny-lru": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-10.0.1.tgz", - "integrity": "sha512-Vst+6kEsWvb17Zpz14sRJV/f8bUWKhqm6Dc+v08iShmIJ/WxqWytHzCTd6m88pS33rE2zpX34TRmOpAJPloNCA==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } } } diff --git a/back/package.json b/back/package.json index 7389921..b8573de 100644 --- a/back/package.json +++ b/back/package.json @@ -2,16 +2,25 @@ "name": "back", "version": "1.0.0", "description": "", - "main": "server.js", + "main": "index.ts", + "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "node server.js" + "build": "tsc -p tsconfig.json && cp *.ttf build/", + "build-prod": "npm run build && cp package.json build/", + "start": "node build/index.js", + "dev": "npm run build && DEBUG=1 npm run start" }, "author": "", "license": "ISC", "dependencies": { + "@octokit/rest": "^19.0.11", "fastify": "^4.17.0", - "node-cache": "^5.1.2", - "octonode": "^0.10.2" + "lru-cache": "^9.1.2", + "node-cache": "^5.1.2" + }, + "devDependencies": { + "@types/node": "^20.2.5", + "typescript": "^5.1.3" } } diff --git a/back/server.js b/back/server.js deleted file mode 100755 index d6cac73..0000000 --- a/back/server.js +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env nodejs -// dont need to place it in env file - it will be bad decision for me -const IS_DEBUG = process.env.DEBUG ? true : false; -const CACHE_TIME = 3600 * 12; -const HOW_MANY_REPOS = 100; -const APP_PORT = process.env.APP_PORT ? process.env.APP_PORT : 8080; -const PAYLOAD_CACHE_KEY = "githubpayload"; -const NECESSARY_FIELDS = [ - "name", - "html_url", - "description", - "language", - "forks_count", - "stargazers_count", -]; -const SKIP_REPOS = [ - "django-elfinderfs", - "django-haystack", - "django-media-manager", - "django-search-hide", - "django-xflatpages", - "django-suit-sortable", - "ionic-conference-app", -]; -const githubClient = require("octonode").client(process.env.GIT_API_KEY); -const memoryCacheClient = new (require("node-cache"))({ stdTTL: CACHE_TIME }); -const fastify = require("fastify")({ logger: true }); -const closeGracefully = async (signal) => { - console.log(`Received signal to terminate: ${signal}`); - await fastify.close(); - process.exit(); -}; - -fastify.get("/api/githubrepos/", async (_, serverReply) => { - const cachedResult = IS_DEBUG - ? undefined - : memoryCacheClient.get(PAYLOAD_CACHE_KEY); - serverReply.type("application/json"); - if (IS_DEBUG) { - serverReply.header("Access-Control-Allow-Origin", "*"); - } - if (cachedResult !== undefined) { - serverReply.code(200).send(cachedResult); - } else { - githubClient.get( - "/users/xfenix/repos", - { per_page: HOW_MANY_REPOS, order: "desc" }, - (error, status, originalPayload, _) => { - if (!error && status === 200) { - const returnResult = originalPayload - .sort((a, b) => b.stargazers_count - a.stargazers_count) - .filter((oneItem) => !SKIP_REPOS.includes(oneItem.name)) - .map((oldItem) => { - const newItem = {}; - for (let oneField of NECESSARY_FIELDS) { - newItem[oneField] = oldItem[oneField]; - } - return newItem; - }); - memoryCacheClient.set(PAYLOAD_CACHE_KEY, returnResult); - serverReply.code(200).send(returnResult); - } else { - serverReply.code(500).send({ error: error }); - } - } - ); - } - await serverReply; -}); - -fastify.get("/rpc/redirect/", async (request, serverReply) => { - if (request.query.where) { - serverReply.code(301).redirect(request.query.where); - } else { - serverReply.code(400).send("Not provided place where to redirect"); - } - await serverReply; -}); - -fastify.listen(APP_PORT, "0.0.0.0", (err, address) => { - if (err) throw err; - fastify.log.info(`server listening on ${address}`); -}); - -process.on("SIGINT", closeGracefully); -process.on("SIGTERM", closeGracefully); diff --git a/back/src/config.ts b/back/src/config.ts new file mode 100644 index 0000000..2c35695 --- /dev/null +++ b/back/src/config.ts @@ -0,0 +1,45 @@ +import { fileURLToPath } from "url"; +import { dirname } from "path"; + +// common +export const CURRENT_DIR = dirname(fileURLToPath(import.meta.url)); +export const IS_DEBUG = process.env.DEBUG ? true : false; +export const APP_PORT = process.env.APP_PORT ? process.env.APP_PORT : 8080; +export const MY_GITHUB_USERNAME = "xfenix"; +export const READS_STORE_PATH = process.env.DEBUG + ? "./reads.lmdb" + : "/var/lib/xfenix.ru/reads.lmdb"; +// 1978 bytes maximum key size in lmdb, so in utf8 at max 494 symbols (max for utf8) +// probably, we will be safe +export const MAX_URL_FOR_READS_LENGTH = 200; +export const MIN_URL_FOR_READS_LENGTH = 20; + +// github things +export const CACHE_TIME = 3600 * 12; +export const HOW_MANY_REPOS = 100; +export const PAYLOAD_CACHE_KEY = "githubpayload2"; +export const SKIP_REPOS = [ + "django-elfinderfs", + "django-haystack", + "django-media-manager", + "django-search-hide", + "django-xflatpages", + "django-suit-sortable", + "ionic-conference-app", +]; + +// social media things +export const FONT_FILE = CURRENT_DIR + "/../Inter-Regular.ttf"; +export const CANVAS_WIDTH = 1200; +export const CANVAS_HEIGHT = 630; +export const TEXT_COLOR = "#ffffff"; +export const BACKGROUND_COLOR1 = "#7000d1"; +export const BACKGROUND_COLOR2 = "#007a33"; +export const MEDIA_PADDING = 30; +export const FONT_SIZE = 60; +export const LINE_HEIGHT = 1.3; +export const MAX_TEXT_LENGTH = 140; +export const IMAGE_MIME = "image/png"; +export const LRU_SIZE = 100; +export const SITE_NAME = "xfenix.ru"; +export const SITE_NAME_FONT_SIZE = 30; diff --git a/back/src/githubReposView.ts b/back/src/githubReposView.ts new file mode 100644 index 0000000..027d238 --- /dev/null +++ b/back/src/githubReposView.ts @@ -0,0 +1,58 @@ +import { FastifyReply, FastifyRequest } from "fastify"; +import { Octokit } from "@octokit/rest"; +import NodeCache from "node-cache"; +import * as config from "./config.js"; + +const githubClient = new Octokit({ + auth: process.env.GIT_API_KEY, +}); +const memoryCacheClient = new NodeCache({ stdTTL: config.CACHE_TIME }); + +export default async function fetchGitlabRepos( + _: FastifyRequest, + serverReply: FastifyReply +) { + const cachedResult = config.IS_DEBUG + ? undefined + : memoryCacheClient.get(config.PAYLOAD_CACHE_KEY); + serverReply.type("application/json"); + if (config.IS_DEBUG) { + serverReply.header("Access-Control-Allow-Origin", "*"); + } + if (cachedResult !== undefined) { + serverReply.code(200).send(cachedResult); + } else { + const rawReposResponse = await githubClient.rest.repos.listForUser({ + username: config.MY_GITHUB_USERNAME, + per_page: config.HOW_MANY_REPOS, + direction: "desc", + }); + const preparedResult = rawReposResponse.data + .filter((oneItem) => !config.SKIP_REPOS.includes(oneItem.name)) + .map( + ({ + name, + html_url, + description, + language, + forks_count, + stargazers_count, + ..._ + }) => ({ + name, + html_url, + description, + language, + forks_count, + stargazers_count, + }) + ) + .sort( + (oneRepo, secondRepo) => + (secondRepo.stargazers_count ?? 0) - (oneRepo.stargazers_count ?? 0) + ); + memoryCacheClient.set(config.PAYLOAD_CACHE_KEY, preparedResult); + serverReply.code(200).send(preparedResult); + } + await serverReply; +} diff --git a/back/src/otherViews.ts b/back/src/otherViews.ts new file mode 100644 index 0000000..93ea34f --- /dev/null +++ b/back/src/otherViews.ts @@ -0,0 +1,46 @@ +import { FastifyReply, FastifyRequest } from "fastify"; +// import { open as openLmdb } from "lmdb"; +// import * as config from "./config.js"; + +type RedirectRequest = FastifyRequest<{ + Querystring: { where: string }; +}>; +// type StoreRequest = FastifyRequest<{ +// Querystring: { fullpath: string }; +// }>; + +// const lmdbHandler = openLmdb(config.READS_STORE_PATH, {}); + +// export async function storeReadCount( +// request: StoreRequest, +// serverReply: FastifyReply +// ) { +// if ( +// !request.query.fullpath || +// !request.query.fullpath.startsWith("/") || +// request.query.fullpath.length < config.MIN_URL_FOR_READS_LENGTH +// ) { +// await serverReply.code(400).send("Not provided proper fullpath"); +// } +// const preparedPath = request.query.fullpath +// .substring(0, config.MAX_URL_FOR_READS_LENGTH) +// .trim(); +// const previousCountRaw = parseInt(await lmdbHandler.get(preparedPath), 10); +// const newCountValue = (isNaN(previousCountRaw) ? 0 : previousCountRaw) + 1; +// await lmdbHandler.put(preparedPath, newCountValue); +// serverReply.code(200).send({ count: newCountValue }); +// await serverReply; +// } + +export async function redirectSomewhere( + request: RedirectRequest, + serverReply: FastifyReply +) { + const preparedWhere = request.query.where.trim(); + if (preparedWhere) { + serverReply.code(301).redirect(preparedWhere); + } else { + serverReply.code(400).send("Not provided place where to redirect"); + } + await serverReply; +} diff --git a/back/src/socialMediaView.ts.tmp b/back/src/socialMediaView.ts.tmp new file mode 100644 index 0000000..3dbe79e --- /dev/null +++ b/back/src/socialMediaView.ts.tmp @@ -0,0 +1,97 @@ +import { FastifyReply, FastifyRequest } from "fastify"; +import { createCanvas, registerFont } from "canvas"; +import { LRUCache } from "lru-cache"; +import * as config from "./config.js"; + +const COMMON_FONT_NAME = "MyCustomFont"; +const imageCache = new LRUCache({ max: config.LRU_SIZE }); + +registerFont(config.FONT_FILE, { family: COMMON_FONT_NAME }); + +export default async function makeSocialMediaImage( + request: FastifyRequest<{ + Querystring: { articleTitle: string }; + }>, + reply: FastifyReply +) { + const articleTitle = + request.query.articleTitle.substring(0, config.MAX_TEXT_LENGTH) + + (request.query.articleTitle.length > config.MAX_TEXT_LENGTH ? "..." : ""); + + // Check if the image is already in the cache + if (imageCache.has(articleTitle)) { + const cachedImage = imageCache.get(articleTitle); + reply.header("Content-Type", config.IMAGE_MIME); + reply.send(cachedImage); + return; + } + + const canvasApi = createCanvas(config.CANVAS_WIDTH, config.CANVAS_HEIGHT); + const canvasContext = canvasApi.getContext("2d"); + + // Fill background with gradient + const readyGradient = canvasContext.createLinearGradient( + 0, + 0, + 0, + config.CANVAS_HEIGHT + ); + readyGradient.addColorStop(0, config.BACKGROUND_COLOR1); + readyGradient.addColorStop(1, config.BACKGROUND_COLOR2); + canvasContext.fillStyle = readyGradient; + canvasContext.fillRect(0, 0, config.CANVAS_WIDTH, config.CANVAS_HEIGHT); + + // Draw site name + canvasContext.fillStyle = config.TEXT_COLOR; + canvasContext.font = `${config.SITE_NAME_FONT_SIZE}px ${COMMON_FONT_NAME}`; + canvasContext.textBaseline = "top"; + canvasContext.fillText( + config.SITE_NAME, + config.MEDIA_PADDING, + config.MEDIA_PADDING + ); + + // Draw article title + canvasContext.fillStyle = config.TEXT_COLOR; + canvasContext.font = `${config.FONT_SIZE}px ${COMMON_FONT_NAME}`; + canvasContext.textBaseline = "bottom"; + + // Wrap text into multiple lines + const maxTextWidth = config.CANVAS_WIDTH - 2 * config.MEDIA_PADDING; + const lines = []; + let currentLine = ""; + articleTitle.split(" ").forEach((word: string) => { + const testLine = currentLine + word + " "; + const testWidth = canvasContext.measureText(testLine).width; + if (testWidth > maxTextWidth) { + lines.push(currentLine); + currentLine = word + " "; + } else { + currentLine = testLine; + } + }); + lines.push(currentLine); + + // Calculate the vertical position for the text + const textY = + config.CANVAS_HEIGHT - + config.MEDIA_PADDING - + lines.length * config.FONT_SIZE * config.LINE_HEIGHT; + + // Draw each line of the text + lines.forEach((line, index) => + canvasContext.fillText( + line, + config.MEDIA_PADDING, + textY + index * config.FONT_SIZE * config.LINE_HEIGHT + ) + ); + + // Convert canvas to PNG buffer + const buffer = canvasApi.toBuffer(config.IMAGE_MIME); + + imageCache.set(articleTitle, buffer); + + reply.header("Content-Type", config.IMAGE_MIME); + reply.send(buffer); +} diff --git a/back/tsconfig.json b/back/tsconfig.json new file mode 100644 index 0000000..cb96af3 --- /dev/null +++ b/back/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "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": "ESNext", /* 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 legacy experimental 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. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "nodenext", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* 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. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "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. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "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": "./build/", /* 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. */ + // "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. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "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' methods 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, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when 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, /* Add 'undefined' to a type when accessed using an index. */ + // "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 /* Skip type checking all .d.ts files. */ + } +} diff --git a/docker-compose.yml b/docker-compose.yml index c60abb7..df7bcde 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,7 +22,10 @@ services: back: image: xfenix/xfenix-ru-back:latest env_file: .env + volumes: + - /srv/www/xfenix-v2.ru/:/var/lib/xfenix.ru deploy: + replicas: 2 restart_policy: condition: on-failure max_attempts: 5