├── .github └── workflows │ └── node.js.yml ├── .gitignore ├── .npmignore ├── .npmrc ├── LICENSE ├── README.md ├── cjs └── package.json ├── es.js ├── esm └── index.js ├── package-lock.json ├── package.json ├── rollup └── es.config.js ├── test ├── index.html ├── index.js └── package.json ├── tsconfig.json └── types └── index.d.ts /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: build 5 | 6 | on: [push, pull_request] 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [20] 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v2 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | cache: 'npm' 24 | - run: npm ci 25 | - run: npm run build --if-present 26 | - run: npm test 27 | - run: npm run coverage --if-present 28 | - name: Coveralls 29 | uses: coverallsapp/github-action@master 30 | with: 31 | github-token: ${{ secrets.GITHUB_TOKEN }} 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .nyc_output 3 | v8.log 4 | coverage/ 5 | node_modules/ 6 | cjs/* 7 | !cjs/package.json 8 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .nyc_output 3 | .eslintrc.json 4 | .github/ 5 | .travis.yml 6 | v8.log 7 | coverage/ 8 | node_modules/ 9 | rollup/ 10 | test/ 11 | tsconfig.json 12 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | package-lock=true 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright © 2024, Andrea Giammarchi, @WebReflection 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the “Software”), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software 10 | is furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included 13 | in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21 | IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # fetch 2 | 3 | **Social Media Photo by [Anthony Duran](https://unsplash.com/@dogflirt) on [Unsplash](https://unsplash.com/)** 4 | 5 | [![build](https://github.com/WebReflection/fetch/actions/workflows/node.js.yml/badge.svg)](https://github.com/WebReflection/fetch/actions/workflows/node.js.yml) [![Coverage Status](https://coveralls.io/repos/github/WebReflection/fetch/badge.svg?branch=main)](https://coveralls.io/github/WebReflection/fetch?branch=main) 6 | 7 | A fetch with Response abilities. 8 | 9 | (... see what I did there?) 10 | 11 | ```js 12 | import fetch from '@webreflection/fetch'; 13 | 14 | // await directly Response methods or accessors 15 | console.log(await fetch('https://google.com').text()); 16 | console.log(await fetch('https://google.com').ok); 17 | 18 | // all other Promise methods just work 19 | console.log(await fetch('https://google.com').then(r => r.ok)); 20 | ``` 21 | 22 | The export is simply a Proxy that forwards to the Response any explicit intent, meaning: 23 | 24 | * a `fetch(url, ...init)` returns exactly a `fetch(url, ...init)` reference 25 | * you can do everything you could do already with `fetch` ... **this is fetch** indeed! 26 | * you can use this module as drop-in replacement in your current code though 27 | * you can eventually incrementally use its features *if* and/or *when* needed 28 | * if any `Response.prototype` known *key* is directly accessed, such property or method is forwarded directly to the *response* once the *fetch* is resolved 29 | * as the goal is to shortcut the *response* boilerplate, `Response.prototype` keys prevail over `Promise.prototype` so if your argument is that `Symbol.toStringTag` returned the response one, I am afraid that's meant by design so that unless *Promise* API introduces a conflicting entry name with *Response* API, this module actually requires zero maintainability and it's future-friendly with API changes and whatnot 30 | * if you want to deal with `status` or `ok` or `headers` you still can do that: 31 | * reference `const req = fetch(url, ...init)` 32 | * use `try/catch` around `req.json()` or `req.text()` or any other forwarded method 33 | * use `const { status, headers } = await req` or `const status = await req.status` or any other way you like to introspect the failure 34 | 35 | ```js 36 | // alternatively ... 37 | const { ok, text } = await fetch(URL); 38 | if (ok) console.log(await text()); 39 | ``` 40 | 41 | If none of this is interesting to you though, we're good! You can move on happily ever after 👋 42 | -------------------------------------------------------------------------------- /cjs/package.json: -------------------------------------------------------------------------------- 1 | {"type":"commonjs"} -------------------------------------------------------------------------------- /es.js: -------------------------------------------------------------------------------- 1 | const e=Object.getOwnPropertyDescriptors(Response.prototype),t=e=>"function"==typeof e,o={get:(o,n)=>e.hasOwnProperty(n)?((e,o,{get:n,value:r})=>n||!t(r)?e.then((e=>e[o])):(...t)=>e.then((e=>e[o](...t))))(o,n,e[n]):((e,o)=>t(o)?o.bind(e):o)(o,o[n])};var n=(e,...t)=>new Proxy(fetch(e,...t),o);export{n as default}; 2 | -------------------------------------------------------------------------------- /esm/index.js: -------------------------------------------------------------------------------- 1 | // a bit terser code than I usually write but it's 10 LOC within 80 cols 2 | // if you are struggling to follow the code you can replace 1-char 3 | // references around with the following one, hoping that helps :-) 4 | 5 | // d => descriptors 6 | // k => key 7 | // p => promise 8 | // r => response 9 | 10 | const d = Object.getOwnPropertyDescriptors(Response.prototype); 11 | 12 | const isFunction = value => typeof value === 'function'; 13 | 14 | const bypass = (p, k, { get, value }) => get || !isFunction(value) ? 15 | p.then(r => r[k]) : 16 | (...args) => p.then(r => r[k](...args)); 17 | 18 | const direct = (p, value) => isFunction(value) ? value.bind(p) : value; 19 | 20 | const handler = { 21 | get: (p, k) => d.hasOwnProperty(k) ? bypass(p, k, d[k]) : direct(p, p[k]) 22 | }; 23 | 24 | /** 25 | * @param {RequestInfo | URL} input 26 | * @param {...RequestInit} init 27 | * @returns {Promise & Response} 28 | */ 29 | export default (input, ...init) => new Proxy(fetch(input, ...init), handler); 30 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@webreflection/fetch", 3 | "version": "0.1.5", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@webreflection/fetch", 9 | "version": "0.1.5", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@rollup/plugin-node-resolve": "^15.2.3", 13 | "@rollup/plugin-terser": "^0.4.4", 14 | "ascjs": "^6.0.3", 15 | "c8": "^9.1.0", 16 | "rollup": "^4.10.0", 17 | "typescript": "^5.3.3" 18 | } 19 | }, 20 | "node_modules/@babel/parser": { 21 | "version": "7.23.9", 22 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", 23 | "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", 24 | "dev": true, 25 | "bin": { 26 | "parser": "bin/babel-parser.js" 27 | }, 28 | "engines": { 29 | "node": ">=6.0.0" 30 | } 31 | }, 32 | "node_modules/@bcoe/v8-coverage": { 33 | "version": "0.2.3", 34 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 35 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 36 | "dev": true 37 | }, 38 | "node_modules/@istanbuljs/schema": { 39 | "version": "0.1.3", 40 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 41 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 42 | "dev": true, 43 | "engines": { 44 | "node": ">=8" 45 | } 46 | }, 47 | "node_modules/@jridgewell/gen-mapping": { 48 | "version": "0.3.3", 49 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 50 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 51 | "dev": true, 52 | "dependencies": { 53 | "@jridgewell/set-array": "^1.0.1", 54 | "@jridgewell/sourcemap-codec": "^1.4.10", 55 | "@jridgewell/trace-mapping": "^0.3.9" 56 | }, 57 | "engines": { 58 | "node": ">=6.0.0" 59 | } 60 | }, 61 | "node_modules/@jridgewell/resolve-uri": { 62 | "version": "3.1.1", 63 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 64 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 65 | "dev": true, 66 | "engines": { 67 | "node": ">=6.0.0" 68 | } 69 | }, 70 | "node_modules/@jridgewell/set-array": { 71 | "version": "1.1.2", 72 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 73 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 74 | "dev": true, 75 | "engines": { 76 | "node": ">=6.0.0" 77 | } 78 | }, 79 | "node_modules/@jridgewell/source-map": { 80 | "version": "0.3.5", 81 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", 82 | "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", 83 | "dev": true, 84 | "dependencies": { 85 | "@jridgewell/gen-mapping": "^0.3.0", 86 | "@jridgewell/trace-mapping": "^0.3.9" 87 | } 88 | }, 89 | "node_modules/@jridgewell/sourcemap-codec": { 90 | "version": "1.4.15", 91 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 92 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 93 | "dev": true 94 | }, 95 | "node_modules/@jridgewell/trace-mapping": { 96 | "version": "0.3.22", 97 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", 98 | "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", 99 | "dev": true, 100 | "dependencies": { 101 | "@jridgewell/resolve-uri": "^3.1.0", 102 | "@jridgewell/sourcemap-codec": "^1.4.14" 103 | } 104 | }, 105 | "node_modules/@rollup/plugin-node-resolve": { 106 | "version": "15.2.3", 107 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", 108 | "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", 109 | "dev": true, 110 | "dependencies": { 111 | "@rollup/pluginutils": "^5.0.1", 112 | "@types/resolve": "1.20.2", 113 | "deepmerge": "^4.2.2", 114 | "is-builtin-module": "^3.2.1", 115 | "is-module": "^1.0.0", 116 | "resolve": "^1.22.1" 117 | }, 118 | "engines": { 119 | "node": ">=14.0.0" 120 | }, 121 | "peerDependencies": { 122 | "rollup": "^2.78.0||^3.0.0||^4.0.0" 123 | }, 124 | "peerDependenciesMeta": { 125 | "rollup": { 126 | "optional": true 127 | } 128 | } 129 | }, 130 | "node_modules/@rollup/plugin-terser": { 131 | "version": "0.4.4", 132 | "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", 133 | "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", 134 | "dev": true, 135 | "dependencies": { 136 | "serialize-javascript": "^6.0.1", 137 | "smob": "^1.0.0", 138 | "terser": "^5.17.4" 139 | }, 140 | "engines": { 141 | "node": ">=14.0.0" 142 | }, 143 | "peerDependencies": { 144 | "rollup": "^2.0.0||^3.0.0||^4.0.0" 145 | }, 146 | "peerDependenciesMeta": { 147 | "rollup": { 148 | "optional": true 149 | } 150 | } 151 | }, 152 | "node_modules/@rollup/pluginutils": { 153 | "version": "5.1.0", 154 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", 155 | "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", 156 | "dev": true, 157 | "dependencies": { 158 | "@types/estree": "^1.0.0", 159 | "estree-walker": "^2.0.2", 160 | "picomatch": "^2.3.1" 161 | }, 162 | "engines": { 163 | "node": ">=14.0.0" 164 | }, 165 | "peerDependencies": { 166 | "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 167 | }, 168 | "peerDependenciesMeta": { 169 | "rollup": { 170 | "optional": true 171 | } 172 | } 173 | }, 174 | "node_modules/@rollup/rollup-android-arm-eabi": { 175 | "version": "4.10.0", 176 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz", 177 | "integrity": "sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==", 178 | "cpu": [ 179 | "arm" 180 | ], 181 | "dev": true, 182 | "optional": true, 183 | "os": [ 184 | "android" 185 | ] 186 | }, 187 | "node_modules/@rollup/rollup-android-arm64": { 188 | "version": "4.10.0", 189 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz", 190 | "integrity": "sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==", 191 | "cpu": [ 192 | "arm64" 193 | ], 194 | "dev": true, 195 | "optional": true, 196 | "os": [ 197 | "android" 198 | ] 199 | }, 200 | "node_modules/@rollup/rollup-darwin-arm64": { 201 | "version": "4.10.0", 202 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz", 203 | "integrity": "sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==", 204 | "cpu": [ 205 | "arm64" 206 | ], 207 | "dev": true, 208 | "optional": true, 209 | "os": [ 210 | "darwin" 211 | ] 212 | }, 213 | "node_modules/@rollup/rollup-darwin-x64": { 214 | "version": "4.10.0", 215 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz", 216 | "integrity": "sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==", 217 | "cpu": [ 218 | "x64" 219 | ], 220 | "dev": true, 221 | "optional": true, 222 | "os": [ 223 | "darwin" 224 | ] 225 | }, 226 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 227 | "version": "4.10.0", 228 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz", 229 | "integrity": "sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==", 230 | "cpu": [ 231 | "arm" 232 | ], 233 | "dev": true, 234 | "optional": true, 235 | "os": [ 236 | "linux" 237 | ] 238 | }, 239 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 240 | "version": "4.10.0", 241 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz", 242 | "integrity": "sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==", 243 | "cpu": [ 244 | "arm64" 245 | ], 246 | "dev": true, 247 | "optional": true, 248 | "os": [ 249 | "linux" 250 | ] 251 | }, 252 | "node_modules/@rollup/rollup-linux-arm64-musl": { 253 | "version": "4.10.0", 254 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz", 255 | "integrity": "sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==", 256 | "cpu": [ 257 | "arm64" 258 | ], 259 | "dev": true, 260 | "optional": true, 261 | "os": [ 262 | "linux" 263 | ] 264 | }, 265 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 266 | "version": "4.10.0", 267 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz", 268 | "integrity": "sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==", 269 | "cpu": [ 270 | "riscv64" 271 | ], 272 | "dev": true, 273 | "optional": true, 274 | "os": [ 275 | "linux" 276 | ] 277 | }, 278 | "node_modules/@rollup/rollup-linux-x64-gnu": { 279 | "version": "4.10.0", 280 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz", 281 | "integrity": "sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==", 282 | "cpu": [ 283 | "x64" 284 | ], 285 | "dev": true, 286 | "optional": true, 287 | "os": [ 288 | "linux" 289 | ] 290 | }, 291 | "node_modules/@rollup/rollup-linux-x64-musl": { 292 | "version": "4.10.0", 293 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz", 294 | "integrity": "sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==", 295 | "cpu": [ 296 | "x64" 297 | ], 298 | "dev": true, 299 | "optional": true, 300 | "os": [ 301 | "linux" 302 | ] 303 | }, 304 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 305 | "version": "4.10.0", 306 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz", 307 | "integrity": "sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==", 308 | "cpu": [ 309 | "arm64" 310 | ], 311 | "dev": true, 312 | "optional": true, 313 | "os": [ 314 | "win32" 315 | ] 316 | }, 317 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 318 | "version": "4.10.0", 319 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz", 320 | "integrity": "sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==", 321 | "cpu": [ 322 | "ia32" 323 | ], 324 | "dev": true, 325 | "optional": true, 326 | "os": [ 327 | "win32" 328 | ] 329 | }, 330 | "node_modules/@rollup/rollup-win32-x64-msvc": { 331 | "version": "4.10.0", 332 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz", 333 | "integrity": "sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==", 334 | "cpu": [ 335 | "x64" 336 | ], 337 | "dev": true, 338 | "optional": true, 339 | "os": [ 340 | "win32" 341 | ] 342 | }, 343 | "node_modules/@types/estree": { 344 | "version": "1.0.5", 345 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 346 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 347 | "dev": true 348 | }, 349 | "node_modules/@types/istanbul-lib-coverage": { 350 | "version": "2.0.6", 351 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", 352 | "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", 353 | "dev": true 354 | }, 355 | "node_modules/@types/resolve": { 356 | "version": "1.20.2", 357 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 358 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 359 | "dev": true 360 | }, 361 | "node_modules/acorn": { 362 | "version": "8.11.3", 363 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 364 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 365 | "dev": true, 366 | "bin": { 367 | "acorn": "bin/acorn" 368 | }, 369 | "engines": { 370 | "node": ">=0.4.0" 371 | } 372 | }, 373 | "node_modules/ansi-regex": { 374 | "version": "5.0.1", 375 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 376 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 377 | "dev": true, 378 | "engines": { 379 | "node": ">=8" 380 | } 381 | }, 382 | "node_modules/ansi-styles": { 383 | "version": "4.3.0", 384 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 385 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 386 | "dev": true, 387 | "dependencies": { 388 | "color-convert": "^2.0.1" 389 | }, 390 | "engines": { 391 | "node": ">=8" 392 | }, 393 | "funding": { 394 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 395 | } 396 | }, 397 | "node_modules/ascjs": { 398 | "version": "6.0.3", 399 | "resolved": "https://registry.npmjs.org/ascjs/-/ascjs-6.0.3.tgz", 400 | "integrity": "sha512-lAIyi1j7oT0OtF9yFLiRf93LEcK7xTb/gPFwmfdi2T/BQmxJi1YcIES+VnP/kgGJkxq9Oh2DEK6GrZ6l2OVhVQ==", 401 | "dev": true, 402 | "dependencies": { 403 | "@babel/parser": "^7.12.5" 404 | }, 405 | "bin": { 406 | "ascjs": "bin.js" 407 | } 408 | }, 409 | "node_modules/balanced-match": { 410 | "version": "1.0.2", 411 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 412 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 413 | "dev": true 414 | }, 415 | "node_modules/brace-expansion": { 416 | "version": "1.1.11", 417 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 418 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 419 | "dev": true, 420 | "dependencies": { 421 | "balanced-match": "^1.0.0", 422 | "concat-map": "0.0.1" 423 | } 424 | }, 425 | "node_modules/buffer-from": { 426 | "version": "1.1.2", 427 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 428 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 429 | "dev": true 430 | }, 431 | "node_modules/builtin-modules": { 432 | "version": "3.3.0", 433 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 434 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 435 | "dev": true, 436 | "engines": { 437 | "node": ">=6" 438 | }, 439 | "funding": { 440 | "url": "https://github.com/sponsors/sindresorhus" 441 | } 442 | }, 443 | "node_modules/c8": { 444 | "version": "9.1.0", 445 | "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", 446 | "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", 447 | "dev": true, 448 | "dependencies": { 449 | "@bcoe/v8-coverage": "^0.2.3", 450 | "@istanbuljs/schema": "^0.1.3", 451 | "find-up": "^5.0.0", 452 | "foreground-child": "^3.1.1", 453 | "istanbul-lib-coverage": "^3.2.0", 454 | "istanbul-lib-report": "^3.0.1", 455 | "istanbul-reports": "^3.1.6", 456 | "test-exclude": "^6.0.0", 457 | "v8-to-istanbul": "^9.0.0", 458 | "yargs": "^17.7.2", 459 | "yargs-parser": "^21.1.1" 460 | }, 461 | "bin": { 462 | "c8": "bin/c8.js" 463 | }, 464 | "engines": { 465 | "node": ">=14.14.0" 466 | } 467 | }, 468 | "node_modules/cliui": { 469 | "version": "8.0.1", 470 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 471 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 472 | "dev": true, 473 | "dependencies": { 474 | "string-width": "^4.2.0", 475 | "strip-ansi": "^6.0.1", 476 | "wrap-ansi": "^7.0.0" 477 | }, 478 | "engines": { 479 | "node": ">=12" 480 | } 481 | }, 482 | "node_modules/color-convert": { 483 | "version": "2.0.1", 484 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 485 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 486 | "dev": true, 487 | "dependencies": { 488 | "color-name": "~1.1.4" 489 | }, 490 | "engines": { 491 | "node": ">=7.0.0" 492 | } 493 | }, 494 | "node_modules/color-name": { 495 | "version": "1.1.4", 496 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 497 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 498 | "dev": true 499 | }, 500 | "node_modules/commander": { 501 | "version": "2.20.3", 502 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 503 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 504 | "dev": true 505 | }, 506 | "node_modules/concat-map": { 507 | "version": "0.0.1", 508 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 509 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 510 | "dev": true 511 | }, 512 | "node_modules/convert-source-map": { 513 | "version": "2.0.0", 514 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 515 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 516 | "dev": true 517 | }, 518 | "node_modules/cross-spawn": { 519 | "version": "7.0.3", 520 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 521 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 522 | "dev": true, 523 | "dependencies": { 524 | "path-key": "^3.1.0", 525 | "shebang-command": "^2.0.0", 526 | "which": "^2.0.1" 527 | }, 528 | "engines": { 529 | "node": ">= 8" 530 | } 531 | }, 532 | "node_modules/deepmerge": { 533 | "version": "4.3.1", 534 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 535 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 536 | "dev": true, 537 | "engines": { 538 | "node": ">=0.10.0" 539 | } 540 | }, 541 | "node_modules/emoji-regex": { 542 | "version": "8.0.0", 543 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 544 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 545 | "dev": true 546 | }, 547 | "node_modules/escalade": { 548 | "version": "3.1.2", 549 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 550 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 551 | "dev": true, 552 | "engines": { 553 | "node": ">=6" 554 | } 555 | }, 556 | "node_modules/estree-walker": { 557 | "version": "2.0.2", 558 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 559 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 560 | "dev": true 561 | }, 562 | "node_modules/find-up": { 563 | "version": "5.0.0", 564 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 565 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 566 | "dev": true, 567 | "dependencies": { 568 | "locate-path": "^6.0.0", 569 | "path-exists": "^4.0.0" 570 | }, 571 | "engines": { 572 | "node": ">=10" 573 | }, 574 | "funding": { 575 | "url": "https://github.com/sponsors/sindresorhus" 576 | } 577 | }, 578 | "node_modules/foreground-child": { 579 | "version": "3.1.1", 580 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", 581 | "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", 582 | "dev": true, 583 | "dependencies": { 584 | "cross-spawn": "^7.0.0", 585 | "signal-exit": "^4.0.1" 586 | }, 587 | "engines": { 588 | "node": ">=14" 589 | }, 590 | "funding": { 591 | "url": "https://github.com/sponsors/isaacs" 592 | } 593 | }, 594 | "node_modules/fs.realpath": { 595 | "version": "1.0.0", 596 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 597 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 598 | "dev": true 599 | }, 600 | "node_modules/fsevents": { 601 | "version": "2.3.3", 602 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 603 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 604 | "dev": true, 605 | "hasInstallScript": true, 606 | "optional": true, 607 | "os": [ 608 | "darwin" 609 | ], 610 | "engines": { 611 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 612 | } 613 | }, 614 | "node_modules/function-bind": { 615 | "version": "1.1.2", 616 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 617 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 618 | "dev": true, 619 | "funding": { 620 | "url": "https://github.com/sponsors/ljharb" 621 | } 622 | }, 623 | "node_modules/get-caller-file": { 624 | "version": "2.0.5", 625 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 626 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 627 | "dev": true, 628 | "engines": { 629 | "node": "6.* || 8.* || >= 10.*" 630 | } 631 | }, 632 | "node_modules/glob": { 633 | "version": "7.2.3", 634 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 635 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 636 | "dev": true, 637 | "dependencies": { 638 | "fs.realpath": "^1.0.0", 639 | "inflight": "^1.0.4", 640 | "inherits": "2", 641 | "minimatch": "^3.1.1", 642 | "once": "^1.3.0", 643 | "path-is-absolute": "^1.0.0" 644 | }, 645 | "engines": { 646 | "node": "*" 647 | }, 648 | "funding": { 649 | "url": "https://github.com/sponsors/isaacs" 650 | } 651 | }, 652 | "node_modules/has-flag": { 653 | "version": "4.0.0", 654 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 655 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 656 | "dev": true, 657 | "engines": { 658 | "node": ">=8" 659 | } 660 | }, 661 | "node_modules/hasown": { 662 | "version": "2.0.1", 663 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", 664 | "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", 665 | "dev": true, 666 | "dependencies": { 667 | "function-bind": "^1.1.2" 668 | }, 669 | "engines": { 670 | "node": ">= 0.4" 671 | } 672 | }, 673 | "node_modules/html-escaper": { 674 | "version": "2.0.2", 675 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 676 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 677 | "dev": true 678 | }, 679 | "node_modules/inflight": { 680 | "version": "1.0.6", 681 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 682 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 683 | "dev": true, 684 | "dependencies": { 685 | "once": "^1.3.0", 686 | "wrappy": "1" 687 | } 688 | }, 689 | "node_modules/inherits": { 690 | "version": "2.0.4", 691 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 692 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 693 | "dev": true 694 | }, 695 | "node_modules/is-builtin-module": { 696 | "version": "3.2.1", 697 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", 698 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", 699 | "dev": true, 700 | "dependencies": { 701 | "builtin-modules": "^3.3.0" 702 | }, 703 | "engines": { 704 | "node": ">=6" 705 | }, 706 | "funding": { 707 | "url": "https://github.com/sponsors/sindresorhus" 708 | } 709 | }, 710 | "node_modules/is-core-module": { 711 | "version": "2.13.1", 712 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", 713 | "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", 714 | "dev": true, 715 | "dependencies": { 716 | "hasown": "^2.0.0" 717 | }, 718 | "funding": { 719 | "url": "https://github.com/sponsors/ljharb" 720 | } 721 | }, 722 | "node_modules/is-fullwidth-code-point": { 723 | "version": "3.0.0", 724 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 725 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 726 | "dev": true, 727 | "engines": { 728 | "node": ">=8" 729 | } 730 | }, 731 | "node_modules/is-module": { 732 | "version": "1.0.0", 733 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 734 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 735 | "dev": true 736 | }, 737 | "node_modules/isexe": { 738 | "version": "2.0.0", 739 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 740 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 741 | "dev": true 742 | }, 743 | "node_modules/istanbul-lib-coverage": { 744 | "version": "3.2.2", 745 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", 746 | "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", 747 | "dev": true, 748 | "engines": { 749 | "node": ">=8" 750 | } 751 | }, 752 | "node_modules/istanbul-lib-report": { 753 | "version": "3.0.1", 754 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 755 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 756 | "dev": true, 757 | "dependencies": { 758 | "istanbul-lib-coverage": "^3.0.0", 759 | "make-dir": "^4.0.0", 760 | "supports-color": "^7.1.0" 761 | }, 762 | "engines": { 763 | "node": ">=10" 764 | } 765 | }, 766 | "node_modules/istanbul-reports": { 767 | "version": "3.1.6", 768 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", 769 | "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", 770 | "dev": true, 771 | "dependencies": { 772 | "html-escaper": "^2.0.0", 773 | "istanbul-lib-report": "^3.0.0" 774 | }, 775 | "engines": { 776 | "node": ">=8" 777 | } 778 | }, 779 | "node_modules/locate-path": { 780 | "version": "6.0.0", 781 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 782 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 783 | "dev": true, 784 | "dependencies": { 785 | "p-locate": "^5.0.0" 786 | }, 787 | "engines": { 788 | "node": ">=10" 789 | }, 790 | "funding": { 791 | "url": "https://github.com/sponsors/sindresorhus" 792 | } 793 | }, 794 | "node_modules/lru-cache": { 795 | "version": "6.0.0", 796 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 797 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 798 | "dev": true, 799 | "dependencies": { 800 | "yallist": "^4.0.0" 801 | }, 802 | "engines": { 803 | "node": ">=10" 804 | } 805 | }, 806 | "node_modules/make-dir": { 807 | "version": "4.0.0", 808 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 809 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 810 | "dev": true, 811 | "dependencies": { 812 | "semver": "^7.5.3" 813 | }, 814 | "engines": { 815 | "node": ">=10" 816 | }, 817 | "funding": { 818 | "url": "https://github.com/sponsors/sindresorhus" 819 | } 820 | }, 821 | "node_modules/minimatch": { 822 | "version": "3.1.2", 823 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 824 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 825 | "dev": true, 826 | "dependencies": { 827 | "brace-expansion": "^1.1.7" 828 | }, 829 | "engines": { 830 | "node": "*" 831 | } 832 | }, 833 | "node_modules/once": { 834 | "version": "1.4.0", 835 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 836 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 837 | "dev": true, 838 | "dependencies": { 839 | "wrappy": "1" 840 | } 841 | }, 842 | "node_modules/p-limit": { 843 | "version": "3.1.0", 844 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 845 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 846 | "dev": true, 847 | "dependencies": { 848 | "yocto-queue": "^0.1.0" 849 | }, 850 | "engines": { 851 | "node": ">=10" 852 | }, 853 | "funding": { 854 | "url": "https://github.com/sponsors/sindresorhus" 855 | } 856 | }, 857 | "node_modules/p-locate": { 858 | "version": "5.0.0", 859 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 860 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 861 | "dev": true, 862 | "dependencies": { 863 | "p-limit": "^3.0.2" 864 | }, 865 | "engines": { 866 | "node": ">=10" 867 | }, 868 | "funding": { 869 | "url": "https://github.com/sponsors/sindresorhus" 870 | } 871 | }, 872 | "node_modules/path-exists": { 873 | "version": "4.0.0", 874 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 875 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 876 | "dev": true, 877 | "engines": { 878 | "node": ">=8" 879 | } 880 | }, 881 | "node_modules/path-is-absolute": { 882 | "version": "1.0.1", 883 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 884 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 885 | "dev": true, 886 | "engines": { 887 | "node": ">=0.10.0" 888 | } 889 | }, 890 | "node_modules/path-key": { 891 | "version": "3.1.1", 892 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 893 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 894 | "dev": true, 895 | "engines": { 896 | "node": ">=8" 897 | } 898 | }, 899 | "node_modules/path-parse": { 900 | "version": "1.0.7", 901 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 902 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 903 | "dev": true 904 | }, 905 | "node_modules/picomatch": { 906 | "version": "2.3.1", 907 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 908 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 909 | "dev": true, 910 | "engines": { 911 | "node": ">=8.6" 912 | }, 913 | "funding": { 914 | "url": "https://github.com/sponsors/jonschlinkert" 915 | } 916 | }, 917 | "node_modules/randombytes": { 918 | "version": "2.1.0", 919 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 920 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 921 | "dev": true, 922 | "dependencies": { 923 | "safe-buffer": "^5.1.0" 924 | } 925 | }, 926 | "node_modules/require-directory": { 927 | "version": "2.1.1", 928 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 929 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 930 | "dev": true, 931 | "engines": { 932 | "node": ">=0.10.0" 933 | } 934 | }, 935 | "node_modules/resolve": { 936 | "version": "1.22.8", 937 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 938 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 939 | "dev": true, 940 | "dependencies": { 941 | "is-core-module": "^2.13.0", 942 | "path-parse": "^1.0.7", 943 | "supports-preserve-symlinks-flag": "^1.0.0" 944 | }, 945 | "bin": { 946 | "resolve": "bin/resolve" 947 | }, 948 | "funding": { 949 | "url": "https://github.com/sponsors/ljharb" 950 | } 951 | }, 952 | "node_modules/rollup": { 953 | "version": "4.10.0", 954 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz", 955 | "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==", 956 | "dev": true, 957 | "dependencies": { 958 | "@types/estree": "1.0.5" 959 | }, 960 | "bin": { 961 | "rollup": "dist/bin/rollup" 962 | }, 963 | "engines": { 964 | "node": ">=18.0.0", 965 | "npm": ">=8.0.0" 966 | }, 967 | "optionalDependencies": { 968 | "@rollup/rollup-android-arm-eabi": "4.10.0", 969 | "@rollup/rollup-android-arm64": "4.10.0", 970 | "@rollup/rollup-darwin-arm64": "4.10.0", 971 | "@rollup/rollup-darwin-x64": "4.10.0", 972 | "@rollup/rollup-linux-arm-gnueabihf": "4.10.0", 973 | "@rollup/rollup-linux-arm64-gnu": "4.10.0", 974 | "@rollup/rollup-linux-arm64-musl": "4.10.0", 975 | "@rollup/rollup-linux-riscv64-gnu": "4.10.0", 976 | "@rollup/rollup-linux-x64-gnu": "4.10.0", 977 | "@rollup/rollup-linux-x64-musl": "4.10.0", 978 | "@rollup/rollup-win32-arm64-msvc": "4.10.0", 979 | "@rollup/rollup-win32-ia32-msvc": "4.10.0", 980 | "@rollup/rollup-win32-x64-msvc": "4.10.0", 981 | "fsevents": "~2.3.2" 982 | } 983 | }, 984 | "node_modules/safe-buffer": { 985 | "version": "5.2.1", 986 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 987 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 988 | "dev": true, 989 | "funding": [ 990 | { 991 | "type": "github", 992 | "url": "https://github.com/sponsors/feross" 993 | }, 994 | { 995 | "type": "patreon", 996 | "url": "https://www.patreon.com/feross" 997 | }, 998 | { 999 | "type": "consulting", 1000 | "url": "https://feross.org/support" 1001 | } 1002 | ] 1003 | }, 1004 | "node_modules/semver": { 1005 | "version": "7.6.0", 1006 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 1007 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 1008 | "dev": true, 1009 | "dependencies": { 1010 | "lru-cache": "^6.0.0" 1011 | }, 1012 | "bin": { 1013 | "semver": "bin/semver.js" 1014 | }, 1015 | "engines": { 1016 | "node": ">=10" 1017 | } 1018 | }, 1019 | "node_modules/serialize-javascript": { 1020 | "version": "6.0.2", 1021 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 1022 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 1023 | "dev": true, 1024 | "dependencies": { 1025 | "randombytes": "^2.1.0" 1026 | } 1027 | }, 1028 | "node_modules/shebang-command": { 1029 | "version": "2.0.0", 1030 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1031 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1032 | "dev": true, 1033 | "dependencies": { 1034 | "shebang-regex": "^3.0.0" 1035 | }, 1036 | "engines": { 1037 | "node": ">=8" 1038 | } 1039 | }, 1040 | "node_modules/shebang-regex": { 1041 | "version": "3.0.0", 1042 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1043 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1044 | "dev": true, 1045 | "engines": { 1046 | "node": ">=8" 1047 | } 1048 | }, 1049 | "node_modules/signal-exit": { 1050 | "version": "4.1.0", 1051 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1052 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1053 | "dev": true, 1054 | "engines": { 1055 | "node": ">=14" 1056 | }, 1057 | "funding": { 1058 | "url": "https://github.com/sponsors/isaacs" 1059 | } 1060 | }, 1061 | "node_modules/smob": { 1062 | "version": "1.4.1", 1063 | "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz", 1064 | "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==", 1065 | "dev": true 1066 | }, 1067 | "node_modules/source-map": { 1068 | "version": "0.6.1", 1069 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1070 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1071 | "dev": true, 1072 | "engines": { 1073 | "node": ">=0.10.0" 1074 | } 1075 | }, 1076 | "node_modules/source-map-support": { 1077 | "version": "0.5.21", 1078 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 1079 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1080 | "dev": true, 1081 | "dependencies": { 1082 | "buffer-from": "^1.0.0", 1083 | "source-map": "^0.6.0" 1084 | } 1085 | }, 1086 | "node_modules/string-width": { 1087 | "version": "4.2.3", 1088 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1089 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1090 | "dev": true, 1091 | "dependencies": { 1092 | "emoji-regex": "^8.0.0", 1093 | "is-fullwidth-code-point": "^3.0.0", 1094 | "strip-ansi": "^6.0.1" 1095 | }, 1096 | "engines": { 1097 | "node": ">=8" 1098 | } 1099 | }, 1100 | "node_modules/strip-ansi": { 1101 | "version": "6.0.1", 1102 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1103 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1104 | "dev": true, 1105 | "dependencies": { 1106 | "ansi-regex": "^5.0.1" 1107 | }, 1108 | "engines": { 1109 | "node": ">=8" 1110 | } 1111 | }, 1112 | "node_modules/supports-color": { 1113 | "version": "7.2.0", 1114 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1115 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1116 | "dev": true, 1117 | "dependencies": { 1118 | "has-flag": "^4.0.0" 1119 | }, 1120 | "engines": { 1121 | "node": ">=8" 1122 | } 1123 | }, 1124 | "node_modules/supports-preserve-symlinks-flag": { 1125 | "version": "1.0.0", 1126 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1127 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1128 | "dev": true, 1129 | "engines": { 1130 | "node": ">= 0.4" 1131 | }, 1132 | "funding": { 1133 | "url": "https://github.com/sponsors/ljharb" 1134 | } 1135 | }, 1136 | "node_modules/terser": { 1137 | "version": "5.27.0", 1138 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", 1139 | "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", 1140 | "dev": true, 1141 | "dependencies": { 1142 | "@jridgewell/source-map": "^0.3.3", 1143 | "acorn": "^8.8.2", 1144 | "commander": "^2.20.0", 1145 | "source-map-support": "~0.5.20" 1146 | }, 1147 | "bin": { 1148 | "terser": "bin/terser" 1149 | }, 1150 | "engines": { 1151 | "node": ">=10" 1152 | } 1153 | }, 1154 | "node_modules/test-exclude": { 1155 | "version": "6.0.0", 1156 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 1157 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 1158 | "dev": true, 1159 | "dependencies": { 1160 | "@istanbuljs/schema": "^0.1.2", 1161 | "glob": "^7.1.4", 1162 | "minimatch": "^3.0.4" 1163 | }, 1164 | "engines": { 1165 | "node": ">=8" 1166 | } 1167 | }, 1168 | "node_modules/typescript": { 1169 | "version": "5.3.3", 1170 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 1171 | "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 1172 | "dev": true, 1173 | "bin": { 1174 | "tsc": "bin/tsc", 1175 | "tsserver": "bin/tsserver" 1176 | }, 1177 | "engines": { 1178 | "node": ">=14.17" 1179 | } 1180 | }, 1181 | "node_modules/v8-to-istanbul": { 1182 | "version": "9.2.0", 1183 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", 1184 | "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", 1185 | "dev": true, 1186 | "dependencies": { 1187 | "@jridgewell/trace-mapping": "^0.3.12", 1188 | "@types/istanbul-lib-coverage": "^2.0.1", 1189 | "convert-source-map": "^2.0.0" 1190 | }, 1191 | "engines": { 1192 | "node": ">=10.12.0" 1193 | } 1194 | }, 1195 | "node_modules/which": { 1196 | "version": "2.0.2", 1197 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1198 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1199 | "dev": true, 1200 | "dependencies": { 1201 | "isexe": "^2.0.0" 1202 | }, 1203 | "bin": { 1204 | "node-which": "bin/node-which" 1205 | }, 1206 | "engines": { 1207 | "node": ">= 8" 1208 | } 1209 | }, 1210 | "node_modules/wrap-ansi": { 1211 | "version": "7.0.0", 1212 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1213 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1214 | "dev": true, 1215 | "dependencies": { 1216 | "ansi-styles": "^4.0.0", 1217 | "string-width": "^4.1.0", 1218 | "strip-ansi": "^6.0.0" 1219 | }, 1220 | "engines": { 1221 | "node": ">=10" 1222 | }, 1223 | "funding": { 1224 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1225 | } 1226 | }, 1227 | "node_modules/wrappy": { 1228 | "version": "1.0.2", 1229 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1230 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1231 | "dev": true 1232 | }, 1233 | "node_modules/y18n": { 1234 | "version": "5.0.8", 1235 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1236 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1237 | "dev": true, 1238 | "engines": { 1239 | "node": ">=10" 1240 | } 1241 | }, 1242 | "node_modules/yallist": { 1243 | "version": "4.0.0", 1244 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1245 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1246 | "dev": true 1247 | }, 1248 | "node_modules/yargs": { 1249 | "version": "17.7.2", 1250 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 1251 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 1252 | "dev": true, 1253 | "dependencies": { 1254 | "cliui": "^8.0.1", 1255 | "escalade": "^3.1.1", 1256 | "get-caller-file": "^2.0.5", 1257 | "require-directory": "^2.1.1", 1258 | "string-width": "^4.2.3", 1259 | "y18n": "^5.0.5", 1260 | "yargs-parser": "^21.1.1" 1261 | }, 1262 | "engines": { 1263 | "node": ">=12" 1264 | } 1265 | }, 1266 | "node_modules/yargs-parser": { 1267 | "version": "21.1.1", 1268 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 1269 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 1270 | "dev": true, 1271 | "engines": { 1272 | "node": ">=12" 1273 | } 1274 | }, 1275 | "node_modules/yocto-queue": { 1276 | "version": "0.1.0", 1277 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1278 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1279 | "dev": true, 1280 | "engines": { 1281 | "node": ">=10" 1282 | }, 1283 | "funding": { 1284 | "url": "https://github.com/sponsors/sindresorhus" 1285 | } 1286 | } 1287 | } 1288 | } 1289 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@webreflection/fetch", 3 | "version": "0.1.5", 4 | "description": "A fetch with Response abilities.", 5 | "main": "./cjs/index.js", 6 | "scripts": { 7 | "build": "npm run cjs && npm run rollup:es && npm run ts && npm run test", 8 | "cjs": "ascjs --no-default esm cjs", 9 | "rollup:es": "rollup --config rollup/es.config.js", 10 | "test": "c8 node test/index.js", 11 | "ts": "tsc -p .", 12 | "coverage": "mkdir -p ./coverage; c8 report --reporter=text-lcov > ./coverage/lcov.info" 13 | }, 14 | "keywords": [ 15 | "fetch", 16 | "response", 17 | "merged" 18 | ], 19 | "author": "Andrea Giammarchi", 20 | "license": "MIT", 21 | "devDependencies": { 22 | "@rollup/plugin-node-resolve": "^15.2.3", 23 | "@rollup/plugin-terser": "^0.4.4", 24 | "ascjs": "^6.0.3", 25 | "c8": "^9.1.0", 26 | "rollup": "^4.10.0", 27 | "typescript": "^5.3.3" 28 | }, 29 | "module": "./esm/index.js", 30 | "type": "module", 31 | "exports": { 32 | ".": { 33 | "types": "./types/index.d.ts", 34 | "import": "./esm/index.js", 35 | "default": "./cjs/index.js" 36 | }, 37 | "./package.json": "./package.json" 38 | }, 39 | "unpkg": "es.js", 40 | "repository": { 41 | "type": "git", 42 | "url": "git+https://github.com/WebReflection/fetch.git" 43 | }, 44 | "bugs": { 45 | "url": "https://github.com/WebReflection/fetch/issues" 46 | }, 47 | "homepage": "https://github.com/WebReflection/fetch#readme" 48 | } 49 | -------------------------------------------------------------------------------- /rollup/es.config.js: -------------------------------------------------------------------------------- 1 | import {nodeResolve} from '@rollup/plugin-node-resolve'; 2 | import terser from '@rollup/plugin-terser'; 3 | 4 | export default { 5 | input: './esm/index.js', 6 | plugins: [ 7 | nodeResolve(), 8 | terser() 9 | ], 10 | output: { 11 | esModule: true, 12 | file: './es.js', 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /test/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | fetch 7 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | const fetch = require('../cjs'); 2 | 3 | const PORT = 7357; 4 | const URL = `http://0.0.0.0:${PORT}/`; 5 | 6 | const server = require('http').createServer((_, res) => { 7 | res.end('OK'); 8 | }).listen(PORT); 9 | 10 | (async () => { 11 | console.assert(await fetch(URL).ok); 12 | console.assert(await fetch(URL).text() === 'OK'); 13 | 14 | Promise.prototype.OK = 'OK'; 15 | const local = fetch(URL); 16 | local.then(() => { 17 | console.log(local.OK); 18 | }); 19 | console.assert(await local.ok); 20 | 21 | server.close(); 22 | })(); 23 | -------------------------------------------------------------------------------- /test/package.json: -------------------------------------------------------------------------------- 1 | {"type":"commonjs"} -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "NodeNext", 4 | "target": "esnext", 5 | "moduleResolution": "nodenext", 6 | "allowJs": true, 7 | "declaration": true, 8 | "emitDeclarationOnly": true, 9 | "declarationDir": "types" 10 | }, 11 | "include": [ 12 | "esm/index.js", 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /types/index.d.ts: -------------------------------------------------------------------------------- 1 | declare function _default(input: RequestInfo | URL, ...init: RequestInit[]): Promise & Response; 2 | export default _default; 3 | --------------------------------------------------------------------------------