From 08470ba820d870a45202cdb124e555eab8251937 Mon Sep 17 00:00:00 2001 From: cupcakearmy Date: Sun, 29 May 2022 00:09:22 +0200 Subject: [PATCH] remove caniuse integration in favor of headers --- package.json | 29 +- pnpm-lock.yaml | 828 +++++++++++++++++++------------------- src/controllers/image.ts | 13 +- src/fastify/middleware.ts | 6 +- src/index.ts | 1 - src/utils/caniuse.ts | 71 ---- 6 files changed, 436 insertions(+), 512 deletions(-) delete mode 100644 src/utils/caniuse.ts diff --git a/package.json b/package.json index 23adb53..36044a0 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ }, "engines": { "node": "16", + "pnpm": ">=6", "yarn": "plase-use-pnpm", "npm": "plase-use-pnpm" }, @@ -19,31 +20,29 @@ "@types/convict": "^6.1.1", "@types/flat": "^5.0.2", "@types/js-yaml": "^4.0.5", - "@types/minio": "^7.0.12", + "@types/minio": "^7.0.13", "@types/ms": "^0.7.31", - "@types/node": "^16.11.22", + "@types/node": "^16.11.36", "@types/sharp": "^0.29.5", - "ts-node-dev": "^1.1.8", - "typescript": "^4.5.5" + "ts-node-dev": "^2.0.0", + "typescript": "^4.7.2" }, "dependencies": { - "@google-cloud/storage": "^5.18.1", - "caniuse-db": "^1.0.30001307", + "@fastify/caching": "^7.0.0", + "@fastify/compress": "^5.0.0", + "@fastify/cors": "^7.0.0", + "@google-cloud/storage": "^5.20.5", "class-validator": "^0.13.2", - "convict": "^6.2.1", + "convict": "^6.2.3", "convict-format-with-validator": "^6.2.0", - "device-detector-js": "^3.0.1", "fast-crc32c": "^2.0.0", - "fastify": "^3.27.1", - "fastify-caching": "^6.2.0", - "fastify-compress": "^3.7.0", - "fastify-cors": "^6.0.2", + "fastify": "^3.29.0", "flat": "^5.0.2", "js-yaml": "^4.1.0", - "minio": "^7.0.26", + "minio": "^7.0.28", "ms": "^2.1.3", - "pino-pretty": "^7.5.1", + "pino-pretty": "^7.6.1", "sharp": "^0.29.3", - "under-pressure": "^5.8.0" + "under-pressure": "^5.8.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e7ea84..301d26b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,93 +1,115 @@ -lockfileVersion: 5.3 +lockfileVersion: 5.4 specifiers: - '@google-cloud/storage': ^5.18.1 + '@fastify/caching': ^7.0.0 + '@fastify/compress': ^5.0.0 + '@fastify/cors': ^7.0.0 + '@google-cloud/storage': ^5.20.5 '@types/convict': ^6.1.1 '@types/flat': ^5.0.2 '@types/js-yaml': ^4.0.5 - '@types/minio': ^7.0.12 + '@types/minio': ^7.0.13 '@types/ms': ^0.7.31 - '@types/node': ^16.11.22 + '@types/node': ^16.11.36 '@types/sharp': ^0.29.5 - caniuse-db: ^1.0.30001307 class-validator: ^0.13.2 - convict: ^6.2.1 + convict: ^6.2.3 convict-format-with-validator: ^6.2.0 - device-detector-js: ^3.0.1 fast-crc32c: ^2.0.0 - fastify: ^3.27.1 - fastify-caching: ^6.2.0 - fastify-compress: ^3.7.0 - fastify-cors: ^6.0.2 + fastify: ^3.29.0 flat: ^5.0.2 js-yaml: ^4.1.0 - minio: ^7.0.26 + minio: ^7.0.28 ms: ^2.1.3 - pino-pretty: ^7.5.1 + pino-pretty: ^7.6.1 sharp: ^0.29.3 - ts-node-dev: ^1.1.8 - typescript: ^4.5.5 - under-pressure: ^5.8.0 + ts-node-dev: ^2.0.0 + typescript: ^4.7.2 + under-pressure: ^5.8.1 dependencies: - '@google-cloud/storage': 5.18.1 - caniuse-db: 1.0.30001307 + '@fastify/caching': 7.0.0 + '@fastify/compress': 5.0.0 + '@fastify/cors': 7.0.0 + '@google-cloud/storage': 5.20.5 class-validator: 0.13.2 - convict: 6.2.1 + convict: 6.2.3 convict-format-with-validator: 6.2.0 - device-detector-js: 3.0.1 fast-crc32c: 2.0.0 - fastify: 3.27.1 - fastify-caching: 6.2.0 - fastify-compress: 3.7.0 - fastify-cors: 6.0.2 + fastify: 3.29.0 flat: 5.0.2 js-yaml: 4.1.0 - minio: 7.0.26 + minio: 7.0.28 ms: 2.1.3 - pino-pretty: 7.5.1 + pino-pretty: 7.6.1 sharp: 0.29.3 - under-pressure: 5.8.0 + under-pressure: 5.8.1 devDependencies: '@types/convict': 6.1.1 '@types/flat': 5.0.2 '@types/js-yaml': 4.0.5 - '@types/minio': 7.0.12 + '@types/minio': 7.0.13 '@types/ms': 0.7.31 - '@types/node': 16.11.22 + '@types/node': 16.11.36 '@types/sharp': 0.29.5 - ts-node-dev: 1.1.8_typescript@4.5.5 - typescript: 4.5.5 + ts-node-dev: 2.0.0_4vcxniz6c2zf6q742nqxy3egzi + typescript: 4.7.2 packages: + /@cspotcode/source-map-support/0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + /@fastify/ajv-compiler/1.1.0: resolution: {integrity: sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==} dependencies: ajv: 6.12.6 dev: false - /@google-cloud/common/3.9.0: - resolution: {integrity: sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg==} - engines: {node: '>=10'} + /@fastify/caching/7.0.0: + resolution: {integrity: sha512-zMZzUmtByWKeqW8WMt0PILgGIUHLopSGjVPK2pDSPhcrdf9/B/gA4FiW4ylJVY0fhkW18awqI3z+tgUiY6mPsw==} dependencies: - '@google-cloud/projectify': 2.1.1 - '@google-cloud/promisify': 2.0.4 - arrify: 2.0.1 - duplexify: 4.1.2 - ent: 2.2.0 - extend: 3.0.2 - google-auth-library: 7.11.0 - retry-request: 4.2.2 - teeny-request: 7.1.3 - transitivePeerDependencies: - - encoding - - supports-color + abstract-cache: 1.0.1 + fastify-plugin: 3.0.1 + uid-safe: 2.1.5 dev: false - /@google-cloud/paginator/3.0.6: - resolution: {integrity: sha512-XCTm/GfQIlc1ZxpNtTSs/mnZxC2cePNhxU3X8EzHXKIJ2JFncmJj2Fcd2IP+gbmZaSZnY0juFxbUCkIeuu/2eQ==} + /@fastify/compress/5.0.0: + resolution: {integrity: sha512-A0acEHP55+h7XDeWFFbSwZUYya7IK/E7IP9h+/iQxYBQeLY+AKF9Ya00ddMTAd/BpJuQvqUgGjefFXgzza3e8Q==} + engines: {node: '>=10.16'} + dependencies: + encoding-negotiator: 2.0.1 + fastify-plugin: 3.0.1 + into-stream: 6.0.0 + is-deflate: 1.0.0 + is-gzip: 2.0.0 + is-zip: 1.0.0 + mime-db: 1.52.0 + minipass: 3.1.6 + peek-stream: 1.1.3 + pump: 3.0.0 + pumpify: 2.0.1 + string-to-stream: 3.0.1 + dev: false + + /@fastify/cors/7.0.0: + resolution: {integrity: sha512-nlo6ScwagBNJacAZD3KX90xjWLIoV0vN9QqoX1wUE9ZeZMdvkVkMZCGlxEtr00NshV0X5wDge4w5rwox7rRzSg==} + dependencies: + fastify-plugin: 3.0.1 + vary: 1.1.2 + dev: false + + /@fastify/error/2.0.0: + resolution: {integrity: sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w==} + dev: false + + /@google-cloud/paginator/3.0.7: + resolution: {integrity: sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==} engines: {node: '>=10'} dependencies: arrify: 2.0.1 @@ -104,46 +126,79 @@ packages: engines: {node: '>=10'} dev: false - /@google-cloud/storage/5.18.1: - resolution: {integrity: sha512-EeVIarDb6u9vE5Se3YaXA8tuW8Ae2xmYLHy43doutTwzkXwizGXVS2Qmc2pouq9ln8qMD9A2f3arvhgAPtK9LQ==} + /@google-cloud/storage/5.20.5: + resolution: {integrity: sha512-lOs/dCyveVF8TkVFnFSF7IGd0CJrTm91qiK6JLu+Z8qiT+7Ag0RyVhxZIWkhiACqwABo7kSHDm8FdH8p2wxSSw==} engines: {node: '>=10'} dependencies: - '@google-cloud/common': 3.9.0 - '@google-cloud/paginator': 3.0.6 + '@google-cloud/paginator': 3.0.7 + '@google-cloud/projectify': 2.1.1 '@google-cloud/promisify': 2.0.4 abort-controller: 3.0.0 arrify: 2.0.1 async-retry: 1.3.3 compressible: 2.0.18 configstore: 5.0.1 - date-and-time: 2.1.0 duplexify: 4.1.2 + ent: 2.2.0 extend: 3.0.2 - gaxios: 4.3.2 - get-stream: 6.0.1 - google-auth-library: 7.11.0 + gaxios: 4.3.3 + google-auth-library: 7.14.1 hash-stream-validation: 0.2.4 mime: 3.0.0 - mime-types: 2.1.34 + mime-types: 2.1.35 p-limit: 3.1.0 pumpify: 2.0.1 - snakeize: 0.1.0 + retry-request: 4.2.2 stream-events: 1.0.5 + teeny-request: 7.2.0 + uuid: 8.3.2 xdg-basedir: 4.0.0 transitivePeerDependencies: - encoding - supports-color dev: false + /@jridgewell/resolve-uri/3.0.7: + resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.13: + resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} + dev: true + + /@jridgewell/trace-mapping/0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.0.7 + '@jridgewell/sourcemap-codec': 1.4.13 + dev: true + /@tootallnate/once/2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: false + /@tsconfig/node10/1.0.8: + resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} + dev: true + + /@tsconfig/node12/1.0.9: + resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} + dev: true + + /@tsconfig/node14/1.0.1: + resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} + dev: true + + /@tsconfig/node16/1.0.2: + resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} + dev: true + /@types/convict/6.1.1: resolution: {integrity: sha512-R+JLaTvhsD06p4jyjUDtbd5xMtZTRE3c0iI+lrFWZogSVEjgTWPYwvJPVf+t92E+yrlbXa4X4Eg9ro6gPdUt4w==} dependencies: - '@types/node': 16.11.22 + '@types/node': 16.11.36 dev: true /@types/flat/5.0.2: @@ -154,28 +209,28 @@ packages: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} dev: true - /@types/minio/7.0.12: - resolution: {integrity: sha512-O9hfc+61y8PYSP/6InHNML0VIo9c1UYptgkveHhlLMs2kPjOms3EfSjU2dfnOXIyADvp3v1FRTwRpL9owKdxtw==} + /@types/minio/7.0.13: + resolution: {integrity: sha512-Warrx6uN4KEpBCAWiTh7ngrPoaNIckawtBXqWbFzaatG/NPRZToAv/fa9yAPA7a2FHAGhe154KqaVIqacIn2pQ==} dependencies: - '@types/node': 16.11.22 + '@types/node': 16.11.36 dev: true /@types/ms/0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node/16.11.22: - resolution: {integrity: sha512-DYNtJWauMQ9RNpesl4aVothr97/tIJM8HbyOXJ0AYT1Z2bEjLHyfjOBPAQQVMLf8h3kSShYfNk8Wnto8B2zHUA==} + /@types/node/16.11.36: + resolution: {integrity: sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==} dev: true /@types/sharp/0.29.5: resolution: {integrity: sha512-3TC+S3H5RwnJmLYMHrcdfNjz/CaApKmujjY9b6PU/pE6n0qfooi99YqXGWoW8frU9EWYj/XTI35Pzxa+ThAZ5Q==} dependencies: - '@types/node': 16.11.22 + '@types/node': 16.11.36 dev: true /@types/strip-bom/3.0.0: - resolution: {integrity: sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=} + resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} dev: true /@types/strip-json-comments/0.0.30: @@ -207,11 +262,22 @@ packages: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} dev: false + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/8.7.1: + resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false @@ -225,8 +291,8 @@ packages: uri-js: 4.4.1 dev: false - /ajv/8.10.0: - resolution: {integrity: sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==} + /ajv/8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -235,7 +301,7 @@ packages: dev: false /ansi-regex/2.1.1: - resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} dev: false @@ -259,7 +325,7 @@ packages: dev: false /archy/1.0.0: - resolution: {integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=} + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: false /are-we-there-yet/1.1.7: @@ -277,8 +343,8 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false - /args/5.0.1: - resolution: {integrity: sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==} + /args/5.0.3: + resolution: {integrity: sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==} engines: {node: '>= 6.0.0'} dependencies: camelcase: 5.0.0 @@ -321,11 +387,11 @@ packages: engines: {node: '>= 0.4'} dev: false - /avvio/7.2.2: - resolution: {integrity: sha512-XW2CMCmZaCmCCsIaJaLKxAzPwF37fXi1KGxNOvedOpeisLdmxZnblGc3hpHWYnlP+KOUxZsazh43WXNHgXpbqw==} + /avvio/7.2.5: + resolution: {integrity: sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==} dependencies: archy: 1.0.0 - debug: 4.3.3 + debug: 4.3.4 fastq: 1.13.0 queue-microtask: 1.2.3 transitivePeerDependencies: @@ -334,16 +400,12 @@ packages: /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false - /big-integer/1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: false - /bignumber.js/9.0.2: resolution: {integrity: sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==} dev: false @@ -353,13 +415,6 @@ packages: engines: {node: '>=8'} dev: true - /binary/0.3.0: - resolution: {integrity: sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=} - dependencies: - buffers: 0.1.1 - chainsaw: 0.1.0 - dev: false - /bindings/1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: @@ -381,16 +436,12 @@ packages: readable-stream: 3.6.0 dev: false - /bluebird/3.4.7: - resolution: {integrity: sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=} - dev: false - /bn.js/4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} dev: false - /bn.js/5.2.0: - resolution: {integrity: sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==} + /bn.js/5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} dev: false /brace-expansion/1.1.11: @@ -398,6 +449,7 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -407,7 +459,7 @@ packages: dev: true /brorand/1.1.0: - resolution: {integrity: sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=} + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} dev: false /browser-or-node/1.3.0: @@ -445,14 +497,14 @@ packages: /browserify-rsa/4.1.0: resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} dependencies: - bn.js: 5.2.0 + bn.js: 5.2.1 randombytes: 2.1.0 dev: false /browserify-sign/4.2.1: resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} dependencies: - bn.js: 5.2.0 + bn.js: 5.2.1 browserify-rsa: 4.1.0 create-hash: 1.2.0 create-hmac: 1.1.7 @@ -463,6 +515,10 @@ packages: safe-buffer: 5.2.1 dev: false + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: false + /buffer-equal-constant-time/1.0.1: resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} dev: false @@ -470,13 +526,8 @@ packages: /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer-indexof-polyfill/1.0.2: - resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} - engines: {node: '>=0.10'} - dev: false - /buffer-xor/1.0.3: - resolution: {integrity: sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=} + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} dev: false /buffer/5.7.1: @@ -486,11 +537,6 @@ packages: ieee754: 1.2.1 dev: false - /buffers/0.1.1: - resolution: {integrity: sha1-skV5w77U1tOWru5tmorn9Ugqt7s=} - engines: {node: '>=0.2.0'} - dev: false - /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -503,16 +549,6 @@ packages: engines: {node: '>=6'} dev: false - /caniuse-db/1.0.30001307: - resolution: {integrity: sha512-IyFjo3BNsn7oEzwktsOJ9K0a1Ies59r0mWSIMOFn6pgPRwH2MDCPUKn4pVgXko6Yc1aDSoA/M/AtNHwB8Ems6w==} - dev: false - - /chainsaw/0.1.0: - resolution: {integrity: sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=} - dependencies: - traverse: 0.3.9 - dev: false - /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -551,17 +587,17 @@ packages: /class-validator/0.13.2: resolution: {integrity: sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==} dependencies: - libphonenumber-js: 1.9.47 + libphonenumber-js: 1.10.6 validator: 13.7.0 dev: false /clone/2.1.2: - resolution: {integrity: sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=} + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} dev: false /code-point-at/1.1.0: - resolution: {integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=} + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} engines: {node: '>=0.10.0'} dev: false @@ -579,25 +615,26 @@ packages: dev: false /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: false /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: false - /color-string/1.9.0: - resolution: {integrity: sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==} + /color-string/1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: false - /color/4.2.0: - resolution: {integrity: sha512-hHTcrbvEnGjC7WBMk6ibQWFVDgEFTVmjrz2Q5HlU6ltwxv0JJN2Z8I7uRbWeQLF04dikxs8zgyZkazRJvSMtyQ==} + /color/4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} dependencies: color-convert: 2.0.1 - color-string: 1.9.0 + color-string: 1.9.1 dev: false /colorette/2.0.16: @@ -608,18 +645,19 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: - mime-db: 1.51.0 + mime-db: 1.52.0 dev: false /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + dev: true /configstore/5.0.1: resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} engines: {node: '>=8'} dependencies: dot-prop: 5.3.0 - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 make-dir: 3.1.0 unique-string: 2.0.0 write-file-atomic: 3.0.3 @@ -627,7 +665,7 @@ packages: dev: false /console-control-strings/1.1.0: - resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=} + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false /convict-format-with-validator/6.2.0: @@ -637,16 +675,16 @@ packages: validator: 13.7.0 dev: false - /convict/6.2.1: - resolution: {integrity: sha512-Mn4AJiYkR3TAZH1Xm/RU7gFS/0kM5TBSAQDry8y40Aez0ASY+3boUhv+3QE5XbOXiXM2JjdhkKve3IsBvWCibQ==} + /convict/6.2.3: + resolution: {integrity: sha512-mTY04Qr7WrqiXifdeUYXr4/+Te4hPFWDvz6J2FVIKCLc2XBhq63VOSSYAKJ+unhZAYOAjmEdNswTOeHt7s++pQ==} engines: {node: '>=6'} dependencies: lodash.clonedeep: 4.5.0 yargs-parser: 20.2.9 dev: false - /cookie/0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + /cookie/0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: false @@ -707,16 +745,12 @@ packages: engines: {node: '>=8'} dev: false - /date-and-time/2.1.0: - resolution: {integrity: sha512-X/b2gM7e8zQ7siiE0DhRLeNMpuCkIqec5Jnx4GMk/HWB71a6e5Lz48mH9/GIS/hpLsBRFZfMF1gjXBkY0vq5oA==} - dev: false - /dateformat/4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} dev: false - /debug/4.3.3: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -744,15 +778,16 @@ packages: engines: {node: '>=0.10.0'} dev: false - /define-properties/1.1.3: - resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: + has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: false /delegates/1.0.0: - resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: false /des.js/1.0.1: @@ -763,21 +798,16 @@ packages: dev: false /detect-libc/1.0.3: - resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=} + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true dev: false - /detect-libc/2.0.0: - resolution: {integrity: sha512-S55LzUl8HUav8l9E2PBTlC5PAJrHK7tkM+XXFGD+fbsbkTzhCpG6K05LxJcUOEWzMa4v6ptcMZ9s3fOdJDu0Zw==} + /detect-libc/2.0.1: + resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} dev: false - /device-detector-js/3.0.1: - resolution: {integrity: sha512-sfH78Mzy9BZn/DW1fCyInaZfQYlW7s8KbylsxIMHjnOi0ybI2+9Za97uB3EijXLAWoe6ud0agnprGY2nYk654w==} - engines: {node: '>= 8.11.4'} - dev: false - /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -798,12 +828,6 @@ packages: is-obj: 2.0.0 dev: false - /duplexer2/0.1.4: - resolution: {integrity: sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=} - dependencies: - readable-stream: 2.3.7 - dev: false - /duplexify/3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: @@ -823,7 +847,7 @@ packages: dev: false /dynamic-dedupe/0.3.0: - resolution: {integrity: sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=} + resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} dependencies: xtend: 4.0.2 dev: true @@ -858,33 +882,36 @@ packages: dev: false /ent/2.2.0: - resolution: {integrity: sha1-6WQhkyWiHQX0RGai9obtbOX13R0=} + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} dev: false - /es-abstract/1.19.1: - resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} + /es-abstract/1.20.1: + resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 es-to-primitive: 1.2.1 function-bind: 1.1.1 + function.prototype.name: 1.1.5 get-intrinsic: 1.1.1 get-symbol-description: 1.0.0 has: 1.0.3 - has-symbols: 1.0.2 + has-property-descriptors: 1.0.0 + has-symbols: 1.0.3 internal-slot: 1.0.3 is-callable: 1.2.4 is-negative-zero: 2.0.2 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.1 + is-shared-array-buffer: 1.0.2 is-string: 1.0.7 is-weakref: 1.0.2 - object-inspect: 1.12.0 + object-inspect: 1.12.2 object-keys: 1.1.1 object.assign: 4.1.2 - string.prototype.trimend: 1.0.4 - string.prototype.trimstart: 1.0.4 - unbox-primitive: 1.0.1 + regexp.prototype.flags: 1.4.3 + string.prototype.trimend: 1.0.5 + string.prototype.trimstart: 1.0.5 + unbox-primitive: 1.0.2 dev: false /es-to-primitive/1.2.1: @@ -901,7 +928,7 @@ packages: dev: false /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: false @@ -954,8 +981,8 @@ packages: string-similarity: 4.0.4 dev: false - /fast-redact/3.1.0: - resolution: {integrity: sha512-dir8LOnvialLxiXDPESMDHGp82CHi6ZEYTVkcvdn5d7psdv9ZkkButXrOeXST4aqreIRR+N7CYlsrwFuorurVg==} + /fast-redact/3.1.1: + resolution: {integrity: sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==} engines: {node: '>=6'} dev: false @@ -974,71 +1001,28 @@ packages: strnum: 1.0.5 dev: false - /fastify-caching/6.2.0: - resolution: {integrity: sha512-JftadkAz/VvWiKqY98Kjmlp3o8ZiTOMmcd0P7XLzBiNmQdAX3mQR4s+YiEm0AWxDmmVaLVPfvuCne1AwbGtvPg==} - dependencies: - abstract-cache: 1.0.1 - fastify-plugin: 3.0.1 - uid-safe: 2.1.5 - dev: false - - /fastify-compress/3.7.0: - resolution: {integrity: sha512-cZynvkXvGn7Xj/5yMhCDJ8OWASU275DabyoCLECHQUw90nNFHAqS5YpisUsBxRn3P/+a10lxL91VyLXT0VeatA==} - engines: {node: '>=10.16'} - dependencies: - encoding-negotiator: 2.0.1 - fastify-plugin: 3.0.1 - into-stream: 6.0.0 - is-deflate: 1.0.0 - is-gzip: 2.0.0 - is-stream: 2.0.1 - is-zip: 1.0.0 - mime-db: 1.51.0 - minipass: 3.1.6 - peek-stream: 1.1.3 - pump: 3.0.0 - pumpify: 2.0.1 - string-to-stream: 3.0.1 - unzipper: 0.10.11 - dev: false - - /fastify-cors/6.0.2: - resolution: {integrity: sha512-sE0AOyzmj5hLLRRVgenjA6G2iOGX35/1S3QGYB9rr9TXelMZB3lFrXy4CzwYVOMiujJeMiLgO4J7eRm8sQSv8Q==} - dependencies: - fastify-plugin: 3.0.1 - vary: 1.1.2 - dev: false - - /fastify-error/0.3.1: - resolution: {integrity: sha512-oCfpcsDndgnDVgiI7bwFKAun2dO+4h84vBlkWsWnz/OUK9Reff5UFoFl241xTiLeHWX/vU9zkDVXqYUxjOwHcQ==} - dev: false - /fastify-plugin/3.0.1: resolution: {integrity: sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==} dev: false - /fastify-warning/0.2.0: - resolution: {integrity: sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==} - dev: false - - /fastify/3.27.1: - resolution: {integrity: sha512-GLn3ow5BGqg/m+ztXvztp8Xp7SuH99vAm4zfbN7407Qzi4mB055SG/lWH/gYolz5Oq2K8LtUpZqt1Ccf/YkVmA==} + /fastify/3.29.0: + resolution: {integrity: sha512-zXSiDTdHJCHcmDrSje1f1RfzTmUTjMtHnPhh6cdokgfHhloQ+gy0Du+KlEjwTbcNC3Djj4GAsBzl6KvfI9Ah2g==} dependencies: '@fastify/ajv-compiler': 1.1.0 + '@fastify/error': 2.0.0 abstract-logging: 2.0.1 - avvio: 7.2.2 + avvio: 7.2.5 fast-json-stringify: 2.7.13 - fastify-error: 0.3.1 find-my-way: 4.5.1 flatstr: 1.0.12 - light-my-request: 4.7.1 - pino: 6.13.4 + light-my-request: 4.10.1 + pino: 6.14.0 process-warning: 1.0.0 proxy-addr: 2.0.7 rfdc: 1.3.0 secure-json-parse: 2.4.0 - semver: 7.3.5 - tiny-lru: 7.0.6 + semver: 7.3.7 + tiny-lru: 8.0.2 transitivePeerDependencies: - supports-color dev: false @@ -1080,8 +1064,10 @@ packages: resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} dev: false - /foreach/2.0.5: - resolution: {integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k=} + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.4 dev: false /forwarded/0.2.0: @@ -1090,7 +1076,7 @@ packages: dev: false /from2/2.3.0: - resolution: {integrity: sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=} + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} dependencies: inherits: 2.0.4 readable-stream: 2.3.7 @@ -1101,7 +1087,8 @@ packages: dev: false /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -1111,21 +1098,25 @@ packages: dev: true optional: true - /fstream/1.0.12: - resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} - engines: {node: '>=0.6'} - dependencies: - graceful-fs: 4.2.9 - inherits: 2.0.4 - mkdirp: 0.5.5 - rimraf: 2.7.1 - dev: false - /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + functions-have-names: 1.2.3 + dev: false + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + /gauge/2.7.4: - resolution: {integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=} + resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} dependencies: aproba: 1.2.0 console-control-strings: 1.1.0 @@ -1137,13 +1128,13 @@ packages: wide-align: 1.1.5 dev: false - /gaxios/4.3.2: - resolution: {integrity: sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==} + /gaxios/4.3.3: + resolution: {integrity: sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==} engines: {node: '>=10'} dependencies: abort-controller: 3.0.0 extend: 3.0.2 - https-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 is-stream: 2.0.1 node-fetch: 2.6.7 transitivePeerDependencies: @@ -1155,7 +1146,7 @@ packages: resolution: {integrity: sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==} engines: {node: '>=10'} dependencies: - gaxios: 4.3.2 + gaxios: 4.3.3 json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -1167,12 +1158,7 @@ packages: dependencies: function-bind: 1.1.1 has: 1.0.3 - has-symbols: 1.0.2 - dev: false - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + has-symbols: 1.0.3 dev: false /get-symbol-description/1.0.0: @@ -1194,27 +1180,28 @@ packages: is-glob: 4.0.3 dev: true - /glob/7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.4 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true - /google-auth-library/7.11.0: - resolution: {integrity: sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg==} + /google-auth-library/7.14.1: + resolution: {integrity: sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==} engines: {node: '>=10'} dependencies: arrify: 2.0.1 base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 fast-text-encoding: 1.0.3 - gaxios: 4.3.2 + gaxios: 4.3.3 gcp-metadata: 4.3.1 - gtoken: 5.3.1 + gtoken: 5.3.2 jws: 4.0.0 lru-cache: 6.0.0 transitivePeerDependencies: @@ -1222,32 +1209,32 @@ packages: - supports-color dev: false - /google-p12-pem/3.1.3: - resolution: {integrity: sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ==} + /google-p12-pem/3.1.4: + resolution: {integrity: sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==} engines: {node: '>=10'} hasBin: true dependencies: - node-forge: 1.2.1 + node-forge: 1.3.1 dev: false - /graceful-fs/4.2.9: - resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: false - /gtoken/5.3.1: - resolution: {integrity: sha512-yqOREjzLHcbzz1UrQoxhBtpk8KjrVhuqPE7od1K2uhyxG2BHjKZetlbLw/SPZak/QqTIQW+addS+EcjqQsZbwQ==} + /gtoken/5.3.2: + resolution: {integrity: sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==} engines: {node: '>=10'} dependencies: - gaxios: 4.3.2 - google-p12-pem: 3.1.3 + gaxios: 4.3.3 + google-p12-pem: 3.1.4 jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color dev: false - /has-bigints/1.0.1: - resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: false /has-flag/3.0.0: @@ -1255,8 +1242,14 @@ packages: engines: {node: '>=4'} dev: false - /has-symbols/1.0.2: - resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.1 + dev: false + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: false @@ -1264,7 +1257,7 @@ packages: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: false /has-unicode/2.0.1: @@ -1311,17 +1304,17 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false - /https-proxy-agent/5.0.0: - resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} + /https-proxy-agent/5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false @@ -1340,6 +1333,7 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1390,7 +1384,7 @@ packages: /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: - has-bigints: 1.0.1 + has-bigints: 1.0.2 dev: false /is-binary-path/2.1.0: @@ -1413,8 +1407,8 @@ packages: engines: {node: '>= 0.4'} dev: false - /is-core-module/2.8.1: - resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} + /is-core-module/2.9.0: + resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: has: 1.0.3 dev: true @@ -1466,8 +1460,8 @@ packages: engines: {node: '>= 0.4'} dev: false - /is-number-object/1.0.6: - resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 @@ -1496,8 +1490,10 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-shared-array-buffer/1.0.1: - resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 dev: false /is-stream/2.0.1: @@ -1516,17 +1512,17 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: false - /is-typed-array/1.1.8: - resolution: {integrity: sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==} + /is-typed-array/1.1.9: + resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.19.1 - foreach: 2.0.5 + es-abstract: 1.20.1 + for-each: 0.3.3 has-tostringtag: 1.0.0 dev: false @@ -1599,23 +1595,19 @@ packages: engines: {node: '>=0.10.0'} dev: false - /libphonenumber-js/1.9.47: - resolution: {integrity: sha512-FIWFLJ2jUJi8SCztgd2k/isQHZedh7xuxOVifqFLwG/ogZtdH9TXFK92w/KWFj1lwoadqVedtLO3Jqp0q67PZw==} + /libphonenumber-js/1.10.6: + resolution: {integrity: sha512-CIjT100/SmntsUjsLVs2t3ufeN4KdNXUxhD07tH153pdbaCWuAjv0jK/gPuywR3IImB/U/MQM+x9RfhMs5XZiA==} dev: false - /light-my-request/4.7.1: - resolution: {integrity: sha512-7/bT6M+iHY90L9/rW7aboVYt0o0uOqzIx4yofC67d6WE9uLksecGf3mxPuZfVjMONG+i6hCq6z5NZCxqzpA2yw==} + /light-my-request/4.10.1: + resolution: {integrity: sha512-l+zWk0HXGhGzY7IYTZnYEqIpj3Mpcyk2f8+FkKUyREywvaiWCf2jyQVxpasKRsploY/nVpoqTlxx72CIeQNcIQ==} dependencies: - ajv: 8.10.0 - cookie: 0.4.2 - fastify-warning: 0.2.0 + ajv: 8.11.0 + cookie: 0.5.0 + process-warning: 1.0.0 set-cookie-parser: 2.4.8 dev: false - /listenercount/1.0.1: - resolution: {integrity: sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=} - dev: false - /lodash.clonedeep/4.5.0: resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=} dev: false @@ -1669,16 +1661,16 @@ packages: brorand: 1.1.0 dev: false - /mime-db/1.51.0: - resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==} + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: false - /mime-types/2.1.34: - resolution: {integrity: sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==} + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: - mime-db: 1.51.0 + mime-db: 1.52.0 dev: false /mime/3.0.0: @@ -1700,29 +1692,31 @@ packages: resolution: {integrity: sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=} dev: false - /minimatch/3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true - /minimist/1.2.5: - resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - /minio/7.0.26: - resolution: {integrity: sha512-knutnEZZMIUB/Xln6psVDrqObFKXDcF9m4IfFIX+zgDHYg3AlcF88DY1wdgg7bUkf+uU8iHkzP2q5CXAhia73w==} - engines: {node: '>= 4'} + /minio/7.0.28: + resolution: {integrity: sha512-4Oua0R73oCxxmxhh2NiXDJo4Md159I/mdG8ybu6351leMQoB2Sy8S4HmgG6CxuPlEJ0h9M8/WyaI2CARDeeDTQ==} + engines: {node: '>8 <=18'} dependencies: async: 3.2.3 block-stream2: 2.1.0 browser-or-node: 1.3.0 + buffer-crc32: 0.2.13 crypto-browserify: 3.12.0 es6-error: 4.1.1 fast-xml-parser: 3.21.1 ipaddr.js: 2.0.1 json-stream: 1.0.0 lodash: 4.17.21 - mime-types: 2.1.34 - mkdirp: 0.5.5 + mime-types: 2.1.35 + mkdirp: 0.5.6 querystring: 0.2.0 through2: 3.0.2 web-encoding: 1.1.5 @@ -1741,11 +1735,11 @@ packages: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: false - /mkdirp/0.5.5: - resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==} + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: - minimist: 1.2.5 + minimist: 1.2.6 dev: false /mkdirp/1.0.4: @@ -1771,11 +1765,11 @@ packages: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} dev: false - /node-abi/3.8.0: - resolution: {integrity: sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==} + /node-abi/3.22.0: + resolution: {integrity: sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==} engines: {node: '>=10'} dependencies: - semver: 7.3.5 + semver: 7.3.7 dev: false /node-addon-api/1.7.2: @@ -1799,8 +1793,8 @@ packages: whatwg-url: 5.0.0 dev: false - /node-forge/1.2.1: - resolution: {integrity: sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==} + /node-forge/1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} dev: false @@ -1828,8 +1822,8 @@ packages: engines: {node: '>=0.10.0'} dev: false - /object-inspect/1.12.0: - resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: false /object-keys/1.1.1: @@ -1842,11 +1836,15 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - has-symbols: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 object-keys: 1.1.1 dev: false + /on-exit-leak-free/0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + dev: false + /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: @@ -1877,6 +1875,7 @@ packages: /path-is-absolute/1.0.1: resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} engines: {node: '>=0.10.0'} + dev: true /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -1913,21 +1912,22 @@ packages: split2: 4.1.0 dev: false - /pino-pretty/7.5.1: - resolution: {integrity: sha512-xEOUJiokdBGcZ9d0v7OY6SqEp+rrVH2drE3bHOUsK8elw44eh9V83InZqeL1dFwgD1IDnd6crUoec3hIXxfdBQ==} + /pino-pretty/7.6.1: + resolution: {integrity: sha512-H7N6ZYkiyrfwBGW9CSjx0uyO9Q2Lyt73881+OTYk8v3TiTdgN92QHrWlEq/LeWw5XtDP64jeSk3mnc6T+xX9/w==} hasBin: true dependencies: - args: 5.0.1 + args: 5.0.3 colorette: 2.0.16 dateformat: 4.6.3 fast-safe-stringify: 2.1.1 joycon: 3.1.1 + on-exit-leak-free: 0.2.0 pino-abstract-transport: 0.5.0 pump: 3.0.0 readable-stream: 3.6.0 rfdc: 1.3.0 secure-json-parse: 2.4.0 - sonic-boom: 2.6.0 + sonic-boom: 2.8.0 strip-json-comments: 3.1.1 dev: false @@ -1935,11 +1935,11 @@ packages: resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==} dev: false - /pino/6.13.4: - resolution: {integrity: sha512-g4tHSISmQJYUEKEMVdaZ+ZokWwFnTwZL5JPn+lnBVZ1BuBbrSchrXwQINknkM5+Q4fF6U9NjiI8PWwwMDHt9zA==} + /pino/6.14.0: + resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==} hasBin: true dependencies: - fast-redact: 3.1.0 + fast-redact: 3.1.1 fast-safe-stringify: 2.1.1 flatstr: 1.0.12 pino-std-serializers: 3.2.0 @@ -1948,18 +1948,18 @@ packages: sonic-boom: 1.4.1 dev: false - /prebuild-install/7.0.1: - resolution: {integrity: sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==} + /prebuild-install/7.1.0: + resolution: {integrity: sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==} engines: {node: '>=10'} hasBin: true dependencies: - detect-libc: 2.0.0 + detect-libc: 2.0.1 expand-template: 2.0.3 github-from-package: 0.0.0 - minimist: 1.2.5 + minimist: 1.2.6 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.8.0 + node-abi: 3.22.0 npmlog: 4.1.2 pump: 3.0.0 rc: 1.2.8 @@ -2053,7 +2053,7 @@ packages: dependencies: deep-extend: 0.6.0 ini: 1.3.8 - minimist: 1.2.5 + minimist: 1.2.6 strip-json-comments: 2.0.1 dev: false @@ -2085,6 +2085,15 @@ packages: picomatch: 2.3.1 dev: true + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: false + /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -2094,7 +2103,7 @@ packages: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true dependencies: - is-core-module: 2.8.1 + is-core-module: 2.9.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -2108,7 +2117,7 @@ packages: resolution: {integrity: sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==} engines: {node: '>=8.10.0'} dependencies: - debug: 4.3.3 + debug: 4.3.4 extend: 3.0.2 transitivePeerDependencies: - supports-color @@ -2132,7 +2141,8 @@ packages: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 + dev: true /ripemd160/2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} @@ -2176,8 +2186,8 @@ packages: hasBin: true dev: false - /semver/7.3.5: - resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + /semver/7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} engines: {node: '>=10'} hasBin: true dependencies: @@ -2192,10 +2202,6 @@ packages: resolution: {integrity: sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg==} dev: false - /setimmediate/1.0.5: - resolution: {integrity: sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=} - dev: false - /sha.js/2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true @@ -2209,11 +2215,11 @@ packages: engines: {node: '>=12.13.0'} requiresBuild: true dependencies: - color: 4.2.0 + color: 4.2.3 detect-libc: 1.0.3 node-addon-api: 4.3.0 - prebuild-install: 7.0.1 - semver: 7.3.5 + prebuild-install: 7.1.0 + semver: 7.3.7 simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 @@ -2224,7 +2230,7 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.1 - object-inspect: 1.12.0 + object-inspect: 1.12.2 dev: false /signal-exit/3.0.7: @@ -2249,10 +2255,6 @@ packages: is-arrayish: 0.3.2 dev: false - /snakeize/0.1.0: - resolution: {integrity: sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=} - dev: false - /sonic-boom/1.4.1: resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} dependencies: @@ -2260,8 +2262,8 @@ packages: flatstr: 1.0.12 dev: false - /sonic-boom/2.6.0: - resolution: {integrity: sha512-6xYZFRmDEtxGqfOKcDQ4cPLrNa0SPEDI+wlzDAHowXE6YV42NeXqg9mP2KkiM8JVu3lHfZ2iQKYlGOz+kTpphg==} + /sonic-boom/2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: atomic-sleep: 1.0.0 dev: false @@ -2322,18 +2324,20 @@ packages: strip-ansi: 3.0.1 dev: false - /string.prototype.trimend/1.0.4: - resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} + /string.prototype.trimend/1.0.5: + resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 + es-abstract: 1.20.1 dev: false - /string.prototype.trimstart/1.0.4: - resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} + /string.prototype.trimstart/1.0.5: + resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 + es-abstract: 1.20.1 dev: false /string_decoder/1.1.1: @@ -2409,12 +2413,12 @@ packages: readable-stream: 3.6.0 dev: false - /teeny-request/7.1.3: - resolution: {integrity: sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg==} + /teeny-request/7.2.0: + resolution: {integrity: sha512-SyY0pek1zWsi0LRVAALem+avzMLc33MKW/JLLakdP4s9+D7+jHcy5x6P+h94g2QNZsAqQNfX5lsbd3WSeJXrrw==} engines: {node: '>=10'} dependencies: http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 node-fetch: 2.6.7 stream-events: 1.0.5 uuid: 8.3.2 @@ -2437,8 +2441,8 @@ packages: readable-stream: 3.6.0 dev: false - /tiny-lru/7.0.6: - resolution: {integrity: sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow==} + /tiny-lru/8.0.2: + resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} engines: {node: '>=6'} dev: false @@ -2453,17 +2457,13 @@ packages: resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} dev: false - /traverse/0.3.9: - resolution: {integrity: sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=} - dev: false - /tree-kill/1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true dev: true - /ts-node-dev/1.1.8_typescript@4.5.5: - resolution: {integrity: sha512-Q/m3vEwzYwLZKmV6/0VlFxcZzVV/xcgOt+Tx/VjaaRHyiBcFlV0541yrT09QjzzCxlDZ34OzKjrFAynlmtflEg==} + /ts-node-dev/2.0.0_4vcxniz6c2zf6q742nqxy3egzi: + resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} engines: {node: '>=0.8.0'} hasBin: true peerDependencies: @@ -2475,30 +2475,49 @@ packages: dependencies: chokidar: 3.5.3 dynamic-dedupe: 0.3.0 - minimist: 1.2.5 + minimist: 1.2.6 mkdirp: 1.0.4 resolve: 1.22.0 rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 9.1.1_typescript@4.5.5 + ts-node: 10.8.0_4vcxniz6c2zf6q742nqxy3egzi tsconfig: 7.0.0 - typescript: 4.5.5 + typescript: 4.7.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' dev: true - /ts-node/9.1.1_typescript@4.5.5: - resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} - engines: {node: '>=10.0.0'} + /ts-node/10.8.0_4vcxniz6c2zf6q742nqxy3egzi: + resolution: {integrity: sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA==} hasBin: true peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.8 + '@tsconfig/node12': 1.0.9 + '@tsconfig/node14': 1.0.1 + '@tsconfig/node16': 1.0.2 + '@types/node': 16.11.36 + acorn: 8.7.1 + acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - source-map-support: 0.5.21 - typescript: 4.5.5 + typescript: 4.7.2 + v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -2523,8 +2542,8 @@ packages: is-typedarray: 1.0.0 dev: false - /typescript/4.5.5: - resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==} + /typescript/4.7.2: + resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==} engines: {node: '>=4.2.0'} hasBin: true dev: true @@ -2536,20 +2555,20 @@ packages: random-bytes: 1.0.0 dev: false - /unbox-primitive/1.0.1: - resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - function-bind: 1.1.1 - has-bigints: 1.0.1 - has-symbols: 1.0.2 + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 dev: false - /under-pressure/5.8.0: - resolution: {integrity: sha512-8ADLZkFEGDAsKof1FEICH/OLyGWjDZy6KR/Exq3MTv7W81zC2W23VekY05Fo350lip1ywYNH9wP7itiVnk4wHg==} + /under-pressure/5.8.1: + resolution: {integrity: sha512-5c1e0HoNmF2J3NQS4j7j5M5cu5GLR21FqvmOI/V6R+rhwS+HH0ocEFwCYC0CeKbLL/b1NyvMCQzlx15O9CoaEQ==} engines: {node: '>=10'} dependencies: - fastify-error: 0.3.1 + '@fastify/error': 2.0.0 fastify-plugin: 3.0.1 dev: false @@ -2560,21 +2579,6 @@ packages: crypto-random-string: 2.0.0 dev: false - /unzipper/0.10.11: - resolution: {integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==} - dependencies: - big-integer: 1.6.51 - binary: 0.3.0 - bluebird: 3.4.7 - buffer-indexof-polyfill: 1.0.2 - duplexer2: 0.1.4 - fstream: 1.0.12 - graceful-fs: 4.2.9 - listenercount: 1.0.1 - readable-stream: 2.3.7 - setimmediate: 1.0.5 - dev: false - /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -2591,9 +2595,9 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.8 + is-typed-array: 1.1.9 safe-buffer: 5.2.1 - which-typed-array: 1.1.7 + which-typed-array: 1.1.8 dev: false /uuid/8.3.2: @@ -2601,6 +2605,10 @@ packages: hasBin: true dev: false + /v8-compile-cache-lib/3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + /validator/13.7.0: resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} engines: {node: '>= 0.10'} @@ -2635,21 +2643,21 @@ packages: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 - is-number-object: 1.0.6 + is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 dev: false - /which-typed-array/1.1.7: - resolution: {integrity: sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==} + /which-typed-array/1.1.8: + resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 - es-abstract: 1.19.1 - foreach: 2.0.5 + es-abstract: 1.20.1 + for-each: 0.3.3 has-tostringtag: 1.0.0 - is-typed-array: 1.1.8 + is-typed-array: 1.1.9 dev: false /wide-align/1.1.5: diff --git a/src/controllers/image.ts b/src/controllers/image.ts index 3a92a37..c35c6f8 100644 --- a/src/controllers/image.ts +++ b/src/controllers/image.ts @@ -14,12 +14,10 @@ import { flatten, unflatten } from 'flat' import type { IncomingHttpHeaders } from 'http2' import ms from 'ms' import sharp, { FitEnum, FormatEnum } from 'sharp' - import { App } from '..' import { Config, URLClean } from '../config' import { storage } from '../storage' import { transform } from '../transform' -import { supportsAvif, supportsWebP } from '../utils/caniuse' import { ForbiddenError } from '../utils/errors' import { sha3, sortObjectByKeys, testForPrefixOrRegexp, validateSyncOrFail } from '../utils/utils' @@ -171,16 +169,7 @@ export class TransformQueryBase { } } } - if (ua) { - if (supportsAvif(ua)) { - this.format!.name = 'avif' - return - } - if (supportsWebP(ua)) { - this.format!.name = 'webp' - return - } - } + // Fallback this.format!.name = 'jpeg' } diff --git a/src/fastify/middleware.ts b/src/fastify/middleware.ts index 233c136..965b5ee 100644 --- a/src/fastify/middleware.ts +++ b/src/fastify/middleware.ts @@ -2,7 +2,7 @@ import { FastifyInstance } from 'fastify' export function init(App: FastifyInstance) { App.register(require('under-pressure')) - App.register(require('fastify-caching')) - App.register(require('fastify-compress'), { global: true }) - App.register(require('fastify-cors'), { origin: '*' }) + App.register(require('@fastify/caching')) + App.register(require('@fastify/compress'), { global: true }) + App.register(require('@fastify/cors'), { origin: '*' }) } diff --git a/src/index.ts b/src/index.ts index e193c90..9a28d68 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,4 @@ import fastify from 'fastify' - import { Config, init as initConfig } from './config' import { init as initRoutes } from './controllers' import { init as initHooks } from './fastify/hooks' diff --git a/src/utils/caniuse.ts b/src/utils/caniuse.ts deleted file mode 100644 index 4b3986b..0000000 --- a/src/utils/caniuse.ts +++ /dev/null @@ -1,71 +0,0 @@ -import Avif from 'caniuse-db/features-json/avif.json' -import WebP from 'caniuse-db/features-json/webp.json' -import DeviceDetector from 'device-detector-js' - -const detector = new DeviceDetector() - -function findLowestSupportedVersion(stat: Record): number | null { - const entries = Object.entries(stat).sort((a, b) => parseInt(a[0]) - parseInt(b[0])) - for (const [version, support] of entries) { - if (support.startsWith('y') || support.startsWith('a')) { - return parseInt(version) - } - } - return null -} - -const BrowserMappings = { - 'Internet Explorer': 'ie', - 'Microsoft Edge': 'edge', - Firefox: 'firefox', - Chrome: 'chrome', - Safari: 'safari', - Opera: 'opera', - 'Mobile Safari': 'ios_saf', - 'Opera Mini': 'op_mini', - 'Android Browser': 'android', - 'Chrome Mobile': 'and_chr', - 'Firefox Mobile': 'and_ff', - 'UC Browser': 'and_uc', - 'Samsung Browser': 'samsung', - 'QQ Browser': 'and_qq', -} - -function matchBrowserToStat(browser: DeviceDetector.DeviceDetectorResult): string { - if (browser.os!.name === 'iOS') { - return 'ios_saf' - } - if (browser.client!.name in BrowserMappings) { - return BrowserMappings[browser.client!.name as keyof typeof BrowserMappings] - } - throw new Error('Could not determine mapping for browser') -} - -function match(feature: typeof Avif | typeof WebP, ua: string): boolean { - const browser = detector.parse(ua) - if (!browser.client || !browser.os) { - throw new Error('Could not parse browser') - } - const stats = feature.stats[matchBrowserToStat(browser) as keyof typeof feature.stats] - const lowestSupported = findLowestSupportedVersion(stats) - if (lowestSupported === null) { - return false - } - return lowestSupported <= parseInt(browser.client.version) -} - -export function supportsAvif(ua: string): boolean { - try { - return match(Avif, ua) - } catch { - return false - } -} - -export function supportsWebP(ua: string): boolean { - try { - return match(WebP, ua) - } catch { - return false - } -}