├── .gitignore ├── .npmignore ├── lib └── index.ts ├── package.json ├── pnpm-lock.yaml ├── readme.md ├── test └── playground.js ├── tsconfig.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | .pnpm-debug.log 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | lib 2 | test 3 | .pnpm-debug.log 4 | -------------------------------------------------------------------------------- /lib/index.ts: -------------------------------------------------------------------------------- 1 | import { app, protocol } from "electron"; 2 | import type { FastifyInstance, HTTPMethods } from "fastify"; 3 | 4 | export type RegisterProtocolOptions = { 5 | scheme: string; 6 | server: FastifyInstance; 7 | }; 8 | 9 | export async function registerProtocol( 10 | { scheme, server }: RegisterProtocolOptions, 11 | ) { 12 | await app.whenReady(); 13 | 14 | if (protocol.isProtocolRegistered(scheme)) { 15 | return; 16 | } 17 | 18 | protocol.registerBufferProtocol(scheme, async function (request, callback) { 19 | const url = request.url.replace(`${scheme}://`, ""); 20 | const response = await server.inject({ 21 | method: request.method as HTTPMethods, 22 | url, 23 | headers: request.headers, 24 | payload: request.uploadData, 25 | }); 26 | 27 | callback({ 28 | url, 29 | data: response.rawPayload, 30 | headers: response.headers as Record, 31 | statusCode: response.statusCode, 32 | referrer: request.referrer, 33 | }); 34 | }); 35 | } 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "electron-server", 3 | "version": "0.2.0", 4 | "description": "Use Fastify inside an Electron app without consuming a port", 5 | "homepage": "https://github.com/anonrig/electron-server#readme", 6 | "bugs": { 7 | "url": "https://github.com/anonrig/electron-server/issues" 8 | }, 9 | "keywords": [ 10 | "Electron.js", 11 | "Router", 12 | "HTTP Server", 13 | "Fastify" 14 | ], 15 | "author": "Yagiz Nizipli ", 16 | "license": "MIT", 17 | "files": [ 18 | "dist" 19 | ], 20 | "main": "./dist/electron-server.umd.js", 21 | "module": "./dist/electron-server.mjs", 22 | "types": "./dist/electron-server.d.ts", 23 | "exports": { 24 | ".": { 25 | "import": "./dist/electron-server.mjs", 26 | "require": "./dist/electron-server.umd.js" 27 | } 28 | }, 29 | "scripts": { 30 | "dev": "vite", 31 | "build": "vite build && tsc", 32 | "preview": "vite preview", 33 | "format": "rome format . --indent-style space --write", 34 | "test": "echo \"Error: no test specified\" && exit 1", 35 | "test:playground": "electron ./test/playground.js" 36 | }, 37 | "devDependencies": { 38 | "electron": "^19.0.8", 39 | "fastify": "^4.2.1", 40 | "rome": "0.7.0-next", 41 | "tsup": "^6.1.3", 42 | "typescript": "^4.7.4", 43 | "vite": "^3.0.0" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | electron: ^19.0.8 5 | fastify: ^4.2.1 6 | rome: 0.7.0-next 7 | tsup: ^6.1.3 8 | typescript: ^4.7.4 9 | vite: ^3.0.0 10 | 11 | devDependencies: 12 | electron: 19.0.8 13 | fastify: 4.2.1 14 | rome: 0.7.0-next 15 | tsup: 6.1.3_typescript@4.7.4 16 | typescript: 4.7.4 17 | vite: 3.0.0 18 | 19 | packages: 20 | 21 | /@electron/get/1.14.1: 22 | resolution: {integrity: sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==} 23 | engines: {node: '>=8.6'} 24 | dependencies: 25 | debug: 4.3.4 26 | env-paths: 2.2.1 27 | fs-extra: 8.1.0 28 | got: 9.6.0 29 | progress: 2.0.3 30 | semver: 6.3.0 31 | sumchecker: 3.0.1 32 | optionalDependencies: 33 | global-agent: 3.0.0 34 | global-tunnel-ng: 2.7.1 35 | transitivePeerDependencies: 36 | - supports-color 37 | dev: true 38 | 39 | /@fastify/ajv-compiler/3.1.2: 40 | resolution: {integrity: sha512-m2nzzQJeuVmeGOB9rnII9sZiY8AZ02a9WMQfMBfK1jxdFnxm3FPYKGbYpPjODj4halNogwpolyugbTNpnDCi0A==} 41 | dependencies: 42 | ajv: 8.11.0 43 | ajv-formats: 2.1.1 44 | fast-uri: 2.1.0 45 | dev: true 46 | 47 | /@fastify/deepmerge/1.1.0: 48 | resolution: {integrity: sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==} 49 | dev: true 50 | 51 | /@fastify/error/3.0.0: 52 | resolution: {integrity: sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==} 53 | dev: true 54 | 55 | /@fastify/fast-json-stringify-compiler/4.0.0: 56 | resolution: {integrity: sha512-9pCi6c6tmGt/qfuf2koZQuSIG6ckP9q3mz+JoMmAq9eQ4EtA92sWoK7E0LJUn2FFTS/hp5kag+4+dWsV5ZfcXg==} 57 | dependencies: 58 | fast-json-stringify: 5.1.0 59 | dev: true 60 | 61 | /@nodelib/fs.scandir/2.1.5: 62 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 63 | engines: {node: '>= 8'} 64 | dependencies: 65 | '@nodelib/fs.stat': 2.0.5 66 | run-parallel: 1.2.0 67 | dev: true 68 | 69 | /@nodelib/fs.stat/2.0.5: 70 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 71 | engines: {node: '>= 8'} 72 | dev: true 73 | 74 | /@nodelib/fs.walk/1.2.8: 75 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 76 | engines: {node: '>= 8'} 77 | dependencies: 78 | '@nodelib/fs.scandir': 2.1.5 79 | fastq: 1.13.0 80 | dev: true 81 | 82 | /@rometools/cli-darwin-arm64/0.7.0-next: 83 | resolution: {integrity: sha512-GMHYG5zQTGerQYue30m/E+WgpoPCxjLT7unCF1BH0jgFSk/fgkduMY9QP9EetNuBYxP/03XFZgXIZLmyw+Shgw==} 84 | cpu: [arm64] 85 | os: [darwin] 86 | requiresBuild: true 87 | dev: true 88 | optional: true 89 | 90 | /@rometools/cli-darwin-x64/0.7.0-next: 91 | resolution: {integrity: sha512-MyM/ncZKs3mIJ0vsSNyGNKGR31VroK2W7mHqPRVyuVkrmaJnDko8ymzH/JSrBdD7hj8KU3Ubpjn8YNuaMZvSYQ==} 92 | cpu: [x64] 93 | os: [darwin] 94 | requiresBuild: true 95 | dev: true 96 | optional: true 97 | 98 | /@rometools/cli-linux-arm64/0.7.0-next: 99 | resolution: {integrity: sha512-X3gCoT3GDioVkHsOfthMEoa1BR8lx1eXi7Sn0SeoHpw04UF+4WIn9Rjb62Fx/lIvRIdtxVj74pz14dxVQ/8HkQ==} 100 | cpu: [arm64] 101 | os: [linux] 102 | requiresBuild: true 103 | dev: true 104 | optional: true 105 | 106 | /@rometools/cli-linux-x64/0.7.0-next: 107 | resolution: {integrity: sha512-3kpV+cs2MgqUk8gjM1nPXmAoXErDGLEaK/q60c5FkNZQfuKxp6lN5sGF8cxJLbxggOaWXGfiIRoS9BBp9YIbEw==} 108 | cpu: [x64] 109 | os: [linux] 110 | requiresBuild: true 111 | dev: true 112 | optional: true 113 | 114 | /@rometools/cli-win32-arm64/0.7.0-next: 115 | resolution: {integrity: sha512-mOSg9CAeYgjK6W8e13epaOFeHPITvhAIj7wib8N8KtW8Mi8LgSdNCg3Pr1zRcN2F4ndDNfGZYiDf9A0Xl2N/Zw==} 116 | cpu: [arm64] 117 | os: [win32] 118 | requiresBuild: true 119 | dev: true 120 | optional: true 121 | 122 | /@rometools/cli-win32-x64/0.7.0-next: 123 | resolution: {integrity: sha512-JrsHY4IXd3SSF3TXwP15PloVXGR5A1or7yV9gFyrmmRVsyFpJYkAh4oU4IuAoqltPi9G4c3oEEQhN8yzYoUwKw==} 124 | cpu: [x64] 125 | os: [win32] 126 | requiresBuild: true 127 | dev: true 128 | optional: true 129 | 130 | /@sindresorhus/is/0.14.0: 131 | resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} 132 | engines: {node: '>=6'} 133 | dev: true 134 | 135 | /@szmarczak/http-timer/1.1.2: 136 | resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} 137 | engines: {node: '>=6'} 138 | dependencies: 139 | defer-to-connect: 1.1.3 140 | dev: true 141 | 142 | /@types/keyv/3.1.4: 143 | resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} 144 | dependencies: 145 | '@types/node': 16.11.43 146 | dev: true 147 | 148 | /@types/node/16.11.43: 149 | resolution: {integrity: sha512-GqWykok+3uocgfAJM8imbozrqLnPyTrpFlrryURQlw1EesPUCx5XxTiucWDSFF9/NUEXDuD4bnvHm8xfVGWTpQ==} 150 | dev: true 151 | 152 | /@types/responselike/1.0.0: 153 | resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} 154 | dependencies: 155 | '@types/node': 16.11.43 156 | dev: true 157 | 158 | /abort-controller/3.0.0: 159 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 160 | engines: {node: '>=6.5'} 161 | dependencies: 162 | event-target-shim: 5.0.1 163 | dev: true 164 | 165 | /abstract-logging/2.0.1: 166 | resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} 167 | dev: true 168 | 169 | /ajv-formats/2.1.1: 170 | resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 171 | peerDependenciesMeta: 172 | ajv: 173 | optional: true 174 | dependencies: 175 | ajv: 8.11.0 176 | dev: true 177 | 178 | /ajv/8.11.0: 179 | resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} 180 | dependencies: 181 | fast-deep-equal: 3.1.3 182 | json-schema-traverse: 1.0.0 183 | require-from-string: 2.0.2 184 | uri-js: 4.4.1 185 | dev: true 186 | 187 | /any-promise/1.3.0: 188 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 189 | dev: true 190 | 191 | /anymatch/3.1.2: 192 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 193 | engines: {node: '>= 8'} 194 | dependencies: 195 | normalize-path: 3.0.0 196 | picomatch: 2.3.1 197 | dev: true 198 | 199 | /archy/1.0.0: 200 | resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} 201 | dev: true 202 | 203 | /array-union/2.1.0: 204 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 205 | engines: {node: '>=8'} 206 | dev: true 207 | 208 | /atomic-sleep/1.0.0: 209 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 210 | engines: {node: '>=8.0.0'} 211 | dev: true 212 | 213 | /avvio/8.2.0: 214 | resolution: {integrity: sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==} 215 | dependencies: 216 | archy: 1.0.0 217 | debug: 4.3.4 218 | fastq: 1.13.0 219 | transitivePeerDependencies: 220 | - supports-color 221 | dev: true 222 | 223 | /balanced-match/1.0.2: 224 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 225 | dev: true 226 | 227 | /binary-extensions/2.2.0: 228 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 229 | engines: {node: '>=8'} 230 | dev: true 231 | 232 | /boolean/3.2.0: 233 | resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} 234 | dev: true 235 | optional: true 236 | 237 | /brace-expansion/1.1.11: 238 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 239 | dependencies: 240 | balanced-match: 1.0.2 241 | concat-map: 0.0.1 242 | dev: true 243 | 244 | /braces/3.0.2: 245 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 246 | engines: {node: '>=8'} 247 | dependencies: 248 | fill-range: 7.0.1 249 | dev: true 250 | 251 | /buffer-crc32/0.2.13: 252 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 253 | dev: true 254 | 255 | /buffer-from/1.1.2: 256 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 257 | dev: true 258 | 259 | /bundle-require/3.0.4_esbuild@0.14.49: 260 | resolution: {integrity: sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A==} 261 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 262 | peerDependencies: 263 | esbuild: '>=0.13' 264 | dependencies: 265 | esbuild: 0.14.49 266 | load-tsconfig: 0.2.3 267 | dev: true 268 | 269 | /cac/6.7.12: 270 | resolution: {integrity: sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA==} 271 | engines: {node: '>=8'} 272 | dev: true 273 | 274 | /cacheable-request/6.1.0: 275 | resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} 276 | engines: {node: '>=8'} 277 | dependencies: 278 | clone-response: 1.0.2 279 | get-stream: 5.2.0 280 | http-cache-semantics: 4.1.0 281 | keyv: 3.1.0 282 | lowercase-keys: 2.0.0 283 | normalize-url: 4.5.1 284 | responselike: 1.0.2 285 | dev: true 286 | 287 | /chokidar/3.5.3: 288 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 289 | engines: {node: '>= 8.10.0'} 290 | dependencies: 291 | anymatch: 3.1.2 292 | braces: 3.0.2 293 | glob-parent: 5.1.2 294 | is-binary-path: 2.1.0 295 | is-glob: 4.0.3 296 | normalize-path: 3.0.0 297 | readdirp: 3.6.0 298 | optionalDependencies: 299 | fsevents: 2.3.2 300 | dev: true 301 | 302 | /clone-response/1.0.2: 303 | resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} 304 | dependencies: 305 | mimic-response: 1.0.1 306 | dev: true 307 | 308 | /commander/4.1.1: 309 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 310 | engines: {node: '>= 6'} 311 | dev: true 312 | 313 | /concat-map/0.0.1: 314 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 315 | dev: true 316 | 317 | /concat-stream/1.6.2: 318 | resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} 319 | engines: {'0': node >= 0.8} 320 | dependencies: 321 | buffer-from: 1.1.2 322 | inherits: 2.0.4 323 | readable-stream: 2.3.7 324 | typedarray: 0.0.6 325 | dev: true 326 | 327 | /config-chain/1.1.13: 328 | resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} 329 | dependencies: 330 | ini: 1.3.8 331 | proto-list: 1.2.4 332 | dev: true 333 | optional: true 334 | 335 | /cookie/0.5.0: 336 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 337 | engines: {node: '>= 0.6'} 338 | dev: true 339 | 340 | /core-util-is/1.0.3: 341 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 342 | dev: true 343 | 344 | /cross-spawn/7.0.3: 345 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 346 | engines: {node: '>= 8'} 347 | dependencies: 348 | path-key: 3.1.1 349 | shebang-command: 2.0.0 350 | which: 2.0.2 351 | dev: true 352 | 353 | /debug/2.6.9: 354 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 355 | peerDependencies: 356 | supports-color: '*' 357 | peerDependenciesMeta: 358 | supports-color: 359 | optional: true 360 | dependencies: 361 | ms: 2.0.0 362 | dev: true 363 | 364 | /debug/4.3.4: 365 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 366 | engines: {node: '>=6.0'} 367 | peerDependencies: 368 | supports-color: '*' 369 | peerDependenciesMeta: 370 | supports-color: 371 | optional: true 372 | dependencies: 373 | ms: 2.1.2 374 | dev: true 375 | 376 | /decompress-response/3.3.0: 377 | resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} 378 | engines: {node: '>=4'} 379 | dependencies: 380 | mimic-response: 1.0.1 381 | dev: true 382 | 383 | /defer-to-connect/1.1.3: 384 | resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} 385 | dev: true 386 | 387 | /define-properties/1.1.4: 388 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 389 | engines: {node: '>= 0.4'} 390 | dependencies: 391 | has-property-descriptors: 1.0.0 392 | object-keys: 1.1.1 393 | dev: true 394 | optional: true 395 | 396 | /detect-node/2.1.0: 397 | resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} 398 | dev: true 399 | optional: true 400 | 401 | /dir-glob/3.0.1: 402 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 403 | engines: {node: '>=8'} 404 | dependencies: 405 | path-type: 4.0.0 406 | dev: true 407 | 408 | /duplexer3/0.1.5: 409 | resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} 410 | dev: true 411 | 412 | /electron/19.0.8: 413 | resolution: {integrity: sha512-OWK3P/NbDFfBUv+wbYv1/OV4jehY5DQPT7n1maQJfN9hsnrWTMktXS/bmS05eSUAjNAzHmKPKfiKH2c1Yr7nGw==} 414 | engines: {node: '>= 8.6'} 415 | hasBin: true 416 | requiresBuild: true 417 | dependencies: 418 | '@electron/get': 1.14.1 419 | '@types/node': 16.11.43 420 | extract-zip: 1.7.0 421 | transitivePeerDependencies: 422 | - supports-color 423 | dev: true 424 | 425 | /encodeurl/1.0.2: 426 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 427 | engines: {node: '>= 0.8'} 428 | dev: true 429 | optional: true 430 | 431 | /end-of-stream/1.4.4: 432 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 433 | dependencies: 434 | once: 1.4.0 435 | dev: true 436 | 437 | /env-paths/2.2.1: 438 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 439 | engines: {node: '>=6'} 440 | dev: true 441 | 442 | /es6-error/4.1.1: 443 | resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} 444 | dev: true 445 | optional: true 446 | 447 | /esbuild-android-64/0.14.49: 448 | resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==} 449 | engines: {node: '>=12'} 450 | cpu: [x64] 451 | os: [android] 452 | requiresBuild: true 453 | dev: true 454 | optional: true 455 | 456 | /esbuild-android-arm64/0.14.49: 457 | resolution: {integrity: sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==} 458 | engines: {node: '>=12'} 459 | cpu: [arm64] 460 | os: [android] 461 | requiresBuild: true 462 | dev: true 463 | optional: true 464 | 465 | /esbuild-darwin-64/0.14.49: 466 | resolution: {integrity: sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==} 467 | engines: {node: '>=12'} 468 | cpu: [x64] 469 | os: [darwin] 470 | requiresBuild: true 471 | dev: true 472 | optional: true 473 | 474 | /esbuild-darwin-arm64/0.14.49: 475 | resolution: {integrity: sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==} 476 | engines: {node: '>=12'} 477 | cpu: [arm64] 478 | os: [darwin] 479 | requiresBuild: true 480 | dev: true 481 | optional: true 482 | 483 | /esbuild-freebsd-64/0.14.49: 484 | resolution: {integrity: sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==} 485 | engines: {node: '>=12'} 486 | cpu: [x64] 487 | os: [freebsd] 488 | requiresBuild: true 489 | dev: true 490 | optional: true 491 | 492 | /esbuild-freebsd-arm64/0.14.49: 493 | resolution: {integrity: sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==} 494 | engines: {node: '>=12'} 495 | cpu: [arm64] 496 | os: [freebsd] 497 | requiresBuild: true 498 | dev: true 499 | optional: true 500 | 501 | /esbuild-linux-32/0.14.49: 502 | resolution: {integrity: sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==} 503 | engines: {node: '>=12'} 504 | cpu: [ia32] 505 | os: [linux] 506 | requiresBuild: true 507 | dev: true 508 | optional: true 509 | 510 | /esbuild-linux-64/0.14.49: 511 | resolution: {integrity: sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==} 512 | engines: {node: '>=12'} 513 | cpu: [x64] 514 | os: [linux] 515 | requiresBuild: true 516 | dev: true 517 | optional: true 518 | 519 | /esbuild-linux-arm/0.14.49: 520 | resolution: {integrity: sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==} 521 | engines: {node: '>=12'} 522 | cpu: [arm] 523 | os: [linux] 524 | requiresBuild: true 525 | dev: true 526 | optional: true 527 | 528 | /esbuild-linux-arm64/0.14.49: 529 | resolution: {integrity: sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==} 530 | engines: {node: '>=12'} 531 | cpu: [arm64] 532 | os: [linux] 533 | requiresBuild: true 534 | dev: true 535 | optional: true 536 | 537 | /esbuild-linux-mips64le/0.14.49: 538 | resolution: {integrity: sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==} 539 | engines: {node: '>=12'} 540 | cpu: [mips64el] 541 | os: [linux] 542 | requiresBuild: true 543 | dev: true 544 | optional: true 545 | 546 | /esbuild-linux-ppc64le/0.14.49: 547 | resolution: {integrity: sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==} 548 | engines: {node: '>=12'} 549 | cpu: [ppc64] 550 | os: [linux] 551 | requiresBuild: true 552 | dev: true 553 | optional: true 554 | 555 | /esbuild-linux-riscv64/0.14.49: 556 | resolution: {integrity: sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==} 557 | engines: {node: '>=12'} 558 | cpu: [riscv64] 559 | os: [linux] 560 | requiresBuild: true 561 | dev: true 562 | optional: true 563 | 564 | /esbuild-linux-s390x/0.14.49: 565 | resolution: {integrity: sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==} 566 | engines: {node: '>=12'} 567 | cpu: [s390x] 568 | os: [linux] 569 | requiresBuild: true 570 | dev: true 571 | optional: true 572 | 573 | /esbuild-netbsd-64/0.14.49: 574 | resolution: {integrity: sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==} 575 | engines: {node: '>=12'} 576 | cpu: [x64] 577 | os: [netbsd] 578 | requiresBuild: true 579 | dev: true 580 | optional: true 581 | 582 | /esbuild-openbsd-64/0.14.49: 583 | resolution: {integrity: sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==} 584 | engines: {node: '>=12'} 585 | cpu: [x64] 586 | os: [openbsd] 587 | requiresBuild: true 588 | dev: true 589 | optional: true 590 | 591 | /esbuild-sunos-64/0.14.49: 592 | resolution: {integrity: sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==} 593 | engines: {node: '>=12'} 594 | cpu: [x64] 595 | os: [sunos] 596 | requiresBuild: true 597 | dev: true 598 | optional: true 599 | 600 | /esbuild-windows-32/0.14.49: 601 | resolution: {integrity: sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==} 602 | engines: {node: '>=12'} 603 | cpu: [ia32] 604 | os: [win32] 605 | requiresBuild: true 606 | dev: true 607 | optional: true 608 | 609 | /esbuild-windows-64/0.14.49: 610 | resolution: {integrity: sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==} 611 | engines: {node: '>=12'} 612 | cpu: [x64] 613 | os: [win32] 614 | requiresBuild: true 615 | dev: true 616 | optional: true 617 | 618 | /esbuild-windows-arm64/0.14.49: 619 | resolution: {integrity: sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==} 620 | engines: {node: '>=12'} 621 | cpu: [arm64] 622 | os: [win32] 623 | requiresBuild: true 624 | dev: true 625 | optional: true 626 | 627 | /esbuild/0.14.49: 628 | resolution: {integrity: sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==} 629 | engines: {node: '>=12'} 630 | hasBin: true 631 | requiresBuild: true 632 | optionalDependencies: 633 | esbuild-android-64: 0.14.49 634 | esbuild-android-arm64: 0.14.49 635 | esbuild-darwin-64: 0.14.49 636 | esbuild-darwin-arm64: 0.14.49 637 | esbuild-freebsd-64: 0.14.49 638 | esbuild-freebsd-arm64: 0.14.49 639 | esbuild-linux-32: 0.14.49 640 | esbuild-linux-64: 0.14.49 641 | esbuild-linux-arm: 0.14.49 642 | esbuild-linux-arm64: 0.14.49 643 | esbuild-linux-mips64le: 0.14.49 644 | esbuild-linux-ppc64le: 0.14.49 645 | esbuild-linux-riscv64: 0.14.49 646 | esbuild-linux-s390x: 0.14.49 647 | esbuild-netbsd-64: 0.14.49 648 | esbuild-openbsd-64: 0.14.49 649 | esbuild-sunos-64: 0.14.49 650 | esbuild-windows-32: 0.14.49 651 | esbuild-windows-64: 0.14.49 652 | esbuild-windows-arm64: 0.14.49 653 | dev: true 654 | 655 | /escape-string-regexp/4.0.0: 656 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 657 | engines: {node: '>=10'} 658 | dev: true 659 | optional: true 660 | 661 | /event-target-shim/5.0.1: 662 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 663 | engines: {node: '>=6'} 664 | dev: true 665 | 666 | /execa/5.1.1: 667 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 668 | engines: {node: '>=10'} 669 | dependencies: 670 | cross-spawn: 7.0.3 671 | get-stream: 6.0.1 672 | human-signals: 2.1.0 673 | is-stream: 2.0.1 674 | merge-stream: 2.0.0 675 | npm-run-path: 4.0.1 676 | onetime: 5.1.2 677 | signal-exit: 3.0.7 678 | strip-final-newline: 2.0.0 679 | dev: true 680 | 681 | /extract-zip/1.7.0: 682 | resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} 683 | hasBin: true 684 | dependencies: 685 | concat-stream: 1.6.2 686 | debug: 2.6.9 687 | mkdirp: 0.5.6 688 | yauzl: 2.10.0 689 | transitivePeerDependencies: 690 | - supports-color 691 | dev: true 692 | 693 | /fast-deep-equal/3.1.3: 694 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 695 | dev: true 696 | 697 | /fast-glob/3.2.11: 698 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 699 | engines: {node: '>=8.6.0'} 700 | dependencies: 701 | '@nodelib/fs.stat': 2.0.5 702 | '@nodelib/fs.walk': 1.2.8 703 | glob-parent: 5.1.2 704 | merge2: 1.4.1 705 | micromatch: 4.0.5 706 | dev: true 707 | 708 | /fast-json-stringify/5.1.0: 709 | resolution: {integrity: sha512-IybGfbUc1DQgyrp9Myhwlr1Z5vjV37mBkdgcbuvsvUxv5fayG+cHlTQQpXH9nMwUPgp+5Y3RT7QDgx5zJ9NS3A==} 710 | dependencies: 711 | '@fastify/deepmerge': 1.1.0 712 | ajv: 8.11.0 713 | ajv-formats: 2.1.1 714 | fast-uri: 2.1.0 715 | rfdc: 1.3.0 716 | dev: true 717 | 718 | /fast-redact/3.1.1: 719 | resolution: {integrity: sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==} 720 | engines: {node: '>=6'} 721 | dev: true 722 | 723 | /fast-uri/2.1.0: 724 | resolution: {integrity: sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==} 725 | dev: true 726 | 727 | /fastify/4.2.1: 728 | resolution: {integrity: sha512-eyAWHN9+8IPTnhvGz+leseASGV/JZ75Y+jXXV7tid4awUjCMInY1gazZXuTD95xUW+Ve5vfgLjQ2i1i0/XJjdw==} 729 | dependencies: 730 | '@fastify/ajv-compiler': 3.1.2 731 | '@fastify/error': 3.0.0 732 | '@fastify/fast-json-stringify-compiler': 4.0.0 733 | abstract-logging: 2.0.1 734 | avvio: 8.2.0 735 | find-my-way: 7.0.0 736 | light-my-request: 5.0.0 737 | pino: 8.1.0 738 | process-warning: 2.0.0 739 | proxy-addr: 2.0.7 740 | rfdc: 1.3.0 741 | secure-json-parse: 2.4.0 742 | semver: 7.3.7 743 | tiny-lru: 8.0.2 744 | transitivePeerDependencies: 745 | - supports-color 746 | dev: true 747 | 748 | /fastq/1.13.0: 749 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 750 | dependencies: 751 | reusify: 1.0.4 752 | dev: true 753 | 754 | /fd-slicer/1.1.0: 755 | resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} 756 | dependencies: 757 | pend: 1.2.0 758 | dev: true 759 | 760 | /fill-range/7.0.1: 761 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 762 | engines: {node: '>=8'} 763 | dependencies: 764 | to-regex-range: 5.0.1 765 | dev: true 766 | 767 | /find-my-way/7.0.0: 768 | resolution: {integrity: sha512-NHVohYPYRXgj6jxXVRwm4iMQjA2ggJpyewHz7Nq7hvBnHoYJJIyHuxNzs8QLPTLQfoqxZzls2g6Zm79XMbhXjA==} 769 | engines: {node: '>=14'} 770 | dependencies: 771 | fast-deep-equal: 3.1.3 772 | safe-regex2: 2.0.0 773 | dev: true 774 | 775 | /forwarded/0.2.0: 776 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 777 | engines: {node: '>= 0.6'} 778 | dev: true 779 | 780 | /fs-extra/8.1.0: 781 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 782 | engines: {node: '>=6 <7 || >=8'} 783 | dependencies: 784 | graceful-fs: 4.2.10 785 | jsonfile: 4.0.0 786 | universalify: 0.1.2 787 | dev: true 788 | 789 | /fs.realpath/1.0.0: 790 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 791 | dev: true 792 | 793 | /fsevents/2.3.2: 794 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 795 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 796 | os: [darwin] 797 | requiresBuild: true 798 | dev: true 799 | optional: true 800 | 801 | /function-bind/1.1.1: 802 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 803 | dev: true 804 | 805 | /get-intrinsic/1.1.2: 806 | resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} 807 | dependencies: 808 | function-bind: 1.1.1 809 | has: 1.0.3 810 | has-symbols: 1.0.3 811 | dev: true 812 | optional: true 813 | 814 | /get-stream/4.1.0: 815 | resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} 816 | engines: {node: '>=6'} 817 | dependencies: 818 | pump: 3.0.0 819 | dev: true 820 | 821 | /get-stream/5.2.0: 822 | resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} 823 | engines: {node: '>=8'} 824 | dependencies: 825 | pump: 3.0.0 826 | dev: true 827 | 828 | /get-stream/6.0.1: 829 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 830 | engines: {node: '>=10'} 831 | dev: true 832 | 833 | /glob-parent/5.1.2: 834 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 835 | engines: {node: '>= 6'} 836 | dependencies: 837 | is-glob: 4.0.3 838 | dev: true 839 | 840 | /glob/7.1.6: 841 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 842 | dependencies: 843 | fs.realpath: 1.0.0 844 | inflight: 1.0.6 845 | inherits: 2.0.4 846 | minimatch: 3.1.2 847 | once: 1.4.0 848 | path-is-absolute: 1.0.1 849 | dev: true 850 | 851 | /global-agent/3.0.0: 852 | resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} 853 | engines: {node: '>=10.0'} 854 | requiresBuild: true 855 | dependencies: 856 | boolean: 3.2.0 857 | es6-error: 4.1.1 858 | matcher: 3.0.0 859 | roarr: 2.15.4 860 | semver: 7.3.7 861 | serialize-error: 7.0.1 862 | dev: true 863 | optional: true 864 | 865 | /global-tunnel-ng/2.7.1: 866 | resolution: {integrity: sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==} 867 | engines: {node: '>=0.10'} 868 | requiresBuild: true 869 | dependencies: 870 | encodeurl: 1.0.2 871 | lodash: 4.17.21 872 | npm-conf: 1.1.3 873 | tunnel: 0.0.6 874 | dev: true 875 | optional: true 876 | 877 | /globalthis/1.0.3: 878 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 879 | engines: {node: '>= 0.4'} 880 | dependencies: 881 | define-properties: 1.1.4 882 | dev: true 883 | optional: true 884 | 885 | /globby/11.1.0: 886 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 887 | engines: {node: '>=10'} 888 | dependencies: 889 | array-union: 2.1.0 890 | dir-glob: 3.0.1 891 | fast-glob: 3.2.11 892 | ignore: 5.2.0 893 | merge2: 1.4.1 894 | slash: 3.0.0 895 | dev: true 896 | 897 | /got/9.6.0: 898 | resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} 899 | engines: {node: '>=8.6'} 900 | dependencies: 901 | '@sindresorhus/is': 0.14.0 902 | '@szmarczak/http-timer': 1.1.2 903 | '@types/keyv': 3.1.4 904 | '@types/responselike': 1.0.0 905 | cacheable-request: 6.1.0 906 | decompress-response: 3.3.0 907 | duplexer3: 0.1.5 908 | get-stream: 4.1.0 909 | lowercase-keys: 1.0.1 910 | mimic-response: 1.0.1 911 | p-cancelable: 1.1.0 912 | to-readable-stream: 1.0.0 913 | url-parse-lax: 3.0.0 914 | dev: true 915 | 916 | /graceful-fs/4.2.10: 917 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 918 | dev: true 919 | 920 | /has-property-descriptors/1.0.0: 921 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 922 | dependencies: 923 | get-intrinsic: 1.1.2 924 | dev: true 925 | optional: true 926 | 927 | /has-symbols/1.0.3: 928 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 929 | engines: {node: '>= 0.4'} 930 | dev: true 931 | optional: true 932 | 933 | /has/1.0.3: 934 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 935 | engines: {node: '>= 0.4.0'} 936 | dependencies: 937 | function-bind: 1.1.1 938 | dev: true 939 | 940 | /http-cache-semantics/4.1.0: 941 | resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} 942 | dev: true 943 | 944 | /human-signals/2.1.0: 945 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 946 | engines: {node: '>=10.17.0'} 947 | dev: true 948 | 949 | /ignore/5.2.0: 950 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 951 | engines: {node: '>= 4'} 952 | dev: true 953 | 954 | /inflight/1.0.6: 955 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 956 | dependencies: 957 | once: 1.4.0 958 | wrappy: 1.0.2 959 | dev: true 960 | 961 | /inherits/2.0.4: 962 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 963 | dev: true 964 | 965 | /ini/1.3.8: 966 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 967 | dev: true 968 | optional: true 969 | 970 | /ipaddr.js/1.9.1: 971 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 972 | engines: {node: '>= 0.10'} 973 | dev: true 974 | 975 | /is-binary-path/2.1.0: 976 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 977 | engines: {node: '>=8'} 978 | dependencies: 979 | binary-extensions: 2.2.0 980 | dev: true 981 | 982 | /is-core-module/2.9.0: 983 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 984 | dependencies: 985 | has: 1.0.3 986 | dev: true 987 | 988 | /is-extglob/2.1.1: 989 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 990 | engines: {node: '>=0.10.0'} 991 | dev: true 992 | 993 | /is-glob/4.0.3: 994 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 995 | engines: {node: '>=0.10.0'} 996 | dependencies: 997 | is-extglob: 2.1.1 998 | dev: true 999 | 1000 | /is-number/7.0.0: 1001 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1002 | engines: {node: '>=0.12.0'} 1003 | dev: true 1004 | 1005 | /is-stream/2.0.1: 1006 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1007 | engines: {node: '>=8'} 1008 | dev: true 1009 | 1010 | /isarray/1.0.0: 1011 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 1012 | dev: true 1013 | 1014 | /isexe/2.0.0: 1015 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1016 | dev: true 1017 | 1018 | /joycon/3.1.1: 1019 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1020 | engines: {node: '>=10'} 1021 | dev: true 1022 | 1023 | /json-buffer/3.0.0: 1024 | resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} 1025 | dev: true 1026 | 1027 | /json-schema-traverse/1.0.0: 1028 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1029 | dev: true 1030 | 1031 | /json-stringify-safe/5.0.1: 1032 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 1033 | dev: true 1034 | optional: true 1035 | 1036 | /jsonfile/4.0.0: 1037 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 1038 | optionalDependencies: 1039 | graceful-fs: 4.2.10 1040 | dev: true 1041 | 1042 | /keyv/3.1.0: 1043 | resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} 1044 | dependencies: 1045 | json-buffer: 3.0.0 1046 | dev: true 1047 | 1048 | /light-my-request/5.0.0: 1049 | resolution: {integrity: sha512-0OPHKV+uHgBOnRokzL1LqeMCnSAo5l/rZS7kyB6G1I8qxGCvhXpq1M6WK565Y9A5CSn50l3DVaHnJ5FCdpguZQ==} 1050 | dependencies: 1051 | ajv: 8.11.0 1052 | cookie: 0.5.0 1053 | process-warning: 1.0.0 1054 | set-cookie-parser: 2.5.0 1055 | dev: true 1056 | 1057 | /lilconfig/2.0.6: 1058 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 1059 | engines: {node: '>=10'} 1060 | dev: true 1061 | 1062 | /lines-and-columns/1.2.4: 1063 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1064 | dev: true 1065 | 1066 | /load-tsconfig/0.2.3: 1067 | resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} 1068 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1069 | dev: true 1070 | 1071 | /lodash.sortby/4.7.0: 1072 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1073 | dev: true 1074 | 1075 | /lodash/4.17.21: 1076 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1077 | dev: true 1078 | optional: true 1079 | 1080 | /lowercase-keys/1.0.1: 1081 | resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} 1082 | engines: {node: '>=0.10.0'} 1083 | dev: true 1084 | 1085 | /lowercase-keys/2.0.0: 1086 | resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} 1087 | engines: {node: '>=8'} 1088 | dev: true 1089 | 1090 | /lru-cache/6.0.0: 1091 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1092 | engines: {node: '>=10'} 1093 | dependencies: 1094 | yallist: 4.0.0 1095 | dev: true 1096 | 1097 | /matcher/3.0.0: 1098 | resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} 1099 | engines: {node: '>=10'} 1100 | dependencies: 1101 | escape-string-regexp: 4.0.0 1102 | dev: true 1103 | optional: true 1104 | 1105 | /merge-stream/2.0.0: 1106 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1107 | dev: true 1108 | 1109 | /merge2/1.4.1: 1110 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1111 | engines: {node: '>= 8'} 1112 | dev: true 1113 | 1114 | /micromatch/4.0.5: 1115 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1116 | engines: {node: '>=8.6'} 1117 | dependencies: 1118 | braces: 3.0.2 1119 | picomatch: 2.3.1 1120 | dev: true 1121 | 1122 | /mimic-fn/2.1.0: 1123 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1124 | engines: {node: '>=6'} 1125 | dev: true 1126 | 1127 | /mimic-response/1.0.1: 1128 | resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} 1129 | engines: {node: '>=4'} 1130 | dev: true 1131 | 1132 | /minimatch/3.1.2: 1133 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1134 | dependencies: 1135 | brace-expansion: 1.1.11 1136 | dev: true 1137 | 1138 | /minimist/1.2.6: 1139 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 1140 | dev: true 1141 | 1142 | /mkdirp/0.5.6: 1143 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1144 | hasBin: true 1145 | dependencies: 1146 | minimist: 1.2.6 1147 | dev: true 1148 | 1149 | /ms/2.0.0: 1150 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1151 | dev: true 1152 | 1153 | /ms/2.1.2: 1154 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1155 | dev: true 1156 | 1157 | /mz/2.7.0: 1158 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1159 | dependencies: 1160 | any-promise: 1.3.0 1161 | object-assign: 4.1.1 1162 | thenify-all: 1.6.0 1163 | dev: true 1164 | 1165 | /nanoid/3.3.4: 1166 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1167 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1168 | hasBin: true 1169 | dev: true 1170 | 1171 | /normalize-path/3.0.0: 1172 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1173 | engines: {node: '>=0.10.0'} 1174 | dev: true 1175 | 1176 | /normalize-url/4.5.1: 1177 | resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} 1178 | engines: {node: '>=8'} 1179 | dev: true 1180 | 1181 | /npm-conf/1.1.3: 1182 | resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} 1183 | engines: {node: '>=4'} 1184 | dependencies: 1185 | config-chain: 1.1.13 1186 | pify: 3.0.0 1187 | dev: true 1188 | optional: true 1189 | 1190 | /npm-run-path/4.0.1: 1191 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1192 | engines: {node: '>=8'} 1193 | dependencies: 1194 | path-key: 3.1.1 1195 | dev: true 1196 | 1197 | /object-assign/4.1.1: 1198 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1199 | engines: {node: '>=0.10.0'} 1200 | dev: true 1201 | 1202 | /object-keys/1.1.1: 1203 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1204 | engines: {node: '>= 0.4'} 1205 | dev: true 1206 | optional: true 1207 | 1208 | /on-exit-leak-free/2.1.0: 1209 | resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} 1210 | dev: true 1211 | 1212 | /once/1.4.0: 1213 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1214 | dependencies: 1215 | wrappy: 1.0.2 1216 | dev: true 1217 | 1218 | /onetime/5.1.2: 1219 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1220 | engines: {node: '>=6'} 1221 | dependencies: 1222 | mimic-fn: 2.1.0 1223 | dev: true 1224 | 1225 | /p-cancelable/1.1.0: 1226 | resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} 1227 | engines: {node: '>=6'} 1228 | dev: true 1229 | 1230 | /path-is-absolute/1.0.1: 1231 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1232 | engines: {node: '>=0.10.0'} 1233 | dev: true 1234 | 1235 | /path-key/3.1.1: 1236 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1237 | engines: {node: '>=8'} 1238 | dev: true 1239 | 1240 | /path-parse/1.0.7: 1241 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1242 | dev: true 1243 | 1244 | /path-type/4.0.0: 1245 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1246 | engines: {node: '>=8'} 1247 | dev: true 1248 | 1249 | /pend/1.2.0: 1250 | resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} 1251 | dev: true 1252 | 1253 | /picocolors/1.0.0: 1254 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1255 | dev: true 1256 | 1257 | /picomatch/2.3.1: 1258 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1259 | engines: {node: '>=8.6'} 1260 | dev: true 1261 | 1262 | /pify/3.0.0: 1263 | resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} 1264 | engines: {node: '>=4'} 1265 | dev: true 1266 | optional: true 1267 | 1268 | /pino-abstract-transport/1.0.0: 1269 | resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} 1270 | dependencies: 1271 | readable-stream: 4.1.0 1272 | split2: 4.1.0 1273 | dev: true 1274 | 1275 | /pino-std-serializers/5.6.0: 1276 | resolution: {integrity: sha512-VdUXCw8gO+xhir7sFuoYSjTnzB+TMDGxhAC/ph3YS3sdHnXNdsK0wMtADNUltfeGkn2KDxEM21fnjF3RwXyC8A==} 1277 | dev: true 1278 | 1279 | /pino/8.1.0: 1280 | resolution: {integrity: sha512-53jlxs+02UNTtF1XwVWfa0dHipBiM5GK73XhkHn8M2hUl9y3L94dNwB8BwQhpd5WdHjBkyJiO7v0LRt4SGgsPg==} 1281 | hasBin: true 1282 | dependencies: 1283 | atomic-sleep: 1.0.0 1284 | fast-redact: 3.1.1 1285 | on-exit-leak-free: 2.1.0 1286 | pino-abstract-transport: 1.0.0 1287 | pino-std-serializers: 5.6.0 1288 | process-warning: 2.0.0 1289 | quick-format-unescaped: 4.0.4 1290 | real-require: 0.1.0 1291 | safe-stable-stringify: 2.3.1 1292 | sonic-boom: 3.0.0 1293 | thread-stream: 1.0.1 1294 | dev: true 1295 | 1296 | /pirates/4.0.5: 1297 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 1298 | engines: {node: '>= 6'} 1299 | dev: true 1300 | 1301 | /postcss-load-config/3.1.4: 1302 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1303 | engines: {node: '>= 10'} 1304 | peerDependencies: 1305 | postcss: '>=8.0.9' 1306 | ts-node: '>=9.0.0' 1307 | peerDependenciesMeta: 1308 | postcss: 1309 | optional: true 1310 | ts-node: 1311 | optional: true 1312 | dependencies: 1313 | lilconfig: 2.0.6 1314 | yaml: 1.10.2 1315 | dev: true 1316 | 1317 | /postcss/8.4.14: 1318 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 1319 | engines: {node: ^10 || ^12 || >=14} 1320 | dependencies: 1321 | nanoid: 3.3.4 1322 | picocolors: 1.0.0 1323 | source-map-js: 1.0.2 1324 | dev: true 1325 | 1326 | /prepend-http/2.0.0: 1327 | resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} 1328 | engines: {node: '>=4'} 1329 | dev: true 1330 | 1331 | /process-nextick-args/2.0.1: 1332 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 1333 | dev: true 1334 | 1335 | /process-warning/1.0.0: 1336 | resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} 1337 | dev: true 1338 | 1339 | /process-warning/2.0.0: 1340 | resolution: {integrity: sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==} 1341 | dev: true 1342 | 1343 | /progress/2.0.3: 1344 | resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} 1345 | engines: {node: '>=0.4.0'} 1346 | dev: true 1347 | 1348 | /proto-list/1.2.4: 1349 | resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} 1350 | dev: true 1351 | optional: true 1352 | 1353 | /proxy-addr/2.0.7: 1354 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1355 | engines: {node: '>= 0.10'} 1356 | dependencies: 1357 | forwarded: 0.2.0 1358 | ipaddr.js: 1.9.1 1359 | dev: true 1360 | 1361 | /pump/3.0.0: 1362 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 1363 | dependencies: 1364 | end-of-stream: 1.4.4 1365 | once: 1.4.0 1366 | dev: true 1367 | 1368 | /punycode/2.1.1: 1369 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1370 | engines: {node: '>=6'} 1371 | dev: true 1372 | 1373 | /queue-microtask/1.2.3: 1374 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1375 | dev: true 1376 | 1377 | /quick-format-unescaped/4.0.4: 1378 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 1379 | dev: true 1380 | 1381 | /readable-stream/2.3.7: 1382 | resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} 1383 | dependencies: 1384 | core-util-is: 1.0.3 1385 | inherits: 2.0.4 1386 | isarray: 1.0.0 1387 | process-nextick-args: 2.0.1 1388 | safe-buffer: 5.1.2 1389 | string_decoder: 1.1.1 1390 | util-deprecate: 1.0.2 1391 | dev: true 1392 | 1393 | /readable-stream/4.1.0: 1394 | resolution: {integrity: sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw==} 1395 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1396 | dependencies: 1397 | abort-controller: 3.0.0 1398 | dev: true 1399 | 1400 | /readdirp/3.6.0: 1401 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1402 | engines: {node: '>=8.10.0'} 1403 | dependencies: 1404 | picomatch: 2.3.1 1405 | dev: true 1406 | 1407 | /real-require/0.1.0: 1408 | resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} 1409 | engines: {node: '>= 12.13.0'} 1410 | dev: true 1411 | 1412 | /require-from-string/2.0.2: 1413 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1414 | engines: {node: '>=0.10.0'} 1415 | dev: true 1416 | 1417 | /resolve-from/5.0.0: 1418 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1419 | engines: {node: '>=8'} 1420 | dev: true 1421 | 1422 | /resolve/1.22.1: 1423 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1424 | hasBin: true 1425 | dependencies: 1426 | is-core-module: 2.9.0 1427 | path-parse: 1.0.7 1428 | supports-preserve-symlinks-flag: 1.0.0 1429 | dev: true 1430 | 1431 | /responselike/1.0.2: 1432 | resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} 1433 | dependencies: 1434 | lowercase-keys: 1.0.1 1435 | dev: true 1436 | 1437 | /ret/0.2.2: 1438 | resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} 1439 | engines: {node: '>=4'} 1440 | dev: true 1441 | 1442 | /reusify/1.0.4: 1443 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1444 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1445 | dev: true 1446 | 1447 | /rfdc/1.3.0: 1448 | resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 1449 | dev: true 1450 | 1451 | /roarr/2.15.4: 1452 | resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} 1453 | engines: {node: '>=8.0'} 1454 | dependencies: 1455 | boolean: 3.2.0 1456 | detect-node: 2.1.0 1457 | globalthis: 1.0.3 1458 | json-stringify-safe: 5.0.1 1459 | semver-compare: 1.0.0 1460 | sprintf-js: 1.1.2 1461 | dev: true 1462 | optional: true 1463 | 1464 | /rollup/2.76.0: 1465 | resolution: {integrity: sha512-9jwRIEY1jOzKLj3nsY/yot41r19ITdQrhs+q3ggNWhr9TQgduHqANvPpS32RNpzGklJu3G1AJfvlZLi/6wFgWA==} 1466 | engines: {node: '>=10.0.0'} 1467 | hasBin: true 1468 | optionalDependencies: 1469 | fsevents: 2.3.2 1470 | dev: true 1471 | 1472 | /rome/0.7.0-next: 1473 | resolution: {integrity: sha512-bbzyM95xMGzFCn+74tXyFJ39RGifEbGYFz0bB+SRtPSx0DZfpkHjcmqX9UiuMtWAkdQnWFG2rsrivQnDqqxTPA==} 1474 | engines: {node: '>=14.18.0'} 1475 | hasBin: true 1476 | requiresBuild: true 1477 | optionalDependencies: 1478 | '@rometools/cli-darwin-arm64': 0.7.0-next 1479 | '@rometools/cli-darwin-x64': 0.7.0-next 1480 | '@rometools/cli-linux-arm64': 0.7.0-next 1481 | '@rometools/cli-linux-x64': 0.7.0-next 1482 | '@rometools/cli-win32-arm64': 0.7.0-next 1483 | '@rometools/cli-win32-x64': 0.7.0-next 1484 | dev: true 1485 | 1486 | /run-parallel/1.2.0: 1487 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1488 | dependencies: 1489 | queue-microtask: 1.2.3 1490 | dev: true 1491 | 1492 | /safe-buffer/5.1.2: 1493 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1494 | dev: true 1495 | 1496 | /safe-regex2/2.0.0: 1497 | resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} 1498 | dependencies: 1499 | ret: 0.2.2 1500 | dev: true 1501 | 1502 | /safe-stable-stringify/2.3.1: 1503 | resolution: {integrity: sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==} 1504 | engines: {node: '>=10'} 1505 | dev: true 1506 | 1507 | /secure-json-parse/2.4.0: 1508 | resolution: {integrity: sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==} 1509 | dev: true 1510 | 1511 | /semver-compare/1.0.0: 1512 | resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} 1513 | dev: true 1514 | optional: true 1515 | 1516 | /semver/6.3.0: 1517 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1518 | hasBin: true 1519 | dev: true 1520 | 1521 | /semver/7.3.7: 1522 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 1523 | engines: {node: '>=10'} 1524 | hasBin: true 1525 | dependencies: 1526 | lru-cache: 6.0.0 1527 | dev: true 1528 | 1529 | /serialize-error/7.0.1: 1530 | resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} 1531 | engines: {node: '>=10'} 1532 | dependencies: 1533 | type-fest: 0.13.1 1534 | dev: true 1535 | optional: true 1536 | 1537 | /set-cookie-parser/2.5.0: 1538 | resolution: {integrity: sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w==} 1539 | dev: true 1540 | 1541 | /shebang-command/2.0.0: 1542 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1543 | engines: {node: '>=8'} 1544 | dependencies: 1545 | shebang-regex: 3.0.0 1546 | dev: true 1547 | 1548 | /shebang-regex/3.0.0: 1549 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1550 | engines: {node: '>=8'} 1551 | dev: true 1552 | 1553 | /signal-exit/3.0.7: 1554 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1555 | dev: true 1556 | 1557 | /slash/3.0.0: 1558 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1559 | engines: {node: '>=8'} 1560 | dev: true 1561 | 1562 | /sonic-boom/3.0.0: 1563 | resolution: {integrity: sha512-p5DiZOZHbJ2ZO5MADczp5qrfOd3W5Vr2vHxfCpe7G4AzPwVOweIjbfgku8wSQUuk+Y5Yuo8W7JqRe6XKmKistg==} 1564 | dependencies: 1565 | atomic-sleep: 1.0.0 1566 | dev: true 1567 | 1568 | /source-map-js/1.0.2: 1569 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1570 | engines: {node: '>=0.10.0'} 1571 | dev: true 1572 | 1573 | /source-map/0.8.0-beta.0: 1574 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1575 | engines: {node: '>= 8'} 1576 | dependencies: 1577 | whatwg-url: 7.1.0 1578 | dev: true 1579 | 1580 | /split2/4.1.0: 1581 | resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} 1582 | engines: {node: '>= 10.x'} 1583 | dev: true 1584 | 1585 | /sprintf-js/1.1.2: 1586 | resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} 1587 | dev: true 1588 | optional: true 1589 | 1590 | /string_decoder/1.1.1: 1591 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 1592 | dependencies: 1593 | safe-buffer: 5.1.2 1594 | dev: true 1595 | 1596 | /strip-final-newline/2.0.0: 1597 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1598 | engines: {node: '>=6'} 1599 | dev: true 1600 | 1601 | /sucrase/3.23.0: 1602 | resolution: {integrity: sha512-xgC1xboStzGhCnRywlBf/DLmkC+SkdAKqrNCDsxGrzM0phR5oUxoFKiQNrsc2D8wDdAm03iLbSZqjHDddo3IzQ==} 1603 | engines: {node: '>=8'} 1604 | hasBin: true 1605 | dependencies: 1606 | commander: 4.1.1 1607 | glob: 7.1.6 1608 | lines-and-columns: 1.2.4 1609 | mz: 2.7.0 1610 | pirates: 4.0.5 1611 | ts-interface-checker: 0.1.13 1612 | dev: true 1613 | 1614 | /sumchecker/3.0.1: 1615 | resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} 1616 | engines: {node: '>= 8.0'} 1617 | dependencies: 1618 | debug: 4.3.4 1619 | transitivePeerDependencies: 1620 | - supports-color 1621 | dev: true 1622 | 1623 | /supports-preserve-symlinks-flag/1.0.0: 1624 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1625 | engines: {node: '>= 0.4'} 1626 | dev: true 1627 | 1628 | /thenify-all/1.6.0: 1629 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1630 | engines: {node: '>=0.8'} 1631 | dependencies: 1632 | thenify: 3.3.1 1633 | dev: true 1634 | 1635 | /thenify/3.3.1: 1636 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1637 | dependencies: 1638 | any-promise: 1.3.0 1639 | dev: true 1640 | 1641 | /thread-stream/1.0.1: 1642 | resolution: {integrity: sha512-JuZyfzx81e5MBk8uIr8ZH76bXyjEQvbRDEkSdlV1JFBdq/rbby2RuvzBYlTBd/xCljxy6lPxrTLXzB9Jl1bNrw==} 1643 | dependencies: 1644 | real-require: 0.1.0 1645 | dev: true 1646 | 1647 | /tiny-lru/8.0.2: 1648 | resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} 1649 | engines: {node: '>=6'} 1650 | dev: true 1651 | 1652 | /to-readable-stream/1.0.0: 1653 | resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} 1654 | engines: {node: '>=6'} 1655 | dev: true 1656 | 1657 | /to-regex-range/5.0.1: 1658 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1659 | engines: {node: '>=8.0'} 1660 | dependencies: 1661 | is-number: 7.0.0 1662 | dev: true 1663 | 1664 | /tr46/1.0.1: 1665 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1666 | dependencies: 1667 | punycode: 2.1.1 1668 | dev: true 1669 | 1670 | /tree-kill/1.2.2: 1671 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1672 | hasBin: true 1673 | dev: true 1674 | 1675 | /ts-interface-checker/0.1.13: 1676 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1677 | dev: true 1678 | 1679 | /tsup/6.1.3_typescript@4.7.4: 1680 | resolution: {integrity: sha512-eRpBnbfpDFng+EJNTQ90N7QAf4HAGGC7O3buHIjroKWK7D1ibk9/YnR/3cS8HsMU5T+6Oi+cnF+yU5WmCnB//Q==} 1681 | engines: {node: '>=14'} 1682 | hasBin: true 1683 | peerDependencies: 1684 | '@swc/core': ^1 1685 | postcss: ^8.4.12 1686 | typescript: ^4.1.0 1687 | peerDependenciesMeta: 1688 | '@swc/core': 1689 | optional: true 1690 | postcss: 1691 | optional: true 1692 | typescript: 1693 | optional: true 1694 | dependencies: 1695 | bundle-require: 3.0.4_esbuild@0.14.49 1696 | cac: 6.7.12 1697 | chokidar: 3.5.3 1698 | debug: 4.3.4 1699 | esbuild: 0.14.49 1700 | execa: 5.1.1 1701 | globby: 11.1.0 1702 | joycon: 3.1.1 1703 | postcss-load-config: 3.1.4 1704 | resolve-from: 5.0.0 1705 | rollup: 2.76.0 1706 | source-map: 0.8.0-beta.0 1707 | sucrase: 3.23.0 1708 | tree-kill: 1.2.2 1709 | typescript: 4.7.4 1710 | transitivePeerDependencies: 1711 | - supports-color 1712 | - ts-node 1713 | dev: true 1714 | 1715 | /tunnel/0.0.6: 1716 | resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} 1717 | engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} 1718 | dev: true 1719 | optional: true 1720 | 1721 | /type-fest/0.13.1: 1722 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 1723 | engines: {node: '>=10'} 1724 | dev: true 1725 | optional: true 1726 | 1727 | /typedarray/0.0.6: 1728 | resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} 1729 | dev: true 1730 | 1731 | /typescript/4.7.4: 1732 | resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} 1733 | engines: {node: '>=4.2.0'} 1734 | hasBin: true 1735 | dev: true 1736 | 1737 | /universalify/0.1.2: 1738 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 1739 | engines: {node: '>= 4.0.0'} 1740 | dev: true 1741 | 1742 | /uri-js/4.4.1: 1743 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1744 | dependencies: 1745 | punycode: 2.1.1 1746 | dev: true 1747 | 1748 | /url-parse-lax/3.0.0: 1749 | resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} 1750 | engines: {node: '>=4'} 1751 | dependencies: 1752 | prepend-http: 2.0.0 1753 | dev: true 1754 | 1755 | /util-deprecate/1.0.2: 1756 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1757 | dev: true 1758 | 1759 | /vite/3.0.0: 1760 | resolution: {integrity: sha512-M7phQhY3+fRZa0H+1WzI6N+/onruwPTBTMvaj7TzgZ0v2TE+N2sdLKxJOfOv9CckDWt5C4HmyQP81xB4dwRKzA==} 1761 | engines: {node: '>=14.18.0'} 1762 | hasBin: true 1763 | peerDependencies: 1764 | less: '*' 1765 | sass: '*' 1766 | stylus: '*' 1767 | terser: ^5.4.0 1768 | peerDependenciesMeta: 1769 | less: 1770 | optional: true 1771 | sass: 1772 | optional: true 1773 | stylus: 1774 | optional: true 1775 | terser: 1776 | optional: true 1777 | dependencies: 1778 | esbuild: 0.14.49 1779 | postcss: 8.4.14 1780 | resolve: 1.22.1 1781 | rollup: 2.76.0 1782 | optionalDependencies: 1783 | fsevents: 2.3.2 1784 | dev: true 1785 | 1786 | /webidl-conversions/4.0.2: 1787 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1788 | dev: true 1789 | 1790 | /whatwg-url/7.1.0: 1791 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1792 | dependencies: 1793 | lodash.sortby: 4.7.0 1794 | tr46: 1.0.1 1795 | webidl-conversions: 4.0.2 1796 | dev: true 1797 | 1798 | /which/2.0.2: 1799 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1800 | engines: {node: '>= 8'} 1801 | hasBin: true 1802 | dependencies: 1803 | isexe: 2.0.0 1804 | dev: true 1805 | 1806 | /wrappy/1.0.2: 1807 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1808 | dev: true 1809 | 1810 | /yallist/4.0.0: 1811 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1812 | dev: true 1813 | 1814 | /yaml/1.10.2: 1815 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1816 | engines: {node: '>= 6'} 1817 | dev: true 1818 | 1819 | /yauzl/2.10.0: 1820 | resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} 1821 | dependencies: 1822 | buffer-crc32: 0.2.13 1823 | fd-slicer: 1.1.0 1824 | dev: true 1825 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ## Electron Server 2 | 3 | A super-fast and easy-to-use library to use Fastify, and it's ecosystem inside an Electron application without the need of exposing (and consuming) a port. 4 | 5 | ### Use-cases 6 | 7 | - Running GraphQL in your Electron application. 8 | - Running Next.js using `fastify-nextjs` to create `chrome://extensions` like pages for your Electron app 9 | - Communication between main and renderer process using HTTP methods 10 | - Static file (assets) sharing between renderer process and the main process 11 | 12 | 13 | ### Install 14 | 15 | To install `electron-server` in an existing project as a dependency: 16 | 17 | Install with npm: 18 | ```sh 19 | npm i electron-server 20 | ``` 21 | Install with pnpm: 22 | ```sh 23 | pnpm add electron-server 24 | ``` 25 | 26 | ### Example 27 | 28 | ```js 29 | // Require fastify and instantiate it. 30 | const Fastify = require('fastify') 31 | const server = Fastify({ ignoreTrailingSlash: true }) 32 | server.get('/hello-world', () => ({ hello: 'world' })) 33 | 34 | // Require registerProtocol and call it on your root file. 35 | const { registerProtocol } = require('electron-server') 36 | 37 | // Register custom scheme to Electron 38 | registerProtocol({ 39 | scheme: 'my-scheme', 40 | server, 41 | }) 42 | 43 | app.whenReady().then(() => { 44 | const win = new BrowserWindow({ 45 | width: 800, 46 | height: 600, 47 | }); 48 | 49 | // Visit the custom scheme 50 | win.loadURL("my-protocol://hello-world"); 51 | }); 52 | ``` 53 | 54 | Do you want to run the example? Head to the Playground. 56 | -------------------------------------------------------------------------------- /test/playground.js: -------------------------------------------------------------------------------- 1 | const { app, BrowserWindow } = require("electron"); 2 | const path = require("node:path"); 3 | const { registerProtocol } = require("../dist/electron-server.umd"); 4 | const fastify = require("fastify"); 5 | 6 | const server = fastify({ 7 | ignoreTrailingSlash: true, 8 | }); 9 | server.get( 10 | "/hello-world", 11 | (request, reply) => 12 | reply.type("text/html").send( 13 | 'Get status', 14 | ), 15 | ); 16 | server.get("/get-status", (request, reply) => reply.send({ status: true })); 17 | 18 | registerProtocol({ 19 | scheme: "my-protocol", 20 | server, 21 | }); 22 | 23 | app.whenReady().then(() => { 24 | const win = new BrowserWindow({ 25 | width: 800, 26 | height: 600, 27 | }); 28 | 29 | win.loadURL("my-protocol://hello-world"); 30 | }); 31 | 32 | app.on("window-all-closed", () => { 33 | if (process.platform !== "darwin") { 34 | app.quit(); 35 | } 36 | }); 37 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "moduleResolution": "node", 6 | "strict": true, 7 | "jsx": "preserve", 8 | "noUnusedLocals": true, 9 | "noUnusedParameters": true, 10 | "resolveJsonModule": true, 11 | "sourceMap": true, 12 | "lib": ["esnext", "dom"], 13 | "types": ["vite/client"], 14 | "declaration": true, 15 | "outDir": "dist", 16 | "declarationMap": true, 17 | "emitDeclarationOnly": true, 18 | "outFile": "dist/electron-server" 19 | }, 20 | "include": ["lib/**/*.ts", "lib/**/*.d.ts", "lib/**/*.tsx"], 21 | "exclude": ["node_modules", "dist"] 22 | } -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import { resolve } from "node:path"; 3 | 4 | export default defineConfig({ 5 | build: { 6 | sourcemap: true, 7 | lib: { 8 | entry: resolve(__dirname, "lib/index.ts"), 9 | name: "electron-server", 10 | }, 11 | rollupOptions: { 12 | external: ["electron"], 13 | output: { 14 | globals: { 15 | electron: "electron", 16 | }, 17 | }, 18 | plugins: [], 19 | }, 20 | }, 21 | optimizeDeps: { 22 | include: ["electron"], 23 | }, 24 | }); 25 | --------------------------------------------------------------------------------