├── .dockerignore ├── package.json ├── start.sh ├── Dockerfile ├── server.js ├── LICENSE ├── .gitignore └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "fastify": "^3.29.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | TIME_TO_SHUTDOWN="${IDLE_TIME_TO_SHUTDOWN:-120}" 4 | node server & 5 | /tired-proxy --port 8080 --host http://localhost:3000 --time $TIME_TO_SHUTDOWN 6 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine 2 | 3 | RUN apk add nodejs yarn 4 | 5 | COPY package.json package.json 6 | COPY yarn.lock yarn.lock 7 | RUN yarn install 8 | 9 | COPY server.js server.js 10 | COPY start.sh start.sh 11 | EXPOSE 3000 12 | 13 | 14 | COPY --from=lubien/tired-proxy:2 /tired-proxy /tired-proxy 15 | 16 | CMD /start.sh 17 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const fastify = require('fastify')({ logger: true }) 2 | 3 | fastify.get('/', async (request, reply) => { 4 | return { speed: 'ludicrous' } 5 | }) 6 | 7 | const start = async () => { 8 | try { 9 | await fastify.listen(3000, '0.0.0.0') 10 | } catch (err) { 11 | fastify.log.error(err) 12 | process.exit(1) 13 | } 14 | } 15 | start() 16 | 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2022, Fly.io Apps 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@fastify/ajv-compiler@^1.0.0": 6 | "integrity" "sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==" 7 | "resolved" "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-1.1.0.tgz" 8 | "version" "1.1.0" 9 | dependencies: 10 | "ajv" "^6.12.6" 11 | 12 | "@fastify/error@^2.0.0": 13 | "integrity" "sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w==" 14 | "resolved" "https://registry.npmjs.org/@fastify/error/-/error-2.0.0.tgz" 15 | "version" "2.0.0" 16 | 17 | "abstract-logging@^2.0.0": 18 | "integrity" "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" 19 | "resolved" "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz" 20 | "version" "2.0.1" 21 | 22 | "ajv@^6.11.0", "ajv@^6.12.6": 23 | "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" 24 | "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 25 | "version" "6.12.6" 26 | dependencies: 27 | "fast-deep-equal" "^3.1.1" 28 | "fast-json-stable-stringify" "^2.0.0" 29 | "json-schema-traverse" "^0.4.1" 30 | "uri-js" "^4.2.2" 31 | 32 | "ajv@^8.1.0": 33 | "integrity" "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==" 34 | "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" 35 | "version" "8.11.0" 36 | dependencies: 37 | "fast-deep-equal" "^3.1.1" 38 | "json-schema-traverse" "^1.0.0" 39 | "require-from-string" "^2.0.2" 40 | "uri-js" "^4.2.2" 41 | 42 | "archy@^1.0.0": 43 | "integrity" "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" 44 | "resolved" "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" 45 | "version" "1.0.0" 46 | 47 | "atomic-sleep@^1.0.0": 48 | "integrity" "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" 49 | "resolved" "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz" 50 | "version" "1.0.0" 51 | 52 | "avvio@^7.1.2": 53 | "integrity" "sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==" 54 | "resolved" "https://registry.npmjs.org/avvio/-/avvio-7.2.5.tgz" 55 | "version" "7.2.5" 56 | dependencies: 57 | "archy" "^1.0.0" 58 | "debug" "^4.0.0" 59 | "fastq" "^1.6.1" 60 | "queue-microtask" "^1.1.2" 61 | 62 | "cookie@^0.5.0": 63 | "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 64 | "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" 65 | "version" "0.5.0" 66 | 67 | "debug@^4.0.0": 68 | "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" 69 | "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" 70 | "version" "4.3.4" 71 | dependencies: 72 | "ms" "2.1.2" 73 | 74 | "deepmerge@^4.2.2": 75 | "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" 76 | "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" 77 | "version" "4.2.2" 78 | 79 | "fast-decode-uri-component@^1.0.1": 80 | "integrity" "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" 81 | "resolved" "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz" 82 | "version" "1.0.1" 83 | 84 | "fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": 85 | "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 86 | "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 87 | "version" "3.1.3" 88 | 89 | "fast-json-stable-stringify@^2.0.0": 90 | "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 91 | "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 92 | "version" "2.1.0" 93 | 94 | "fast-json-stringify@^2.5.2": 95 | "integrity" "sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==" 96 | "resolved" "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-2.7.13.tgz" 97 | "version" "2.7.13" 98 | dependencies: 99 | "ajv" "^6.11.0" 100 | "deepmerge" "^4.2.2" 101 | "rfdc" "^1.2.0" 102 | "string-similarity" "^4.0.1" 103 | 104 | "fast-redact@^3.0.0": 105 | "integrity" "sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==" 106 | "resolved" "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz" 107 | "version" "3.1.1" 108 | 109 | "fast-safe-stringify@^2.0.8": 110 | "integrity" "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" 111 | "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" 112 | "version" "2.1.1" 113 | 114 | "fastify@^3.29.0": 115 | "integrity" "sha512-zXSiDTdHJCHcmDrSje1f1RfzTmUTjMtHnPhh6cdokgfHhloQ+gy0Du+KlEjwTbcNC3Djj4GAsBzl6KvfI9Ah2g==" 116 | "resolved" "https://registry.npmjs.org/fastify/-/fastify-3.29.0.tgz" 117 | "version" "3.29.0" 118 | dependencies: 119 | "@fastify/ajv-compiler" "^1.0.0" 120 | "@fastify/error" "^2.0.0" 121 | "abstract-logging" "^2.0.0" 122 | "avvio" "^7.1.2" 123 | "fast-json-stringify" "^2.5.2" 124 | "find-my-way" "^4.5.0" 125 | "flatstr" "^1.0.12" 126 | "light-my-request" "^4.2.0" 127 | "pino" "^6.13.0" 128 | "process-warning" "^1.0.0" 129 | "proxy-addr" "^2.0.7" 130 | "rfdc" "^1.1.4" 131 | "secure-json-parse" "^2.0.0" 132 | "semver" "^7.3.2" 133 | "tiny-lru" "^8.0.1" 134 | 135 | "fastq@^1.6.1": 136 | "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" 137 | "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" 138 | "version" "1.13.0" 139 | dependencies: 140 | "reusify" "^1.0.4" 141 | 142 | "find-my-way@^4.5.0": 143 | "integrity" "sha512-kE0u7sGoUFbMXcOG/xpkmz4sRLCklERnBcg7Ftuu1iAxsfEt2S46RLJ3Sq7vshsEy2wJT2hZxE58XZK27qa8kg==" 144 | "resolved" "https://registry.npmjs.org/find-my-way/-/find-my-way-4.5.1.tgz" 145 | "version" "4.5.1" 146 | dependencies: 147 | "fast-decode-uri-component" "^1.0.1" 148 | "fast-deep-equal" "^3.1.3" 149 | "safe-regex2" "^2.0.0" 150 | "semver-store" "^0.3.0" 151 | 152 | "flatstr@^1.0.12": 153 | "integrity" "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" 154 | "resolved" "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz" 155 | "version" "1.0.12" 156 | 157 | "forwarded@0.2.0": 158 | "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 159 | "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" 160 | "version" "0.2.0" 161 | 162 | "ipaddr.js@1.9.1": 163 | "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 164 | "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" 165 | "version" "1.9.1" 166 | 167 | "json-schema-traverse@^0.4.1": 168 | "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 169 | "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 170 | "version" "0.4.1" 171 | 172 | "json-schema-traverse@^1.0.0": 173 | "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" 174 | "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" 175 | "version" "1.0.0" 176 | 177 | "light-my-request@^4.2.0": 178 | "integrity" "sha512-l+zWk0HXGhGzY7IYTZnYEqIpj3Mpcyk2f8+FkKUyREywvaiWCf2jyQVxpasKRsploY/nVpoqTlxx72CIeQNcIQ==" 179 | "resolved" "https://registry.npmjs.org/light-my-request/-/light-my-request-4.10.1.tgz" 180 | "version" "4.10.1" 181 | dependencies: 182 | "ajv" "^8.1.0" 183 | "cookie" "^0.5.0" 184 | "process-warning" "^1.0.0" 185 | "set-cookie-parser" "^2.4.1" 186 | 187 | "lru-cache@^6.0.0": 188 | "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" 189 | "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" 190 | "version" "6.0.0" 191 | dependencies: 192 | "yallist" "^4.0.0" 193 | 194 | "ms@2.1.2": 195 | "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 196 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 197 | "version" "2.1.2" 198 | 199 | "pino-std-serializers@^3.1.0": 200 | "integrity" "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" 201 | "resolved" "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz" 202 | "version" "3.2.0" 203 | 204 | "pino@^6.13.0": 205 | "integrity" "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==" 206 | "resolved" "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz" 207 | "version" "6.14.0" 208 | dependencies: 209 | "fast-redact" "^3.0.0" 210 | "fast-safe-stringify" "^2.0.8" 211 | "flatstr" "^1.0.12" 212 | "pino-std-serializers" "^3.1.0" 213 | "process-warning" "^1.0.0" 214 | "quick-format-unescaped" "^4.0.3" 215 | "sonic-boom" "^1.0.2" 216 | 217 | "process-warning@^1.0.0": 218 | "integrity" "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" 219 | "resolved" "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz" 220 | "version" "1.0.0" 221 | 222 | "proxy-addr@^2.0.7": 223 | "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" 224 | "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" 225 | "version" "2.0.7" 226 | dependencies: 227 | "forwarded" "0.2.0" 228 | "ipaddr.js" "1.9.1" 229 | 230 | "punycode@^2.1.0": 231 | "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 232 | "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" 233 | "version" "2.1.1" 234 | 235 | "queue-microtask@^1.1.2": 236 | "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 237 | "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" 238 | "version" "1.2.3" 239 | 240 | "quick-format-unescaped@^4.0.3": 241 | "integrity" "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" 242 | "resolved" "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz" 243 | "version" "4.0.4" 244 | 245 | "require-from-string@^2.0.2": 246 | "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" 247 | "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" 248 | "version" "2.0.2" 249 | 250 | "ret@~0.2.0": 251 | "integrity" "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==" 252 | "resolved" "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz" 253 | "version" "0.2.2" 254 | 255 | "reusify@^1.0.4": 256 | "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 257 | "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" 258 | "version" "1.0.4" 259 | 260 | "rfdc@^1.1.4", "rfdc@^1.2.0": 261 | "integrity" "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" 262 | "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" 263 | "version" "1.3.0" 264 | 265 | "safe-regex2@^2.0.0": 266 | "integrity" "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==" 267 | "resolved" "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz" 268 | "version" "2.0.0" 269 | dependencies: 270 | "ret" "~0.2.0" 271 | 272 | "secure-json-parse@^2.0.0": 273 | "integrity" "sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==" 274 | "resolved" "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.4.0.tgz" 275 | "version" "2.4.0" 276 | 277 | "semver-store@^0.3.0": 278 | "integrity" "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==" 279 | "resolved" "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz" 280 | "version" "0.3.0" 281 | 282 | "semver@^7.3.2": 283 | "integrity" "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==" 284 | "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" 285 | "version" "7.3.7" 286 | dependencies: 287 | "lru-cache" "^6.0.0" 288 | 289 | "set-cookie-parser@^2.4.1": 290 | "integrity" "sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg==" 291 | "resolved" "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.4.8.tgz" 292 | "version" "2.4.8" 293 | 294 | "sonic-boom@^1.0.2": 295 | "integrity" "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==" 296 | "resolved" "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz" 297 | "version" "1.4.1" 298 | dependencies: 299 | "atomic-sleep" "^1.0.0" 300 | "flatstr" "^1.0.12" 301 | 302 | "string-similarity@^4.0.1": 303 | "integrity" "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" 304 | "resolved" "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz" 305 | "version" "4.0.4" 306 | 307 | "tiny-lru@^8.0.1": 308 | "integrity" "sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==" 309 | "resolved" "https://registry.npmjs.org/tiny-lru/-/tiny-lru-8.0.2.tgz" 310 | "version" "8.0.2" 311 | 312 | "uri-js@^4.2.2": 313 | "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" 314 | "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 315 | "version" "4.4.1" 316 | dependencies: 317 | "punycode" "^2.1.0" 318 | 319 | "yallist@^4.0.0": 320 | "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 321 | "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" 322 | "version" "4.0.0" 323 | --------------------------------------------------------------------------------