├── .github └── dependabot.yml ├── .gitignore ├── README.md ├── example-axios ├── .gitignore ├── README.md ├── package-lock.json ├── package.json └── pages │ └── index.js ├── example-basic ├── .gitignore ├── README.md ├── package-lock.json ├── package.json └── pages │ └── index.js ├── example-conditional-fetching ├── .gitignore ├── README.md ├── package-lock.json ├── package.json └── pages │ └── index.js ├── example-dependent-fetching ├── .gitignore ├── README.md ├── package-lock.json ├── package.json └── pages │ └── index.js ├── example-graphql ├── .gitignore ├── README.md ├── package-lock.json ├── package.json └── pages │ └── index.js └── example-react-suspense ├── .gitignore ├── README.md ├── package-lock.json ├── package.json └── pages └── index.js /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'npm' 4 | directory: '/' 5 | schedule: 6 | interval: 'weekly' 7 | day: 'monday' 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | 21 | # debug 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | # local env files 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SWR Examples 2 | 3 | [SWR](https://swr.vercel.app/) is an awesome [React Hook](https://reactjs.org/docs/hooks-intro.html) library for remote data fetching, maintained by the team at [Vercel](https://vercel.com). SWR stands for "[stale-while-revalidating](https://tools.ietf.org/html/rfc5861)", which means, SWR will attempt to load cached data (stale) first, and then fetch new data (revalidate) in the background. 4 | 5 | 👉 [Read the blog post](https://gregrickaby.com/blog/swr-examples) 6 | -------------------------------------------------------------------------------- /example-axios/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | 21 | # debug 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | # local env files 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | -------------------------------------------------------------------------------- /example-axios/README.md: -------------------------------------------------------------------------------- 1 | # Example - Axios 2 | 3 | [](https://codesandbox.io/s/github/gregrickaby/swr-examples/tree/main/example-axios) 4 | -------------------------------------------------------------------------------- /example-axios/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-with-axios", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example-with-axios", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "axios": "^0.26.1", 12 | "next": "12.1.4", 13 | "react": "18.0.0", 14 | "react-dom": "18.0.0", 15 | "swr": "^1.3.0" 16 | } 17 | }, 18 | "node_modules/@next/env": { 19 | "version": "12.1.4", 20 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 21 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 22 | }, 23 | "node_modules/@next/swc-android-arm-eabi": { 24 | "version": "12.1.4", 25 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 26 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 27 | "cpu": [ 28 | "arm" 29 | ], 30 | "optional": true, 31 | "os": [ 32 | "android" 33 | ], 34 | "engines": { 35 | "node": ">= 10" 36 | } 37 | }, 38 | "node_modules/@next/swc-android-arm64": { 39 | "version": "12.1.4", 40 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 41 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 42 | "cpu": [ 43 | "arm64" 44 | ], 45 | "optional": true, 46 | "os": [ 47 | "android" 48 | ], 49 | "engines": { 50 | "node": ">= 10" 51 | } 52 | }, 53 | "node_modules/@next/swc-darwin-arm64": { 54 | "version": "12.1.4", 55 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 56 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 57 | "cpu": [ 58 | "arm64" 59 | ], 60 | "optional": true, 61 | "os": [ 62 | "darwin" 63 | ], 64 | "engines": { 65 | "node": ">= 10" 66 | } 67 | }, 68 | "node_modules/@next/swc-darwin-x64": { 69 | "version": "12.1.4", 70 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 71 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 72 | "cpu": [ 73 | "x64" 74 | ], 75 | "optional": true, 76 | "os": [ 77 | "darwin" 78 | ], 79 | "engines": { 80 | "node": ">= 10" 81 | } 82 | }, 83 | "node_modules/@next/swc-linux-arm-gnueabihf": { 84 | "version": "12.1.4", 85 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 86 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 87 | "cpu": [ 88 | "arm" 89 | ], 90 | "optional": true, 91 | "os": [ 92 | "linux" 93 | ], 94 | "engines": { 95 | "node": ">= 10" 96 | } 97 | }, 98 | "node_modules/@next/swc-linux-arm64-gnu": { 99 | "version": "12.1.4", 100 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 101 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 102 | "cpu": [ 103 | "arm64" 104 | ], 105 | "optional": true, 106 | "os": [ 107 | "linux" 108 | ], 109 | "engines": { 110 | "node": ">= 10" 111 | } 112 | }, 113 | "node_modules/@next/swc-linux-arm64-musl": { 114 | "version": "12.1.4", 115 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 116 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 117 | "cpu": [ 118 | "arm64" 119 | ], 120 | "optional": true, 121 | "os": [ 122 | "linux" 123 | ], 124 | "engines": { 125 | "node": ">= 10" 126 | } 127 | }, 128 | "node_modules/@next/swc-linux-x64-gnu": { 129 | "version": "12.1.4", 130 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 131 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 132 | "cpu": [ 133 | "x64" 134 | ], 135 | "optional": true, 136 | "os": [ 137 | "linux" 138 | ], 139 | "engines": { 140 | "node": ">= 10" 141 | } 142 | }, 143 | "node_modules/@next/swc-linux-x64-musl": { 144 | "version": "12.1.4", 145 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 146 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 147 | "cpu": [ 148 | "x64" 149 | ], 150 | "optional": true, 151 | "os": [ 152 | "linux" 153 | ], 154 | "engines": { 155 | "node": ">= 10" 156 | } 157 | }, 158 | "node_modules/@next/swc-win32-arm64-msvc": { 159 | "version": "12.1.4", 160 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 161 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 162 | "cpu": [ 163 | "arm64" 164 | ], 165 | "optional": true, 166 | "os": [ 167 | "win32" 168 | ], 169 | "engines": { 170 | "node": ">= 10" 171 | } 172 | }, 173 | "node_modules/@next/swc-win32-ia32-msvc": { 174 | "version": "12.1.4", 175 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 176 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 177 | "cpu": [ 178 | "ia32" 179 | ], 180 | "optional": true, 181 | "os": [ 182 | "win32" 183 | ], 184 | "engines": { 185 | "node": ">= 10" 186 | } 187 | }, 188 | "node_modules/@next/swc-win32-x64-msvc": { 189 | "version": "12.1.4", 190 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 191 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 192 | "cpu": [ 193 | "x64" 194 | ], 195 | "optional": true, 196 | "os": [ 197 | "win32" 198 | ], 199 | "engines": { 200 | "node": ">= 10" 201 | } 202 | }, 203 | "node_modules/axios": { 204 | "version": "0.26.1", 205 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 206 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 207 | "dependencies": { 208 | "follow-redirects": "^1.14.8" 209 | } 210 | }, 211 | "node_modules/caniuse-lite": { 212 | "version": "1.0.30001327", 213 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 214 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", 215 | "funding": [ 216 | { 217 | "type": "opencollective", 218 | "url": "https://opencollective.com/browserslist" 219 | }, 220 | { 221 | "type": "tidelift", 222 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 223 | } 224 | ] 225 | }, 226 | "node_modules/follow-redirects": { 227 | "version": "1.14.9", 228 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", 229 | "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", 230 | "funding": [ 231 | { 232 | "type": "individual", 233 | "url": "https://github.com/sponsors/RubenVerborgh" 234 | } 235 | ], 236 | "engines": { 237 | "node": ">=4.0" 238 | }, 239 | "peerDependenciesMeta": { 240 | "debug": { 241 | "optional": true 242 | } 243 | } 244 | }, 245 | "node_modules/js-tokens": { 246 | "version": "4.0.0", 247 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 248 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 249 | }, 250 | "node_modules/loose-envify": { 251 | "version": "1.4.0", 252 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 253 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 254 | "dependencies": { 255 | "js-tokens": "^3.0.0 || ^4.0.0" 256 | }, 257 | "bin": { 258 | "loose-envify": "cli.js" 259 | } 260 | }, 261 | "node_modules/nanoid": { 262 | "version": "3.3.2", 263 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 264 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", 265 | "bin": { 266 | "nanoid": "bin/nanoid.cjs" 267 | }, 268 | "engines": { 269 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 270 | } 271 | }, 272 | "node_modules/next": { 273 | "version": "12.1.4", 274 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 275 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 276 | "dependencies": { 277 | "@next/env": "12.1.4", 278 | "caniuse-lite": "^1.0.30001283", 279 | "postcss": "8.4.5", 280 | "styled-jsx": "5.0.1" 281 | }, 282 | "bin": { 283 | "next": "dist/bin/next" 284 | }, 285 | "engines": { 286 | "node": ">=12.22.0" 287 | }, 288 | "optionalDependencies": { 289 | "@next/swc-android-arm-eabi": "12.1.4", 290 | "@next/swc-android-arm64": "12.1.4", 291 | "@next/swc-darwin-arm64": "12.1.4", 292 | "@next/swc-darwin-x64": "12.1.4", 293 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 294 | "@next/swc-linux-arm64-gnu": "12.1.4", 295 | "@next/swc-linux-arm64-musl": "12.1.4", 296 | "@next/swc-linux-x64-gnu": "12.1.4", 297 | "@next/swc-linux-x64-musl": "12.1.4", 298 | "@next/swc-win32-arm64-msvc": "12.1.4", 299 | "@next/swc-win32-ia32-msvc": "12.1.4", 300 | "@next/swc-win32-x64-msvc": "12.1.4" 301 | }, 302 | "peerDependencies": { 303 | "fibers": ">= 3.1.0", 304 | "node-sass": "^6.0.0 || ^7.0.0", 305 | "react": "^17.0.2 || ^18.0.0-0", 306 | "react-dom": "^17.0.2 || ^18.0.0-0", 307 | "sass": "^1.3.0" 308 | }, 309 | "peerDependenciesMeta": { 310 | "fibers": { 311 | "optional": true 312 | }, 313 | "node-sass": { 314 | "optional": true 315 | }, 316 | "sass": { 317 | "optional": true 318 | } 319 | } 320 | }, 321 | "node_modules/picocolors": { 322 | "version": "1.0.0", 323 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 324 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 325 | }, 326 | "node_modules/postcss": { 327 | "version": "8.4.5", 328 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 329 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 330 | "dependencies": { 331 | "nanoid": "^3.1.30", 332 | "picocolors": "^1.0.0", 333 | "source-map-js": "^1.0.1" 334 | }, 335 | "engines": { 336 | "node": "^10 || ^12 || >=14" 337 | }, 338 | "funding": { 339 | "type": "opencollective", 340 | "url": "https://opencollective.com/postcss/" 341 | } 342 | }, 343 | "node_modules/react": { 344 | "version": "18.0.0", 345 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 346 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 347 | "dependencies": { 348 | "loose-envify": "^1.1.0" 349 | }, 350 | "engines": { 351 | "node": ">=0.10.0" 352 | } 353 | }, 354 | "node_modules/react-dom": { 355 | "version": "18.0.0", 356 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 357 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 358 | "dependencies": { 359 | "loose-envify": "^1.1.0", 360 | "scheduler": "^0.21.0" 361 | }, 362 | "peerDependencies": { 363 | "react": "^18.0.0" 364 | } 365 | }, 366 | "node_modules/scheduler": { 367 | "version": "0.21.0", 368 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 369 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 370 | "dependencies": { 371 | "loose-envify": "^1.1.0" 372 | } 373 | }, 374 | "node_modules/source-map-js": { 375 | "version": "1.0.2", 376 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 377 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 378 | "engines": { 379 | "node": ">=0.10.0" 380 | } 381 | }, 382 | "node_modules/styled-jsx": { 383 | "version": "5.0.1", 384 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 385 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==", 386 | "engines": { 387 | "node": ">= 12.0.0" 388 | }, 389 | "peerDependencies": { 390 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 391 | }, 392 | "peerDependenciesMeta": { 393 | "@babel/core": { 394 | "optional": true 395 | }, 396 | "babel-plugin-macros": { 397 | "optional": true 398 | } 399 | } 400 | }, 401 | "node_modules/swr": { 402 | "version": "1.3.0", 403 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 404 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", 405 | "peerDependencies": { 406 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0" 407 | } 408 | } 409 | }, 410 | "dependencies": { 411 | "@next/env": { 412 | "version": "12.1.4", 413 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 414 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 415 | }, 416 | "@next/swc-android-arm-eabi": { 417 | "version": "12.1.4", 418 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 419 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 420 | "optional": true 421 | }, 422 | "@next/swc-android-arm64": { 423 | "version": "12.1.4", 424 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 425 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 426 | "optional": true 427 | }, 428 | "@next/swc-darwin-arm64": { 429 | "version": "12.1.4", 430 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 431 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 432 | "optional": true 433 | }, 434 | "@next/swc-darwin-x64": { 435 | "version": "12.1.4", 436 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 437 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 438 | "optional": true 439 | }, 440 | "@next/swc-linux-arm-gnueabihf": { 441 | "version": "12.1.4", 442 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 443 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 444 | "optional": true 445 | }, 446 | "@next/swc-linux-arm64-gnu": { 447 | "version": "12.1.4", 448 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 449 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 450 | "optional": true 451 | }, 452 | "@next/swc-linux-arm64-musl": { 453 | "version": "12.1.4", 454 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 455 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 456 | "optional": true 457 | }, 458 | "@next/swc-linux-x64-gnu": { 459 | "version": "12.1.4", 460 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 461 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 462 | "optional": true 463 | }, 464 | "@next/swc-linux-x64-musl": { 465 | "version": "12.1.4", 466 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 467 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 468 | "optional": true 469 | }, 470 | "@next/swc-win32-arm64-msvc": { 471 | "version": "12.1.4", 472 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 473 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 474 | "optional": true 475 | }, 476 | "@next/swc-win32-ia32-msvc": { 477 | "version": "12.1.4", 478 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 479 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 480 | "optional": true 481 | }, 482 | "@next/swc-win32-x64-msvc": { 483 | "version": "12.1.4", 484 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 485 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 486 | "optional": true 487 | }, 488 | "axios": { 489 | "version": "0.26.1", 490 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 491 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 492 | "requires": { 493 | "follow-redirects": "^1.14.8" 494 | } 495 | }, 496 | "caniuse-lite": { 497 | "version": "1.0.30001327", 498 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 499 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==" 500 | }, 501 | "follow-redirects": { 502 | "version": "1.14.9", 503 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", 504 | "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" 505 | }, 506 | "js-tokens": { 507 | "version": "4.0.0", 508 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 509 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 510 | }, 511 | "loose-envify": { 512 | "version": "1.4.0", 513 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 514 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 515 | "requires": { 516 | "js-tokens": "^3.0.0 || ^4.0.0" 517 | } 518 | }, 519 | "nanoid": { 520 | "version": "3.3.2", 521 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 522 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" 523 | }, 524 | "next": { 525 | "version": "12.1.4", 526 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 527 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 528 | "requires": { 529 | "@next/env": "12.1.4", 530 | "@next/swc-android-arm-eabi": "12.1.4", 531 | "@next/swc-android-arm64": "12.1.4", 532 | "@next/swc-darwin-arm64": "12.1.4", 533 | "@next/swc-darwin-x64": "12.1.4", 534 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 535 | "@next/swc-linux-arm64-gnu": "12.1.4", 536 | "@next/swc-linux-arm64-musl": "12.1.4", 537 | "@next/swc-linux-x64-gnu": "12.1.4", 538 | "@next/swc-linux-x64-musl": "12.1.4", 539 | "@next/swc-win32-arm64-msvc": "12.1.4", 540 | "@next/swc-win32-ia32-msvc": "12.1.4", 541 | "@next/swc-win32-x64-msvc": "12.1.4", 542 | "caniuse-lite": "^1.0.30001283", 543 | "postcss": "8.4.5", 544 | "styled-jsx": "5.0.1" 545 | } 546 | }, 547 | "picocolors": { 548 | "version": "1.0.0", 549 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 550 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 551 | }, 552 | "postcss": { 553 | "version": "8.4.5", 554 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 555 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 556 | "requires": { 557 | "nanoid": "^3.1.30", 558 | "picocolors": "^1.0.0", 559 | "source-map-js": "^1.0.1" 560 | } 561 | }, 562 | "react": { 563 | "version": "18.0.0", 564 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 565 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 566 | "requires": { 567 | "loose-envify": "^1.1.0" 568 | } 569 | }, 570 | "react-dom": { 571 | "version": "18.0.0", 572 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 573 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 574 | "requires": { 575 | "loose-envify": "^1.1.0", 576 | "scheduler": "^0.21.0" 577 | } 578 | }, 579 | "scheduler": { 580 | "version": "0.21.0", 581 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 582 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 583 | "requires": { 584 | "loose-envify": "^1.1.0" 585 | } 586 | }, 587 | "source-map-js": { 588 | "version": "1.0.2", 589 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 590 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 591 | }, 592 | "styled-jsx": { 593 | "version": "5.0.1", 594 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 595 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==" 596 | }, 597 | "swr": { 598 | "version": "1.3.0", 599 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 600 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==" 601 | } 602 | } 603 | } 604 | -------------------------------------------------------------------------------- /example-axios/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-with-axios", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "next build", 7 | "dev": "next dev", 8 | "start": "next start" 9 | }, 10 | "dependencies": { 11 | "axios": "^0.26.1", 12 | "next": "12.1.4", 13 | "react": "18.0.0", 14 | "react-dom": "18.0.0", 15 | "swr": "^1.3.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /example-axios/pages/index.js: -------------------------------------------------------------------------------- 1 | import useSWR from "swr"; 2 | import axios from "axios"; 3 | 4 | const fetcher = (url) => axios.get(url); 5 | 6 | export default function Example() { 7 | const { data, error } = useSWR(`https://swapi.dev/api/people/1/`, fetcher); 8 | 9 | if (error) return
{JSON.stringify(data, null, 2)}; 12 | } 13 | -------------------------------------------------------------------------------- /example-basic/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | 21 | # debug 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | # local env files 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | -------------------------------------------------------------------------------- /example-basic/README.md: -------------------------------------------------------------------------------- 1 | # Example - Basic 2 | 3 | [](https://codesandbox.io/s/github/gregrickaby/swr-examples/tree/main/example-basic) 4 | -------------------------------------------------------------------------------- /example-basic/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-basic", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example-basic", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "next": "12.1.4", 12 | "react": "18.0.0", 13 | "react-dom": "18.0.0", 14 | "swr": "^1.3.0" 15 | } 16 | }, 17 | "node_modules/@next/env": { 18 | "version": "12.1.4", 19 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 20 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 21 | }, 22 | "node_modules/@next/swc-android-arm-eabi": { 23 | "version": "12.1.4", 24 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 25 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 26 | "cpu": [ 27 | "arm" 28 | ], 29 | "optional": true, 30 | "os": [ 31 | "android" 32 | ], 33 | "engines": { 34 | "node": ">= 10" 35 | } 36 | }, 37 | "node_modules/@next/swc-android-arm64": { 38 | "version": "12.1.4", 39 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 40 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 41 | "cpu": [ 42 | "arm64" 43 | ], 44 | "optional": true, 45 | "os": [ 46 | "android" 47 | ], 48 | "engines": { 49 | "node": ">= 10" 50 | } 51 | }, 52 | "node_modules/@next/swc-darwin-arm64": { 53 | "version": "12.1.4", 54 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 55 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 56 | "cpu": [ 57 | "arm64" 58 | ], 59 | "optional": true, 60 | "os": [ 61 | "darwin" 62 | ], 63 | "engines": { 64 | "node": ">= 10" 65 | } 66 | }, 67 | "node_modules/@next/swc-darwin-x64": { 68 | "version": "12.1.4", 69 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 70 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 71 | "cpu": [ 72 | "x64" 73 | ], 74 | "optional": true, 75 | "os": [ 76 | "darwin" 77 | ], 78 | "engines": { 79 | "node": ">= 10" 80 | } 81 | }, 82 | "node_modules/@next/swc-linux-arm-gnueabihf": { 83 | "version": "12.1.4", 84 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 85 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 86 | "cpu": [ 87 | "arm" 88 | ], 89 | "optional": true, 90 | "os": [ 91 | "linux" 92 | ], 93 | "engines": { 94 | "node": ">= 10" 95 | } 96 | }, 97 | "node_modules/@next/swc-linux-arm64-gnu": { 98 | "version": "12.1.4", 99 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 100 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 101 | "cpu": [ 102 | "arm64" 103 | ], 104 | "optional": true, 105 | "os": [ 106 | "linux" 107 | ], 108 | "engines": { 109 | "node": ">= 10" 110 | } 111 | }, 112 | "node_modules/@next/swc-linux-arm64-musl": { 113 | "version": "12.1.4", 114 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 115 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 116 | "cpu": [ 117 | "arm64" 118 | ], 119 | "optional": true, 120 | "os": [ 121 | "linux" 122 | ], 123 | "engines": { 124 | "node": ">= 10" 125 | } 126 | }, 127 | "node_modules/@next/swc-linux-x64-gnu": { 128 | "version": "12.1.4", 129 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 130 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 131 | "cpu": [ 132 | "x64" 133 | ], 134 | "optional": true, 135 | "os": [ 136 | "linux" 137 | ], 138 | "engines": { 139 | "node": ">= 10" 140 | } 141 | }, 142 | "node_modules/@next/swc-linux-x64-musl": { 143 | "version": "12.1.4", 144 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 145 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 146 | "cpu": [ 147 | "x64" 148 | ], 149 | "optional": true, 150 | "os": [ 151 | "linux" 152 | ], 153 | "engines": { 154 | "node": ">= 10" 155 | } 156 | }, 157 | "node_modules/@next/swc-win32-arm64-msvc": { 158 | "version": "12.1.4", 159 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 160 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 161 | "cpu": [ 162 | "arm64" 163 | ], 164 | "optional": true, 165 | "os": [ 166 | "win32" 167 | ], 168 | "engines": { 169 | "node": ">= 10" 170 | } 171 | }, 172 | "node_modules/@next/swc-win32-ia32-msvc": { 173 | "version": "12.1.4", 174 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 175 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 176 | "cpu": [ 177 | "ia32" 178 | ], 179 | "optional": true, 180 | "os": [ 181 | "win32" 182 | ], 183 | "engines": { 184 | "node": ">= 10" 185 | } 186 | }, 187 | "node_modules/@next/swc-win32-x64-msvc": { 188 | "version": "12.1.4", 189 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 190 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 191 | "cpu": [ 192 | "x64" 193 | ], 194 | "optional": true, 195 | "os": [ 196 | "win32" 197 | ], 198 | "engines": { 199 | "node": ">= 10" 200 | } 201 | }, 202 | "node_modules/caniuse-lite": { 203 | "version": "1.0.30001327", 204 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 205 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", 206 | "funding": [ 207 | { 208 | "type": "opencollective", 209 | "url": "https://opencollective.com/browserslist" 210 | }, 211 | { 212 | "type": "tidelift", 213 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 214 | } 215 | ] 216 | }, 217 | "node_modules/js-tokens": { 218 | "version": "4.0.0", 219 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 220 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 221 | }, 222 | "node_modules/loose-envify": { 223 | "version": "1.4.0", 224 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 225 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 226 | "dependencies": { 227 | "js-tokens": "^3.0.0 || ^4.0.0" 228 | }, 229 | "bin": { 230 | "loose-envify": "cli.js" 231 | } 232 | }, 233 | "node_modules/nanoid": { 234 | "version": "3.3.2", 235 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 236 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", 237 | "bin": { 238 | "nanoid": "bin/nanoid.cjs" 239 | }, 240 | "engines": { 241 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 242 | } 243 | }, 244 | "node_modules/next": { 245 | "version": "12.1.4", 246 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 247 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 248 | "dependencies": { 249 | "@next/env": "12.1.4", 250 | "caniuse-lite": "^1.0.30001283", 251 | "postcss": "8.4.5", 252 | "styled-jsx": "5.0.1" 253 | }, 254 | "bin": { 255 | "next": "dist/bin/next" 256 | }, 257 | "engines": { 258 | "node": ">=12.22.0" 259 | }, 260 | "optionalDependencies": { 261 | "@next/swc-android-arm-eabi": "12.1.4", 262 | "@next/swc-android-arm64": "12.1.4", 263 | "@next/swc-darwin-arm64": "12.1.4", 264 | "@next/swc-darwin-x64": "12.1.4", 265 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 266 | "@next/swc-linux-arm64-gnu": "12.1.4", 267 | "@next/swc-linux-arm64-musl": "12.1.4", 268 | "@next/swc-linux-x64-gnu": "12.1.4", 269 | "@next/swc-linux-x64-musl": "12.1.4", 270 | "@next/swc-win32-arm64-msvc": "12.1.4", 271 | "@next/swc-win32-ia32-msvc": "12.1.4", 272 | "@next/swc-win32-x64-msvc": "12.1.4" 273 | }, 274 | "peerDependencies": { 275 | "fibers": ">= 3.1.0", 276 | "node-sass": "^6.0.0 || ^7.0.0", 277 | "react": "^17.0.2 || ^18.0.0-0", 278 | "react-dom": "^17.0.2 || ^18.0.0-0", 279 | "sass": "^1.3.0" 280 | }, 281 | "peerDependenciesMeta": { 282 | "fibers": { 283 | "optional": true 284 | }, 285 | "node-sass": { 286 | "optional": true 287 | }, 288 | "sass": { 289 | "optional": true 290 | } 291 | } 292 | }, 293 | "node_modules/picocolors": { 294 | "version": "1.0.0", 295 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 296 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 297 | }, 298 | "node_modules/postcss": { 299 | "version": "8.4.5", 300 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 301 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 302 | "dependencies": { 303 | "nanoid": "^3.1.30", 304 | "picocolors": "^1.0.0", 305 | "source-map-js": "^1.0.1" 306 | }, 307 | "engines": { 308 | "node": "^10 || ^12 || >=14" 309 | }, 310 | "funding": { 311 | "type": "opencollective", 312 | "url": "https://opencollective.com/postcss/" 313 | } 314 | }, 315 | "node_modules/react": { 316 | "version": "18.0.0", 317 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 318 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 319 | "dependencies": { 320 | "loose-envify": "^1.1.0" 321 | }, 322 | "engines": { 323 | "node": ">=0.10.0" 324 | } 325 | }, 326 | "node_modules/react-dom": { 327 | "version": "18.0.0", 328 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 329 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 330 | "dependencies": { 331 | "loose-envify": "^1.1.0", 332 | "scheduler": "^0.21.0" 333 | }, 334 | "peerDependencies": { 335 | "react": "^18.0.0" 336 | } 337 | }, 338 | "node_modules/scheduler": { 339 | "version": "0.21.0", 340 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 341 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 342 | "dependencies": { 343 | "loose-envify": "^1.1.0" 344 | } 345 | }, 346 | "node_modules/source-map-js": { 347 | "version": "1.0.2", 348 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 349 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 350 | "engines": { 351 | "node": ">=0.10.0" 352 | } 353 | }, 354 | "node_modules/styled-jsx": { 355 | "version": "5.0.1", 356 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 357 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==", 358 | "engines": { 359 | "node": ">= 12.0.0" 360 | }, 361 | "peerDependencies": { 362 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 363 | }, 364 | "peerDependenciesMeta": { 365 | "@babel/core": { 366 | "optional": true 367 | }, 368 | "babel-plugin-macros": { 369 | "optional": true 370 | } 371 | } 372 | }, 373 | "node_modules/swr": { 374 | "version": "1.3.0", 375 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 376 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", 377 | "peerDependencies": { 378 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0" 379 | } 380 | } 381 | }, 382 | "dependencies": { 383 | "@next/env": { 384 | "version": "12.1.4", 385 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 386 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 387 | }, 388 | "@next/swc-android-arm-eabi": { 389 | "version": "12.1.4", 390 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 391 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 392 | "optional": true 393 | }, 394 | "@next/swc-android-arm64": { 395 | "version": "12.1.4", 396 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 397 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 398 | "optional": true 399 | }, 400 | "@next/swc-darwin-arm64": { 401 | "version": "12.1.4", 402 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 403 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 404 | "optional": true 405 | }, 406 | "@next/swc-darwin-x64": { 407 | "version": "12.1.4", 408 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 409 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 410 | "optional": true 411 | }, 412 | "@next/swc-linux-arm-gnueabihf": { 413 | "version": "12.1.4", 414 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 415 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 416 | "optional": true 417 | }, 418 | "@next/swc-linux-arm64-gnu": { 419 | "version": "12.1.4", 420 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 421 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 422 | "optional": true 423 | }, 424 | "@next/swc-linux-arm64-musl": { 425 | "version": "12.1.4", 426 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 427 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 428 | "optional": true 429 | }, 430 | "@next/swc-linux-x64-gnu": { 431 | "version": "12.1.4", 432 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 433 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 434 | "optional": true 435 | }, 436 | "@next/swc-linux-x64-musl": { 437 | "version": "12.1.4", 438 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 439 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 440 | "optional": true 441 | }, 442 | "@next/swc-win32-arm64-msvc": { 443 | "version": "12.1.4", 444 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 445 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 446 | "optional": true 447 | }, 448 | "@next/swc-win32-ia32-msvc": { 449 | "version": "12.1.4", 450 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 451 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 452 | "optional": true 453 | }, 454 | "@next/swc-win32-x64-msvc": { 455 | "version": "12.1.4", 456 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 457 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 458 | "optional": true 459 | }, 460 | "caniuse-lite": { 461 | "version": "1.0.30001327", 462 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 463 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==" 464 | }, 465 | "js-tokens": { 466 | "version": "4.0.0", 467 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 468 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 469 | }, 470 | "loose-envify": { 471 | "version": "1.4.0", 472 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 473 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 474 | "requires": { 475 | "js-tokens": "^3.0.0 || ^4.0.0" 476 | } 477 | }, 478 | "nanoid": { 479 | "version": "3.3.2", 480 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 481 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" 482 | }, 483 | "next": { 484 | "version": "12.1.4", 485 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 486 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 487 | "requires": { 488 | "@next/env": "12.1.4", 489 | "@next/swc-android-arm-eabi": "12.1.4", 490 | "@next/swc-android-arm64": "12.1.4", 491 | "@next/swc-darwin-arm64": "12.1.4", 492 | "@next/swc-darwin-x64": "12.1.4", 493 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 494 | "@next/swc-linux-arm64-gnu": "12.1.4", 495 | "@next/swc-linux-arm64-musl": "12.1.4", 496 | "@next/swc-linux-x64-gnu": "12.1.4", 497 | "@next/swc-linux-x64-musl": "12.1.4", 498 | "@next/swc-win32-arm64-msvc": "12.1.4", 499 | "@next/swc-win32-ia32-msvc": "12.1.4", 500 | "@next/swc-win32-x64-msvc": "12.1.4", 501 | "caniuse-lite": "^1.0.30001283", 502 | "postcss": "8.4.5", 503 | "styled-jsx": "5.0.1" 504 | } 505 | }, 506 | "picocolors": { 507 | "version": "1.0.0", 508 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 509 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 510 | }, 511 | "postcss": { 512 | "version": "8.4.5", 513 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 514 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 515 | "requires": { 516 | "nanoid": "^3.1.30", 517 | "picocolors": "^1.0.0", 518 | "source-map-js": "^1.0.1" 519 | } 520 | }, 521 | "react": { 522 | "version": "18.0.0", 523 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 524 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 525 | "requires": { 526 | "loose-envify": "^1.1.0" 527 | } 528 | }, 529 | "react-dom": { 530 | "version": "18.0.0", 531 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 532 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 533 | "requires": { 534 | "loose-envify": "^1.1.0", 535 | "scheduler": "^0.21.0" 536 | } 537 | }, 538 | "scheduler": { 539 | "version": "0.21.0", 540 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 541 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 542 | "requires": { 543 | "loose-envify": "^1.1.0" 544 | } 545 | }, 546 | "source-map-js": { 547 | "version": "1.0.2", 548 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 549 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 550 | }, 551 | "styled-jsx": { 552 | "version": "5.0.1", 553 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 554 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==" 555 | }, 556 | "swr": { 557 | "version": "1.3.0", 558 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 559 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==" 560 | } 561 | } 562 | } 563 | -------------------------------------------------------------------------------- /example-basic/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-basic", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "next build", 7 | "dev": "next dev", 8 | "start": "next start" 9 | }, 10 | "dependencies": { 11 | "next": "12.1.4", 12 | "react": "18.0.0", 13 | "react-dom": "18.0.0", 14 | "swr": "^1.3.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /example-basic/pages/index.js: -------------------------------------------------------------------------------- 1 | import useSWR from "swr"; 2 | 3 | const fetcher = (url) => fetch(url).then((r) => r.json()); 4 | 5 | export default function Example() { 6 | const { data, error } = useSWR(`https://swapi.dev/api/people/1/`, fetcher); 7 | 8 | if (error) return
{JSON.stringify(data, null, 2)}; 11 | } 12 | -------------------------------------------------------------------------------- /example-conditional-fetching/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | 21 | # debug 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | # local env files 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | -------------------------------------------------------------------------------- /example-conditional-fetching/README.md: -------------------------------------------------------------------------------- 1 | # Example - Conditional Fetching 2 | 3 | [](https://codesandbox.io/s/github/gregrickaby/swr-examples/tree/main/example-conditional-fetching) 4 | -------------------------------------------------------------------------------- /example-conditional-fetching/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-conditional-fetching", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example-conditional-fetching", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "next": "12.1.4", 12 | "react": "18.0.0", 13 | "react-dom": "18.0.0", 14 | "swr": "^1.3.0" 15 | } 16 | }, 17 | "node_modules/@next/env": { 18 | "version": "12.1.4", 19 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 20 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 21 | }, 22 | "node_modules/@next/swc-android-arm-eabi": { 23 | "version": "12.1.4", 24 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 25 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 26 | "cpu": [ 27 | "arm" 28 | ], 29 | "optional": true, 30 | "os": [ 31 | "android" 32 | ], 33 | "engines": { 34 | "node": ">= 10" 35 | } 36 | }, 37 | "node_modules/@next/swc-android-arm64": { 38 | "version": "12.1.4", 39 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 40 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 41 | "cpu": [ 42 | "arm64" 43 | ], 44 | "optional": true, 45 | "os": [ 46 | "android" 47 | ], 48 | "engines": { 49 | "node": ">= 10" 50 | } 51 | }, 52 | "node_modules/@next/swc-darwin-arm64": { 53 | "version": "12.1.4", 54 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 55 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 56 | "cpu": [ 57 | "arm64" 58 | ], 59 | "optional": true, 60 | "os": [ 61 | "darwin" 62 | ], 63 | "engines": { 64 | "node": ">= 10" 65 | } 66 | }, 67 | "node_modules/@next/swc-darwin-x64": { 68 | "version": "12.1.4", 69 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 70 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 71 | "cpu": [ 72 | "x64" 73 | ], 74 | "optional": true, 75 | "os": [ 76 | "darwin" 77 | ], 78 | "engines": { 79 | "node": ">= 10" 80 | } 81 | }, 82 | "node_modules/@next/swc-linux-arm-gnueabihf": { 83 | "version": "12.1.4", 84 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 85 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 86 | "cpu": [ 87 | "arm" 88 | ], 89 | "optional": true, 90 | "os": [ 91 | "linux" 92 | ], 93 | "engines": { 94 | "node": ">= 10" 95 | } 96 | }, 97 | "node_modules/@next/swc-linux-arm64-gnu": { 98 | "version": "12.1.4", 99 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 100 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 101 | "cpu": [ 102 | "arm64" 103 | ], 104 | "optional": true, 105 | "os": [ 106 | "linux" 107 | ], 108 | "engines": { 109 | "node": ">= 10" 110 | } 111 | }, 112 | "node_modules/@next/swc-linux-arm64-musl": { 113 | "version": "12.1.4", 114 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 115 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 116 | "cpu": [ 117 | "arm64" 118 | ], 119 | "optional": true, 120 | "os": [ 121 | "linux" 122 | ], 123 | "engines": { 124 | "node": ">= 10" 125 | } 126 | }, 127 | "node_modules/@next/swc-linux-x64-gnu": { 128 | "version": "12.1.4", 129 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 130 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 131 | "cpu": [ 132 | "x64" 133 | ], 134 | "optional": true, 135 | "os": [ 136 | "linux" 137 | ], 138 | "engines": { 139 | "node": ">= 10" 140 | } 141 | }, 142 | "node_modules/@next/swc-linux-x64-musl": { 143 | "version": "12.1.4", 144 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 145 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 146 | "cpu": [ 147 | "x64" 148 | ], 149 | "optional": true, 150 | "os": [ 151 | "linux" 152 | ], 153 | "engines": { 154 | "node": ">= 10" 155 | } 156 | }, 157 | "node_modules/@next/swc-win32-arm64-msvc": { 158 | "version": "12.1.4", 159 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 160 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 161 | "cpu": [ 162 | "arm64" 163 | ], 164 | "optional": true, 165 | "os": [ 166 | "win32" 167 | ], 168 | "engines": { 169 | "node": ">= 10" 170 | } 171 | }, 172 | "node_modules/@next/swc-win32-ia32-msvc": { 173 | "version": "12.1.4", 174 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 175 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 176 | "cpu": [ 177 | "ia32" 178 | ], 179 | "optional": true, 180 | "os": [ 181 | "win32" 182 | ], 183 | "engines": { 184 | "node": ">= 10" 185 | } 186 | }, 187 | "node_modules/@next/swc-win32-x64-msvc": { 188 | "version": "12.1.4", 189 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 190 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 191 | "cpu": [ 192 | "x64" 193 | ], 194 | "optional": true, 195 | "os": [ 196 | "win32" 197 | ], 198 | "engines": { 199 | "node": ">= 10" 200 | } 201 | }, 202 | "node_modules/caniuse-lite": { 203 | "version": "1.0.30001327", 204 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 205 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", 206 | "funding": [ 207 | { 208 | "type": "opencollective", 209 | "url": "https://opencollective.com/browserslist" 210 | }, 211 | { 212 | "type": "tidelift", 213 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 214 | } 215 | ] 216 | }, 217 | "node_modules/js-tokens": { 218 | "version": "4.0.0", 219 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 220 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 221 | }, 222 | "node_modules/loose-envify": { 223 | "version": "1.4.0", 224 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 225 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 226 | "dependencies": { 227 | "js-tokens": "^3.0.0 || ^4.0.0" 228 | }, 229 | "bin": { 230 | "loose-envify": "cli.js" 231 | } 232 | }, 233 | "node_modules/nanoid": { 234 | "version": "3.3.2", 235 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 236 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", 237 | "bin": { 238 | "nanoid": "bin/nanoid.cjs" 239 | }, 240 | "engines": { 241 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 242 | } 243 | }, 244 | "node_modules/next": { 245 | "version": "12.1.4", 246 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 247 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 248 | "dependencies": { 249 | "@next/env": "12.1.4", 250 | "caniuse-lite": "^1.0.30001283", 251 | "postcss": "8.4.5", 252 | "styled-jsx": "5.0.1" 253 | }, 254 | "bin": { 255 | "next": "dist/bin/next" 256 | }, 257 | "engines": { 258 | "node": ">=12.22.0" 259 | }, 260 | "optionalDependencies": { 261 | "@next/swc-android-arm-eabi": "12.1.4", 262 | "@next/swc-android-arm64": "12.1.4", 263 | "@next/swc-darwin-arm64": "12.1.4", 264 | "@next/swc-darwin-x64": "12.1.4", 265 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 266 | "@next/swc-linux-arm64-gnu": "12.1.4", 267 | "@next/swc-linux-arm64-musl": "12.1.4", 268 | "@next/swc-linux-x64-gnu": "12.1.4", 269 | "@next/swc-linux-x64-musl": "12.1.4", 270 | "@next/swc-win32-arm64-msvc": "12.1.4", 271 | "@next/swc-win32-ia32-msvc": "12.1.4", 272 | "@next/swc-win32-x64-msvc": "12.1.4" 273 | }, 274 | "peerDependencies": { 275 | "fibers": ">= 3.1.0", 276 | "node-sass": "^6.0.0 || ^7.0.0", 277 | "react": "^17.0.2 || ^18.0.0-0", 278 | "react-dom": "^17.0.2 || ^18.0.0-0", 279 | "sass": "^1.3.0" 280 | }, 281 | "peerDependenciesMeta": { 282 | "fibers": { 283 | "optional": true 284 | }, 285 | "node-sass": { 286 | "optional": true 287 | }, 288 | "sass": { 289 | "optional": true 290 | } 291 | } 292 | }, 293 | "node_modules/picocolors": { 294 | "version": "1.0.0", 295 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 296 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 297 | }, 298 | "node_modules/postcss": { 299 | "version": "8.4.5", 300 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 301 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 302 | "dependencies": { 303 | "nanoid": "^3.1.30", 304 | "picocolors": "^1.0.0", 305 | "source-map-js": "^1.0.1" 306 | }, 307 | "engines": { 308 | "node": "^10 || ^12 || >=14" 309 | }, 310 | "funding": { 311 | "type": "opencollective", 312 | "url": "https://opencollective.com/postcss/" 313 | } 314 | }, 315 | "node_modules/react": { 316 | "version": "18.0.0", 317 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 318 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 319 | "dependencies": { 320 | "loose-envify": "^1.1.0" 321 | }, 322 | "engines": { 323 | "node": ">=0.10.0" 324 | } 325 | }, 326 | "node_modules/react-dom": { 327 | "version": "18.0.0", 328 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 329 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 330 | "dependencies": { 331 | "loose-envify": "^1.1.0", 332 | "scheduler": "^0.21.0" 333 | }, 334 | "peerDependencies": { 335 | "react": "^18.0.0" 336 | } 337 | }, 338 | "node_modules/scheduler": { 339 | "version": "0.21.0", 340 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 341 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 342 | "dependencies": { 343 | "loose-envify": "^1.1.0" 344 | } 345 | }, 346 | "node_modules/source-map-js": { 347 | "version": "1.0.2", 348 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 349 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 350 | "engines": { 351 | "node": ">=0.10.0" 352 | } 353 | }, 354 | "node_modules/styled-jsx": { 355 | "version": "5.0.1", 356 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 357 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==", 358 | "engines": { 359 | "node": ">= 12.0.0" 360 | }, 361 | "peerDependencies": { 362 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 363 | }, 364 | "peerDependenciesMeta": { 365 | "@babel/core": { 366 | "optional": true 367 | }, 368 | "babel-plugin-macros": { 369 | "optional": true 370 | } 371 | } 372 | }, 373 | "node_modules/swr": { 374 | "version": "1.3.0", 375 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 376 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", 377 | "peerDependencies": { 378 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0" 379 | } 380 | } 381 | }, 382 | "dependencies": { 383 | "@next/env": { 384 | "version": "12.1.4", 385 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 386 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 387 | }, 388 | "@next/swc-android-arm-eabi": { 389 | "version": "12.1.4", 390 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 391 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 392 | "optional": true 393 | }, 394 | "@next/swc-android-arm64": { 395 | "version": "12.1.4", 396 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 397 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 398 | "optional": true 399 | }, 400 | "@next/swc-darwin-arm64": { 401 | "version": "12.1.4", 402 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 403 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 404 | "optional": true 405 | }, 406 | "@next/swc-darwin-x64": { 407 | "version": "12.1.4", 408 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 409 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 410 | "optional": true 411 | }, 412 | "@next/swc-linux-arm-gnueabihf": { 413 | "version": "12.1.4", 414 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 415 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 416 | "optional": true 417 | }, 418 | "@next/swc-linux-arm64-gnu": { 419 | "version": "12.1.4", 420 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 421 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 422 | "optional": true 423 | }, 424 | "@next/swc-linux-arm64-musl": { 425 | "version": "12.1.4", 426 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 427 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 428 | "optional": true 429 | }, 430 | "@next/swc-linux-x64-gnu": { 431 | "version": "12.1.4", 432 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 433 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 434 | "optional": true 435 | }, 436 | "@next/swc-linux-x64-musl": { 437 | "version": "12.1.4", 438 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 439 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 440 | "optional": true 441 | }, 442 | "@next/swc-win32-arm64-msvc": { 443 | "version": "12.1.4", 444 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 445 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 446 | "optional": true 447 | }, 448 | "@next/swc-win32-ia32-msvc": { 449 | "version": "12.1.4", 450 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 451 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 452 | "optional": true 453 | }, 454 | "@next/swc-win32-x64-msvc": { 455 | "version": "12.1.4", 456 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 457 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 458 | "optional": true 459 | }, 460 | "caniuse-lite": { 461 | "version": "1.0.30001327", 462 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 463 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==" 464 | }, 465 | "js-tokens": { 466 | "version": "4.0.0", 467 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 468 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 469 | }, 470 | "loose-envify": { 471 | "version": "1.4.0", 472 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 473 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 474 | "requires": { 475 | "js-tokens": "^3.0.0 || ^4.0.0" 476 | } 477 | }, 478 | "nanoid": { 479 | "version": "3.3.2", 480 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 481 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" 482 | }, 483 | "next": { 484 | "version": "12.1.4", 485 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 486 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 487 | "requires": { 488 | "@next/env": "12.1.4", 489 | "@next/swc-android-arm-eabi": "12.1.4", 490 | "@next/swc-android-arm64": "12.1.4", 491 | "@next/swc-darwin-arm64": "12.1.4", 492 | "@next/swc-darwin-x64": "12.1.4", 493 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 494 | "@next/swc-linux-arm64-gnu": "12.1.4", 495 | "@next/swc-linux-arm64-musl": "12.1.4", 496 | "@next/swc-linux-x64-gnu": "12.1.4", 497 | "@next/swc-linux-x64-musl": "12.1.4", 498 | "@next/swc-win32-arm64-msvc": "12.1.4", 499 | "@next/swc-win32-ia32-msvc": "12.1.4", 500 | "@next/swc-win32-x64-msvc": "12.1.4", 501 | "caniuse-lite": "^1.0.30001283", 502 | "postcss": "8.4.5", 503 | "styled-jsx": "5.0.1" 504 | } 505 | }, 506 | "picocolors": { 507 | "version": "1.0.0", 508 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 509 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 510 | }, 511 | "postcss": { 512 | "version": "8.4.5", 513 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 514 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 515 | "requires": { 516 | "nanoid": "^3.1.30", 517 | "picocolors": "^1.0.0", 518 | "source-map-js": "^1.0.1" 519 | } 520 | }, 521 | "react": { 522 | "version": "18.0.0", 523 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 524 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 525 | "requires": { 526 | "loose-envify": "^1.1.0" 527 | } 528 | }, 529 | "react-dom": { 530 | "version": "18.0.0", 531 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 532 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 533 | "requires": { 534 | "loose-envify": "^1.1.0", 535 | "scheduler": "^0.21.0" 536 | } 537 | }, 538 | "scheduler": { 539 | "version": "0.21.0", 540 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 541 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 542 | "requires": { 543 | "loose-envify": "^1.1.0" 544 | } 545 | }, 546 | "source-map-js": { 547 | "version": "1.0.2", 548 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 549 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 550 | }, 551 | "styled-jsx": { 552 | "version": "5.0.1", 553 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 554 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==" 555 | }, 556 | "swr": { 557 | "version": "1.3.0", 558 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 559 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==" 560 | } 561 | } 562 | } 563 | -------------------------------------------------------------------------------- /example-conditional-fetching/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-conditional-fetching", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "next build", 7 | "dev": "next dev", 8 | "start": "next start" 9 | }, 10 | "dependencies": { 11 | "next": "12.1.4", 12 | "react": "18.0.0", 13 | "react-dom": "18.0.0", 14 | "swr": "^1.3.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /example-conditional-fetching/pages/index.js: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from "react"; 2 | import useSWR from "swr"; 3 | 4 | const fetcher = (url) => fetch(url).then((r) => r.json()); 5 | 6 | export default function Example() { 7 | // Set "sleeping" to true. 8 | const [sleeping, setSleeping] = useState(true); 9 | 10 | // Do not fetch until sleeping is false. 11 | const { data, error } = useSWR( 12 | sleeping ? null : `https://swapi.dev/api/people/1/`, 13 | fetcher 14 | ); 15 | 16 | // After 3 seconds, setSleeping to false. 17 | useEffect(() => { 18 | setTimeout(() => { 19 | setSleeping(false); 20 | }, 3000); 21 | }, []); 22 | 23 | if (error) return
{JSON.stringify(data, null, 2)}; 26 | } 27 | -------------------------------------------------------------------------------- /example-dependent-fetching/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | 21 | # debug 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | # local env files 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | -------------------------------------------------------------------------------- /example-dependent-fetching/README.md: -------------------------------------------------------------------------------- 1 | # Example - Dependent Fetching 2 | 3 | [](https://codesandbox.io/s/github/gregrickaby/swr-examples/tree/main/example-dependent-fetching) 4 | -------------------------------------------------------------------------------- /example-dependent-fetching/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-dependent-fetching", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example-dependent-fetching", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "next": "12.1.4", 12 | "react": "18.0.0", 13 | "react-dom": "18.0.0", 14 | "swr": "^1.3.0" 15 | } 16 | }, 17 | "node_modules/@next/env": { 18 | "version": "12.1.4", 19 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 20 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 21 | }, 22 | "node_modules/@next/swc-android-arm-eabi": { 23 | "version": "12.1.4", 24 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 25 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 26 | "cpu": [ 27 | "arm" 28 | ], 29 | "optional": true, 30 | "os": [ 31 | "android" 32 | ], 33 | "engines": { 34 | "node": ">= 10" 35 | } 36 | }, 37 | "node_modules/@next/swc-android-arm64": { 38 | "version": "12.1.4", 39 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 40 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 41 | "cpu": [ 42 | "arm64" 43 | ], 44 | "optional": true, 45 | "os": [ 46 | "android" 47 | ], 48 | "engines": { 49 | "node": ">= 10" 50 | } 51 | }, 52 | "node_modules/@next/swc-darwin-arm64": { 53 | "version": "12.1.4", 54 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 55 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 56 | "cpu": [ 57 | "arm64" 58 | ], 59 | "optional": true, 60 | "os": [ 61 | "darwin" 62 | ], 63 | "engines": { 64 | "node": ">= 10" 65 | } 66 | }, 67 | "node_modules/@next/swc-darwin-x64": { 68 | "version": "12.1.4", 69 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 70 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 71 | "cpu": [ 72 | "x64" 73 | ], 74 | "optional": true, 75 | "os": [ 76 | "darwin" 77 | ], 78 | "engines": { 79 | "node": ">= 10" 80 | } 81 | }, 82 | "node_modules/@next/swc-linux-arm-gnueabihf": { 83 | "version": "12.1.4", 84 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 85 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 86 | "cpu": [ 87 | "arm" 88 | ], 89 | "optional": true, 90 | "os": [ 91 | "linux" 92 | ], 93 | "engines": { 94 | "node": ">= 10" 95 | } 96 | }, 97 | "node_modules/@next/swc-linux-arm64-gnu": { 98 | "version": "12.1.4", 99 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 100 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 101 | "cpu": [ 102 | "arm64" 103 | ], 104 | "optional": true, 105 | "os": [ 106 | "linux" 107 | ], 108 | "engines": { 109 | "node": ">= 10" 110 | } 111 | }, 112 | "node_modules/@next/swc-linux-arm64-musl": { 113 | "version": "12.1.4", 114 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 115 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 116 | "cpu": [ 117 | "arm64" 118 | ], 119 | "optional": true, 120 | "os": [ 121 | "linux" 122 | ], 123 | "engines": { 124 | "node": ">= 10" 125 | } 126 | }, 127 | "node_modules/@next/swc-linux-x64-gnu": { 128 | "version": "12.1.4", 129 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 130 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 131 | "cpu": [ 132 | "x64" 133 | ], 134 | "optional": true, 135 | "os": [ 136 | "linux" 137 | ], 138 | "engines": { 139 | "node": ">= 10" 140 | } 141 | }, 142 | "node_modules/@next/swc-linux-x64-musl": { 143 | "version": "12.1.4", 144 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 145 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 146 | "cpu": [ 147 | "x64" 148 | ], 149 | "optional": true, 150 | "os": [ 151 | "linux" 152 | ], 153 | "engines": { 154 | "node": ">= 10" 155 | } 156 | }, 157 | "node_modules/@next/swc-win32-arm64-msvc": { 158 | "version": "12.1.4", 159 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 160 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 161 | "cpu": [ 162 | "arm64" 163 | ], 164 | "optional": true, 165 | "os": [ 166 | "win32" 167 | ], 168 | "engines": { 169 | "node": ">= 10" 170 | } 171 | }, 172 | "node_modules/@next/swc-win32-ia32-msvc": { 173 | "version": "12.1.4", 174 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 175 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 176 | "cpu": [ 177 | "ia32" 178 | ], 179 | "optional": true, 180 | "os": [ 181 | "win32" 182 | ], 183 | "engines": { 184 | "node": ">= 10" 185 | } 186 | }, 187 | "node_modules/@next/swc-win32-x64-msvc": { 188 | "version": "12.1.4", 189 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 190 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 191 | "cpu": [ 192 | "x64" 193 | ], 194 | "optional": true, 195 | "os": [ 196 | "win32" 197 | ], 198 | "engines": { 199 | "node": ">= 10" 200 | } 201 | }, 202 | "node_modules/caniuse-lite": { 203 | "version": "1.0.30001327", 204 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 205 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", 206 | "funding": [ 207 | { 208 | "type": "opencollective", 209 | "url": "https://opencollective.com/browserslist" 210 | }, 211 | { 212 | "type": "tidelift", 213 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 214 | } 215 | ] 216 | }, 217 | "node_modules/js-tokens": { 218 | "version": "4.0.0", 219 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 220 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 221 | }, 222 | "node_modules/loose-envify": { 223 | "version": "1.4.0", 224 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 225 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 226 | "dependencies": { 227 | "js-tokens": "^3.0.0 || ^4.0.0" 228 | }, 229 | "bin": { 230 | "loose-envify": "cli.js" 231 | } 232 | }, 233 | "node_modules/nanoid": { 234 | "version": "3.3.2", 235 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 236 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", 237 | "bin": { 238 | "nanoid": "bin/nanoid.cjs" 239 | }, 240 | "engines": { 241 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 242 | } 243 | }, 244 | "node_modules/next": { 245 | "version": "12.1.4", 246 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 247 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 248 | "dependencies": { 249 | "@next/env": "12.1.4", 250 | "caniuse-lite": "^1.0.30001283", 251 | "postcss": "8.4.5", 252 | "styled-jsx": "5.0.1" 253 | }, 254 | "bin": { 255 | "next": "dist/bin/next" 256 | }, 257 | "engines": { 258 | "node": ">=12.22.0" 259 | }, 260 | "optionalDependencies": { 261 | "@next/swc-android-arm-eabi": "12.1.4", 262 | "@next/swc-android-arm64": "12.1.4", 263 | "@next/swc-darwin-arm64": "12.1.4", 264 | "@next/swc-darwin-x64": "12.1.4", 265 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 266 | "@next/swc-linux-arm64-gnu": "12.1.4", 267 | "@next/swc-linux-arm64-musl": "12.1.4", 268 | "@next/swc-linux-x64-gnu": "12.1.4", 269 | "@next/swc-linux-x64-musl": "12.1.4", 270 | "@next/swc-win32-arm64-msvc": "12.1.4", 271 | "@next/swc-win32-ia32-msvc": "12.1.4", 272 | "@next/swc-win32-x64-msvc": "12.1.4" 273 | }, 274 | "peerDependencies": { 275 | "fibers": ">= 3.1.0", 276 | "node-sass": "^6.0.0 || ^7.0.0", 277 | "react": "^17.0.2 || ^18.0.0-0", 278 | "react-dom": "^17.0.2 || ^18.0.0-0", 279 | "sass": "^1.3.0" 280 | }, 281 | "peerDependenciesMeta": { 282 | "fibers": { 283 | "optional": true 284 | }, 285 | "node-sass": { 286 | "optional": true 287 | }, 288 | "sass": { 289 | "optional": true 290 | } 291 | } 292 | }, 293 | "node_modules/picocolors": { 294 | "version": "1.0.0", 295 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 296 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 297 | }, 298 | "node_modules/postcss": { 299 | "version": "8.4.5", 300 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 301 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 302 | "dependencies": { 303 | "nanoid": "^3.1.30", 304 | "picocolors": "^1.0.0", 305 | "source-map-js": "^1.0.1" 306 | }, 307 | "engines": { 308 | "node": "^10 || ^12 || >=14" 309 | }, 310 | "funding": { 311 | "type": "opencollective", 312 | "url": "https://opencollective.com/postcss/" 313 | } 314 | }, 315 | "node_modules/react": { 316 | "version": "18.0.0", 317 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 318 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 319 | "dependencies": { 320 | "loose-envify": "^1.1.0" 321 | }, 322 | "engines": { 323 | "node": ">=0.10.0" 324 | } 325 | }, 326 | "node_modules/react-dom": { 327 | "version": "18.0.0", 328 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 329 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 330 | "dependencies": { 331 | "loose-envify": "^1.1.0", 332 | "scheduler": "^0.21.0" 333 | }, 334 | "peerDependencies": { 335 | "react": "^18.0.0" 336 | } 337 | }, 338 | "node_modules/scheduler": { 339 | "version": "0.21.0", 340 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 341 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 342 | "dependencies": { 343 | "loose-envify": "^1.1.0" 344 | } 345 | }, 346 | "node_modules/source-map-js": { 347 | "version": "1.0.2", 348 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 349 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 350 | "engines": { 351 | "node": ">=0.10.0" 352 | } 353 | }, 354 | "node_modules/styled-jsx": { 355 | "version": "5.0.1", 356 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 357 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==", 358 | "engines": { 359 | "node": ">= 12.0.0" 360 | }, 361 | "peerDependencies": { 362 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 363 | }, 364 | "peerDependenciesMeta": { 365 | "@babel/core": { 366 | "optional": true 367 | }, 368 | "babel-plugin-macros": { 369 | "optional": true 370 | } 371 | } 372 | }, 373 | "node_modules/swr": { 374 | "version": "1.3.0", 375 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 376 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", 377 | "peerDependencies": { 378 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0" 379 | } 380 | } 381 | }, 382 | "dependencies": { 383 | "@next/env": { 384 | "version": "12.1.4", 385 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 386 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 387 | }, 388 | "@next/swc-android-arm-eabi": { 389 | "version": "12.1.4", 390 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 391 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 392 | "optional": true 393 | }, 394 | "@next/swc-android-arm64": { 395 | "version": "12.1.4", 396 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 397 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 398 | "optional": true 399 | }, 400 | "@next/swc-darwin-arm64": { 401 | "version": "12.1.4", 402 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 403 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 404 | "optional": true 405 | }, 406 | "@next/swc-darwin-x64": { 407 | "version": "12.1.4", 408 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 409 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 410 | "optional": true 411 | }, 412 | "@next/swc-linux-arm-gnueabihf": { 413 | "version": "12.1.4", 414 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 415 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 416 | "optional": true 417 | }, 418 | "@next/swc-linux-arm64-gnu": { 419 | "version": "12.1.4", 420 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 421 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 422 | "optional": true 423 | }, 424 | "@next/swc-linux-arm64-musl": { 425 | "version": "12.1.4", 426 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 427 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 428 | "optional": true 429 | }, 430 | "@next/swc-linux-x64-gnu": { 431 | "version": "12.1.4", 432 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 433 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 434 | "optional": true 435 | }, 436 | "@next/swc-linux-x64-musl": { 437 | "version": "12.1.4", 438 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 439 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 440 | "optional": true 441 | }, 442 | "@next/swc-win32-arm64-msvc": { 443 | "version": "12.1.4", 444 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 445 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 446 | "optional": true 447 | }, 448 | "@next/swc-win32-ia32-msvc": { 449 | "version": "12.1.4", 450 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 451 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 452 | "optional": true 453 | }, 454 | "@next/swc-win32-x64-msvc": { 455 | "version": "12.1.4", 456 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 457 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 458 | "optional": true 459 | }, 460 | "caniuse-lite": { 461 | "version": "1.0.30001327", 462 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 463 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==" 464 | }, 465 | "js-tokens": { 466 | "version": "4.0.0", 467 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 468 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 469 | }, 470 | "loose-envify": { 471 | "version": "1.4.0", 472 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 473 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 474 | "requires": { 475 | "js-tokens": "^3.0.0 || ^4.0.0" 476 | } 477 | }, 478 | "nanoid": { 479 | "version": "3.3.2", 480 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 481 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" 482 | }, 483 | "next": { 484 | "version": "12.1.4", 485 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 486 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 487 | "requires": { 488 | "@next/env": "12.1.4", 489 | "@next/swc-android-arm-eabi": "12.1.4", 490 | "@next/swc-android-arm64": "12.1.4", 491 | "@next/swc-darwin-arm64": "12.1.4", 492 | "@next/swc-darwin-x64": "12.1.4", 493 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 494 | "@next/swc-linux-arm64-gnu": "12.1.4", 495 | "@next/swc-linux-arm64-musl": "12.1.4", 496 | "@next/swc-linux-x64-gnu": "12.1.4", 497 | "@next/swc-linux-x64-musl": "12.1.4", 498 | "@next/swc-win32-arm64-msvc": "12.1.4", 499 | "@next/swc-win32-ia32-msvc": "12.1.4", 500 | "@next/swc-win32-x64-msvc": "12.1.4", 501 | "caniuse-lite": "^1.0.30001283", 502 | "postcss": "8.4.5", 503 | "styled-jsx": "5.0.1" 504 | } 505 | }, 506 | "picocolors": { 507 | "version": "1.0.0", 508 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 509 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 510 | }, 511 | "postcss": { 512 | "version": "8.4.5", 513 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 514 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 515 | "requires": { 516 | "nanoid": "^3.1.30", 517 | "picocolors": "^1.0.0", 518 | "source-map-js": "^1.0.1" 519 | } 520 | }, 521 | "react": { 522 | "version": "18.0.0", 523 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 524 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 525 | "requires": { 526 | "loose-envify": "^1.1.0" 527 | } 528 | }, 529 | "react-dom": { 530 | "version": "18.0.0", 531 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 532 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 533 | "requires": { 534 | "loose-envify": "^1.1.0", 535 | "scheduler": "^0.21.0" 536 | } 537 | }, 538 | "scheduler": { 539 | "version": "0.21.0", 540 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 541 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 542 | "requires": { 543 | "loose-envify": "^1.1.0" 544 | } 545 | }, 546 | "source-map-js": { 547 | "version": "1.0.2", 548 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 549 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 550 | }, 551 | "styled-jsx": { 552 | "version": "5.0.1", 553 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 554 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==" 555 | }, 556 | "swr": { 557 | "version": "1.3.0", 558 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 559 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==" 560 | } 561 | } 562 | } 563 | -------------------------------------------------------------------------------- /example-dependent-fetching/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-dependent-fetching", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "next build", 7 | "dev": "next dev", 8 | "start": "next start" 9 | }, 10 | "dependencies": { 11 | "next": "12.1.4", 12 | "react": "18.0.0", 13 | "react-dom": "18.0.0", 14 | "swr": "^1.3.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /example-dependent-fetching/pages/index.js: -------------------------------------------------------------------------------- 1 | import useSWR from "swr"; 2 | 3 | const fetcher = (url) => fetch(url).then((r) => r.json()); 4 | 5 | export default function Example() { 6 | // First, fetch a blog post... 7 | const { data: post } = useSWR( 8 | `https://webdevstudios.com/wp-json/wp/v2/posts/22342`, 9 | fetcher 10 | ); 11 | 12 | // Then, fetch a tag from the blog post. 13 | const { data: tag } = useSWR( 14 | () => `https://webdevstudios.com/wp-json/wp/v2/tags/${post.tags[1]}`, 15 | fetcher 16 | ); 17 | 18 | if (!tag) return "loading..."; 19 | 20 | return
{JSON.stringify(tag.name, null, 2)}; 21 | } 22 | -------------------------------------------------------------------------------- /example-graphql/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | 21 | # debug 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | # local env files 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | -------------------------------------------------------------------------------- /example-graphql/README.md: -------------------------------------------------------------------------------- 1 | # Example - GraphQL 2 | 3 | [](https://codesandbox.io/s/github/gregrickaby/swr-examples/tree/main/example-graphql) 4 | -------------------------------------------------------------------------------- /example-graphql/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-graphql", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example-graphql", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "graphql": "^16.3.0", 12 | "graphql-request": "^4.2.0", 13 | "next": "12.1.4", 14 | "react": "18.0.0", 15 | "react-dom": "18.0.0", 16 | "swr": "^1.3.0" 17 | } 18 | }, 19 | "node_modules/@next/env": { 20 | "version": "12.1.4", 21 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 22 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 23 | }, 24 | "node_modules/@next/swc-android-arm-eabi": { 25 | "version": "12.1.4", 26 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 27 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 28 | "cpu": [ 29 | "arm" 30 | ], 31 | "optional": true, 32 | "os": [ 33 | "android" 34 | ], 35 | "engines": { 36 | "node": ">= 10" 37 | } 38 | }, 39 | "node_modules/@next/swc-android-arm64": { 40 | "version": "12.1.4", 41 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 42 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 43 | "cpu": [ 44 | "arm64" 45 | ], 46 | "optional": true, 47 | "os": [ 48 | "android" 49 | ], 50 | "engines": { 51 | "node": ">= 10" 52 | } 53 | }, 54 | "node_modules/@next/swc-darwin-arm64": { 55 | "version": "12.1.4", 56 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 57 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 58 | "cpu": [ 59 | "arm64" 60 | ], 61 | "optional": true, 62 | "os": [ 63 | "darwin" 64 | ], 65 | "engines": { 66 | "node": ">= 10" 67 | } 68 | }, 69 | "node_modules/@next/swc-darwin-x64": { 70 | "version": "12.1.4", 71 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 72 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 73 | "cpu": [ 74 | "x64" 75 | ], 76 | "optional": true, 77 | "os": [ 78 | "darwin" 79 | ], 80 | "engines": { 81 | "node": ">= 10" 82 | } 83 | }, 84 | "node_modules/@next/swc-linux-arm-gnueabihf": { 85 | "version": "12.1.4", 86 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 87 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 88 | "cpu": [ 89 | "arm" 90 | ], 91 | "optional": true, 92 | "os": [ 93 | "linux" 94 | ], 95 | "engines": { 96 | "node": ">= 10" 97 | } 98 | }, 99 | "node_modules/@next/swc-linux-arm64-gnu": { 100 | "version": "12.1.4", 101 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 102 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 103 | "cpu": [ 104 | "arm64" 105 | ], 106 | "optional": true, 107 | "os": [ 108 | "linux" 109 | ], 110 | "engines": { 111 | "node": ">= 10" 112 | } 113 | }, 114 | "node_modules/@next/swc-linux-arm64-musl": { 115 | "version": "12.1.4", 116 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 117 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 118 | "cpu": [ 119 | "arm64" 120 | ], 121 | "optional": true, 122 | "os": [ 123 | "linux" 124 | ], 125 | "engines": { 126 | "node": ">= 10" 127 | } 128 | }, 129 | "node_modules/@next/swc-linux-x64-gnu": { 130 | "version": "12.1.4", 131 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 132 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 133 | "cpu": [ 134 | "x64" 135 | ], 136 | "optional": true, 137 | "os": [ 138 | "linux" 139 | ], 140 | "engines": { 141 | "node": ">= 10" 142 | } 143 | }, 144 | "node_modules/@next/swc-linux-x64-musl": { 145 | "version": "12.1.4", 146 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 147 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 148 | "cpu": [ 149 | "x64" 150 | ], 151 | "optional": true, 152 | "os": [ 153 | "linux" 154 | ], 155 | "engines": { 156 | "node": ">= 10" 157 | } 158 | }, 159 | "node_modules/@next/swc-win32-arm64-msvc": { 160 | "version": "12.1.4", 161 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 162 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 163 | "cpu": [ 164 | "arm64" 165 | ], 166 | "optional": true, 167 | "os": [ 168 | "win32" 169 | ], 170 | "engines": { 171 | "node": ">= 10" 172 | } 173 | }, 174 | "node_modules/@next/swc-win32-ia32-msvc": { 175 | "version": "12.1.4", 176 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 177 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 178 | "cpu": [ 179 | "ia32" 180 | ], 181 | "optional": true, 182 | "os": [ 183 | "win32" 184 | ], 185 | "engines": { 186 | "node": ">= 10" 187 | } 188 | }, 189 | "node_modules/@next/swc-win32-x64-msvc": { 190 | "version": "12.1.4", 191 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 192 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 193 | "cpu": [ 194 | "x64" 195 | ], 196 | "optional": true, 197 | "os": [ 198 | "win32" 199 | ], 200 | "engines": { 201 | "node": ">= 10" 202 | } 203 | }, 204 | "node_modules/asynckit": { 205 | "version": "0.4.0", 206 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 207 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 208 | }, 209 | "node_modules/caniuse-lite": { 210 | "version": "1.0.30001327", 211 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 212 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", 213 | "funding": [ 214 | { 215 | "type": "opencollective", 216 | "url": "https://opencollective.com/browserslist" 217 | }, 218 | { 219 | "type": "tidelift", 220 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 221 | } 222 | ] 223 | }, 224 | "node_modules/combined-stream": { 225 | "version": "1.0.8", 226 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 227 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 228 | "dependencies": { 229 | "delayed-stream": "~1.0.0" 230 | }, 231 | "engines": { 232 | "node": ">= 0.8" 233 | } 234 | }, 235 | "node_modules/cross-fetch": { 236 | "version": "3.1.5", 237 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 238 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 239 | "dependencies": { 240 | "node-fetch": "2.6.7" 241 | } 242 | }, 243 | "node_modules/delayed-stream": { 244 | "version": "1.0.0", 245 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 246 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 247 | "engines": { 248 | "node": ">=0.4.0" 249 | } 250 | }, 251 | "node_modules/extract-files": { 252 | "version": "9.0.0", 253 | "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", 254 | "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", 255 | "engines": { 256 | "node": "^10.17.0 || ^12.0.0 || >= 13.7.0" 257 | }, 258 | "funding": { 259 | "url": "https://github.com/sponsors/jaydenseric" 260 | } 261 | }, 262 | "node_modules/form-data": { 263 | "version": "3.0.1", 264 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 265 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 266 | "dependencies": { 267 | "asynckit": "^0.4.0", 268 | "combined-stream": "^1.0.8", 269 | "mime-types": "^2.1.12" 270 | }, 271 | "engines": { 272 | "node": ">= 6" 273 | } 274 | }, 275 | "node_modules/graphql": { 276 | "version": "16.3.0", 277 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.3.0.tgz", 278 | "integrity": "sha512-xm+ANmA16BzCT5pLjuXySbQVFwH3oJctUVdy81w1sV0vBU0KgDdBGtxQOUd5zqOBk/JayAFeG8Dlmeq74rjm/A==", 279 | "engines": { 280 | "node": "^12.22.0 || ^14.16.0 || >=16.0.0" 281 | } 282 | }, 283 | "node_modules/graphql-request": { 284 | "version": "4.2.0", 285 | "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-4.2.0.tgz", 286 | "integrity": "sha512-uFeMyhhl8ss4LFgjlfPeAn2pqYw+CJto+cjj71uaBYIMMK2jPIqgHm5KEFxUk0YDD41A8Bq31a2b4G2WJBlp2Q==", 287 | "dependencies": { 288 | "cross-fetch": "^3.1.5", 289 | "extract-files": "^9.0.0", 290 | "form-data": "^3.0.0" 291 | }, 292 | "peerDependencies": { 293 | "graphql": "14 - 16" 294 | } 295 | }, 296 | "node_modules/js-tokens": { 297 | "version": "4.0.0", 298 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 299 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 300 | }, 301 | "node_modules/loose-envify": { 302 | "version": "1.4.0", 303 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 304 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 305 | "dependencies": { 306 | "js-tokens": "^3.0.0 || ^4.0.0" 307 | }, 308 | "bin": { 309 | "loose-envify": "cli.js" 310 | } 311 | }, 312 | "node_modules/mime-db": { 313 | "version": "1.49.0", 314 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", 315 | "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", 316 | "engines": { 317 | "node": ">= 0.6" 318 | } 319 | }, 320 | "node_modules/mime-types": { 321 | "version": "2.1.32", 322 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", 323 | "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", 324 | "dependencies": { 325 | "mime-db": "1.49.0" 326 | }, 327 | "engines": { 328 | "node": ">= 0.6" 329 | } 330 | }, 331 | "node_modules/nanoid": { 332 | "version": "3.3.2", 333 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 334 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", 335 | "bin": { 336 | "nanoid": "bin/nanoid.cjs" 337 | }, 338 | "engines": { 339 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 340 | } 341 | }, 342 | "node_modules/next": { 343 | "version": "12.1.4", 344 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 345 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 346 | "dependencies": { 347 | "@next/env": "12.1.4", 348 | "caniuse-lite": "^1.0.30001283", 349 | "postcss": "8.4.5", 350 | "styled-jsx": "5.0.1" 351 | }, 352 | "bin": { 353 | "next": "dist/bin/next" 354 | }, 355 | "engines": { 356 | "node": ">=12.22.0" 357 | }, 358 | "optionalDependencies": { 359 | "@next/swc-android-arm-eabi": "12.1.4", 360 | "@next/swc-android-arm64": "12.1.4", 361 | "@next/swc-darwin-arm64": "12.1.4", 362 | "@next/swc-darwin-x64": "12.1.4", 363 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 364 | "@next/swc-linux-arm64-gnu": "12.1.4", 365 | "@next/swc-linux-arm64-musl": "12.1.4", 366 | "@next/swc-linux-x64-gnu": "12.1.4", 367 | "@next/swc-linux-x64-musl": "12.1.4", 368 | "@next/swc-win32-arm64-msvc": "12.1.4", 369 | "@next/swc-win32-ia32-msvc": "12.1.4", 370 | "@next/swc-win32-x64-msvc": "12.1.4" 371 | }, 372 | "peerDependencies": { 373 | "fibers": ">= 3.1.0", 374 | "node-sass": "^6.0.0 || ^7.0.0", 375 | "react": "^17.0.2 || ^18.0.0-0", 376 | "react-dom": "^17.0.2 || ^18.0.0-0", 377 | "sass": "^1.3.0" 378 | }, 379 | "peerDependenciesMeta": { 380 | "fibers": { 381 | "optional": true 382 | }, 383 | "node-sass": { 384 | "optional": true 385 | }, 386 | "sass": { 387 | "optional": true 388 | } 389 | } 390 | }, 391 | "node_modules/node-fetch": { 392 | "version": "2.6.7", 393 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 394 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 395 | "dependencies": { 396 | "whatwg-url": "^5.0.0" 397 | }, 398 | "engines": { 399 | "node": "4.x || >=6.0.0" 400 | }, 401 | "peerDependencies": { 402 | "encoding": "^0.1.0" 403 | }, 404 | "peerDependenciesMeta": { 405 | "encoding": { 406 | "optional": true 407 | } 408 | } 409 | }, 410 | "node_modules/picocolors": { 411 | "version": "1.0.0", 412 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 413 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 414 | }, 415 | "node_modules/postcss": { 416 | "version": "8.4.5", 417 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 418 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 419 | "dependencies": { 420 | "nanoid": "^3.1.30", 421 | "picocolors": "^1.0.0", 422 | "source-map-js": "^1.0.1" 423 | }, 424 | "engines": { 425 | "node": "^10 || ^12 || >=14" 426 | }, 427 | "funding": { 428 | "type": "opencollective", 429 | "url": "https://opencollective.com/postcss/" 430 | } 431 | }, 432 | "node_modules/react": { 433 | "version": "18.0.0", 434 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 435 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 436 | "dependencies": { 437 | "loose-envify": "^1.1.0" 438 | }, 439 | "engines": { 440 | "node": ">=0.10.0" 441 | } 442 | }, 443 | "node_modules/react-dom": { 444 | "version": "18.0.0", 445 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 446 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 447 | "dependencies": { 448 | "loose-envify": "^1.1.0", 449 | "scheduler": "^0.21.0" 450 | }, 451 | "peerDependencies": { 452 | "react": "^18.0.0" 453 | } 454 | }, 455 | "node_modules/scheduler": { 456 | "version": "0.21.0", 457 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 458 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 459 | "dependencies": { 460 | "loose-envify": "^1.1.0" 461 | } 462 | }, 463 | "node_modules/source-map-js": { 464 | "version": "1.0.2", 465 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 466 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 467 | "engines": { 468 | "node": ">=0.10.0" 469 | } 470 | }, 471 | "node_modules/styled-jsx": { 472 | "version": "5.0.1", 473 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 474 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==", 475 | "engines": { 476 | "node": ">= 12.0.0" 477 | }, 478 | "peerDependencies": { 479 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 480 | }, 481 | "peerDependenciesMeta": { 482 | "@babel/core": { 483 | "optional": true 484 | }, 485 | "babel-plugin-macros": { 486 | "optional": true 487 | } 488 | } 489 | }, 490 | "node_modules/swr": { 491 | "version": "1.3.0", 492 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 493 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", 494 | "peerDependencies": { 495 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0" 496 | } 497 | }, 498 | "node_modules/tr46": { 499 | "version": "0.0.3", 500 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 501 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 502 | }, 503 | "node_modules/webidl-conversions": { 504 | "version": "3.0.1", 505 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 506 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 507 | }, 508 | "node_modules/whatwg-url": { 509 | "version": "5.0.0", 510 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 511 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 512 | "dependencies": { 513 | "tr46": "~0.0.3", 514 | "webidl-conversions": "^3.0.0" 515 | } 516 | } 517 | }, 518 | "dependencies": { 519 | "@next/env": { 520 | "version": "12.1.4", 521 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 522 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 523 | }, 524 | "@next/swc-android-arm-eabi": { 525 | "version": "12.1.4", 526 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 527 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 528 | "optional": true 529 | }, 530 | "@next/swc-android-arm64": { 531 | "version": "12.1.4", 532 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 533 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 534 | "optional": true 535 | }, 536 | "@next/swc-darwin-arm64": { 537 | "version": "12.1.4", 538 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 539 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 540 | "optional": true 541 | }, 542 | "@next/swc-darwin-x64": { 543 | "version": "12.1.4", 544 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 545 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 546 | "optional": true 547 | }, 548 | "@next/swc-linux-arm-gnueabihf": { 549 | "version": "12.1.4", 550 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 551 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 552 | "optional": true 553 | }, 554 | "@next/swc-linux-arm64-gnu": { 555 | "version": "12.1.4", 556 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 557 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 558 | "optional": true 559 | }, 560 | "@next/swc-linux-arm64-musl": { 561 | "version": "12.1.4", 562 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 563 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 564 | "optional": true 565 | }, 566 | "@next/swc-linux-x64-gnu": { 567 | "version": "12.1.4", 568 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 569 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 570 | "optional": true 571 | }, 572 | "@next/swc-linux-x64-musl": { 573 | "version": "12.1.4", 574 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 575 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 576 | "optional": true 577 | }, 578 | "@next/swc-win32-arm64-msvc": { 579 | "version": "12.1.4", 580 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 581 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 582 | "optional": true 583 | }, 584 | "@next/swc-win32-ia32-msvc": { 585 | "version": "12.1.4", 586 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 587 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 588 | "optional": true 589 | }, 590 | "@next/swc-win32-x64-msvc": { 591 | "version": "12.1.4", 592 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 593 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 594 | "optional": true 595 | }, 596 | "asynckit": { 597 | "version": "0.4.0", 598 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 599 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 600 | }, 601 | "caniuse-lite": { 602 | "version": "1.0.30001327", 603 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 604 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==" 605 | }, 606 | "combined-stream": { 607 | "version": "1.0.8", 608 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 609 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 610 | "requires": { 611 | "delayed-stream": "~1.0.0" 612 | } 613 | }, 614 | "cross-fetch": { 615 | "version": "3.1.5", 616 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 617 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 618 | "requires": { 619 | "node-fetch": "2.6.7" 620 | } 621 | }, 622 | "delayed-stream": { 623 | "version": "1.0.0", 624 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 625 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 626 | }, 627 | "extract-files": { 628 | "version": "9.0.0", 629 | "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", 630 | "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" 631 | }, 632 | "form-data": { 633 | "version": "3.0.1", 634 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 635 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 636 | "requires": { 637 | "asynckit": "^0.4.0", 638 | "combined-stream": "^1.0.8", 639 | "mime-types": "^2.1.12" 640 | } 641 | }, 642 | "graphql": { 643 | "version": "16.3.0", 644 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.3.0.tgz", 645 | "integrity": "sha512-xm+ANmA16BzCT5pLjuXySbQVFwH3oJctUVdy81w1sV0vBU0KgDdBGtxQOUd5zqOBk/JayAFeG8Dlmeq74rjm/A==" 646 | }, 647 | "graphql-request": { 648 | "version": "4.2.0", 649 | "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-4.2.0.tgz", 650 | "integrity": "sha512-uFeMyhhl8ss4LFgjlfPeAn2pqYw+CJto+cjj71uaBYIMMK2jPIqgHm5KEFxUk0YDD41A8Bq31a2b4G2WJBlp2Q==", 651 | "requires": { 652 | "cross-fetch": "^3.1.5", 653 | "extract-files": "^9.0.0", 654 | "form-data": "^3.0.0" 655 | } 656 | }, 657 | "js-tokens": { 658 | "version": "4.0.0", 659 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 660 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 661 | }, 662 | "loose-envify": { 663 | "version": "1.4.0", 664 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 665 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 666 | "requires": { 667 | "js-tokens": "^3.0.0 || ^4.0.0" 668 | } 669 | }, 670 | "mime-db": { 671 | "version": "1.49.0", 672 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", 673 | "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" 674 | }, 675 | "mime-types": { 676 | "version": "2.1.32", 677 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", 678 | "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", 679 | "requires": { 680 | "mime-db": "1.49.0" 681 | } 682 | }, 683 | "nanoid": { 684 | "version": "3.3.2", 685 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 686 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" 687 | }, 688 | "next": { 689 | "version": "12.1.4", 690 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 691 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 692 | "requires": { 693 | "@next/env": "12.1.4", 694 | "@next/swc-android-arm-eabi": "12.1.4", 695 | "@next/swc-android-arm64": "12.1.4", 696 | "@next/swc-darwin-arm64": "12.1.4", 697 | "@next/swc-darwin-x64": "12.1.4", 698 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 699 | "@next/swc-linux-arm64-gnu": "12.1.4", 700 | "@next/swc-linux-arm64-musl": "12.1.4", 701 | "@next/swc-linux-x64-gnu": "12.1.4", 702 | "@next/swc-linux-x64-musl": "12.1.4", 703 | "@next/swc-win32-arm64-msvc": "12.1.4", 704 | "@next/swc-win32-ia32-msvc": "12.1.4", 705 | "@next/swc-win32-x64-msvc": "12.1.4", 706 | "caniuse-lite": "^1.0.30001283", 707 | "postcss": "8.4.5", 708 | "styled-jsx": "5.0.1" 709 | } 710 | }, 711 | "node-fetch": { 712 | "version": "2.6.7", 713 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 714 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 715 | "requires": { 716 | "whatwg-url": "^5.0.0" 717 | } 718 | }, 719 | "picocolors": { 720 | "version": "1.0.0", 721 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 722 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 723 | }, 724 | "postcss": { 725 | "version": "8.4.5", 726 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 727 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 728 | "requires": { 729 | "nanoid": "^3.1.30", 730 | "picocolors": "^1.0.0", 731 | "source-map-js": "^1.0.1" 732 | } 733 | }, 734 | "react": { 735 | "version": "18.0.0", 736 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 737 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 738 | "requires": { 739 | "loose-envify": "^1.1.0" 740 | } 741 | }, 742 | "react-dom": { 743 | "version": "18.0.0", 744 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 745 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 746 | "requires": { 747 | "loose-envify": "^1.1.0", 748 | "scheduler": "^0.21.0" 749 | } 750 | }, 751 | "scheduler": { 752 | "version": "0.21.0", 753 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 754 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 755 | "requires": { 756 | "loose-envify": "^1.1.0" 757 | } 758 | }, 759 | "source-map-js": { 760 | "version": "1.0.2", 761 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 762 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 763 | }, 764 | "styled-jsx": { 765 | "version": "5.0.1", 766 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 767 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==" 768 | }, 769 | "swr": { 770 | "version": "1.3.0", 771 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 772 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==" 773 | }, 774 | "tr46": { 775 | "version": "0.0.3", 776 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 777 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 778 | }, 779 | "webidl-conversions": { 780 | "version": "3.0.1", 781 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 782 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 783 | }, 784 | "whatwg-url": { 785 | "version": "5.0.0", 786 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 787 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 788 | "requires": { 789 | "tr46": "~0.0.3", 790 | "webidl-conversions": "^3.0.0" 791 | } 792 | } 793 | } 794 | } 795 | -------------------------------------------------------------------------------- /example-graphql/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-graphql", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "next build", 7 | "dev": "next dev", 8 | "start": "next start" 9 | }, 10 | "dependencies": { 11 | "graphql": "^16.3.0", 12 | "graphql-request": "^4.2.0", 13 | "next": "12.1.4", 14 | "react": "18.0.0", 15 | "react-dom": "18.0.0", 16 | "swr": "^1.3.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /example-graphql/pages/index.js: -------------------------------------------------------------------------------- 1 | import { request } from "graphql-request"; 2 | import useSWR from "swr"; 3 | 4 | const fetcher = (query) => 5 | request(`https://nextjs.wpengine.com/graphql`, query); 6 | 7 | export default function Example() { 8 | const { data, error } = useSWR( 9 | ` 10 | { 11 | pages { 12 | nodes { 13 | title 14 | } 15 | } 16 | } 17 | `, 18 | fetcher 19 | ); 20 | 21 | if (error) return
{JSON.stringify(data, null, 2)}; 24 | } 25 | -------------------------------------------------------------------------------- /example-react-suspense/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | 21 | # debug 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | 26 | # local env files 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | -------------------------------------------------------------------------------- /example-react-suspense/README.md: -------------------------------------------------------------------------------- 1 | # Example - React Suspense 2 | 3 | [](https://codesandbox.io/s/github/gregrickaby/swr-examples/tree/main/example-react-suspense) 4 | -------------------------------------------------------------------------------- /example-react-suspense/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-react-suspense", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example-react-suspense", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "next": "12.1.4", 12 | "react": "^18.0.0", 13 | "react-dom": "^18.0.0", 14 | "swr": "^1.3.0" 15 | } 16 | }, 17 | "node_modules/@next/env": { 18 | "version": "12.1.4", 19 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 20 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 21 | }, 22 | "node_modules/@next/swc-android-arm-eabi": { 23 | "version": "12.1.4", 24 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 25 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 26 | "cpu": [ 27 | "arm" 28 | ], 29 | "optional": true, 30 | "os": [ 31 | "android" 32 | ], 33 | "engines": { 34 | "node": ">= 10" 35 | } 36 | }, 37 | "node_modules/@next/swc-android-arm64": { 38 | "version": "12.1.4", 39 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 40 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 41 | "cpu": [ 42 | "arm64" 43 | ], 44 | "optional": true, 45 | "os": [ 46 | "android" 47 | ], 48 | "engines": { 49 | "node": ">= 10" 50 | } 51 | }, 52 | "node_modules/@next/swc-darwin-arm64": { 53 | "version": "12.1.4", 54 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 55 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 56 | "cpu": [ 57 | "arm64" 58 | ], 59 | "optional": true, 60 | "os": [ 61 | "darwin" 62 | ], 63 | "engines": { 64 | "node": ">= 10" 65 | } 66 | }, 67 | "node_modules/@next/swc-darwin-x64": { 68 | "version": "12.1.4", 69 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 70 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 71 | "cpu": [ 72 | "x64" 73 | ], 74 | "optional": true, 75 | "os": [ 76 | "darwin" 77 | ], 78 | "engines": { 79 | "node": ">= 10" 80 | } 81 | }, 82 | "node_modules/@next/swc-linux-arm-gnueabihf": { 83 | "version": "12.1.4", 84 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 85 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 86 | "cpu": [ 87 | "arm" 88 | ], 89 | "optional": true, 90 | "os": [ 91 | "linux" 92 | ], 93 | "engines": { 94 | "node": ">= 10" 95 | } 96 | }, 97 | "node_modules/@next/swc-linux-arm64-gnu": { 98 | "version": "12.1.4", 99 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 100 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 101 | "cpu": [ 102 | "arm64" 103 | ], 104 | "optional": true, 105 | "os": [ 106 | "linux" 107 | ], 108 | "engines": { 109 | "node": ">= 10" 110 | } 111 | }, 112 | "node_modules/@next/swc-linux-arm64-musl": { 113 | "version": "12.1.4", 114 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 115 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 116 | "cpu": [ 117 | "arm64" 118 | ], 119 | "optional": true, 120 | "os": [ 121 | "linux" 122 | ], 123 | "engines": { 124 | "node": ">= 10" 125 | } 126 | }, 127 | "node_modules/@next/swc-linux-x64-gnu": { 128 | "version": "12.1.4", 129 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 130 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 131 | "cpu": [ 132 | "x64" 133 | ], 134 | "optional": true, 135 | "os": [ 136 | "linux" 137 | ], 138 | "engines": { 139 | "node": ">= 10" 140 | } 141 | }, 142 | "node_modules/@next/swc-linux-x64-musl": { 143 | "version": "12.1.4", 144 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 145 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 146 | "cpu": [ 147 | "x64" 148 | ], 149 | "optional": true, 150 | "os": [ 151 | "linux" 152 | ], 153 | "engines": { 154 | "node": ">= 10" 155 | } 156 | }, 157 | "node_modules/@next/swc-win32-arm64-msvc": { 158 | "version": "12.1.4", 159 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 160 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 161 | "cpu": [ 162 | "arm64" 163 | ], 164 | "optional": true, 165 | "os": [ 166 | "win32" 167 | ], 168 | "engines": { 169 | "node": ">= 10" 170 | } 171 | }, 172 | "node_modules/@next/swc-win32-ia32-msvc": { 173 | "version": "12.1.4", 174 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 175 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 176 | "cpu": [ 177 | "ia32" 178 | ], 179 | "optional": true, 180 | "os": [ 181 | "win32" 182 | ], 183 | "engines": { 184 | "node": ">= 10" 185 | } 186 | }, 187 | "node_modules/@next/swc-win32-x64-msvc": { 188 | "version": "12.1.4", 189 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 190 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 191 | "cpu": [ 192 | "x64" 193 | ], 194 | "optional": true, 195 | "os": [ 196 | "win32" 197 | ], 198 | "engines": { 199 | "node": ">= 10" 200 | } 201 | }, 202 | "node_modules/caniuse-lite": { 203 | "version": "1.0.30001327", 204 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 205 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==", 206 | "funding": [ 207 | { 208 | "type": "opencollective", 209 | "url": "https://opencollective.com/browserslist" 210 | }, 211 | { 212 | "type": "tidelift", 213 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 214 | } 215 | ] 216 | }, 217 | "node_modules/js-tokens": { 218 | "version": "4.0.0", 219 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 220 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 221 | }, 222 | "node_modules/loose-envify": { 223 | "version": "1.4.0", 224 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 225 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 226 | "dependencies": { 227 | "js-tokens": "^3.0.0 || ^4.0.0" 228 | }, 229 | "bin": { 230 | "loose-envify": "cli.js" 231 | } 232 | }, 233 | "node_modules/nanoid": { 234 | "version": "3.3.2", 235 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 236 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", 237 | "bin": { 238 | "nanoid": "bin/nanoid.cjs" 239 | }, 240 | "engines": { 241 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 242 | } 243 | }, 244 | "node_modules/next": { 245 | "version": "12.1.4", 246 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 247 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 248 | "dependencies": { 249 | "@next/env": "12.1.4", 250 | "caniuse-lite": "^1.0.30001283", 251 | "postcss": "8.4.5", 252 | "styled-jsx": "5.0.1" 253 | }, 254 | "bin": { 255 | "next": "dist/bin/next" 256 | }, 257 | "engines": { 258 | "node": ">=12.22.0" 259 | }, 260 | "optionalDependencies": { 261 | "@next/swc-android-arm-eabi": "12.1.4", 262 | "@next/swc-android-arm64": "12.1.4", 263 | "@next/swc-darwin-arm64": "12.1.4", 264 | "@next/swc-darwin-x64": "12.1.4", 265 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 266 | "@next/swc-linux-arm64-gnu": "12.1.4", 267 | "@next/swc-linux-arm64-musl": "12.1.4", 268 | "@next/swc-linux-x64-gnu": "12.1.4", 269 | "@next/swc-linux-x64-musl": "12.1.4", 270 | "@next/swc-win32-arm64-msvc": "12.1.4", 271 | "@next/swc-win32-ia32-msvc": "12.1.4", 272 | "@next/swc-win32-x64-msvc": "12.1.4" 273 | }, 274 | "peerDependencies": { 275 | "fibers": ">= 3.1.0", 276 | "node-sass": "^6.0.0 || ^7.0.0", 277 | "react": "^17.0.2 || ^18.0.0-0", 278 | "react-dom": "^17.0.2 || ^18.0.0-0", 279 | "sass": "^1.3.0" 280 | }, 281 | "peerDependenciesMeta": { 282 | "fibers": { 283 | "optional": true 284 | }, 285 | "node-sass": { 286 | "optional": true 287 | }, 288 | "sass": { 289 | "optional": true 290 | } 291 | } 292 | }, 293 | "node_modules/picocolors": { 294 | "version": "1.0.0", 295 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 296 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 297 | }, 298 | "node_modules/postcss": { 299 | "version": "8.4.5", 300 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 301 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 302 | "dependencies": { 303 | "nanoid": "^3.1.30", 304 | "picocolors": "^1.0.0", 305 | "source-map-js": "^1.0.1" 306 | }, 307 | "engines": { 308 | "node": "^10 || ^12 || >=14" 309 | }, 310 | "funding": { 311 | "type": "opencollective", 312 | "url": "https://opencollective.com/postcss/" 313 | } 314 | }, 315 | "node_modules/react": { 316 | "version": "18.0.0", 317 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 318 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 319 | "dependencies": { 320 | "loose-envify": "^1.1.0" 321 | }, 322 | "engines": { 323 | "node": ">=0.10.0" 324 | } 325 | }, 326 | "node_modules/react-dom": { 327 | "version": "18.0.0", 328 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 329 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 330 | "dependencies": { 331 | "loose-envify": "^1.1.0", 332 | "scheduler": "^0.21.0" 333 | }, 334 | "peerDependencies": { 335 | "react": "^18.0.0" 336 | } 337 | }, 338 | "node_modules/scheduler": { 339 | "version": "0.21.0", 340 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 341 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 342 | "dependencies": { 343 | "loose-envify": "^1.1.0" 344 | } 345 | }, 346 | "node_modules/source-map-js": { 347 | "version": "1.0.2", 348 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 349 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 350 | "engines": { 351 | "node": ">=0.10.0" 352 | } 353 | }, 354 | "node_modules/styled-jsx": { 355 | "version": "5.0.1", 356 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 357 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==", 358 | "engines": { 359 | "node": ">= 12.0.0" 360 | }, 361 | "peerDependencies": { 362 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 363 | }, 364 | "peerDependenciesMeta": { 365 | "@babel/core": { 366 | "optional": true 367 | }, 368 | "babel-plugin-macros": { 369 | "optional": true 370 | } 371 | } 372 | }, 373 | "node_modules/swr": { 374 | "version": "1.3.0", 375 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 376 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==", 377 | "peerDependencies": { 378 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0" 379 | } 380 | } 381 | }, 382 | "dependencies": { 383 | "@next/env": { 384 | "version": "12.1.4", 385 | "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.4.tgz", 386 | "integrity": "sha512-7gQwotJDKnfMxxXd8xJ2vsX5AzyDxO3zou0+QOXX8/unypA6icw5+wf6A62yKZ6qQ4UZHHxS68pb6UV+wNneXg==" 387 | }, 388 | "@next/swc-android-arm-eabi": { 389 | "version": "12.1.4", 390 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.4.tgz", 391 | "integrity": "sha512-FJg/6a3s2YrUaqZ+/DJZzeZqfxbbWrynQMT1C5wlIEq9aDLXCFpPM/PiOyJh0ahxc0XPmi6uo38Poq+GJTuKWw==", 392 | "optional": true 393 | }, 394 | "@next/swc-android-arm64": { 395 | "version": "12.1.4", 396 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.4.tgz", 397 | "integrity": "sha512-LXraazvQQFBgxIg3Htny6G5V5he9EK7oS4jWtMdTGIikmD/OGByOv8ZjLuVLZLtVm3UIvaAiGtlQSLecxJoJDw==", 398 | "optional": true 399 | }, 400 | "@next/swc-darwin-arm64": { 401 | "version": "12.1.4", 402 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.4.tgz", 403 | "integrity": "sha512-SSST/dBymecllZxcqTCcSTCu5o1NKk9I+xcvhn/O9nH6GWjgvGgGkNqLbCarCa0jJ1ukvlBA138FagyrmZ/4rQ==", 404 | "optional": true 405 | }, 406 | "@next/swc-darwin-x64": { 407 | "version": "12.1.4", 408 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.4.tgz", 409 | "integrity": "sha512-p1lwdX0TVjaoDXQVuAkjtxVBbCL/urgxiMCBwuPDO7TikpXtSRivi+mIzBj5q7ypgICFmIAOW3TyupXeoPRAnA==", 410 | "optional": true 411 | }, 412 | "@next/swc-linux-arm-gnueabihf": { 413 | "version": "12.1.4", 414 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.4.tgz", 415 | "integrity": "sha512-67PZlgkCn3TDxacdVft0xqDCL7Io1/C4xbAs0+oSQ0xzp6OzN2RNpuKjHJrJgKd0DsE1XZ9sCP27Qv0591yfyg==", 416 | "optional": true 417 | }, 418 | "@next/swc-linux-arm64-gnu": { 419 | "version": "12.1.4", 420 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.4.tgz", 421 | "integrity": "sha512-OnOWixhhw7aU22TQdQLYrgpgFq0oA1wGgnjAiHJ+St7MLj82KTDyM9UcymAMbGYy6nG/TFOOHdTmRMtCRNOw0g==", 422 | "optional": true 423 | }, 424 | "@next/swc-linux-arm64-musl": { 425 | "version": "12.1.4", 426 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.4.tgz", 427 | "integrity": "sha512-UoRMzPZnsAavdWtVylYxH8DNC7Uy0i6RrvNwT4PyQVdfANBn2omsUkcH5lgS2O7oaz0nAYLk1vqyZDO7+tJotA==", 428 | "optional": true 429 | }, 430 | "@next/swc-linux-x64-gnu": { 431 | "version": "12.1.4", 432 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.4.tgz", 433 | "integrity": "sha512-nM+MA/frxlTLUKLJKorctdI20/ugfHRjVEEkcLp/58LGG7slNaP1E5d5dRA1yX6ISjPcQAkywas5VlGCg+uTvA==", 434 | "optional": true 435 | }, 436 | "@next/swc-linux-x64-musl": { 437 | "version": "12.1.4", 438 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.4.tgz", 439 | "integrity": "sha512-GoRHxkuW4u4yKw734B9SzxJwVdyEJosaZ62P7ifOwcujTxhgBt3y76V2nNUrsSuopcKI2ZTDjaa+2wd5zyeXbA==", 440 | "optional": true 441 | }, 442 | "@next/swc-win32-arm64-msvc": { 443 | "version": "12.1.4", 444 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.4.tgz", 445 | "integrity": "sha512-6TQkQze0ievXwHJcVUrIULwCYVe3ccX6T0JgZ1SiMeXpHxISN7VJF/O8uSCw1JvXZYZ6ud0CJ7nfC5HXivgfPg==", 446 | "optional": true 447 | }, 448 | "@next/swc-win32-ia32-msvc": { 449 | "version": "12.1.4", 450 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.4.tgz", 451 | "integrity": "sha512-CsbX/IXuZ5VSmWCpSetG2HD6VO5FTsO39WNp2IR2Ut/uom9XtLDJAZqjQEnbUTLGHuwDKFjrIO3LkhtROXLE/g==", 452 | "optional": true 453 | }, 454 | "@next/swc-win32-x64-msvc": { 455 | "version": "12.1.4", 456 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.4.tgz", 457 | "integrity": "sha512-JtYuWzKXKLDMgE/xTcFtCm1MiCIRaAc5XYZfYX3n/ZWSI1SJS/GMm+Su0SAHJgRFavJh6U/p998YwO/iGTIgqQ==", 458 | "optional": true 459 | }, 460 | "caniuse-lite": { 461 | "version": "1.0.30001327", 462 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz", 463 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==" 464 | }, 465 | "js-tokens": { 466 | "version": "4.0.0", 467 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 468 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 469 | }, 470 | "loose-envify": { 471 | "version": "1.4.0", 472 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 473 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 474 | "requires": { 475 | "js-tokens": "^3.0.0 || ^4.0.0" 476 | } 477 | }, 478 | "nanoid": { 479 | "version": "3.3.2", 480 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 481 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" 482 | }, 483 | "next": { 484 | "version": "12.1.4", 485 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.4.tgz", 486 | "integrity": "sha512-DA4g97BM4Z0nKtDvCTm58RxdvoQyYzeg0AeVbh0N4Y/D8ELrNu47lQeEgRGF8hV4eQ+Sal90zxrJQQG/mPQ8CQ==", 487 | "requires": { 488 | "@next/env": "12.1.4", 489 | "@next/swc-android-arm-eabi": "12.1.4", 490 | "@next/swc-android-arm64": "12.1.4", 491 | "@next/swc-darwin-arm64": "12.1.4", 492 | "@next/swc-darwin-x64": "12.1.4", 493 | "@next/swc-linux-arm-gnueabihf": "12.1.4", 494 | "@next/swc-linux-arm64-gnu": "12.1.4", 495 | "@next/swc-linux-arm64-musl": "12.1.4", 496 | "@next/swc-linux-x64-gnu": "12.1.4", 497 | "@next/swc-linux-x64-musl": "12.1.4", 498 | "@next/swc-win32-arm64-msvc": "12.1.4", 499 | "@next/swc-win32-ia32-msvc": "12.1.4", 500 | "@next/swc-win32-x64-msvc": "12.1.4", 501 | "caniuse-lite": "^1.0.30001283", 502 | "postcss": "8.4.5", 503 | "styled-jsx": "5.0.1" 504 | } 505 | }, 506 | "picocolors": { 507 | "version": "1.0.0", 508 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 509 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 510 | }, 511 | "postcss": { 512 | "version": "8.4.5", 513 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 514 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 515 | "requires": { 516 | "nanoid": "^3.1.30", 517 | "picocolors": "^1.0.0", 518 | "source-map-js": "^1.0.1" 519 | } 520 | }, 521 | "react": { 522 | "version": "18.0.0", 523 | "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", 524 | "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", 525 | "requires": { 526 | "loose-envify": "^1.1.0" 527 | } 528 | }, 529 | "react-dom": { 530 | "version": "18.0.0", 531 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", 532 | "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", 533 | "requires": { 534 | "loose-envify": "^1.1.0", 535 | "scheduler": "^0.21.0" 536 | } 537 | }, 538 | "scheduler": { 539 | "version": "0.21.0", 540 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", 541 | "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", 542 | "requires": { 543 | "loose-envify": "^1.1.0" 544 | } 545 | }, 546 | "source-map-js": { 547 | "version": "1.0.2", 548 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 549 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 550 | }, 551 | "styled-jsx": { 552 | "version": "5.0.1", 553 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.1.tgz", 554 | "integrity": "sha512-+PIZ/6Uk40mphiQJJI1202b+/dYeTVd9ZnMPR80pgiWbjIwvN2zIp4r9et0BgqBuShh48I0gttPlAXA7WVvBxw==" 555 | }, 556 | "swr": { 557 | "version": "1.3.0", 558 | "resolved": "https://registry.npmjs.org/swr/-/swr-1.3.0.tgz", 559 | "integrity": "sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==" 560 | } 561 | } 562 | } 563 | -------------------------------------------------------------------------------- /example-react-suspense/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-react-suspense", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "next build", 7 | "dev": "next dev", 8 | "start": "next start" 9 | }, 10 | "dependencies": { 11 | "next": "12.1.4", 12 | "react": "^18.0.0", 13 | "react-dom": "^18.0.0", 14 | "swr": "^1.3.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /example-react-suspense/pages/index.js: -------------------------------------------------------------------------------- 1 | import { Suspense } from "react"; 2 | import useSWR from "swr"; 3 | 4 | const fetcher = (url) => fetch(url).then((r) => r.json()); 5 | 6 | function Profile() { 7 | const { data } = useSWR(`https://swapi.dev/api/people/1/`, fetcher, { 8 | suspense: true, 9 | }); 10 | return
{JSON.stringify(data, null, 2)}; 11 | } 12 | 13 | export default function Example() { 14 | return ( 15 |