From 7ffd87e433996cd606be51c56e0c181a20b90cf9 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Tue, 6 Feb 2024 13:53:29 -0700 Subject: [PATCH] now it really is epic --- .all-contributorsrc | 585 - .eslintignore | 6 +- .eslintrc.cjs | 36 + .gitattributes | 1 - .github/workflows/validate.yml | 37 +- .gitignore | 23 +- .gitpod.yml | 106 - .npmrc | 4 +- .prettierignore | 12 +- .prettierrc | 49 +- .vscode/extensions.json | 6 +- .vscode/settings.kcd.json | 66 - CODE_OF_CONDUCT.md | 1 - CONTRIBUTING.md | 38 - Dockerfile | 7 - LICENSE.md | 4 +- README.md | 275 +- config/patches/react-scripts+4.0.3.patch | 12 - config/tsconfig.exercise.json | 7 - config/tsconfig.final.json | 9 - config/tsconfig.shared.json | 19 - craco.config.js | 1 - docker-compose.yml | 9 - .../01.problem.use-state/README.mdx | 1 + .../01.problem.use-state/index.css | 89 + .../01.problem.use-state/index.tsx | 68 + .../01.problem/README.mdx | 12 - .../01.managing-ui-state/01.problem/index.tsx | 43 - .../01.solution.use-state/README.mdx | 1 + .../01.solution.use-state/index.css | 89 + .../01.solution.use-state/index.tsx | 68 + .../01.solution/index.tsx | 43 - .../02.problem.control/README.mdx | 1 + .../02.problem.control/index.css | 89 + .../02.problem.control/index.tsx | 84 + .../02.problem/README.mdx | 30 - .../01.managing-ui-state/02.problem/index.tsx | 43 - .../02.solution.control/README.mdx | 1 + .../02.solution.control/index.css | 89 + .../02.solution.control/index.tsx | 88 + .../02.solution/index.tsx | 53 - .../03.problem.derive/README.mdx | 1 + .../03.problem.derive/index.css | 89 + .../03.problem.derive/index.tsx | 98 + .../03.problem/README.mdx | 60 - .../01.managing-ui-state/03.problem/index.tsx | 53 - .../03.solution.derive/README.mdx | 1 + .../03.solution.derive/index.css | 89 + .../03.solution.derive/index.tsx | 95 + .../03.solution/README.mdx | 1 - .../03.solution/index.tsx | 73 - .../README.mdx | 0 .../04.problem.init/index.css | 89 + .../04.problem.init/index.tsx | 99 + .../04.problem/README.mdx | 28 - .../01.managing-ui-state/04.problem/index.tsx | 73 - .../04.solution.init/README.mdx | 1 + .../04.solution.init/index.css | 89 + .../04.solution.init/index.tsx | 98 + .../04.solution/README.mdx | 1 - .../04.solution/index.tsx | 80 - .../05.problem/README.mdx | 62 - .../01.managing-ui-state/05.problem/index.tsx | 80 - .../05.solution/README.mdx | 1 - .../05.solution/index.tsx | 84 - .../{01.solution/README.mdx => FINISHED.mdx} | 0 exercises/01.managing-ui-state/README.mdx | 29 +- .../01.problem.effects/README.mdx | 1 + .../01.problem.effects/index.css | 89 + .../01.problem.effects/index.tsx | 121 + .../01.solution.effects/README.mdx | 1 + .../01.solution.effects/index.css | 89 + .../01.solution.effects/index.tsx | 116 + .../02.problem.deps/README.mdx | 1 + .../02.problem.deps/index.css | 89 + .../02.problem.deps/index.tsx | 120 + .../02.solution.deps/README.mdx | 1 + .../02.solution.deps/index.css | 89 + .../02.solution.deps/index.tsx | 113 + .../03.problem.cleanup/README.mdx | 1 + .../03.problem.cleanup/index.css | 89 + .../03.problem.cleanup/index.tsx | 135 + .../03.solution.cleanup/README.mdx | 1 + .../03.solution.cleanup/index.css | 89 + .../03.solution.cleanup/index.tsx | 136 + .../FINISHED.mdx} | 0 .../README.mdx | 16 +- .../01.problem/README.mdx | 6 - .../01.problem/index.tsx | 84 - .../01.solution/index.tsx | 90 - .../02.problem/README.mdx | 23 - .../02.problem/index.tsx | 90 - .../02.solution/README.mdx | 1 - .../02.solution/index.tsx | 90 - .../03.problem/README.mdx | 32 - .../03.problem/index.tsx | 90 - .../03.solution/README.mdx | 1 - .../03.solution/index.tsx | 90 - .../04.problem/README.mdx | 29 - .../04.problem/index.tsx | 90 - .../04.solution/README.mdx | 1 - .../04.solution/index.tsx | 99 - .../05.problem/README.mdx | 14 - .../05.problem/index.tsx | 99 - .../05.solution/README.mdx | 1 - .../05.solution/index.tsx | 130 - .../01.problem.lift/README.mdx | 1 + .../01.problem.lift/index.css | 89 + .../01.problem.lift/index.tsx | 150 + .../03.lifting-state/01.problem/README.mdx | 7 - .../03.lifting-state/01.problem/index.tsx | 65 - .../01.solution.lift/README.mdx | 1 + .../01.solution.lift/index.css | 89 + .../01.solution.lift/index.tsx | 149 + .../03.lifting-state/01.solution/index.tsx | 60 - .../02.problem.lift-array/README.mdx | 1 + .../02.problem.lift-array/index.css | 89 + .../02.problem.lift-array/index.tsx | 167 + .../03.lifting-state/02.problem/README.mdx | 26 - .../03.lifting-state/02.problem/index.tsx | 60 - .../02.solution.lift-array/README.mdx | 1 + .../02.solution.lift-array/index.css | 89 + .../02.solution.lift-array/index.tsx | 172 + .../03.lifting-state/02.solution/README.mdx | 1 - .../03.lifting-state/02.solution/index.tsx | 54 - .../03.problem.colocate/README.mdx | 6 + .../03.problem.colocate/index.css | 89 + .../03.problem.colocate/index.tsx | 173 + .../03.lifting-state/03.problem/README.mdx | 18 - .../03.lifting-state/03.problem/index.tsx | 54 - .../03.solution.colocate/README.mdx | 1 + .../03.solution.colocate/index.css | 89 + .../03.solution.colocate/index.tsx | 147 + .../03.lifting-state/03.solution/README.mdx | 1 - .../03.lifting-state/03.solution/index.tsx | 49 - .../{01.solution/README.mdx => FINISHED.mdx} | 0 exercises/03.lifting-state/README.mdx | 1 - .../01.problem.ref}/README.mdx | 13 +- exercises/04.dom/01.problem.ref/index.css | 39 + exercises/04.dom/01.problem.ref/index.tsx | 59 + exercises/04.dom/01.solution.ref/README.mdx | 1 + exercises/04.dom/01.solution.ref/index.css | 39 + exercises/04.dom/01.solution.ref/index.tsx | 47 + exercises/04.dom/02.problem.deps/README.mdx | 1 + exercises/04.dom/02.problem.deps/index.css | 39 + exercises/04.dom/02.problem.deps/index.tsx | 114 + exercises/04.dom/02.solution.deps/README.mdx | 1 + exercises/04.dom/02.solution.deps/index.css | 39 + exercises/04.dom/02.solution.deps/index.tsx | 104 + .../README.mdx => 04.dom/FINISHED.mdx} | 0 .../README.mdx | 26 +- .../01.problem/index.css | 1 - .../01.problem/index.tsx | 97 - .../01.solution/index.css | 1 - .../01.solution/index.tsx | 77 - .../02.problem/index.css | 1 - .../02.problem/index.tsx | 77 - .../02.solution/index.css | 1 - .../02.solution/index.tsx | 95 - .../03.problem/README.mdx | 9 - .../03.problem/index.css | 1 - .../03.problem/index.tsx | 95 - .../03.solution/README.mdx | 1 - .../03.solution/index.css | 1 - .../03.solution/index.tsx | 81 - .../04.problem/README.mdx | 38 - .../04.problem/index.css | 1 - .../04.problem/index.tsx | 81 - .../04.solution/index.css | 1 - .../04.solution/index.tsx | 119 - .../05.dom-side-effects/01.problem/README.mdx | 11 - .../05.dom-side-effects/01.problem/index.tsx | 103 - .../05.dom-side-effects/01.solution/index.tsx | 95 - .../05.dom-side-effects/02.problem/index.css | 1 - .../05.dom-side-effects/02.problem/index.tsx | 50 - .../02.solution/README.mdx | 1 - .../05.dom-side-effects/02.solution/index.css | 1 - .../05.dom-side-effects/02.solution/index.tsx | 42 - .../01.problem.use-id/README.mdx | 1 + .../05.unique-ids/01.problem.use-id/index.css | 39 + .../05.unique-ids/01.problem.use-id/index.tsx | 118 + .../01.solution.use-id/README.mdx | 1 + .../01.solution.use-id/index.css | 39 + .../01.solution.use-id/index.tsx | 116 + exercises/05.unique-ids/FINISHED.mdx | 1 + exercises/05.unique-ids/README.mdx | 1 + .../01.problem.set-state-callback}/README.mdx | 21 +- .../01.problem.set-state-callback/index.css | 57 + .../01.problem.set-state-callback/index.tsx | 90 + .../README.mdx | 0 .../01.solution.set-state-callback/index.css | 57 + .../01.solution.set-state-callback/index.tsx | 73 + .../02.problem.local-storage}/README.mdx | 0 .../02.problem.local-storage/index.css | 57 + .../02.problem.local-storage/index.tsx | 82 + .../02.solution.local-storage}/README.mdx | 0 .../02.solution.local-storage/index.css | 57 + .../02.solution.local-storage/index.tsx | 90 + .../03.problem.history}/README.mdx | 0 .../03.problem.history/index.css | 63 + .../03.problem.history/index.tsx | 127 + .../03.solution.history/README.mdx | 1 + .../03.solution.history/index.css | 63 + .../03.solution.history/index.tsx | 141 + exercises/06.tic-tac-toe/FINISHED.mdx | 1 + .../README.mdx | 13 +- .../01.problem/README.mdx | 10 - .../01.problem/index.css | 1 - .../01.problem/index.tsx | 50 - .../01.solution/README.mdx | 1 - .../01.solution/index.css | 1 - .../01.solution/index.tsx | 51 - .../02.problem/README.mdx | 45 - .../02.problem/index.css | 1 - .../02.problem/index.tsx | 51 - .../02.solution/README.mdx | 1 - .../02.solution/index.css | 1 - .../02.solution/index.tsx | 63 - .../03.problem/README.mdx | 22 - .../03.problem/index.css | 1 - .../03.problem/index.tsx | 63 - .../03.solution/README.mdx | 1 - .../03.solution/index.css | 1 - .../03.solution/index.tsx | 71 - .../04.problem/README.mdx | 44 - .../04.problem/index.css | 1 - .../04.problem/index.tsx | 71 - .../04.solution/README.mdx | 1 - .../04.solution/index.css | 1 - .../04.solution/index.tsx | 76 - .../05.problem/README.mdx | 25 - .../05.problem/index.css | 1 - .../05.problem/index.tsx | 76 - .../05.solution/README.mdx | 1 - .../05.solution/index.css | 1 - .../05.solution/index.tsx | 107 - .../06.problem/README.mdx | 23 - .../06.problem/index.css | 1 - .../06.problem/index.tsx | 107 - .../06.solution/README.mdx | 1 - .../06.solution/index.css | 1 - .../06.solution/index.tsx | 106 - .../07.problem/README.mdx | 17 - .../07.problem/index.css | 1 - .../07.problem/index.tsx | 106 - .../07.solution/README.mdx | 1 - .../07.solution/index.css | 1 - .../07.solution/index.tsx | 83 - .../08.problem/README.mdx | 22 - .../08.problem/index.css | 1 - .../08.problem/index.tsx | 83 - .../08.solution/README.mdx | 1 - .../08.solution/index.css | 1 - .../08.solution/index.tsx | 89 - .../09.problem/README.mdx | 13 - .../09.problem/index.css | 1 - .../09.problem/index.tsx | 89 - .../09.solution/README.mdx | 1 - .../09.solution/index.css | 1 - .../09.solution/index.tsx | 93 - .../06.use-effect-http-requests/README.mdx | 52 - exercises/FINISHED.mdx | 1 + kcdshop/post-set-playground.js | 7 + package-lock.json | 34996 +++++----------- package.json | 114 +- public/_redirects | 1 - public/favicon.ico | Bin 9662 -> 0 bytes public/img/pokemon/bulbasaur.jpg | Bin 37764 -> 0 bytes public/img/pokemon/charizard.jpg | Bin 35969 -> 0 bytes public/img/pokemon/ditto.jpg | Bin 15095 -> 0 bytes public/img/pokemon/fallback-pokemon.jpg | Bin 21930 -> 0 bytes public/img/pokemon/mew.jpg | Bin 23537 -> 0 bytes public/img/pokemon/mewtwo.jpg | Bin 27860 -> 0 bytes public/img/pokemon/pikachu.jpg | Bin 26701 -> 0 bytes public/manifest.json | 15 - public/mockServiceWorker.js | 322 - public/pokemon.css | 139 - public/tic-tac-toe.styles.css | 54 - public/vanilla-tilt.styles.css | 31 - sandbox.config.json | 8 - scripts/deployed/Dockerfile | 22 + scripts/deployed/fly.toml | 45 + scripts/deployed/package.json | 18 + scripts/deployed/setup-swap.js | 20 + scripts/diff.js | 34 - scripts/fix-links | 2 - scripts/fix-watch.js | 75 + scripts/fix.js | 116 + scripts/nuke.js | 8 + scripts/pre-commit.js | 14 - scripts/pre-push.js | 24 - scripts/remove-ts | 2 - scripts/setup-custom.js | 43 + scripts/setup.js | 20 +- scripts/tsconfig.json | 11 + scripts/update-deps | 5 - scripts/update-deps.sh | 6 + setup.js | 3 +- shared/blog-posts.tsx | 108 + shared/pokemon.tsx | 229 - shared/tic-tac-toe-utils.tsx | 132 +- shared/types.d.ts | 16 - shared/utils.tsx | 69 +- src/__tests__/01.tsx | 186 - src/__tests__/02.tsx | 202 - src/__tests__/03.extra-1.tsx | 14 - src/__tests__/03.tsx | 14 - src/__tests__/04.extra-1.tsx | 60 - src/__tests__/04.extra-3.tsx | 90 - src/__tests__/04.tsx | 67 - src/__tests__/05.extra-1.tsx | 24 - src/__tests__/05.tsx | 216 - src/__tests__/06.tsx | 42 - src/backend.tsx | 198 - src/examples/hook-flow.png | Bin 57377 -> 0 bytes src/examples/hook-flow.tsx | 127 - src/examples/local-state-key-change.tsx | 40 - src/examples/set-state-callback.tsx | 35 - src/index.tsx | 4 - src/react-app-env.d.ts | 1 - src/setupTests.tsx | 5 - src/types.d.ts | 16 - tsconfig.json | 27 +- 323 files changed, 17286 insertions(+), 33275 deletions(-) delete mode 100644 .all-contributorsrc create mode 100644 .eslintrc.cjs delete mode 100644 .gitattributes delete mode 100644 .gitpod.yml delete mode 100644 .vscode/settings.kcd.json delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Dockerfile delete mode 100644 config/patches/react-scripts+4.0.3.patch delete mode 100644 config/tsconfig.exercise.json delete mode 100644 config/tsconfig.final.json delete mode 100644 config/tsconfig.shared.json delete mode 100644 craco.config.js delete mode 100644 docker-compose.yml create mode 100644 exercises/01.managing-ui-state/01.problem.use-state/README.mdx create mode 100644 exercises/01.managing-ui-state/01.problem.use-state/index.css create mode 100644 exercises/01.managing-ui-state/01.problem.use-state/index.tsx delete mode 100644 exercises/01.managing-ui-state/01.problem/README.mdx delete mode 100644 exercises/01.managing-ui-state/01.problem/index.tsx create mode 100644 exercises/01.managing-ui-state/01.solution.use-state/README.mdx create mode 100644 exercises/01.managing-ui-state/01.solution.use-state/index.css create mode 100644 exercises/01.managing-ui-state/01.solution.use-state/index.tsx delete mode 100644 exercises/01.managing-ui-state/01.solution/index.tsx create mode 100644 exercises/01.managing-ui-state/02.problem.control/README.mdx create mode 100644 exercises/01.managing-ui-state/02.problem.control/index.css create mode 100644 exercises/01.managing-ui-state/02.problem.control/index.tsx delete mode 100644 exercises/01.managing-ui-state/02.problem/README.mdx delete mode 100644 exercises/01.managing-ui-state/02.problem/index.tsx create mode 100644 exercises/01.managing-ui-state/02.solution.control/README.mdx create mode 100644 exercises/01.managing-ui-state/02.solution.control/index.css create mode 100644 exercises/01.managing-ui-state/02.solution.control/index.tsx delete mode 100644 exercises/01.managing-ui-state/02.solution/index.tsx create mode 100644 exercises/01.managing-ui-state/03.problem.derive/README.mdx create mode 100644 exercises/01.managing-ui-state/03.problem.derive/index.css create mode 100644 exercises/01.managing-ui-state/03.problem.derive/index.tsx delete mode 100644 exercises/01.managing-ui-state/03.problem/README.mdx delete mode 100644 exercises/01.managing-ui-state/03.problem/index.tsx create mode 100644 exercises/01.managing-ui-state/03.solution.derive/README.mdx create mode 100644 exercises/01.managing-ui-state/03.solution.derive/index.css create mode 100644 exercises/01.managing-ui-state/03.solution.derive/index.tsx delete mode 100644 exercises/01.managing-ui-state/03.solution/README.mdx delete mode 100644 exercises/01.managing-ui-state/03.solution/index.tsx rename exercises/01.managing-ui-state/{02.solution => 04.problem.init}/README.mdx (100%) create mode 100644 exercises/01.managing-ui-state/04.problem.init/index.css create mode 100644 exercises/01.managing-ui-state/04.problem.init/index.tsx delete mode 100644 exercises/01.managing-ui-state/04.problem/README.mdx delete mode 100644 exercises/01.managing-ui-state/04.problem/index.tsx create mode 100644 exercises/01.managing-ui-state/04.solution.init/README.mdx create mode 100644 exercises/01.managing-ui-state/04.solution.init/index.css create mode 100644 exercises/01.managing-ui-state/04.solution.init/index.tsx delete mode 100644 exercises/01.managing-ui-state/04.solution/README.mdx delete mode 100644 exercises/01.managing-ui-state/04.solution/index.tsx delete mode 100644 exercises/01.managing-ui-state/05.problem/README.mdx delete mode 100644 exercises/01.managing-ui-state/05.problem/index.tsx delete mode 100644 exercises/01.managing-ui-state/05.solution/README.mdx delete mode 100644 exercises/01.managing-ui-state/05.solution/index.tsx rename exercises/01.managing-ui-state/{01.solution/README.mdx => FINISHED.mdx} (100%) create mode 100644 exercises/02.sychronizing-side-effects/01.problem.effects/README.mdx create mode 100644 exercises/02.sychronizing-side-effects/01.problem.effects/index.css create mode 100644 exercises/02.sychronizing-side-effects/01.problem.effects/index.tsx create mode 100644 exercises/02.sychronizing-side-effects/01.solution.effects/README.mdx create mode 100644 exercises/02.sychronizing-side-effects/01.solution.effects/index.css create mode 100644 exercises/02.sychronizing-side-effects/01.solution.effects/index.tsx create mode 100644 exercises/02.sychronizing-side-effects/02.problem.deps/README.mdx create mode 100644 exercises/02.sychronizing-side-effects/02.problem.deps/index.css create mode 100644 exercises/02.sychronizing-side-effects/02.problem.deps/index.tsx create mode 100644 exercises/02.sychronizing-side-effects/02.solution.deps/README.mdx create mode 100644 exercises/02.sychronizing-side-effects/02.solution.deps/index.css create mode 100644 exercises/02.sychronizing-side-effects/02.solution.deps/index.tsx create mode 100644 exercises/02.sychronizing-side-effects/03.problem.cleanup/README.mdx create mode 100644 exercises/02.sychronizing-side-effects/03.problem.cleanup/index.css create mode 100644 exercises/02.sychronizing-side-effects/03.problem.cleanup/index.tsx create mode 100644 exercises/02.sychronizing-side-effects/03.solution.cleanup/README.mdx create mode 100644 exercises/02.sychronizing-side-effects/03.solution.cleanup/index.css create mode 100644 exercises/02.sychronizing-side-effects/03.solution.cleanup/index.tsx rename exercises/{02.synchronizing-side-effects/01.solution/README.mdx => 02.sychronizing-side-effects/FINISHED.mdx} (100%) rename exercises/{02.synchronizing-side-effects => 02.sychronizing-side-effects}/README.mdx (51%) delete mode 100644 exercises/02.synchronizing-side-effects/01.problem/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/01.problem/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/01.solution/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/02.problem/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/02.problem/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/02.solution/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/02.solution/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/03.problem/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/03.problem/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/03.solution/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/03.solution/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/04.problem/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/04.problem/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/04.solution/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/04.solution/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/05.problem/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/05.problem/index.tsx delete mode 100644 exercises/02.synchronizing-side-effects/05.solution/README.mdx delete mode 100644 exercises/02.synchronizing-side-effects/05.solution/index.tsx create mode 100644 exercises/03.lifting-state/01.problem.lift/README.mdx create mode 100644 exercises/03.lifting-state/01.problem.lift/index.css create mode 100644 exercises/03.lifting-state/01.problem.lift/index.tsx delete mode 100644 exercises/03.lifting-state/01.problem/README.mdx delete mode 100644 exercises/03.lifting-state/01.problem/index.tsx create mode 100644 exercises/03.lifting-state/01.solution.lift/README.mdx create mode 100644 exercises/03.lifting-state/01.solution.lift/index.css create mode 100644 exercises/03.lifting-state/01.solution.lift/index.tsx delete mode 100644 exercises/03.lifting-state/01.solution/index.tsx create mode 100644 exercises/03.lifting-state/02.problem.lift-array/README.mdx create mode 100644 exercises/03.lifting-state/02.problem.lift-array/index.css create mode 100644 exercises/03.lifting-state/02.problem.lift-array/index.tsx delete mode 100644 exercises/03.lifting-state/02.problem/README.mdx delete mode 100644 exercises/03.lifting-state/02.problem/index.tsx create mode 100644 exercises/03.lifting-state/02.solution.lift-array/README.mdx create mode 100644 exercises/03.lifting-state/02.solution.lift-array/index.css create mode 100644 exercises/03.lifting-state/02.solution.lift-array/index.tsx delete mode 100644 exercises/03.lifting-state/02.solution/README.mdx delete mode 100644 exercises/03.lifting-state/02.solution/index.tsx create mode 100644 exercises/03.lifting-state/03.problem.colocate/README.mdx create mode 100644 exercises/03.lifting-state/03.problem.colocate/index.css create mode 100644 exercises/03.lifting-state/03.problem.colocate/index.tsx delete mode 100644 exercises/03.lifting-state/03.problem/README.mdx delete mode 100644 exercises/03.lifting-state/03.problem/index.tsx create mode 100644 exercises/03.lifting-state/03.solution.colocate/README.mdx create mode 100644 exercises/03.lifting-state/03.solution.colocate/index.css create mode 100644 exercises/03.lifting-state/03.solution.colocate/index.tsx delete mode 100644 exercises/03.lifting-state/03.solution/README.mdx delete mode 100644 exercises/03.lifting-state/03.solution/index.tsx rename exercises/03.lifting-state/{01.solution/README.mdx => FINISHED.mdx} (100%) rename exercises/{05.dom-side-effects/02.problem => 04.dom/01.problem.ref}/README.mdx (75%) create mode 100644 exercises/04.dom/01.problem.ref/index.css create mode 100644 exercises/04.dom/01.problem.ref/index.tsx create mode 100644 exercises/04.dom/01.solution.ref/README.mdx create mode 100644 exercises/04.dom/01.solution.ref/index.css create mode 100644 exercises/04.dom/01.solution.ref/index.tsx create mode 100644 exercises/04.dom/02.problem.deps/README.mdx create mode 100644 exercises/04.dom/02.problem.deps/index.css create mode 100644 exercises/04.dom/02.problem.deps/index.tsx create mode 100644 exercises/04.dom/02.solution.deps/README.mdx create mode 100644 exercises/04.dom/02.solution.deps/index.css create mode 100644 exercises/04.dom/02.solution.deps/index.tsx rename exercises/{05.dom-side-effects/01.solution/README.mdx => 04.dom/FINISHED.mdx} (100%) rename exercises/{05.dom-side-effects => 04.dom}/README.mdx (73%) delete mode 100644 exercises/04.real-world-review-tic-tac-toe/01.problem/index.css delete mode 100644 exercises/04.real-world-review-tic-tac-toe/01.problem/index.tsx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/01.solution/index.css delete mode 100644 exercises/04.real-world-review-tic-tac-toe/01.solution/index.tsx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/02.problem/index.css delete mode 100644 exercises/04.real-world-review-tic-tac-toe/02.problem/index.tsx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/02.solution/index.css delete mode 100644 exercises/04.real-world-review-tic-tac-toe/02.solution/index.tsx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/03.problem/README.mdx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/03.problem/index.css delete mode 100644 exercises/04.real-world-review-tic-tac-toe/03.problem/index.tsx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/03.solution/README.mdx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/03.solution/index.css delete mode 100644 exercises/04.real-world-review-tic-tac-toe/03.solution/index.tsx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/04.problem/README.mdx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/04.problem/index.css delete mode 100644 exercises/04.real-world-review-tic-tac-toe/04.problem/index.tsx delete mode 100644 exercises/04.real-world-review-tic-tac-toe/04.solution/index.css delete mode 100644 exercises/04.real-world-review-tic-tac-toe/04.solution/index.tsx delete mode 100644 exercises/05.dom-side-effects/01.problem/README.mdx delete mode 100644 exercises/05.dom-side-effects/01.problem/index.tsx delete mode 100644 exercises/05.dom-side-effects/01.solution/index.tsx delete mode 100644 exercises/05.dom-side-effects/02.problem/index.css delete mode 100644 exercises/05.dom-side-effects/02.problem/index.tsx delete mode 100644 exercises/05.dom-side-effects/02.solution/README.mdx delete mode 100644 exercises/05.dom-side-effects/02.solution/index.css delete mode 100644 exercises/05.dom-side-effects/02.solution/index.tsx create mode 100644 exercises/05.unique-ids/01.problem.use-id/README.mdx create mode 100644 exercises/05.unique-ids/01.problem.use-id/index.css create mode 100644 exercises/05.unique-ids/01.problem.use-id/index.tsx create mode 100644 exercises/05.unique-ids/01.solution.use-id/README.mdx create mode 100644 exercises/05.unique-ids/01.solution.use-id/index.css create mode 100644 exercises/05.unique-ids/01.solution.use-id/index.tsx create mode 100644 exercises/05.unique-ids/FINISHED.mdx create mode 100644 exercises/05.unique-ids/README.mdx rename exercises/{04.real-world-review-tic-tac-toe/01.problem => 06.tic-tac-toe/01.problem.set-state-callback}/README.mdx (61%) create mode 100644 exercises/06.tic-tac-toe/01.problem.set-state-callback/index.css create mode 100644 exercises/06.tic-tac-toe/01.problem.set-state-callback/index.tsx rename exercises/{04.real-world-review-tic-tac-toe/01.solution => 06.tic-tac-toe/01.solution.set-state-callback}/README.mdx (100%) create mode 100644 exercises/06.tic-tac-toe/01.solution.set-state-callback/index.css create mode 100644 exercises/06.tic-tac-toe/01.solution.set-state-callback/index.tsx rename exercises/{04.real-world-review-tic-tac-toe/02.problem => 06.tic-tac-toe/02.problem.local-storage}/README.mdx (100%) create mode 100644 exercises/06.tic-tac-toe/02.problem.local-storage/index.css create mode 100644 exercises/06.tic-tac-toe/02.problem.local-storage/index.tsx rename exercises/{04.real-world-review-tic-tac-toe/02.solution => 06.tic-tac-toe/02.solution.local-storage}/README.mdx (100%) create mode 100644 exercises/06.tic-tac-toe/02.solution.local-storage/index.css create mode 100644 exercises/06.tic-tac-toe/02.solution.local-storage/index.tsx rename exercises/{04.real-world-review-tic-tac-toe/04.solution => 06.tic-tac-toe/03.problem.history}/README.mdx (100%) create mode 100644 exercises/06.tic-tac-toe/03.problem.history/index.css create mode 100644 exercises/06.tic-tac-toe/03.problem.history/index.tsx create mode 100644 exercises/06.tic-tac-toe/03.solution.history/README.mdx create mode 100644 exercises/06.tic-tac-toe/03.solution.history/index.css create mode 100644 exercises/06.tic-tac-toe/03.solution.history/index.tsx create mode 100644 exercises/06.tic-tac-toe/FINISHED.mdx rename exercises/{04.real-world-review-tic-tac-toe => 06.tic-tac-toe}/README.mdx (82%) delete mode 100644 exercises/06.use-effect-http-requests/01.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/01.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/01.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/01.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/01.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/01.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/02.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/02.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/02.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/02.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/02.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/02.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/03.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/03.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/03.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/03.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/03.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/03.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/04.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/04.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/04.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/04.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/04.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/04.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/05.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/05.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/05.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/05.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/05.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/05.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/06.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/06.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/06.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/06.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/06.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/06.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/07.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/07.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/07.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/07.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/07.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/07.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/08.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/08.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/08.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/08.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/08.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/08.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/09.problem/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/09.problem/index.css delete mode 100644 exercises/06.use-effect-http-requests/09.problem/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/09.solution/README.mdx delete mode 100644 exercises/06.use-effect-http-requests/09.solution/index.css delete mode 100644 exercises/06.use-effect-http-requests/09.solution/index.tsx delete mode 100644 exercises/06.use-effect-http-requests/README.mdx create mode 100644 exercises/FINISHED.mdx create mode 100644 kcdshop/post-set-playground.js delete mode 100644 public/_redirects delete mode 100644 public/favicon.ico delete mode 100644 public/img/pokemon/bulbasaur.jpg delete mode 100644 public/img/pokemon/charizard.jpg delete mode 100644 public/img/pokemon/ditto.jpg delete mode 100644 public/img/pokemon/fallback-pokemon.jpg delete mode 100644 public/img/pokemon/mew.jpg delete mode 100644 public/img/pokemon/mewtwo.jpg delete mode 100644 public/img/pokemon/pikachu.jpg delete mode 100644 public/manifest.json delete mode 100644 public/mockServiceWorker.js delete mode 100644 public/pokemon.css delete mode 100644 public/tic-tac-toe.styles.css delete mode 100644 public/vanilla-tilt.styles.css delete mode 100644 sandbox.config.json create mode 100644 scripts/deployed/Dockerfile create mode 100644 scripts/deployed/fly.toml create mode 100644 scripts/deployed/package.json create mode 100644 scripts/deployed/setup-swap.js delete mode 100644 scripts/diff.js delete mode 100755 scripts/fix-links create mode 100644 scripts/fix-watch.js create mode 100644 scripts/fix.js create mode 100644 scripts/nuke.js delete mode 100644 scripts/pre-commit.js delete mode 100644 scripts/pre-push.js delete mode 100755 scripts/remove-ts create mode 100644 scripts/setup-custom.js create mode 100644 scripts/tsconfig.json delete mode 100755 scripts/update-deps create mode 100755 scripts/update-deps.sh create mode 100644 shared/blog-posts.tsx delete mode 100644 shared/pokemon.tsx delete mode 100644 shared/types.d.ts delete mode 100644 src/__tests__/01.tsx delete mode 100644 src/__tests__/02.tsx delete mode 100644 src/__tests__/03.extra-1.tsx delete mode 100644 src/__tests__/03.tsx delete mode 100644 src/__tests__/04.extra-1.tsx delete mode 100644 src/__tests__/04.extra-3.tsx delete mode 100644 src/__tests__/04.tsx delete mode 100644 src/__tests__/05.extra-1.tsx delete mode 100644 src/__tests__/05.tsx delete mode 100644 src/__tests__/06.tsx delete mode 100644 src/backend.tsx delete mode 100644 src/examples/hook-flow.png delete mode 100644 src/examples/hook-flow.tsx delete mode 100644 src/examples/local-state-key-change.tsx delete mode 100644 src/examples/set-state-callback.tsx delete mode 100644 src/index.tsx delete mode 100644 src/react-app-env.d.ts delete mode 100644 src/setupTests.tsx delete mode 100644 src/types.d.ts diff --git a/.all-contributorsrc b/.all-contributorsrc deleted file mode 100644 index 788822d61..000000000 --- a/.all-contributorsrc +++ /dev/null @@ -1,585 +0,0 @@ -{ - "projectName": "react-hooks", - "projectOwner": "kentcdodds", - "repoType": "github", - "files": [ - "README.md" - ], - "imageSize": 100, - "commit": false, - "contributors": [ - { - "login": "kentcdodds", - "name": "Kent C. Dodds", - "avatar_url": "https://avatars.githubusercontent.com/u/1500684?v=3", - "profile": "https://kentcdodds.com", - "contributions": [ - "code", - "doc", - "infra", - "test" - ] - }, - { - "login": "tsnieman", - "name": "Tyler Nieman", - "avatar_url": "https://avatars3.githubusercontent.com/u/595711?v=4", - "profile": "http://tsnieman.net/", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "mplis", - "name": "Mike Plis", - "avatar_url": "https://avatars0.githubusercontent.com/u/1382377?v=4", - "profile": "https://github.com/mplis", - "contributions": [ - "code", - "test" - ] - }, - { - "login": "jdorfman", - "name": "Justin Dorfman", - "avatar_url": "https://avatars1.githubusercontent.com/u/398230?v=4", - "profile": "https://stackshare.io/jdorfman/decisions", - "contributions": [ - "fundingFinding" - ] - }, - { - "login": "AlgusDark", - "name": "Carlos Pérez Gutiérrez", - "avatar_url": "https://avatars1.githubusercontent.com/u/818856?v=4", - "profile": "http://algus.ninja", - "contributions": [ - "code" - ] - }, - { - "login": "CharlieStras", - "name": "Charlie Stras", - "avatar_url": "https://avatars2.githubusercontent.com/u/10193500?v=4", - "profile": "http://charliestras.me", - "contributions": [ - "doc", - "code" - ] - }, - { - "login": "lideo", - "name": "Lide", - "avatar_url": "https://avatars3.githubusercontent.com/u/1573567?v=4", - "profile": "https://github.com/lideo", - "contributions": [ - "doc" - ] - }, - { - "login": "marcosvega91", - "name": "Marco Moretti", - "avatar_url": "https://avatars2.githubusercontent.com/u/5365582?v=4", - "profile": "https://github.com/marcosvega91", - "contributions": [ - "code" - ] - }, - { - "login": "gugol2", - "name": "Watchmaker", - "avatar_url": "https://avatars0.githubusercontent.com/u/4933016?v=4", - "profile": "https://github.com/gugol2", - "contributions": [ - "bug" - ] - }, - { - "login": "dschapman", - "name": "Daniel Chapman", - "avatar_url": "https://avatars3.githubusercontent.com/u/36767987?v=4", - "profile": "https://dschapman.com", - "contributions": [ - "code" - ] - }, - { - "login": "flofehrenbacher", - "name": "flofehrenbacher", - "avatar_url": "https://avatars0.githubusercontent.com/u/18660708?v=4", - "profile": "https://github.com/flofehrenbacher", - "contributions": [ - "doc" - ] - }, - { - "login": "PritamSangani", - "name": "Pritam Sangani", - "avatar_url": "https://avatars3.githubusercontent.com/u/22857896?v=4", - "profile": "https://www.linkedin.com/in/pritamsangani/", - "contributions": [ - "code" - ] - }, - { - "login": "emzoumpo", - "name": "Emmanouil Zoumpoulakis", - "avatar_url": "https://avatars2.githubusercontent.com/u/2103443?v=4", - "profile": "https://github.com/emzoumpo", - "contributions": [ - "doc" - ] - }, - { - "login": "Aprillion", - "name": "Peter Hozák", - "avatar_url": "https://avatars0.githubusercontent.com/u/1087670?v=4", - "profile": "http://peter.hozak.info/", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "timobleeker", - "name": "Timo", - "avatar_url": "https://avatars0.githubusercontent.com/u/2723586?v=4", - "profile": "https://github.com/timobleeker", - "contributions": [ - "doc" - ] - }, - { - "login": "thacherhussain", - "name": "Thacher Hussain", - "avatar_url": "https://avatars1.githubusercontent.com/u/12368025?v=4", - "profile": "http://thacher.co", - "contributions": [ - "doc" - ] - }, - { - "login": "jmagrippis", - "name": "Johnny Magrippis", - "avatar_url": "https://avatars0.githubusercontent.com/u/3502800?v=4", - "profile": "https://magrippis.com", - "contributions": [ - "code" - ] - }, - { - "login": "apolakipso", - "name": "Apola Kipso", - "avatar_url": "https://avatars2.githubusercontent.com/u/494674?v=4", - "profile": "https://twitter.com/apolakipso", - "contributions": [ - "code" - ] - }, - { - "login": "Snaptags", - "name": "Markus Lasermann", - "avatar_url": "https://avatars1.githubusercontent.com/u/1249745?v=4", - "profile": "https://github.com/Snaptags", - "contributions": [ - "test" - ] - }, - { - "login": "degeens", - "name": "Stijn Geens", - "avatar_url": "https://avatars2.githubusercontent.com/u/33414262?v=4", - "profile": "https://github.com/degeens", - "contributions": [ - "doc" - ] - }, - { - "login": "nativedone", - "name": "Adeildo Amorim", - "avatar_url": "https://avatars2.githubusercontent.com/u/20998754?v=4", - "profile": "https://github.com/nativedone", - "contributions": [ - "doc" - ] - }, - { - "login": "thegoodsheppard", - "name": "Greg Sheppard", - "avatar_url": "https://avatars1.githubusercontent.com/u/13774377?v=4", - "profile": "https://github.com/thegoodsheppard", - "contributions": [ - "doc" - ] - }, - { - "login": "RafaelDavisH", - "name": "Rafael D. Hernandez", - "avatar_url": "https://avatars0.githubusercontent.com/u/6822714?v=4", - "profile": "https://rafaeldavis.dev", - "contributions": [ - "code" - ] - }, - { - "login": "DallasCarraher", - "name": "Dallas Carraher", - "avatar_url": "https://avatars2.githubusercontent.com/u/4131693?v=4", - "profile": "http://dallascarraher.dev", - "contributions": [ - "doc" - ] - }, - { - "login": "roni-castro", - "name": "Roni Castro", - "avatar_url": "https://avatars3.githubusercontent.com/u/24610813?v=4", - "profile": "https://github.com/roni-castro", - "contributions": [ - "test" - ] - }, - { - "login": "thebrengun", - "name": "Brennan", - "avatar_url": "https://avatars2.githubusercontent.com/u/15270595?v=4", - "profile": "https://github.com/thebrengun", - "contributions": [ - "doc" - ] - }, - { - "login": "DaleSeo", - "name": "Dale Seo", - "avatar_url": "https://avatars1.githubusercontent.com/u/5466341?v=4", - "profile": "https://www.daleseo.com", - "contributions": [ - "test" - ] - }, - { - "login": "MichaelDeBoey", - "name": "Michaël De Boey", - "avatar_url": "https://avatars3.githubusercontent.com/u/6643991?v=4", - "profile": "https://michaeldeboey.be", - "contributions": [ - "code" - ] - }, - { - "login": "bobbywarner", - "name": "Bobby Warner", - "avatar_url": "https://avatars0.githubusercontent.com/u/554961?v=4", - "profile": "http://bobbywarner.com", - "contributions": [ - "code" - ] - }, - { - "login": "douglance", - "name": "Doug Lance", - "avatar_url": "https://avatars2.githubusercontent.com/u/4741454?v=4", - "profile": "https://github.com/douglance", - "contributions": [ - "doc" - ] - }, - { - "login": "nekhaevskiy", - "name": "Yury Nekhaevskiy", - "avatar_url": "https://avatars0.githubusercontent.com/u/15379100?v=4", - "profile": "https://github.com/nekhaevskiy", - "contributions": [ - "doc" - ] - }, - { - "login": "mansn", - "name": "Måns Nilsson", - "avatar_url": "https://avatars0.githubusercontent.com/u/4518977?v=4", - "profile": "https://github.com/mansn", - "contributions": [ - "doc" - ] - }, - { - "login": "cwinters8", - "name": "Clark Winters", - "avatar_url": "https://avatars2.githubusercontent.com/u/40615752?v=4", - "profile": "https://clarkwinters.com", - "contributions": [ - "bug" - ] - }, - { - "login": "omarhoumz", - "name": "Omar Houmz", - "avatar_url": "https://avatars2.githubusercontent.com/u/40954879?v=4", - "profile": "https://omarhoumz.com/", - "contributions": [ - "code" - ] - }, - { - "login": "suddenlyGiovanni", - "name": "Giovanni Ravalico", - "avatar_url": "https://avatars2.githubusercontent.com/u/15946771?v=4", - "profile": "https://suddenlyGiovanni.dev", - "contributions": [ - "code", - "ideas" - ] - }, - { - "login": "Segebre", - "name": "Juan Enrique Segebre Zaghmout", - "avatar_url": "https://avatars3.githubusercontent.com/u/10774915?v=4", - "profile": "https://github.com/Segebre", - "contributions": [ - "code" - ] - }, - { - "login": "Alferguson", - "name": "John Alexander Ferguson", - "avatar_url": "https://avatars.githubusercontent.com/u/30883573?v=4", - "profile": "https://www.linkedin.com/in/johnalexanderferguson/", - "contributions": [ - "test" - ] - }, - { - "login": "trentschnee", - "name": "Trent Schneweis", - "avatar_url": "https://avatars.githubusercontent.com/u/10525549?v=4", - "profile": "https://trentschneweis.com", - "contributions": [ - "code" - ] - }, - { - "login": "dlo", - "name": "Dan Loewenherz", - "avatar_url": "https://avatars.githubusercontent.com/u/38447?v=4", - "profile": "https://github.com/lionheart", - "contributions": [ - "code" - ] - }, - { - "login": "shivaprabhu", - "name": "Shivaprabhu", - "avatar_url": "https://avatars.githubusercontent.com/u/40115160?v=4", - "profile": "https://prabhuwali.me/", - "contributions": [ - "doc" - ] - }, - { - "login": "JacobParis", - "name": "Jacob Paris", - "avatar_url": "https://avatars.githubusercontent.com/u/5633704?v=4", - "profile": "https://www.jacobparis.com/", - "contributions": [ - "doc" - ] - }, - { - "login": "Eik-S", - "name": "Eike Mücksch", - "avatar_url": "https://avatars.githubusercontent.com/u/9152141?v=4", - "profile": "https://github.com/Eik-S", - "contributions": [ - "test" - ] - }, - { - "login": "pvinis", - "name": "Pavlos Vinieratos", - "avatar_url": "https://avatars.githubusercontent.com/u/100233?v=4", - "profile": "http://pavlos.dev", - "contributions": [ - "doc" - ] - }, - { - "login": "mokajima", - "name": "Misaki Okajima", - "avatar_url": "https://avatars.githubusercontent.com/u/10166985?v=4", - "profile": "https://mokajima.com/", - "contributions": [ - "code", - "doc" - ] - }, - { - "login": "marioleed", - "name": "Mario Sannum", - "avatar_url": "https://avatars.githubusercontent.com/u/1763448?v=4", - "profile": "https://github.com/marioleed", - "contributions": [ - "code" - ] - }, - { - "login": "jaquinocode", - "name": "jaquinocode", - "avatar_url": "https://avatars.githubusercontent.com/u/28276675?v=4", - "profile": "https://github.com/jaquinocode", - "contributions": [ - "bug" - ] - }, - { - "login": "Insidiae", - "name": "Kobe Ruado", - "avatar_url": "https://avatars.githubusercontent.com/u/28495550?v=4", - "profile": "https://github.com/Insidiae", - "contributions": [ - "code" - ] - }, - { - "login": "prasanthlouis", - "name": "Prasanth Louis", - "avatar_url": "https://avatars.githubusercontent.com/u/8705429?v=4", - "profile": "https://www.linkedin.com/in/prasanthlouis/", - "contributions": [ - "doc" - ] - }, - { - "login": "SherylHohman", - "name": "Sheryl Hohman", - "avatar_url": "https://avatars.githubusercontent.com/u/8204778?v=4", - "profile": "https://stackoverflow.com/users/5411817/sherylhohman?tab=topactivity", - "contributions": [ - "code" - ] - }, - { - "login": "VictoriaVasys", - "name": "Victoria Vasys", - "avatar_url": "https://avatars.githubusercontent.com/u/10079657?v=4", - "profile": "https://www.victoriavasys.com/", - "contributions": [ - "doc" - ] - }, - { - "login": "ImElan", - "name": "Elan", - "avatar_url": "https://avatars.githubusercontent.com/u/59192383?v=4", - "profile": "https://github.com/ImElan", - "contributions": [ - "doc" - ] - }, - { - "login": "MBehtemam", - "name": "Mohammad Bagher Ehtemam", - "avatar_url": "https://avatars.githubusercontent.com/u/1811124?v=4", - "profile": "http://about.me/mbehtemam", - "contributions": [ - "doc" - ] - }, - { - "login": "leggsimon", - "name": "Simon Legg", - "avatar_url": "https://avatars.githubusercontent.com/u/11544418?v=4", - "profile": "https://github.com/leggsimon", - "contributions": [ - "doc" - ] - }, - { - "login": "PhilippVujic", - "name": "Philipp Vujic", - "avatar_url": "https://avatars.githubusercontent.com/u/28774924?v=4", - "profile": "https://github.com/PhilippVujic", - "contributions": [ - "test" - ] - }, - { - "login": "romach", - "name": "Roman Cherepanov", - "avatar_url": "https://avatars.githubusercontent.com/u/2506484?v=4", - "profile": "https://github.com/romach", - "contributions": [ - "doc" - ] - }, - { - "login": "ambujsahu81", - "name": "Ambuj sahu", - "avatar_url": "https://avatars.githubusercontent.com/u/118078892?v=4", - "profile": "https://github.com/ambujsahu81", - "contributions": [ - "doc" - ] - }, - { - "login": "pnadalini", - "name": "Pietro Nadalini", - "avatar_url": "https://avatars.githubusercontent.com/u/26207809?v=4", - "profile": "https://github.com/pnadalini", - "contributions": [ - "doc", - "code" - ] - }, - { - "login": "stanulilic", - "name": "Stanley Ulili", - "avatar_url": "https://avatars.githubusercontent.com/u/25522835?v=4", - "profile": "https://www.stanleyulili.com", - "contributions": [ - "bug" - ] - }, - { - "login": "jaharnum", - "name": "Jamie Harnum", - "avatar_url": "https://avatars.githubusercontent.com/u/19540539?v=4", - "profile": "https://github.com/jaharnum", - "contributions": [ - "code" - ] - }, - { - "login": "heypano", - "name": "Pano Papadatos", - "avatar_url": "https://avatars.githubusercontent.com/u/1577139?v=4", - "profile": "http://www.heypano.com", - "contributions": [ - "doc" - ] - }, - { - "login": "ASproson", - "name": "Atlas Sproson", - "avatar_url": "https://avatars.githubusercontent.com/u/77736272?v=4", - "profile": "https://github.com/ASproson", - "contributions": [ - "doc" - ] - }, - { - "login": "junagao", - "name": "juliane nagao", - "avatar_url": "https://avatars.githubusercontent.com/u/615616?v=4", - "profile": "http://junagao.com", - "contributions": [ - "doc" - ] - } - ], - "contributorsPerLine": 7, - "repoHost": "https://github.com", - "skipCi": true, - "commitConvention": "angular", - "commitType": "docs" -} diff --git a/.eslintignore b/.eslintignore index dd7caa17a..f8d83c978 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,7 @@ node_modules -coverage build +public/build +playwright-report +test-results +server-build +scripts diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 000000000..cece91800 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,36 @@ +/** @type {import('@types/eslint').Linter.BaseConfig} */ +module.exports = { + extends: [ + '@remix-run/eslint-config', + '@remix-run/eslint-config/node', + 'prettier', + ], + rules: { + // playwright requires destructuring in fixtures even if you don't use anything 🤷‍♂️ + 'no-empty-pattern': 'off', + '@typescript-eslint/consistent-type-imports': [ + 'warn', + { + prefer: 'type-imports', + disallowTypeAnnotations: true, + fixStyle: 'inline-type-imports', + }, + ], + 'import/no-duplicates': ['warn', { 'prefer-inline': true }], + 'import/consistent-type-specifier-style': ['warn', 'prefer-inline'], + 'import/order': [ + 'warn', + { + alphabetize: { order: 'asc', caseInsensitive: true }, + groups: [ + 'builtin', + 'external', + 'internal', + 'parent', + 'sibling', + 'index', + ], + }, + ], + }, +} diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 6313b56c5..000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto eol=lf diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 1b0d5c1de..472af7e0b 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -1,4 +1,9 @@ -name: validate +name: deploy + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: push: branches: @@ -8,8 +13,6 @@ on: - 'main' jobs: setup: - # ignore all-contributors PRs - if: ${{ !contains(github.head_ref, 'all-contributors') }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] @@ -23,8 +26,30 @@ jobs: with: node-version: 18 - - name: npm 8 - run: npm install --global npm@8 - - name: ▶️ Run setup script run: npm run setup + + - name: ʦ TypeScript + run: npm run typecheck + + - name: ⬣ ESLint + run: npm run lint + + deploy: + name: 🚀 Deploy + runs-on: ubuntu-latest + # only deploy main branch on pushes + if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }} + + steps: + - name: ⬇️ Checkout repo + uses: actions/checkout@v3 + + - name: 🎈 Setup Fly + uses: superfly/flyctl-actions/setup-flyctl@v1.4 + + - name: 🚀 Deploy + run: flyctl deploy --remote-only + working-directory: ./scripts/deployed + env: + FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} diff --git a/.gitignore b/.gitignore index 00fe9fa90..b338bcfde 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,15 @@ -.DS_Store node_modules -coverage -build -.idea/ -.vscode/ -.eslintcache -/playwright-report -/test-results -/playground \ No newline at end of file + +workspace/ +**/.cache/ +**/build/ +**/public/build +**/playwright-report +data.db +/playground +**/tsconfig.tsbuildinfo + +# in a real app you'd want to not commit the .env +# file as well, but since this is for a workshop +# we're going to keep them around. +# .env diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 43e12a851..000000000 --- a/.gitpod.yml +++ /dev/null @@ -1,106 +0,0 @@ -## Learn more about this file at 'https://www.gitpod.io/docs/references/gitpod-yml' -## -## This '.gitpod.yml' file when placed at the root of a project instructs -## Gitpod how to prepare & build the project, start development environments -## and configure continuous prebuilds. Prebuilds when enabled builds a project -## like a CI server so you can start coding right away - no more waiting for -## dependencies to download and builds to finish when reviewing pull-requests -## or hacking on something new. -## -## With Gitpod you can develop software from any device (even iPads) via -## desktop or browser based versions of VS Code or any JetBrains IDE and -## customise it to your individual needs - from themes to extensions, you -## have full control. -## -## The easiest way to try out Gitpod is install the browser extenion: -## 'https://www.gitpod.io/docs/browser-extension' or by prefixing -## 'https://gitpod.io#' to the source control URL of any project. -## -## For example: 'https://gitpod.io#https://github.com/gitpod-io/gitpod' - - -## The 'tasks' section defines how Gitpod prepares & builds this project -## and how it can start development servers. With Gitpod, there are three -## types of tasks: -## -## - before: Use this for tasks that need to run before init and before command. -## - init: Use this to configure prebuilds of heavy-lifting tasks such as -## downloading dependencies or compiling source code. -## - command: Use this to start your database or application when the workspace starts. -## -## Learn more about these tasks at 'https://www.gitpod.io/docs/config-start-tasks' - -tasks: - - name: App - init: npm install - command: npm run start - openMode: split-left - - - name: Test - command: npm run test - openMode: split-right - - - name: Set up email - command: | - clear - printf "\n\n\n" - printf "\u001b[36;1mAutofilling Email\u001b[0m\n" - printf "\u001b[2;1mEach exercise comes with a elaboration form to help your retention. Providing your email now will mean you don't have to provide it each time you fill out the form.\u001b[0m\n" - - npx "https://gist.github.com/kentcdodds/2d44448a8997b9964b1be44cd294d1f5" \ - && exit 0 - -## The 'ports' section defines various ports your may listen on are -## configured in Gitpod on an authenticated URL. By default, all ports -## are in private visibility state. -## -## Learn more about ports at 'https://www.gitpod.io/docs/config-ports' - -ports: - - port: 3000 # alternatively configure entire ranges via '8080-8090' - visibility: private # either 'public' or 'private' (default) - onOpen: open-browser # either 'open-browser', 'open-preview' or 'ignore' - -## The 'vscode' section defines a list of Visual Studio Code extensions from -## the OpenVSX.org registry to be installed upon workspace startup. OpenVSX -## is an open alternative to the proprietary Visual Studio Code Marketplace -## and extensions can be added by sending a pull-request with the extension -## identifier to https://github.com/open-vsx/publish-extensions -## -## The identifier of an extension is always ${publisher}.${name}. -## -## For example: 'vscodevim.vim' -## -## Learn more at 'https://www.gitpod.io/docs/ides-and-editors/vscode' - -vscode: - extensions: - - VisualStudioExptTeam.vscodeintellicode - - dbaeumer.vscode-eslint - - formulahendry.auto-rename-tag - - esbenp.prettier-vscode - - ms-azuretools.vscode-docker - -## The 'github' section defines configuration of continuous prebuilds -## for GitHub repositories when the GitHub application -## 'https://github.com/apps/gitpod-io' is installed in GitHub and granted -## permissions to access the repository. -## -## Learn more at 'https://www.gitpod.io/docs/prebuilds' - -github: - prebuilds: - # enable for the default branch - master: true - # enable for all branches in this repo - branches: false - # enable for pull requests coming from this repo - pullRequests: false - # enable for pull requests coming from forks - pullRequestsFromForks: false - # add a check to pull requests - addCheck: false - # add a "Review in Gitpod" button as a comment to pull requests - addComment: false - # add a "Review in Gitpod" button to the pull request's description - addBadge: false diff --git a/.npmrc b/.npmrc index 5984d095c..668efa17f 100644 --- a/.npmrc +++ b/.npmrc @@ -1,4 +1,2 @@ -registry=https://registry.npmjs.org/ -package-lock=true -yes=true legacy-peer-deps=true +registry=https://registry.npmjs.org/ diff --git a/.prettierignore b/.prettierignore index dd7caa17a..c8d863d17 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,11 @@ node_modules -coverage -build + +**/build/** +**/public/build/** +.env + +**/package.json +**/tsconfig.json + +**/package-lock.json +**/playwright-report/** diff --git a/.prettierrc b/.prettierrc index ac0d9a9d4..fc39ebeff 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,18 +1,35 @@ { - "arrowParens": "avoid", - "bracketSpacing": false, - "endOfLine": "lf", - "htmlWhitespaceSensitivity": "css", - "insertPragma": false, - "jsxBracketSameLine": false, - "jsxSingleQuote": false, - "printWidth": 80, - "proseWrap": "always", - "quoteProps": "as-needed", - "requirePragma": false, - "semi": false, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "all", - "useTabs": false + "arrowParens": "avoid", + "bracketSameLine": false, + "bracketSpacing": true, + "embeddedLanguageFormatting": "auto", + "endOfLine": "lf", + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxSingleQuote": false, + "printWidth": 80, + "proseWrap": "always", + "quoteProps": "as-needed", + "requirePragma": false, + "semi": false, + "singleAttributePerLine": false, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": true, + "overrides": [ + { + "files": ["**/*.json"], + "options": { + "useTabs": false + } + }, + { + "files": ["**/*.mdx"], + "options": { + "proseWrap": "preserve", + "htmlWhitespaceSensitivity": "ignore" + } + } + ] } diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 946f94422..fcfa18b8d 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,7 +2,9 @@ "recommendations": [ "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", - "formulahendry.auto-rename-tag", - "VisualStudioExptTeam.vscodeintellicode" + "bradlc.vscode-tailwindcss", + "neotan.vscode-auto-restart-typescript-eslint-servers", + "prisma.prisma", + "qwtel.sqlite-viewer" ] } diff --git a/.vscode/settings.kcd.json b/.vscode/settings.kcd.json deleted file mode 100644 index 1e7850a0a..000000000 --- a/.vscode/settings.kcd.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true, - "editor.detectIndentation": true, - "editor.fontFamily": "'Dank Mono', Menlo, Monaco, 'Courier New', monospace", - "editor.fontLigatures": false, - "editor.rulers": [80], - "editor.snippetSuggestions": "top", - "editor.wordBasedSuggestions": false, - "editor.suggest.localityBonus": true, - "editor.acceptSuggestionOnCommitCharacter": false, - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.suggestSelection": "recentlyUsed", - "editor.suggest.showKeywords": false - }, - "editor.renderWhitespace": "boundary", - "files.defaultLanguage": "{activeEditorLanguage}", - "javascript.validate.enable": false, - "search.exclude": { - "**/node_modules": true, - "**/bower_components": true, - "**/coverage": true, - "**/dist": true, - "**/build": true, - "**/.build": true, - "**/.gh-pages": true - }, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": false - }, - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact" - ], - "eslint.options": { - "env": { - "browser": true, - "jest/globals": true, - "es6": true - }, - "parserOptions": { - "ecmaVersion": 2019, - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, - "rules": { - "no-debugger": "off" - } - }, - "workbench.colorTheme": "Night Owl", - "workbench.iconTheme": "material-icon-theme", - "breadcrumbs.enabled": true, - "grunt.autoDetect": "off", - "gulp.autoDetect": "off", - "npm.runSilent": true, - "explorer.confirmDragAndDrop": false, - "editor.formatOnPaste": false, - "editor.cursorSmoothCaretAnimation": true, - "editor.smoothScrolling": true, - "php.suggest.basic": false -} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index e0d1c00bf..000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1 +0,0 @@ -Please refer to [kentcdodds.com/conduct/](https://kentcdodds.com/conduct/) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 0406ca5b9..000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Contributing - -Thanks for being willing to contribute! - -**Working on your first Pull Request?** You can learn how from this _free_ -series [How to Contribute to an Open Source Project on GitHub][egghead] - -## Project setup - -1. Fork and clone the repo -2. Run `npm run setup -s` to install dependencies and run validation -3. Create a branch for your PR with `git checkout -b pr/your-branch-name` - -> Tip: Keep your `main` branch pointing at the original repository and make pull -> requests from branches on your fork. To do this, run: -> -> ``` -> git remote add upstream https://github.com/kentcdodds/react-hooks.git -> git fetch upstream -> git branch --set-upstream-to=upstream/main main -> ``` -> -> This will add the original repository as a "remote" called "upstream," Then -> fetch the git information from that remote, then set your local `main` branch -> to use the upstream main branch whenever you run `git pull`. Then you can make -> all of your pull request branches based on this `main` branch. Whenever you -> want to update your version of `main`, do a regular `git pull`. - -## Help needed - -Please checkout the [the open issues][issues] - -Also, please watch the repo and respond to questions/bug reports/feature -requests! Thanks! - -[egghead]: - https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github -[issues]: https://github.com/kentcdodds/react-hooks/issues diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 21656d2b3..000000000 --- a/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM node:16 - -WORKDIR /app -COPY . . -RUN NO_EMAIL_AUTOFILL=true node setup - -CMD ["npm", "start"] diff --git a/LICENSE.md b/LICENSE.md index 04e0cb136..ee60ae282 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,4 @@ This material is available for private, non-commercial use under the [GPL version 3](http://www.gnu.org/licenses/gpl-3.0-standalone.html). If you -would like to use this material to conduct your own workshop, please contact me -at me@kentcdodds.com +would like to use this material to conduct your own workshop, please contact us +at team@epicweb.dev diff --git a/README.md b/README.md index 4e27729aa..aee45dafb 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,24 @@
-

🎣 React Hooks 🚀 EpicReact.Dev

+

🎣 React Hooks

Learn the ins and outs of React Hooks.

- I will take you on a deep dive into - React Hooks, and show you what you need to know to start using them in your - applications right away. + Go on a deep dive into React Hooks, and find you what you need to know to + start using them in your applications right away.

+
+ +
- +
+ Learn React from Start to Finish
@@ -21,10 +27,8 @@ [![Build Status][build-badge]][build] -[![All Contributors][all-contributors-badge]](#contributors-) [![GPL 3.0 License][license-badge]][license] [![Code of Conduct][coc-badge]][coc] -[![Gitpod ready-to-code][gitpod-badge]](https://gitpod.io/#https://github.com/kentcdodds/react-hooks) ## Prerequisites @@ -33,28 +37,18 @@ [Why React Hooks](https://www.youtube.com/watch?v=zWsZcBiwgVE&list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf) (35 minutes) -> NOTE: The EpicReact.dev videos were recorded with React version ^16.13 and all -> material in this repo has been updated to React version ^18. Differences are -> minor and any relevant differences are noted in the instructions. +## Pre-workshop Resources -## Quick start +Here are some resources you can read before taking the workshop to get you up to +speed on some of the tools and concepts we'll be covering: -It's recommended you run everything in the same environment you work in every -day, but if you don't want to set up the repository locally, you can get started -in one click with [Gitpod](https://gitpod.io), -[CodeSandbox](https://codesandbox.io/s/github/kentcdodds/react-hooks), or by -following the [video demo](https://www.youtube.com/watch?v=gCoVJm3hGk4) -instructions for [GitHub Codespaces](https://github.com/features/codespaces). - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/kentcdodds/react-hooks) - -For a local development environment, follow the instructions below +- TODO: add resources ## System Requirements -- [git][git] v2.13 or greater -- [NodeJS][node] `>=16` -- [npm][npm] v8.16.0 or greater +- [git][git] v2.18 or greater +- [NodeJS][node] v18 or greater +- [npm][npm] v8 or greater All of these must be available in your `PATH`. To verify things are set up properly, you can run this: @@ -71,232 +65,39 @@ variable and how to fix it here for [windows][win-path] or ## Setup -> If you want to commit and push your work as you go, you'll want to -> [fork](https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/fork-a-repo) -> first and then clone your fork rather than this repo directly. +This is a pretty large project (it's actually many apps in one) so it can take +several minutes to get everything set up the first time. Please have a strong +network connection before running the setup and grab a snack. -After you've made sure to have the correct things (and versions) installed, you -should be able to just run a few commands to get set up: +Follow these steps to get this set up: -```shell -git clone https://github.com/kentcdodds/react-hooks.git +```sh nonumber +git clone --depth 1 https://github.com/epicweb-dev/react-hooks.git cd react-hooks -node setup -``` - -This may take a few minutes. **It will ask you for your email.** This is -optional and just automatically adds your email to the links in the project to -make filling out some forms easier. - -If you get any errors, please read through them and see if you can find out what -the problem is. If you can't work it out on your own then please [file an -issue][issue] and provide _all_ the output from the commands you ran (even if -it's a lot). - -If you can't get the setup script to work, then just make sure you have the -right versions of the requirements listed above, and run the following commands: - -```shell -npm install -npm run validate -``` - -If you are still unable to fix issues and you know how to use Docker 🐳 you can -setup the project with the following command: - -```shell -docker-compose up -``` - -## Running the app - -To get the app up and running (and really see if it worked), run: - -```shell -npm start +npm run setup ``` -This should start up your browser. If you're familiar, this is a standard -[react-scripts](https://create-react-app.dev/) application. - -You can also open -[the deployment of the app on Netlify](https://react-hooks.netlify.app/). - -## Running the tests - -```shell -npm test -``` - -This will start [Jest](https://jestjs.io/) in watch mode. Read the output and -play around with it. The tests are there to help you reach the final version, -however _sometimes_ you can accomplish the task and the tests still fail if you -implement things differently than I do in my solution, so don't look to them as -a complete authority. - -### Exercises - -- `src/exercise/00.md`: Background, Exercise Instructions, Extra Credit -- `src/exercise/00.js`: Exercise with Emoji helpers -- `src/__tests__/00.js`: Tests -- `src/final/00.js`: Final version -- `src/final/00.extra-0.js`: Final version of extra credit - -The purpose of the exercise is **not** for you to work through all the material. -It's intended to get your brain thinking about the right questions to ask me as -_I_ walk through the material. - -### Helpful Emoji 🐨 🦺 💰 💯 📝 🦉 📜 💣 💪 🏁 👨‍💼 🚨 - -Each exercise has comments in it to help you get through the exercise. These fun -emoji characters are here to help you. - -- **Kody the Koala** 🐨 will tell you when there's something specific you should - do -- **Lily the Life Jacket** 🦺 will help you with any TypeScript-specific parts - of the exercises -- **Marty the Money Bag** 💰 will give you specific tips (and sometimes code) - along the way -- **Hannah the Hundred** 💯 will give you extra challenges you can do if you - finish the exercises early -- **Nancy the Notepad** 📝 will encourage you to take notes on what you're - learning -- **Olivia the Owl** 🦉 will give you useful tidbits/best practice notes and a - link for elaboration and feedback -- **Dominic the Document** 📜 will give you links to useful documentation -- **Berry the Bomb** 💣 will be hanging around anywhere you need to blow stuff - up (delete code) -- **Matthew the Muscle** 💪 will indicate that you're working with an exercise -- **Chuck the Checkered Flag** 🏁 will indicate that you're working with a final -- **Peter the Product Manager** 👨‍💼 helps us know what our users want -- **Alfred the Alert** 🚨 will occasionally show up in the test failures with - potential explanations for why the tests are failing - -## Contributors - -Thanks goes to these wonderful people -([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Kent C. Dodds
Kent C. Dodds

💻 📖 🚇 ⚠️
Tyler Nieman
Tyler Nieman

💻 📖
Mike Plis
Mike Plis

💻 ⚠️
Justin Dorfman
Justin Dorfman

🔍
Carlos Pérez Gutiérrez
Carlos Pérez Gutiérrez

💻
Charlie Stras
Charlie Stras

📖 💻
Lide
Lide

📖
Marco Moretti
Marco Moretti

💻
Watchmaker
Watchmaker

🐛
Daniel Chapman
Daniel Chapman

💻
flofehrenbacher
flofehrenbacher

📖
Pritam Sangani
Pritam Sangani

💻
Emmanouil Zoumpoulakis
Emmanouil Zoumpoulakis

📖
Peter Hozák
Peter Hozák

💻 📖
Timo
Timo

📖
Thacher Hussain
Thacher Hussain

📖
Johnny Magrippis
Johnny Magrippis

💻
Apola Kipso
Apola Kipso

💻
Markus Lasermann
Markus Lasermann

⚠️
Stijn Geens
Stijn Geens

📖
Adeildo Amorim
Adeildo Amorim

📖
Greg Sheppard
Greg Sheppard

📖
Rafael D. Hernandez
Rafael D. Hernandez

💻
Dallas Carraher
Dallas Carraher

📖
Roni Castro
Roni Castro

⚠️
Brennan
Brennan

📖
Dale Seo
Dale Seo

⚠️
Michaël De Boey
Michaël De Boey

💻
Bobby Warner
Bobby Warner

💻
Doug Lance
Doug Lance

📖
Yury Nekhaevskiy
Yury Nekhaevskiy

📖
Måns Nilsson
Måns Nilsson

📖
Clark Winters
Clark Winters

🐛
Omar Houmz
Omar Houmz

💻
Giovanni Ravalico
Giovanni Ravalico

💻 🤔
Juan Enrique Segebre Zaghmout
Juan Enrique Segebre Zaghmout

💻
John Alexander Ferguson
John Alexander Ferguson

⚠️
Trent Schneweis
Trent Schneweis

💻
Dan Loewenherz
Dan Loewenherz

💻
Shivaprabhu
Shivaprabhu

📖
Jacob Paris
Jacob Paris

📖
Eike Mücksch
Eike Mücksch

⚠️
Pavlos Vinieratos
Pavlos Vinieratos

📖
Misaki Okajima
Misaki Okajima

💻 📖
Mario Sannum
Mario Sannum

💻
jaquinocode
jaquinocode

🐛
Kobe Ruado
Kobe Ruado

💻
Prasanth Louis
Prasanth Louis

📖
Sheryl Hohman
Sheryl Hohman

💻
Victoria Vasys
Victoria Vasys

📖
Elan
Elan

📖
Mohammad Bagher Ehtemam
Mohammad Bagher Ehtemam

📖
Simon Legg
Simon Legg

📖
Philipp Vujic
Philipp Vujic

⚠️
Roman Cherepanov
Roman Cherepanov

📖
Ambuj sahu
Ambuj sahu

📖
Pietro Nadalini
Pietro Nadalini

📖 💻
Stanley Ulili
Stanley Ulili

🐛
Jamie Harnum
Jamie Harnum

💻
Pano Papadatos
Pano Papadatos

📖
Atlas Sproson
Atlas Sproson

📖
juliane nagao
juliane nagao

📖
- - - - - - -This project follows the -[all-contributors](https://github.com/kentcdodds/all-contributors) -specification. Contributions of any kind welcome! +If you experience errors here, please open [an issue][issue] with as many +details as you can offer. -## Workshop Feedback +## The Workshop App -Each exercise has an Elaboration and Feedback link. Please fill that out after -the exercise and instruction. +Learn all about the workshop app on the +[Epic Web Getting Started Guide](https://www.epicweb.dev/get-started). -At the end of the workshop, please go to this URL to give overall feedback. -Thank you! https://kcd.im/rh-ws-feedback +[![Kent with the workshop app in the background](https://github-production-user-asset-6210df.s3.amazonaws.com/1500684/280407082-0e012138-e01d-45d5-abf2-86ffe5d03c69.png)](https://www.epicweb.dev/get-started) [npm]: https://www.npmjs.com/ [node]: https://nodejs.org [git]: https://git-scm.com/ -[build-badge]: https://img.shields.io/github/workflow/status/kentcdodds/react-hooks/validate/main?logo=github&style=flat-square -[build]: https://github.com/kentcdodds/react-hooks/actions?query=workflow%3Avalidate +[build-badge]: https://img.shields.io/github/actions/workflow/status/epicweb-dev/react-hooks/validate.yml?branch=main&logo=github&style=flat-square +[build]: https://github.com/epicweb-dev/react-hooks/actions?query=workflow%3Avalidate [license-badge]: https://img.shields.io/badge/license-GPL%203.0%20License-blue.svg?style=flat-square -[license]: https://github.com/kentcdodds/react-hooks/blob/main/LICENSE +[license]: https://github.com/epicweb-dev/react-hooks/blob/main/LICENSE [coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square -[gitpod-badge]: https://img.shields.io/badge/Gitpod-ready--to--code-908a85?logo=gitpod -[coc]: https://github.com/kentcdodds/react-hooks/blob/main/CODE_OF_CONDUCT.md -[emojis]: https://github.com/kentcdodds/all-contributors#emoji-key -[all-contributors]: https://github.com/kentcdodds/all-contributors -[all-contributors-badge]: https://img.shields.io/github/all-contributors/kentcdodds/react-hooks?color=orange&style=flat-square +[coc]: https://kentcdodds.com/conduct [win-path]: https://www.howtogeek.com/118594/how-to-edit-your-system-path-for-easy-command-line-access/ [mac-path]: http://stackoverflow.com/a/24322978/971592 -[issue]: https://github.com/kentcdodds/react-hooks/issues/new +[issue]: https://github.com/epicweb-dev/react-hooks/issues/new diff --git a/config/patches/react-scripts+4.0.3.patch b/config/patches/react-scripts+4.0.3.patch deleted file mode 100644 index c390d0156..000000000 --- a/config/patches/react-scripts+4.0.3.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js b/node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js -index 949f34a..0b3b54e 100644 ---- a/node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js -+++ b/node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js -@@ -58,6 +58,7 @@ function verifyNoTypeScript() { - } - - function verifyTypeScriptSetup() { -+ return - let firstTimeSetup = false; - - if (!fs.existsSync(paths.appTsConfig)) { diff --git a/config/tsconfig.exercise.json b/config/tsconfig.exercise.json deleted file mode 100644 index 9ccbb3c97..000000000 --- a/config/tsconfig.exercise.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.shared.json", - "include": ["../src/exercise/"], - "compilerOptions": { - "strict": false - } -} diff --git a/config/tsconfig.final.json b/config/tsconfig.final.json deleted file mode 100644 index 97df133bc..000000000 --- a/config/tsconfig.final.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.shared.json", - "exclude": ["../src/exercise/"], - "include": ["../src"], - "compilerOptions": { - "strict": true, - "noUncheckedIndexedAccess": true - } -} diff --git a/config/tsconfig.shared.json b/config/tsconfig.shared.json deleted file mode 100644 index 3122ef39e..000000000 --- a/config/tsconfig.shared.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": false, - "forceConsistentCasingInFileNames": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - "noFallthroughCasesInSwitch": true - } -} diff --git a/craco.config.js b/craco.config.js deleted file mode 100644 index 1e27ee642..000000000 --- a/craco.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@kentcdodds/react-workshop-app/craco.config') diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 0cb30eb7f..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '3' - -services: - node: - build: . - volumes: - - ./src:/app/src - ports: - - '3000:3000' diff --git a/exercises/01.managing-ui-state/01.problem.use-state/README.mdx b/exercises/01.managing-ui-state/01.problem.use-state/README.mdx new file mode 100644 index 000000000..2f1904ce7 --- /dev/null +++ b/exercises/01.managing-ui-state/01.problem.use-state/README.mdx @@ -0,0 +1 @@ +# useState diff --git a/exercises/01.managing-ui-state/01.problem.use-state/index.css b/exercises/01.managing-ui-state/01.problem.use-state/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/01.managing-ui-state/01.problem.use-state/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/01.managing-ui-state/01.problem.use-state/index.tsx b/exercises/01.managing-ui-state/01.problem.use-state/index.tsx new file mode 100644 index 000000000..7445eb125 --- /dev/null +++ b/exercises/01.managing-ui-state/01.problem.use-state/index.tsx @@ -0,0 +1,68 @@ +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' + +function App() { + // 🐨 call useState here and initialize the query with an empty string + // 💰 we don't need the query yet, but you can console.log it if you want + + return ( +
+
+
+ + +
+
+ + + +
+ +
+ {/* 🐨 pass the query state as a prop */} + +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/01.problem/README.mdx b/exercises/01.managing-ui-state/01.problem/README.mdx deleted file mode 100644 index 62d2aebe6..000000000 --- a/exercises/01.managing-ui-state/01.problem/README.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# Managing UI State - -This exercise should be familiar if you've been through the -[React Fundamentals](https://github.com/kentcdodds/react-fundamentals) workshop -already. Rather than retrieving the value of the input out of the -`form.elements`, we're going to keep track of the value in a state variable -called `username` and when the user submits the form we'll be able to simply -submit that variable. - -The benefits of this approach will become apparent in the extra credit. We just -want to get you going on using the `React.useState` hook for the exercise. - diff --git a/exercises/01.managing-ui-state/01.problem/index.tsx b/exercises/01.managing-ui-state/01.problem/index.tsx deleted file mode 100644 index f5368e7d4..000000000 --- a/exercises/01.managing-ui-state/01.problem/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - onSubmitUsername, -}: { - onSubmitUsername: (username: string) => void -}) { - // 🐨 call useState here to get the `username` state and `setUsername` updater function - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - // 🐨 call `onSubmitUsername` with the `username` state - } - - function handleChange(event: React.ChangeEvent) { - // 🐨 call setUsername with the event.currentTarget.value - } - - return ( -
-
- - -
- -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/01.solution.use-state/README.mdx b/exercises/01.managing-ui-state/01.solution.use-state/README.mdx new file mode 100644 index 000000000..2f1904ce7 --- /dev/null +++ b/exercises/01.managing-ui-state/01.solution.use-state/README.mdx @@ -0,0 +1 @@ +# useState diff --git a/exercises/01.managing-ui-state/01.solution.use-state/index.css b/exercises/01.managing-ui-state/01.solution.use-state/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/01.managing-ui-state/01.solution.use-state/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/01.managing-ui-state/01.solution.use-state/index.tsx b/exercises/01.managing-ui-state/01.solution.use-state/index.tsx new file mode 100644 index 000000000..7d4dcaa9c --- /dev/null +++ b/exercises/01.managing-ui-state/01.solution.use-state/index.tsx @@ -0,0 +1,68 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' + +function App() { + const [query, setQuery] = useState('') + console.log(query) + + return ( +
+
+
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/01.solution/index.tsx b/exercises/01.managing-ui-state/01.solution/index.tsx deleted file mode 100644 index c1e6bd4c8..000000000 --- a/exercises/01.managing-ui-state/01.solution/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - onSubmitUsername, -}: { - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState('') - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - return ( -
-
- - -
- -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/02.problem.control/README.mdx b/exercises/01.managing-ui-state/02.problem.control/README.mdx new file mode 100644 index 000000000..67905f3a4 --- /dev/null +++ b/exercises/01.managing-ui-state/02.problem.control/README.mdx @@ -0,0 +1 @@ +# Controlling Inputs diff --git a/exercises/01.managing-ui-state/02.problem.control/index.css b/exercises/01.managing-ui-state/02.problem.control/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/01.managing-ui-state/02.problem.control/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/01.managing-ui-state/02.problem.control/index.tsx b/exercises/01.managing-ui-state/02.problem.control/index.tsx new file mode 100644 index 000000000..298a3a9f4 --- /dev/null +++ b/exercises/01.managing-ui-state/02.problem.control/index.tsx @@ -0,0 +1,84 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' + +function App() { + const [query, setQuery] = useState('') + console.log(query) + + // 🐨 make a function called handleCheck that accepts a "tag" string and a "checked" boolean + // 🐨 By calling setQuery, add the tag to the query if checked and remove it if not + + return ( +
+
+
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/02.problem/README.mdx b/exercises/01.managing-ui-state/02.problem/README.mdx deleted file mode 100644 index 831ebbf15..000000000 --- a/exercises/01.managing-ui-state/02.problem/README.mdx +++ /dev/null @@ -1,30 +0,0 @@ -# Initialize State - -Often the reason you split React code into different components is for code -reuse. Just like with regular functions, you can add arguments (props) to -configure the behavior of the function. - -👨‍💼 Let's assume that our `UsernameForm` will be used by different pages of our -application and some of those will need to initialize the `username` state to -something specific, while others will not. - -Make the `UsernameForm` accept a prop called `initialUsername` and initialize -the `username` state to that value. (Remember, the value you pass to the -`React.useState` call will be the initial value). You'll also want to make sure -that you handle the situations where an `initialUsername` is not passed and -default that prop to an empty string for when it's not provided. - -Go ahead and test it out by updating the `App` component to pass an -`initialUsername` prop along. The test will automatically detect when you've -added the `initialUsername` prop to your component and it can also validate -you've got things working properly as well. - -To be clear, start by updating the `App` to have this: - -```tsx - -``` - -Once you've finished implementing this feature, you can change that back and -remove the `initialUsername="kody"` if you want. - diff --git a/exercises/01.managing-ui-state/02.problem/index.tsx b/exercises/01.managing-ui-state/02.problem/index.tsx deleted file mode 100644 index c1e6bd4c8..000000000 --- a/exercises/01.managing-ui-state/02.problem/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - onSubmitUsername, -}: { - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState('') - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - return ( -
-
- - -
- -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/02.solution.control/README.mdx b/exercises/01.managing-ui-state/02.solution.control/README.mdx new file mode 100644 index 000000000..67905f3a4 --- /dev/null +++ b/exercises/01.managing-ui-state/02.solution.control/README.mdx @@ -0,0 +1 @@ +# Controlling Inputs diff --git a/exercises/01.managing-ui-state/02.solution.control/index.css b/exercises/01.managing-ui-state/02.solution.control/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/01.managing-ui-state/02.solution.control/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/01.managing-ui-state/02.solution.control/index.tsx b/exercises/01.managing-ui-state/02.solution.control/index.tsx new file mode 100644 index 000000000..003d2e3e7 --- /dev/null +++ b/exercises/01.managing-ui-state/02.solution.control/index.tsx @@ -0,0 +1,88 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' + +function App() { + const [query, setQuery] = useState('') + + function handleCheck(tag: string, checked: boolean) { + const words = query.split(' ') + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
+
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/02.solution/index.tsx b/exercises/01.managing-ui-state/02.solution/index.tsx deleted file mode 100644 index ab583a9d7..000000000 --- a/exercises/01.managing-ui-state/02.solution/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState(initialUsername) - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - return ( -
-
- - -
- -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/03.problem.derive/README.mdx b/exercises/01.managing-ui-state/03.problem.derive/README.mdx new file mode 100644 index 000000000..edbaba39c --- /dev/null +++ b/exercises/01.managing-ui-state/03.problem.derive/README.mdx @@ -0,0 +1 @@ +# Derive State diff --git a/exercises/01.managing-ui-state/03.problem.derive/index.css b/exercises/01.managing-ui-state/03.problem.derive/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/01.managing-ui-state/03.problem.derive/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/01.managing-ui-state/03.problem.derive/index.tsx b/exercises/01.managing-ui-state/03.problem.derive/index.tsx new file mode 100644 index 000000000..1011ce3e1 --- /dev/null +++ b/exercises/01.managing-ui-state/03.problem.derive/index.tsx @@ -0,0 +1,98 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' + +function App() { + const [query, setQuery] = useState('') + // 🐨 move the words variable from handleCheck to here + // 🦉 this is deriving state! + + // 🐨 create a dogChecked variable that is whether words includes "dog" + // and do the same for "cat" and "caterpiller" + // 🦉 this is deriving state from derived state! + + function handleCheck(tag: string, checked: boolean) { + // 🐨 move the words variable up to just below the useState call + const words = query.split(' ') + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
+
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/03.problem/README.mdx b/exercises/01.managing-ui-state/03.problem/README.mdx deleted file mode 100644 index ff662f453..000000000 --- a/exercises/01.managing-ui-state/03.problem/README.mdx +++ /dev/null @@ -1,60 +0,0 @@ -# Derived State for Validation - -All state can be classified into two buckets: - -- **Managed State:** State that you need to explicitly manage (via - `React.useState` for example) -- **Derived State:** State that you can calculate based on other state - -Not all state needs to be stored, some of it can be derived. For example, let's -say that you have a basket of stuffed animals and your state is: - -```tsx -const koalaCount = 4 -const owlCount = 6 -``` - -As stuffed animals are added and removed, you need to update those values. But -let's say you want to display a total count of all stuffed animals in the -basket. Do you need to manage that state separately? We definitely could, but we -don't need to (and we shouldn't). You can derive that value from the managed -state that you already have. Add the `koalaCount` and the `owlCount` together -and you get the total. - -We have lots of state like this in applications and deriving state can help us -avoid state synchronization bugs. For more on this, read -[Don't Sync State. Derive It!](https://kentcdodds.com/blog/dont-sync-state-derive-it). - -For this extra credit, we're going to add some validation. We want to validate -the user's input and display an error message if they get something wrong. Here -are the rules: - -1. If username is not all lower-case, display: `'Username must be lower case'` -2. If username is less than 3 characters, display: - `'Username must be at least 3 characters long'` -3. If username is more than 10 characters, display: - `'Username must be no longer than 10 characters'` - -And finally, if the user clicks "submit" we don't want to call -`onSubmitUsername` unless the input is valid. - -💰 There are plenty of ways to do this, but as a hint, here are some of the -variables I make in my solution: - -- `usernameIsLowerCase`: derived from the `username` -- `usernameIsLongEnough`: derived from the `username` -- `usernameIsShortEnough`: derived from the `username` -- `formIsValid`: derived from `usernameIsLowerCase`, `usernameIsLongEnough`, and - `usernameIsShortEnough` -- `errorMessage`: derived from `usernameIsLowerCase`, `usernameIsLongEnough`, - and `usernameIsShortEnough` - -So some derived state can be derived from other state! - -And then in the `handleSubmit` I check the `formIsValid` value before calling -`onSubmitUsername`. - -Display the error message in a `div` with a `id="error-message"` right before -the submit button. We have some `css` on the page so the `error-message` class -will make it `red`. And make sure to not render the `div` if the form is valid. - diff --git a/exercises/01.managing-ui-state/03.problem/index.tsx b/exercises/01.managing-ui-state/03.problem/index.tsx deleted file mode 100644 index ab583a9d7..000000000 --- a/exercises/01.managing-ui-state/03.problem/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState(initialUsername) - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - return ( -
-
- - -
- -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/03.solution.derive/README.mdx b/exercises/01.managing-ui-state/03.solution.derive/README.mdx new file mode 100644 index 000000000..edbaba39c --- /dev/null +++ b/exercises/01.managing-ui-state/03.solution.derive/README.mdx @@ -0,0 +1 @@ +# Derive State diff --git a/exercises/01.managing-ui-state/03.solution.derive/index.css b/exercises/01.managing-ui-state/03.solution.derive/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/01.managing-ui-state/03.solution.derive/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/01.managing-ui-state/03.solution.derive/index.tsx b/exercises/01.managing-ui-state/03.solution.derive/index.tsx new file mode 100644 index 000000000..53d4bde02 --- /dev/null +++ b/exercises/01.managing-ui-state/03.solution.derive/index.tsx @@ -0,0 +1,95 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' + +function App() { + const [query, setQuery] = useState('') + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
+
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/03.solution/README.mdx b/exercises/01.managing-ui-state/03.solution/README.mdx deleted file mode 100644 index d5180fd9e..000000000 --- a/exercises/01.managing-ui-state/03.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Derived State for Validation diff --git a/exercises/01.managing-ui-state/03.solution/index.tsx b/exercises/01.managing-ui-state/03.solution/index.tsx deleted file mode 100644 index fbae71964..000000000 --- a/exercises/01.managing-ui-state/03.solution/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState(initialUsername) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( -
{errorMessage}
- ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/02.solution/README.mdx b/exercises/01.managing-ui-state/04.problem.init/README.mdx similarity index 100% rename from exercises/01.managing-ui-state/02.solution/README.mdx rename to exercises/01.managing-ui-state/04.problem.init/README.mdx diff --git a/exercises/01.managing-ui-state/04.problem.init/index.css b/exercises/01.managing-ui-state/04.problem.init/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/01.managing-ui-state/04.problem.init/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/01.managing-ui-state/04.problem.init/index.tsx b/exercises/01.managing-ui-state/04.problem.init/index.tsx new file mode 100644 index 000000000..7d6949c36 --- /dev/null +++ b/exercises/01.managing-ui-state/04.problem.init/index.tsx @@ -0,0 +1,99 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' + +function App() { + // 🐨 create a "params" variable that's the URLSearchParams from the search string + // 💰 new URLSearchParams(window.location.search) + // 🐨 initialize the state to the "query" param (fallback to an empty string if it doesn't exist) + const [query, setQuery] = useState('') + // 📜 https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
+
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/04.problem/README.mdx b/exercises/01.managing-ui-state/04.problem/README.mdx deleted file mode 100644 index 6ad68cd57..000000000 --- a/exercises/01.managing-ui-state/04.problem/README.mdx +++ /dev/null @@ -1,28 +0,0 @@ -# Improve Error UX - -I don't know about you, but having an error message yelling at me before I've -had a chance to fill out the field is really annoying. What I think would be -better is if we wait until the user has focused on the input and then unfocused -it (this is called "blur"-ing the input). - -Here's how you create a `onBlur` event handler: - -```tsx -function handleBlur() { - // the user blurred the input... -} -const element = -``` - -So we shouldn't show the error if the form is valid and we shouldn't show it -unless the user has blurred the input. We've already got the validity working, -now we just need to keep track of whether the user has blurred the input. To do -that, we'll need some new state. - -Create some new state (with another `React.useState` call) called `showError` -and start it out as `false`. Then use the `onBlur` event to set that state to -`true`. - -Also, if the user skips the input and just clicks "submit" it should show the -error as well. - diff --git a/exercises/01.managing-ui-state/04.problem/index.tsx b/exercises/01.managing-ui-state/04.problem/index.tsx deleted file mode 100644 index fbae71964..000000000 --- a/exercises/01.managing-ui-state/04.problem/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState(initialUsername) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( -
{errorMessage}
- ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/04.solution.init/README.mdx b/exercises/01.managing-ui-state/04.solution.init/README.mdx new file mode 100644 index 000000000..13c584527 --- /dev/null +++ b/exercises/01.managing-ui-state/04.solution.init/README.mdx @@ -0,0 +1 @@ +# Initialize State diff --git a/exercises/01.managing-ui-state/04.solution.init/index.css b/exercises/01.managing-ui-state/04.solution.init/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/01.managing-ui-state/04.solution.init/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/01.managing-ui-state/04.solution.init/index.tsx b/exercises/01.managing-ui-state/04.solution.init/index.tsx new file mode 100644 index 000000000..6ed136868 --- /dev/null +++ b/exercises/01.managing-ui-state/04.solution.init/index.tsx @@ -0,0 +1,98 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' + +function App() { + // NOTE: this will not work with server rendering, but in a real app you can + // use react-router's useSearchParams instead + const params = new URLSearchParams(window.location.search) + const [query, setQuery] = useState(params.get('query') ?? '') + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
+
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/04.solution/README.mdx b/exercises/01.managing-ui-state/04.solution/README.mdx deleted file mode 100644 index c4465eb51..000000000 --- a/exercises/01.managing-ui-state/04.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Improve Error UX diff --git a/exercises/01.managing-ui-state/04.solution/index.tsx b/exercises/01.managing-ui-state/04.solution/index.tsx deleted file mode 100644 index 2df612e2e..000000000 --- a/exercises/01.managing-ui-state/04.solution/index.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState(initialUsername) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( -
{errorMessage}
- ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/05.problem/README.mdx b/exercises/01.managing-ui-state/05.problem/README.mdx deleted file mode 100644 index 58796e56f..000000000 --- a/exercises/01.managing-ui-state/05.problem/README.mdx +++ /dev/null @@ -1,62 +0,0 @@ -# Improve Error Accessibility for Screen Readers - -Not everyone can see the user interface you build. And if they can see it, not -everyone can see it very well. So many people use a technology called a "screen -reader" is software that reads the user interface to them. - -But sometimes the screen readers need extra help. Crafting good experiences for -users of screen readers is surprisingly difficult for a few reasons: - -1. There are many screen readers and they all operate slightly differently -2. While there is [a spec](https://www.w3.org/TR/wai-aria-1.1/), screen reader - makers acknowledge that many software engineers don't follow it so they try - to get creative to be more helpful, but that in turn makes it operate - differently than you might expect. - -Because of this, it's good to actually test your software with a real screen -reader (or, even better, multiple) to make sure it behaves well with what you've -built. - -Operating systems have screen readers built-in: - -- Mac: - [VoiceOver Desktop](https://support.apple.com/guide/voiceover/welcome/mac) -- iOS: - [VoiceOver iOS](https://support.apple.com/guide/iphone/turn-on-and-practice-voiceover-iph3e2e415f/ios) -- Windows: - [Narrator](https://support.microsoft.com/en-us/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1) -- Android: - [TalkBack](https://support.google.com/accessibility/android/topic/3529932) -- Linux: [Orca](https://wiki.gnome.org/action/show/Projects/Orca) - -However, there are many alternatives (some paid and others open source). Here -are two: - -- [JAWS](https://support.freedomscientific.com/JAWSHQ/JAWSHeadquarters01) (Paid - and Windows-only) -- [NV Access](https://www.nvaccess.org/) (Open Source and Windows-only) - -At the end of the day, it's an enormous challenge to test your software on all -of these screen readers (especially since automated testing in this space is -very difficult to be reliable). So just do your best to follow the spec and -carve out some time to test your software out with screen readers to make sure -that it is sensible. - -With that said, our simple form is pretty good, but could be improved. Here are -a few improvements for you to add and try it out with whatever screen reader you -have available (yes, I expect you to actually figure out how to start it up if -you've never done it before). - -1. Add `required` to the `` -2. Add `pattern` to the `` that enforces 3-10 lowercase characters (use - a regex, - [📜 learn more on mdn](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern)) -3. Add `noValidate` to the `
` to prevent the browser from displaying error - messages related to those new attributes because we're already showing a more - custom error message. -4. Add `name` to the `` to give the form an implicit role of "form" (📜 - [learn more from the spec](https://www.w3.org/TR/html-aria/#docconformance)). -5. Add `role="alert"` to the error message `div` so screen readers will read the - message. (📜 - [learn more on mdn](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_alert_role)). - diff --git a/exercises/01.managing-ui-state/05.problem/index.tsx b/exercises/01.managing-ui-state/05.problem/index.tsx deleted file mode 100644 index 2df612e2e..000000000 --- a/exercises/01.managing-ui-state/05.problem/index.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState(initialUsername) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( - -
- - -
- {displayErrorMessage ? ( -
{errorMessage}
- ) : null} - - - ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/05.solution/README.mdx b/exercises/01.managing-ui-state/05.solution/README.mdx deleted file mode 100644 index ecc2ab7a4..000000000 --- a/exercises/01.managing-ui-state/05.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Improve Error Accessibility for Screen Readers diff --git a/exercises/01.managing-ui-state/05.solution/index.tsx b/exercises/01.managing-ui-state/05.solution/index.tsx deleted file mode 100644 index 655ca4a63..000000000 --- a/exercises/01.managing-ui-state/05.solution/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState(initialUsername) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/01.managing-ui-state/01.solution/README.mdx b/exercises/01.managing-ui-state/FINISHED.mdx similarity index 100% rename from exercises/01.managing-ui-state/01.solution/README.mdx rename to exercises/01.managing-ui-state/FINISHED.mdx diff --git a/exercises/01.managing-ui-state/README.mdx b/exercises/01.managing-ui-state/README.mdx index 9a38094ec..744bb376e 100644 --- a/exercises/01.managing-ui-state/README.mdx +++ b/exercises/01.managing-ui-state/README.mdx @@ -4,37 +4,37 @@ Normally an interactive application will need to hold state somewhere. In React, you use special functions called "hooks" to do this. Common built-in hooks include: -- `React.useState` -- `React.useEffect` -- `React.useContext` -- `React.useRef` -- `React.useReducer` +- `useState` +- `useEffect` +- `useContext` +- `useRef` +- `useReducer` Each of these is a special function that you can call inside your custom React component function to store data (like state) or perform actions (or side-effects). There are a few more built-in hooks that have special use cases, but the ones above are what you'll be using most of the time. -Each of the hooks has a unique API. Some return a value (like `React.useRef` and -`React.useContext`), others return a pair of values (like `React.useState` and -`React.useReducer`), and others return nothing at all (like `React.useEffect`). +Each of the hooks has a unique API. Some return a value (like `useRef` and +`useContext`), others return a pair of values (like `useState` and +`useReducer`), and others return nothing at all (like `useEffect`). Here's an example of a component that uses the `useState` hook and an onClick event handler to update that state: ```jsx function Counter() { - const [count, setCount] = React.useState(0) - const increment = () => setCount(count + 1) - return + const [count, setCount] = useState(0) + const increment = () => setCount(count + 1) + return } ``` -`React.useState` is a function that accepts a single argument. That argument is +`useState` is a function that accepts a single argument. That argument is the initial state for the instance of the component. In our case, the state will start as `0`. -`React.useState` returns a pair of values. It does this by returning an array +`useState` returns a pair of values. It does this by returning an array with two elements (and we use destructuring syntax to assign each of those values to distinct variables). The first of the pair is the state value and the second is a function we can call to update the state. We can name these @@ -46,7 +46,7 @@ time? When the button is clicked, our `increment` function will be called at which time we update the `count` by calling `setCount`. When we call `setCount`, that tells React to re-render our component. When it -does this, the entire `Counter` function is re-run, so when `React.useState` is +does this, the entire `Counter` function is re-run, so when `useState` is called this time, the value we get back is the value that we called `setCount` with. And it continues like that until `Counter` is unmounted (removed from the application), or the user closes the application. @@ -57,4 +57,3 @@ post/talk by [Shawn Wang](https://twitter.com/swyx): 📜 And here's a reference to [the hooks official documentation](https://reactjs.org/hooks). - diff --git a/exercises/02.sychronizing-side-effects/01.problem.effects/README.mdx b/exercises/02.sychronizing-side-effects/01.problem.effects/README.mdx new file mode 100644 index 000000000..412c32879 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/01.problem.effects/README.mdx @@ -0,0 +1 @@ +# useEffect diff --git a/exercises/02.sychronizing-side-effects/01.problem.effects/index.css b/exercises/02.sychronizing-side-effects/01.problem.effects/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/01.problem.effects/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/02.sychronizing-side-effects/01.problem.effects/index.tsx b/exercises/02.sychronizing-side-effects/01.problem.effects/index.tsx new file mode 100644 index 000000000..b66e7e736 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/01.problem.effects/index.tsx @@ -0,0 +1,121 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function App() { + // NOTE: this will not work with server rendering, but in a real app you can + // use react-router's useSearchParams instead + const params = new URLSearchParams(window.location.search) + // 🐨 create a function called getQueryParam that returns the query param + // (and falls back to an empty string) + const [query, setQuery] = useState(params.get('query') ?? '') + + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + // 🐨 add a useEffect(() => {}, []) call here + // 🦉 if you're familiar with the dependency array problem we have, don't + // spoil it for everyone else! We'll get to it soon enough! + // 🐨 in the useEffect callback, subscribe to window's popstate event + // 🐨 your event handler should call setQuery to getQueryParam() + // 📜 https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener + // 🐨 the second argument to useEffect should be an empty array + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
{ + e.preventDefault() + setSearchParams({ query }) + }} + > +
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() + +// 🤫 we'll talk about this later! +/* +eslint + react-hooks/exhaustive-deps: "off", +*/ diff --git a/exercises/02.sychronizing-side-effects/01.solution.effects/README.mdx b/exercises/02.sychronizing-side-effects/01.solution.effects/README.mdx new file mode 100644 index 000000000..412c32879 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/01.solution.effects/README.mdx @@ -0,0 +1 @@ +# useEffect diff --git a/exercises/02.sychronizing-side-effects/01.solution.effects/index.css b/exercises/02.sychronizing-side-effects/01.solution.effects/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/01.solution.effects/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/02.sychronizing-side-effects/01.solution.effects/index.tsx b/exercises/02.sychronizing-side-effects/01.solution.effects/index.tsx new file mode 100644 index 000000000..64a186744 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/01.solution.effects/index.tsx @@ -0,0 +1,116 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function App() { + // NOTE: this will not work with server rendering, but in a real app you can + // use react-router's useSearchParams instead + const params = new URLSearchParams(window.location.search) + const getQueryParam = () => params.get('query') ?? '' + const [query, setQuery] = useState(getQueryParam) + + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + window.addEventListener('popstate', () => setQuery(getQueryParam())) + }, []) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
{ + e.preventDefault() + setSearchParams({ query }) + }} + > +
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() + +// 🤫 we'll talk about this later! +/* +eslint + react-hooks/exhaustive-deps: "off", +*/ diff --git a/exercises/02.sychronizing-side-effects/02.problem.deps/README.mdx b/exercises/02.sychronizing-side-effects/02.problem.deps/README.mdx new file mode 100644 index 000000000..7b1d011a1 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/02.problem.deps/README.mdx @@ -0,0 +1 @@ +# Stale Closures diff --git a/exercises/02.sychronizing-side-effects/02.problem.deps/index.css b/exercises/02.sychronizing-side-effects/02.problem.deps/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/02.problem.deps/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/02.sychronizing-side-effects/02.problem.deps/index.tsx b/exercises/02.sychronizing-side-effects/02.problem.deps/index.tsx new file mode 100644 index 000000000..db98cc140 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/02.problem.deps/index.tsx @@ -0,0 +1,120 @@ +// 💣 Remove this comment to reveal the ESLint warning that would have saved us! +/* +eslint + react-hooks/exhaustive-deps: "off", +*/ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +// 🐨 create a getQueryParam function which: +// 1. creates a new params object +// 2. gets the query from the params object + +function App() { + // NOTE: this will not work with server rendering, but in a real app you can + // use react-router's useSearchParams instead + // 💣 remove these two lines in favor of the getQueryParam function above + const params = new URLSearchParams(window.location.search) + const getQueryParam = () => params.get('query') ?? '' + const [query, setQuery] = useState(getQueryParam) + + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + window.addEventListener('popstate', () => setQuery(getQueryParam())) + }, []) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
{ + e.preventDefault() + setSearchParams({ query }) + }} + > +
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.sychronizing-side-effects/02.solution.deps/README.mdx b/exercises/02.sychronizing-side-effects/02.solution.deps/README.mdx new file mode 100644 index 000000000..7b1d011a1 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/02.solution.deps/README.mdx @@ -0,0 +1 @@ +# Stale Closures diff --git a/exercises/02.sychronizing-side-effects/02.solution.deps/index.css b/exercises/02.sychronizing-side-effects/02.solution.deps/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/02.solution.deps/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/02.sychronizing-side-effects/02.solution.deps/index.tsx b/exercises/02.sychronizing-side-effects/02.solution.deps/index.tsx new file mode 100644 index 000000000..fa6380d3a --- /dev/null +++ b/exercises/02.sychronizing-side-effects/02.solution.deps/index.tsx @@ -0,0 +1,113 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + // NOTE: this will not work with server rendering, but in a real app you can + // use react-router's useSearchParams instead + const [query, setQuery] = useState(getQueryParam) + + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + window.addEventListener('popstate', () => setQuery(getQueryParam())) + }, []) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
{ + e.preventDefault() + setSearchParams({ query }) + }} + > +
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.sychronizing-side-effects/03.problem.cleanup/README.mdx b/exercises/02.sychronizing-side-effects/03.problem.cleanup/README.mdx new file mode 100644 index 000000000..fc37e6464 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/03.problem.cleanup/README.mdx @@ -0,0 +1 @@ +# Effect Cleanup diff --git a/exercises/02.sychronizing-side-effects/03.problem.cleanup/index.css b/exercises/02.sychronizing-side-effects/03.problem.cleanup/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/03.problem.cleanup/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/02.sychronizing-side-effects/03.problem.cleanup/index.tsx b/exercises/02.sychronizing-side-effects/03.problem.cleanup/index.tsx new file mode 100644 index 000000000..4c03268a7 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/03.problem.cleanup/index.tsx @@ -0,0 +1,135 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + const [query, setQuery] = useState(getQueryParam) + + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + // 🐨 extract your event handler here into a function called updateQuery + window.addEventListener('popstate', () => { + console.log('popstate event listener called') + setQuery(getQueryParam()) + }) + // 🐨 return a function which removes the popstate event listener + // 📜 https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener + }, []) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
{ + e.preventDefault() + setSearchParams({ query }) + }} + > +
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +function DemoApp() { + const [showForm, setShowForm] = useState(true) + + return ( +
+ + {showForm ? : null} +
+ ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.sychronizing-side-effects/03.solution.cleanup/README.mdx b/exercises/02.sychronizing-side-effects/03.solution.cleanup/README.mdx new file mode 100644 index 000000000..fc37e6464 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/03.solution.cleanup/README.mdx @@ -0,0 +1 @@ +# Effect Cleanup diff --git a/exercises/02.sychronizing-side-effects/03.solution.cleanup/index.css b/exercises/02.sychronizing-side-effects/03.solution.cleanup/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/02.sychronizing-side-effects/03.solution.cleanup/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/02.sychronizing-side-effects/03.solution.cleanup/index.tsx b/exercises/02.sychronizing-side-effects/03.solution.cleanup/index.tsx new file mode 100644 index 000000000..3b5a887ba --- /dev/null +++ b/exercises/02.sychronizing-side-effects/03.solution.cleanup/index.tsx @@ -0,0 +1,136 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { generateGradient, getMatchingPosts } from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + const [query, setQuery] = useState(getQueryParam) + + const words = query.split(' ') + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + function updateQuery() { + console.log('popstate event listener called') + setQuery(getQueryParam()) + } + window.addEventListener('popstate', updateQuery) + return () => { + window.removeEventListener('popstate', updateQuery) + } + }, []) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( +
+
{ + e.preventDefault() + setSearchParams({ query }) + }} + > +
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ +
+ +
+ ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( + + ) +} + +function DemoApp() { + const [showForm, setShowForm] = useState(true) + + return ( +
+ + {showForm ? : null} +
+ ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/01.solution/README.mdx b/exercises/02.sychronizing-side-effects/FINISHED.mdx similarity index 100% rename from exercises/02.synchronizing-side-effects/01.solution/README.mdx rename to exercises/02.sychronizing-side-effects/FINISHED.mdx diff --git a/exercises/02.synchronizing-side-effects/README.mdx b/exercises/02.sychronizing-side-effects/README.mdx similarity index 51% rename from exercises/02.synchronizing-side-effects/README.mdx rename to exercises/02.sychronizing-side-effects/README.mdx index 0998de202..d677f5d48 100644 --- a/exercises/02.synchronizing-side-effects/README.mdx +++ b/exercises/02.sychronizing-side-effects/README.mdx @@ -1,13 +1,13 @@ # Synchronizing Side-Effects -`React.useEffect` is a built-in hook that allows you to run some custom code +`useEffect` is a built-in hook that allows you to run some custom code after React renders (and re-renders) your component to the DOM. It accepts a callback function which React will call after the DOM has been updated: ```javascript -React.useEffect(() => { - // your side-effect code here. - // this is where you can make HTTP requests or interact with browser APIs. +useEffect(() => { + // your side-effect code here. + // this is where you can interact with browser APIs for example }) ``` @@ -17,11 +17,11 @@ react components. For example, things outside our react components include: -- Remote server requests - Browser APIs like local storage/document title/media devices/etc. - Integrations with non-react code -Feel free to take a look at `src/examples/hook-flow.png` if you're interested in -the timing of when your functions are run. This will make more sense after -finishing the exercises/extra credit/instruction. +Check out [the React Flow diagram](https://github.com/donavon/hook-flow) below: +![React Flow diagram showing mount, update, unmount](https://github-production-user-asset-6210df.s3.amazonaws.com/1500684/295689283-b9ecdd1d-ce28-446b-84ad-6b264d4be8e4.png) + +This will make more sense after finishing the exercise. So come back! diff --git a/exercises/02.synchronizing-side-effects/01.problem/README.mdx b/exercises/02.synchronizing-side-effects/01.problem/README.mdx deleted file mode 100644 index 5af551cd4..000000000 --- a/exercises/02.synchronizing-side-effects/01.problem/README.mdx +++ /dev/null @@ -1,6 +0,0 @@ -# Synchronizing Side-Effects - -In this exercise, we're going to enhance our `` component to get -its initial state value from localStorage (if available) and keep localStorage -updated as the `username` is updated. - diff --git a/exercises/02.synchronizing-side-effects/01.problem/index.tsx b/exercises/02.synchronizing-side-effects/01.problem/index.tsx deleted file mode 100644 index 655ca4a63..000000000 --- a/exercises/02.synchronizing-side-effects/01.problem/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState(initialUsername) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/01.solution/index.tsx b/exercises/02.synchronizing-side-effects/01.solution/index.tsx deleted file mode 100644 index 523b2ad29..000000000 --- a/exercises/02.synchronizing-side-effects/01.solution/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState( - window.localStorage.getItem('username') || initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - React.useEffect(() => { - window.localStorage.setItem('username', username) - }) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/02.problem/README.mdx b/exercises/02.synchronizing-side-effects/02.problem/README.mdx deleted file mode 100644 index 147b13ea9..000000000 --- a/exercises/02.synchronizing-side-effects/02.problem/README.mdx +++ /dev/null @@ -1,23 +0,0 @@ -# Lazy State Initialization - -Right now, every time our component function is run, our function reads from -localStorage. This is problematic because it could be a performance bottleneck -(reading from localStorage can be slow). And what's more we only actually need -to know the value from localStorage the first time this component is rendered! -So the additional reads are wasted effort. - -To avoid this problem, React's useState hook allows you to pass a function -instead of the actual value, and then it will only call that function to get the -state value when the component is rendered the first time. So you can go from -this: `React.useState(someExpensiveComputation())` To this: -`React.useState(() => someExpensiveComputation())` - -And the `someExpensiveComputation` function will only be called when it's -needed! - -Make the `React.useState` call use lazy initialization to avoid a performance -bottleneck of reading into localStorage on every render. - -> Learn more about -> [lazy state initialization](https://kentcdodds.com/blog/use-state-lazy-initialization-and-function-updates) - diff --git a/exercises/02.synchronizing-side-effects/02.problem/index.tsx b/exercises/02.synchronizing-side-effects/02.problem/index.tsx deleted file mode 100644 index 523b2ad29..000000000 --- a/exercises/02.synchronizing-side-effects/02.problem/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState( - window.localStorage.getItem('username') || initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - React.useEffect(() => { - window.localStorage.setItem('username', username) - }) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/02.solution/README.mdx b/exercises/02.synchronizing-side-effects/02.solution/README.mdx deleted file mode 100644 index 2a2cc4e26..000000000 --- a/exercises/02.synchronizing-side-effects/02.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Lazy State Initialization diff --git a/exercises/02.synchronizing-side-effects/02.solution/index.tsx b/exercises/02.synchronizing-side-effects/02.solution/index.tsx deleted file mode 100644 index da2567dd4..000000000 --- a/exercises/02.synchronizing-side-effects/02.solution/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState( - () => window.localStorage.getItem('username') || initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - React.useEffect(() => { - window.localStorage.setItem('username', username) - }) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/03.problem/README.mdx b/exercises/02.synchronizing-side-effects/03.problem/README.mdx deleted file mode 100644 index ae5c9c352..000000000 --- a/exercises/02.synchronizing-side-effects/03.problem/README.mdx +++ /dev/null @@ -1,32 +0,0 @@ -# Effect Dependencies - -Add this log right before calling `window.localStorage.setItem`: - -```tsx -console.log(`updating local storage with "${username}"`) -``` - -Then, refresh the page and without touching anything else, click the submit -button. You should notice that this is logged twice: -`updating local storage with ""`. That's once for the initial run, and again for -the `setTouched` state update that happens when we click the submit button. -We're updating local storage unnecessarily! - -The callback we're passing to `React.useEffect` is called after _every_ render -of our component (including re-renders). This is exactly what we want because we -want to make sure that the `username` is saved into localStorage whenever it -changes, but there are various reasons a component can be re-rendered (for -example, when a parent component in the application tree gets re-rendered, or if -our own internal state gets updated, like the `showError` state). - -Really, we _only_ want localStorage to get updated when the `username` state -actually changes. It doesn't need to re-run any other time. Luckily for us, -`React.useEffect` allows you to pass a second argument called the "dependency -array" which signals to React that your effect callback function should be -called when (and only when) those dependencies change. So we can use this to -avoid doing unnecessary work! - -Add a dependencies array for `React.useEffect` to avoid the callback being -called too frequently. After you add the dependency array, you'll notice the log -only is called once 😄 - diff --git a/exercises/02.synchronizing-side-effects/03.problem/index.tsx b/exercises/02.synchronizing-side-effects/03.problem/index.tsx deleted file mode 100644 index da2567dd4..000000000 --- a/exercises/02.synchronizing-side-effects/03.problem/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState( - () => window.localStorage.getItem('username') || initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - React.useEffect(() => { - window.localStorage.setItem('username', username) - }) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/03.solution/README.mdx b/exercises/02.synchronizing-side-effects/03.solution/README.mdx deleted file mode 100644 index 8c4674111..000000000 --- a/exercises/02.synchronizing-side-effects/03.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Effect Dependencies diff --git a/exercises/02.synchronizing-side-effects/03.solution/index.tsx b/exercises/02.synchronizing-side-effects/03.solution/index.tsx deleted file mode 100644 index 863e4c9b0..000000000 --- a/exercises/02.synchronizing-side-effects/03.solution/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState( - () => window.localStorage.getItem('username') || initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - React.useEffect(() => { - window.localStorage.setItem('username', username) - }, [username]) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/04.problem/README.mdx b/exercises/02.synchronizing-side-effects/04.problem/README.mdx deleted file mode 100644 index a3a4f067b..000000000 --- a/exercises/02.synchronizing-side-effects/04.problem/README.mdx +++ /dev/null @@ -1,29 +0,0 @@ -# Custom Hook - -The best part of hooks is that if you find a bit of logic inside your component -function that you think would be useful elsewhere, you can put that in another -function and call it from the components that need it (just like regular -JavaScript). These functions you create are called "custom hooks". - -Create a custom hook called `useLocalStorageState` for reusability of all this -logic. - -🦉 Note: you're in control of the arguments and return value of your custom -hook, there are no rules. Just like regular functions. Cool huh? - -💰 For my solution, the end result allows people to use it like this: - -```tsx -const [username, setUsername] = useLocalStorageState( - 'username', - initialUsername, -) -``` - -This allows people to swap between `React.useState` and `useLocalStorageState` -pretty easily. - -🦺 If you struggle on how to type the return value of your `useLocalStorage` -hook, check -[Wrapping React.useState with TypeScript](https://kentcdodds.com/blog/wrapping-react-use-state-with-type-script). - diff --git a/exercises/02.synchronizing-side-effects/04.problem/index.tsx b/exercises/02.synchronizing-side-effects/04.problem/index.tsx deleted file mode 100644 index 863e4c9b0..000000000 --- a/exercises/02.synchronizing-side-effects/04.problem/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = React.useState( - () => window.localStorage.getItem('username') || initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - React.useEffect(() => { - window.localStorage.setItem('username', username) - }, [username]) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/04.solution/README.mdx b/exercises/02.synchronizing-side-effects/04.solution/README.mdx deleted file mode 100644 index a55621411..000000000 --- a/exercises/02.synchronizing-side-effects/04.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Custom Hook diff --git a/exercises/02.synchronizing-side-effects/04.solution/index.tsx b/exercises/02.synchronizing-side-effects/04.solution/index.tsx deleted file mode 100644 index 6f5a885f0..000000000 --- a/exercises/02.synchronizing-side-effects/04.solution/index.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function useLocalStorageState(key: string, defaultValue: string = '') { - const [state, setState] = React.useState( - () => window.localStorage.getItem(key) || defaultValue, - ) - - React.useEffect(() => { - window.localStorage.setItem(key, state) - }, [key, state]) - - return [state, setState] as const -} - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = useLocalStorageState( - 'username', - initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/05.problem/README.mdx b/exercises/02.synchronizing-side-effects/05.problem/README.mdx deleted file mode 100644 index 36298f3d0..000000000 --- a/exercises/02.synchronizing-side-effects/05.problem/README.mdx +++ /dev/null @@ -1,14 +0,0 @@ -# Flexible localStorage Hook - -Take your custom `useLocalStorageState` hook and make it generic enough to -support any data type (remember, you have to serialize objects to strings... use -`JSON.stringify` and `JSON.parse`). Note: this one's a bit of a challenge, but -have fun with it! - -🦉 NOTE: So far, we've been saving the string as-is. Now we're making our custom -hook support any data type (number/boolean/etc). This means that we'll be -serializing it and that means that strings will be set to `"string value"` -rather than simply `string value`. So I recommend you clear your devtools local -storage value when you implement your changes (or even better, add support for -what to do when deserialization fails). - diff --git a/exercises/02.synchronizing-side-effects/05.problem/index.tsx b/exercises/02.synchronizing-side-effects/05.problem/index.tsx deleted file mode 100644 index 6f5a885f0..000000000 --- a/exercises/02.synchronizing-side-effects/05.problem/index.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function useLocalStorageState(key: string, defaultValue: string = '') { - const [state, setState] = React.useState( - () => window.localStorage.getItem(key) || defaultValue, - ) - - React.useEffect(() => { - window.localStorage.setItem(key, state) - }, [key, state]) - - return [state, setState] as const -} - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = useLocalStorageState( - 'username', - initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/02.synchronizing-side-effects/05.solution/README.mdx b/exercises/02.synchronizing-side-effects/05.solution/README.mdx deleted file mode 100644 index 5849b23d9..000000000 --- a/exercises/02.synchronizing-side-effects/05.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Flexible localStorage Hook diff --git a/exercises/02.synchronizing-side-effects/05.solution/index.tsx b/exercises/02.synchronizing-side-effects/05.solution/index.tsx deleted file mode 100644 index 642ec0992..000000000 --- a/exercises/02.synchronizing-side-effects/05.solution/index.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -type UseLocalStorageOptions = { - serialize?: (data: TState) => string - deserialize?: (str: string) => TState -} -function useLocalStorageState( - key: string, - defaultValue: TState | (() => TState), - { - serialize = JSON.stringify, - deserialize = JSON.parse, - }: UseLocalStorageOptions = {}, -) { - const [state, setState] = React.useState(() => { - const valueInLocalStorage = window.localStorage.getItem(key) - if (valueInLocalStorage) { - // the try/catch is here in case the localStorage value was set before - // we had the serialization in place (like we do in previous extra credits) - try { - return deserialize(valueInLocalStorage) - } catch (error) { - window.localStorage.removeItem(key) - } - } - // can't do typeof because: - // https://github.com/microsoft/TypeScript/issues/37663#issuecomment-759728342 - return defaultValue instanceof Function ? defaultValue() : defaultValue - }) - - const prevKeyRef = React.useRef(key) - - // Check the example at src/examples/local-state-key-change.js to visualize a key change - React.useEffect(() => { - const prevKey = prevKeyRef.current - if (prevKey !== key) { - window.localStorage.removeItem(prevKey) - } - prevKeyRef.current = key - window.localStorage.setItem(key, serialize(state)) - }, [key, state, serialize]) - - return [state, setState] as const -} - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = useLocalStorageState( - 'username', - initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
-
- - -
- {displayErrorMessage ? ( - - ) : null} - -
- ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
- -
- ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/01.problem.lift/README.mdx b/exercises/03.lifting-state/01.problem.lift/README.mdx new file mode 100644 index 000000000..1c9e5bb35 --- /dev/null +++ b/exercises/03.lifting-state/01.problem.lift/README.mdx @@ -0,0 +1 @@ +# Lift State diff --git a/exercises/03.lifting-state/01.problem.lift/index.css b/exercises/03.lifting-state/01.problem.lift/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/03.lifting-state/01.problem.lift/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/03.lifting-state/01.problem.lift/index.tsx b/exercises/03.lifting-state/01.problem.lift/index.tsx new file mode 100644 index 000000000..941f6267d --- /dev/null +++ b/exercises/03.lifting-state/01.problem.lift/index.tsx @@ -0,0 +1,150 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + type BlogPost, + generateGradient, + getMatchingPosts, +} from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + // 🐨 add the useState for the query here (lift it up from the Form) + return ( +
+ {/* 🐨 pass the query and setQuery to the form */} +
+ {/* 🐨 pass the query to this prop */} + +
+ ) +} + +// 🐨 update the Form props to accept query and setQuery +function Form() { + // 🐨 lift this up to the App + const [query, setQuery] = useState(getQueryParam) + + const words = query.split(' ').map(w => w.trim()) + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + const updateQuery = () => setQuery(getQueryParam()) + window.addEventListener('popstate', updateQuery) + return () => { + window.removeEventListener('popstate', updateQuery) + } + // 🐨 add setQuery to the dependency array here + }, []) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( + { + e.preventDefault() + setSearchParams({ query }) + }} + > +
+ + setQuery(e.currentTarget.value)} + /> +
+
+ + + +
+ + + ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( +
    + {matchingPosts + .sort((a, b) => a.title.localeCompare(b.title)) + .map(post => ( + + ))} +
+ ) +} + +function Card({ post }: { post: BlogPost }) { + const [isFavorited, setIsFavorited] = useState(false) + return ( +
  • + {isFavorited ? ( + + ) : ( + + )} +
  • + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/01.problem/README.mdx b/exercises/03.lifting-state/01.problem/README.mdx deleted file mode 100644 index dd862cb13..000000000 --- a/exercises/03.lifting-state/01.problem/README.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Lifting State - -👨‍💼 Peter told us we've got a new feature request for the `Display` component. He -wants us to display the `animal` the user selects. But that state is managed in -a "sibling" component, so we have to move that management to the lowest common -parent (`App`) and then pass it down. - diff --git a/exercises/03.lifting-state/01.problem/index.tsx b/exercises/03.lifting-state/01.problem/index.tsx deleted file mode 100644 index eaa813bf0..000000000 --- a/exercises/03.lifting-state/01.problem/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function Name({ - name, - onNameChange, -}: { - name: string - onNameChange: (newName: string) => void -}) { - return ( -
    - - onNameChange(event.currentTarget.value)} - /> -
    - ) -} - -// 🐨 accept `animal` and `onAnimalChange` props to this component -function FavoriteAnimal() { - // 💣 delete this, it's now managed by the App - const [animal, setAnimal] = React.useState('') - return ( -
    - - setAnimal(event.currentTarget.value)} - /> -
    - ) -} - -// 🐨 uncomment this -// function Display({name, animal}) { -// return
    {`Hey ${name}, your favorite animal is: ${animal}!`}
    -// } - -// 💣 remove this component in favor of the new one -function Display({name}: {name: string}) { - return
    {`Hey ${name}, you are great!`}
    -} - -function App() { - // 🐨 add a useState for the animal - const [name, setName] = React.useState('') - return ( -
    - - {/* 🐨 pass the animal and onAnimalChange prop here (similar to the Name component above) */} - - {/* 🐨 pass the animal prop here */} - - - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/01.solution.lift/README.mdx b/exercises/03.lifting-state/01.solution.lift/README.mdx new file mode 100644 index 000000000..1c9e5bb35 --- /dev/null +++ b/exercises/03.lifting-state/01.solution.lift/README.mdx @@ -0,0 +1 @@ +# Lift State diff --git a/exercises/03.lifting-state/01.solution.lift/index.css b/exercises/03.lifting-state/01.solution.lift/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/03.lifting-state/01.solution.lift/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/03.lifting-state/01.solution.lift/index.tsx b/exercises/03.lifting-state/01.solution.lift/index.tsx new file mode 100644 index 000000000..5cd92f197 --- /dev/null +++ b/exercises/03.lifting-state/01.solution.lift/index.tsx @@ -0,0 +1,149 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + type BlogPost, + generateGradient, + getMatchingPosts, +} from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + const [query, setQuery] = useState(getQueryParam) + return ( +
    +
    + +
    + ) +} + +function Form({ + query, + setQuery, +}: { + query: string + setQuery: (query: string) => void +}) { + const words = query.split(' ').map(w => w.trim()) + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + const updateQuery = () => setQuery(getQueryParam()) + window.addEventListener('popstate', updateQuery) + return () => { + window.removeEventListener('popstate', updateQuery) + } + }, [setQuery]) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( + { + e.preventDefault() + setSearchParams({ query }) + }} + > +
    + + setQuery(e.currentTarget.value)} + /> +
    +
    + + + +
    + + + ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( +
      + {matchingPosts + .sort((a, b) => a.title.localeCompare(b.title)) + .map(post => ( + + ))} +
    + ) +} + +function Card({ post }: { post: BlogPost }) { + const [isFavorited, setIsFavorited] = useState(false) + return ( +
  • + {isFavorited ? ( + + ) : ( + + )} +
  • + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/01.solution/index.tsx b/exercises/03.lifting-state/01.solution/index.tsx deleted file mode 100644 index 7f8b00a98..000000000 --- a/exercises/03.lifting-state/01.solution/index.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function Name({ - name, - onNameChange, -}: { - name: string - onNameChange: (newName: string) => void -}) { - return ( -
    - - onNameChange(event.currentTarget.value)} - /> -
    - ) -} - -function FavoriteAnimal({ - animal, - onAnimalChange, -}: { - animal: string - onAnimalChange: (newAnimal: string) => void -}) { - return ( -
    - - onAnimalChange(event.currentTarget.value)} - /> -
    - ) -} - -function Display({name, animal}: {name: string; animal: string}) { - return
    {`Hey ${name}, your favorite animal is: ${animal}!`}
    -} - -function App() { - const [animal, setAnimal] = React.useState('') - const [name, setName] = React.useState('') - return ( -
    - - - - - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/02.problem.lift-array/README.mdx b/exercises/03.lifting-state/02.problem.lift-array/README.mdx new file mode 100644 index 000000000..d36b3a80a --- /dev/null +++ b/exercises/03.lifting-state/02.problem.lift-array/README.mdx @@ -0,0 +1 @@ +# Lift More State diff --git a/exercises/03.lifting-state/02.problem.lift-array/index.css b/exercises/03.lifting-state/02.problem.lift-array/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/03.lifting-state/02.problem.lift-array/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/03.lifting-state/02.problem.lift-array/index.tsx b/exercises/03.lifting-state/02.problem.lift-array/index.tsx new file mode 100644 index 000000000..e357ddfc4 --- /dev/null +++ b/exercises/03.lifting-state/02.problem.lift-array/index.tsx @@ -0,0 +1,167 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + type BlogPost, + generateGradient, + getMatchingPosts, +} from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + const [query, setQuery] = useState(getQueryParam) + return ( +
    +
    + +
    + ) +} + +function Form({ + query, + setQuery, +}: { + query: string + setQuery: (query: string) => void +}) { + const words = query.split(' ').map(w => w.trim()) + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + const updateQuery = () => setQuery(getQueryParam()) + window.addEventListener('popstate', updateQuery) + return () => { + window.removeEventListener('popstate', updateQuery) + } + }, [setQuery]) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( + { + e.preventDefault() + setSearchParams({ query }) + }} + > +
    + + setQuery(e.currentTarget.value)} + /> +
    +
    + + + +
    + + + ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + // 🐨 lift the favorite state from the Card component to here + + return ( +
      + {matchingPosts + .sort((a, b) => { + // 🐨 determine whether post a and b are included in favorites + const aFav = false // 💰 favorites.includes(a.id) + const bFav = false // 💰 favorites.includes(b.id) + if (aFav === bFav) return a.title.localeCompare(b.title) + return aFav ? -1 : 1 + }) + .map(post => ( + + ))} +
    + ) +} + +// 🐨 add props for isFavorited and onFavoriteClick +function Card({ post }: { post: BlogPost }) { + // 🐨 lift this up to MatchingPosts + const [isFavorited, setIsFavorited] = useState(false) + return ( +
  • + {isFavorited ? ( + + ) : ( + // 🐨 call onFavoriteClick + + )} +
  • + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/02.problem/README.mdx b/exercises/03.lifting-state/02.problem/README.mdx deleted file mode 100644 index 9e68791f6..000000000 --- a/exercises/03.lifting-state/02.problem/README.mdx +++ /dev/null @@ -1,26 +0,0 @@ -# Colocating State - -As a community we’re pretty good at lifting state. It becomes natural over time. -One thing that we typically have trouble remembering to do is to push state back -down (or -[colocate state](https://kentcdodds.com/blog/state-colocation-will-make-your-react-app-faster)). - -👨‍💼 Peter told us that now users only want the animal displayed instead of the -name: - -```javascript -function Display({animal}) { - return
    {`Your favorite animal is: ${animal}!`}
    -} -``` - -You'll notice that just updating the `Display` component to this works fine, but -for the extra credit, go through the process of moving state to the components -that need it (this type of change happens more often in real applications than -you might realize). Basically, you know what you just did for the `Animal` -component? You need to do the opposite thing for the `Name` component. - -🦉 A lot of folks asked me to add a note here that you really should be reading -the articles included in these instructions. If you skip those you're missing -out on some important learnings 😉 - diff --git a/exercises/03.lifting-state/02.problem/index.tsx b/exercises/03.lifting-state/02.problem/index.tsx deleted file mode 100644 index 7f8b00a98..000000000 --- a/exercises/03.lifting-state/02.problem/index.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function Name({ - name, - onNameChange, -}: { - name: string - onNameChange: (newName: string) => void -}) { - return ( -
    - - onNameChange(event.currentTarget.value)} - /> -
    - ) -} - -function FavoriteAnimal({ - animal, - onAnimalChange, -}: { - animal: string - onAnimalChange: (newAnimal: string) => void -}) { - return ( -
    - - onAnimalChange(event.currentTarget.value)} - /> -
    - ) -} - -function Display({name, animal}: {name: string; animal: string}) { - return
    {`Hey ${name}, your favorite animal is: ${animal}!`}
    -} - -function App() { - const [animal, setAnimal] = React.useState('') - const [name, setName] = React.useState('') - return ( -
    - - - - - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/02.solution.lift-array/README.mdx b/exercises/03.lifting-state/02.solution.lift-array/README.mdx new file mode 100644 index 000000000..d36b3a80a --- /dev/null +++ b/exercises/03.lifting-state/02.solution.lift-array/README.mdx @@ -0,0 +1 @@ +# Lift More State diff --git a/exercises/03.lifting-state/02.solution.lift-array/index.css b/exercises/03.lifting-state/02.solution.lift-array/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/03.lifting-state/02.solution.lift-array/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/03.lifting-state/02.solution.lift-array/index.tsx b/exercises/03.lifting-state/02.solution.lift-array/index.tsx new file mode 100644 index 000000000..78209c170 --- /dev/null +++ b/exercises/03.lifting-state/02.solution.lift-array/index.tsx @@ -0,0 +1,172 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + type BlogPost, + generateGradient, + getMatchingPosts, +} from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + const [query, setQuery] = useState(getQueryParam) + return ( +
    +
    + +
    + ) +} + +function Form({ + query, + setQuery, +}: { + query: string + setQuery: (query: string) => void +}) { + const words = query.split(' ').map(w => w.trim()) + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + const updateQuery = () => setQuery(getQueryParam()) + window.addEventListener('popstate', updateQuery) + return () => { + window.removeEventListener('popstate', updateQuery) + } + }, [setQuery]) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( + { + e.preventDefault() + setSearchParams({ query }) + }} + > +
    + + setQuery(e.currentTarget.value)} + /> +
    +
    + + + +
    + + + ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + const [favorites, setFavorites] = useState>([]) + + return ( +
      + {matchingPosts + .sort((a, b) => { + const aFav = favorites.includes(a.id) + const bFav = favorites.includes(b.id) + return aFav === bFav ? 0 : aFav ? -1 : 1 + }) + .map(post => ( + { + if (favorite) { + setFavorites([...favorites, post.id]) + } else { + setFavorites(favorites.filter(fav => fav !== post.id)) + } + }} + /> + ))} +
    + ) +} + +function Card({ + post, + isFavorited, + onFavoriteClick, +}: { + post: BlogPost + isFavorited: boolean + onFavoriteClick: (isFavorited: boolean) => void +}) { + return ( +
  • + {isFavorited ? ( + + ) : ( + + )} +
  • + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/02.solution/README.mdx b/exercises/03.lifting-state/02.solution/README.mdx deleted file mode 100644 index aae80e330..000000000 --- a/exercises/03.lifting-state/02.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Colocating State diff --git a/exercises/03.lifting-state/02.solution/index.tsx b/exercises/03.lifting-state/02.solution/index.tsx deleted file mode 100644 index 59a4a7265..000000000 --- a/exercises/03.lifting-state/02.solution/index.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function Name() { - const [name, setName] = React.useState('') - return ( -
    - - setName(event.currentTarget.value)} - /> -
    - ) -} - -function FavoriteAnimal({ - animal, - onAnimalChange, -}: { - animal: string - onAnimalChange: (newAnimal: string) => void -}) { - return ( -
    - - onAnimalChange(event.currentTarget.value)} - /> -
    - ) -} - -function Display({animal}: {animal: string}) { - return
    {`Your favorite animal is: ${animal}!`}
    -} - -function App() { - const [animal, setAnimal] = React.useState('') - return ( -
    - - - - - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/03.problem.colocate/README.mdx b/exercises/03.lifting-state/03.problem.colocate/README.mdx new file mode 100644 index 000000000..c13bb4995 --- /dev/null +++ b/exercises/03.lifting-state/03.problem.colocate/README.mdx @@ -0,0 +1,6 @@ +# Colocate State + +As a community we're pretty good at lifting state. It becomes natural over time. +One thing that we typically have trouble remembering to do is to push state back +down (or +[colocate state](https://kentcdodds.com/blog/state-colocation-will-make-your-react-app-faster)). diff --git a/exercises/03.lifting-state/03.problem.colocate/index.css b/exercises/03.lifting-state/03.problem.colocate/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/03.lifting-state/03.problem.colocate/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/03.lifting-state/03.problem.colocate/index.tsx b/exercises/03.lifting-state/03.problem.colocate/index.tsx new file mode 100644 index 000000000..b7566038e --- /dev/null +++ b/exercises/03.lifting-state/03.problem.colocate/index.tsx @@ -0,0 +1,173 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + type BlogPost, + generateGradient, + getMatchingPosts, +} from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + const [query, setQuery] = useState(getQueryParam) + return ( +
    +
    + +
    + ) +} + +function Form({ + query, + setQuery, +}: { + query: string + setQuery: (query: string) => void +}) { + const words = query.split(' ').map(w => w.trim()) + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + const updateQuery = () => setQuery(getQueryParam()) + window.addEventListener('popstate', updateQuery) + return () => { + window.removeEventListener('popstate', updateQuery) + } + }, [setQuery]) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( + { + e.preventDefault() + setSearchParams({ query }) + }} + > +
    + + setQuery(e.currentTarget.value)} + /> +
    +
    + + + +
    + + + ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + // 🐨 colocate this state back to the Card + const [favorites, setFavorites] = useState>([]) + + return ( +
      + {matchingPosts.map(post => ( + { + if (favorite) { + setFavorites([...favorites, post.id]) + } else { + setFavorites(favorites.filter(fav => fav !== post.id)) + } + }} + /> + ))} +
    + ) +} + +// 💣 remove the isFavorited and onFavoriteClick +function Card({ + post, + isFavorited, + onFavoriteClick, +}: { + post: BlogPost + isFavorited: boolean + onFavoriteClick: (isFavorited: boolean) => void +}) { + // 🐨 colocate the isFavorited state to here + return ( +
  • + {isFavorited ? ( + + ) : ( + // 🐨 call setIsFavorited + + )} +
  • + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/03.problem/README.mdx b/exercises/03.lifting-state/03.problem/README.mdx deleted file mode 100644 index 23ab0b645..000000000 --- a/exercises/03.lifting-state/03.problem/README.mdx +++ /dev/null @@ -1,18 +0,0 @@ -# Removing Unnecessary Controlled State - -You may have noticed by now that the `Name` component doesn't actually need the -`useState` at all to work. We've made the `input` "controlled" by providing the -`value` and `onChange` props, but we're not actually doing anything with that -state and we're not changing the `value` to anything that would be different -from what the browser does by default. - -So go ahead and remove the `useState` in the `Name` component. - -The point of this extra credit is to just illustrate that just because you have -an `input` doesn't mean it needs to be controlled. You really only need a -controlled input when you're going to programmatically change the `value` of -that input. Otherwise it's just extra work for no benefit. - -In a practical situation, you'd do this if you just need to access the value -when the containing form is submitted. - diff --git a/exercises/03.lifting-state/03.problem/index.tsx b/exercises/03.lifting-state/03.problem/index.tsx deleted file mode 100644 index 59a4a7265..000000000 --- a/exercises/03.lifting-state/03.problem/index.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function Name() { - const [name, setName] = React.useState('') - return ( -
    - - setName(event.currentTarget.value)} - /> -
    - ) -} - -function FavoriteAnimal({ - animal, - onAnimalChange, -}: { - animal: string - onAnimalChange: (newAnimal: string) => void -}) { - return ( -
    - - onAnimalChange(event.currentTarget.value)} - /> -
    - ) -} - -function Display({animal}: {animal: string}) { - return
    {`Your favorite animal is: ${animal}!`}
    -} - -function App() { - const [animal, setAnimal] = React.useState('') - return ( -
    - - - - - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/03.solution.colocate/README.mdx b/exercises/03.lifting-state/03.solution.colocate/README.mdx new file mode 100644 index 000000000..08f1e0775 --- /dev/null +++ b/exercises/03.lifting-state/03.solution.colocate/README.mdx @@ -0,0 +1 @@ +# Colocate State diff --git a/exercises/03.lifting-state/03.solution.colocate/index.css b/exercises/03.lifting-state/03.solution.colocate/index.css new file mode 100644 index 000000000..0cdfd44a3 --- /dev/null +++ b/exercises/03.lifting-state/03.solution.colocate/index.css @@ -0,0 +1,89 @@ +html, +body { + margin: 0; +} + +.app { + margin: 40px auto; + max-width: 1024px; + form { + text-align: center; + } +} + +.post-list { + list-style: none; + padding: 0; + display: flex; + gap: 20px; + flex-wrap: wrap; + justify-content: center; + li { + position: relative; + border-radius: 0.5rem; + overflow: hidden; + border: 1px solid #ddd; + width: 320px; + transition: transform 0.2s ease-in-out; + a { + text-decoration: none; + color: unset; + } + + &:hover, + &:has(*:focus), + &:has(*:active) { + transform: translate(0px, -6px); + } + + .post-image { + display: block; + width: 100%; + height: 200px; + } + + button { + position: absolute; + font-size: 1.5rem; + top: 20px; + right: 20px; + background: transparent; + border: none; + outline: none; + &:hover, + &:focus, + &:active { + animation: pulse 1.5s infinite; + } + } + + a { + padding: 10px 10px; + display: flex; + gap: 8px; + flex-direction: column; + h2 { + margin: 0; + font-size: 1.5rem; + font-weight: bold; + } + p { + margin: 0; + font-size: 1rem; + color: #666; + } + } + } +} + +@keyframes pulse { + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.3); + } + 100% { + transform: scale(1); + } +} diff --git a/exercises/03.lifting-state/03.solution.colocate/index.tsx b/exercises/03.lifting-state/03.solution.colocate/index.tsx new file mode 100644 index 000000000..d739304f2 --- /dev/null +++ b/exercises/03.lifting-state/03.solution.colocate/index.tsx @@ -0,0 +1,147 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + type BlogPost, + generateGradient, + getMatchingPosts, +} from '#shared/blog-posts' +import { setSearchParams } from '#shared/utils' + +function getQueryParam() { + const params = new URLSearchParams(window.location.search) + return params.get('query') ?? '' +} + +function App() { + const [query, setQuery] = useState(getQueryParam) + return ( +
    +
    + +
    + ) +} + +function Form({ + query, + setQuery, +}: { + query: string + setQuery: (query: string) => void +}) { + const words = query.split(' ').map(w => w.trim()) + + const dogChecked = words.includes('dog') + const catChecked = words.includes('cat') + const caterpillarChecked = words.includes('caterpillar') + + useEffect(() => { + const updateQuery = () => setQuery(getQueryParam()) + window.addEventListener('popstate', updateQuery) + return () => { + window.removeEventListener('popstate', updateQuery) + } + }, [setQuery]) + + function handleCheck(tag: string, checked: boolean) { + const newWords = checked ? [...words, tag] : words.filter(w => w !== tag) + setQuery(newWords.filter(Boolean).join(' ').trim()) + } + + return ( + { + e.preventDefault() + setSearchParams({ query }) + }} + > +
    + + setQuery(e.currentTarget.value)} + /> +
    +
    + + + +
    + + + ) +} + +function MatchingPosts({ query }: { query: string }) { + const matchingPosts = getMatchingPosts(query) + + return ( +
      + {matchingPosts.map(post => ( + + ))} +
    + ) +} + +function Card({ post }: { post: BlogPost }) { + const [isFavorited, setIsFavorited] = useState(false) + return ( +
  • + {isFavorited ? ( + + ) : ( + + )} +
  • + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/03.solution/README.mdx b/exercises/03.lifting-state/03.solution/README.mdx deleted file mode 100644 index fc0dde97b..000000000 --- a/exercises/03.lifting-state/03.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Removing Unnecessary Controlled State diff --git a/exercises/03.lifting-state/03.solution/index.tsx b/exercises/03.lifting-state/03.solution/index.tsx deleted file mode 100644 index 6bbf2dde1..000000000 --- a/exercises/03.lifting-state/03.solution/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' - -function Name() { - return ( -
    - - -
    - ) -} - -function FavoriteAnimal({ - animal, - onAnimalChange, -}: { - animal: string - onAnimalChange: (newAnimal: string) => void -}) { - return ( -
    - - onAnimalChange(event.currentTarget.value)} - /> -
    - ) -} - -function Display({animal}: {animal: string}) { - return
    {`Your favorite animal is: ${animal}!`}
    -} - -function App() { - const [animal, setAnimal] = React.useState('') - return ( -
    - - - - - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/03.lifting-state/01.solution/README.mdx b/exercises/03.lifting-state/FINISHED.mdx similarity index 100% rename from exercises/03.lifting-state/01.solution/README.mdx rename to exercises/03.lifting-state/FINISHED.mdx diff --git a/exercises/03.lifting-state/README.mdx b/exercises/03.lifting-state/README.mdx index 49db77d66..12361f6d0 100644 --- a/exercises/03.lifting-state/README.mdx +++ b/exercises/03.lifting-state/README.mdx @@ -7,4 +7,3 @@ which basically amounts to finding the lowest common parent shared between the two components and placing the state management there, and then passing the state and a mechanism for updating that state down into the components that need it. - diff --git a/exercises/05.dom-side-effects/02.problem/README.mdx b/exercises/04.dom/01.problem.ref/README.mdx similarity index 75% rename from exercises/05.dom-side-effects/02.problem/README.mdx rename to exercises/04.dom/01.problem.ref/README.mdx index a4255a748..e1521e18f 100644 --- a/exercises/05.dom-side-effects/02.problem/README.mdx +++ b/exercises/04.dom/01.problem.ref/README.mdx @@ -1,8 +1,8 @@ -# Side-Effect Cleanup +# Refs -In this extra credit we're going to use a completely different example. We're -going to make a `` component that renders a div and uses the -`vanilla-tilt` library to make it super fancy. +In this step we're going to use a completely different example. We're going to +make a `` component that renders a div and uses the `vanilla-tilt` +library to make it super fancy. The thing is, `vanilla-tilt` works directly with DOM nodes to setup event handlers and stuff, so we need access to the DOM node. But because we're not the @@ -25,8 +25,3 @@ but not being used. We keep doing this over and over again and eventually our computer is just keeping track of all these DOM nodes we don't need it to. That's what's called a memory leak. So it's really important we clean up after ourselves to avoid the performance problems associated with memory leaks. - -NOTE: Because this extra credit is a completely different example, you've got -another starting point file in: `src/exercise/05.extra-1.tsx`. 🐨 and 💰 will be -there to help you get that working. - diff --git a/exercises/04.dom/01.problem.ref/index.css b/exercises/04.dom/01.problem.ref/index.css new file mode 100644 index 000000000..f0ca17c65 --- /dev/null +++ b/exercises/04.dom/01.problem.ref/index.css @@ -0,0 +1,39 @@ +/* +Taken from the vanilla-tilt.js demo site: +https://micku7zu.github.io/vanilla-tilt.js/index.html +*/ +.tilt-root { + height: 150px; + background-color: red; + width: 200px; + background-image: -webkit-linear-gradient(315deg, #ff00ba 0%, #fae713 100%); + background-image: linear-gradient(135deg, #ff00ba 0%, #fae713 100%); + transform-style: preserve-3d; + will-change: transform; + transform: perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1); +} +.tilt-child { + position: absolute; + width: 50%; + height: 50%; + top: 50%; + left: 50%; + transform: translateZ(30px) translateX(-50%) translateY(-50%); + box-shadow: 0 0 50px 0 rgba(51, 51, 51, 0.3); + background-color: white; +} +.totally-centered { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.count-button { + width: 100%; + height: 100%; + background: transparent; + border: none; + font-size: 3em; +} diff --git a/exercises/04.dom/01.problem.ref/index.tsx b/exercises/04.dom/01.problem.ref/index.tsx new file mode 100644 index 000000000..0ab03f0b0 --- /dev/null +++ b/exercises/04.dom/01.problem.ref/index.tsx @@ -0,0 +1,59 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import VanillaTilt from 'vanilla-tilt' + +interface HTMLVanillaTiltElement extends HTMLDivElement { + vanillaTilt: VanillaTilt +} + +function Tilt({ children }: { children: React.ReactNode }) { + // 🐨 create a tiltRef here with useRef() + + useEffect(() => { + // 🐨 get the tiltNode from tiltRef.current + const tiltNode = null as unknown as HTMLVanillaTiltElement + // 🦺 TypeScript will complain that it's possible for the tiltNode to be + // null. It's definitely possible (like if we changed the code to not apply + // the ref prop on the div below), so go ahead and just do an early return + // in that case. + + const vanillaTiltOptions = { + max: 25, + speed: 400, + glare: true, + 'max-glare': 0.5, + } + VanillaTilt.init(tiltNode, vanillaTiltOptions) + + // 🐨 Don't forget to return a cleanup function. VanillaTilt.init will add an + // object to your DOM node to cleanup: + // 💰 return () => tiltNode.vanillaTilt.destroy() + + // 📜 Learn why we don't need to pass the tiltRef as a dependency: + // https://epicreact.dev/why-you-shouldnt-put-refs-in-a-dependency-array + }, []) + + // 🐨 add the `ref` prop to the `tilt-root` div here: + return ( +
    +
    {children}
    +
    + ) +} + +function App() { + const [count, setCount] = useState(0) + return ( + +
    + +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.dom/01.solution.ref/README.mdx b/exercises/04.dom/01.solution.ref/README.mdx new file mode 100644 index 000000000..4f01ca5d4 --- /dev/null +++ b/exercises/04.dom/01.solution.ref/README.mdx @@ -0,0 +1 @@ +# Refs diff --git a/exercises/04.dom/01.solution.ref/index.css b/exercises/04.dom/01.solution.ref/index.css new file mode 100644 index 000000000..f0ca17c65 --- /dev/null +++ b/exercises/04.dom/01.solution.ref/index.css @@ -0,0 +1,39 @@ +/* +Taken from the vanilla-tilt.js demo site: +https://micku7zu.github.io/vanilla-tilt.js/index.html +*/ +.tilt-root { + height: 150px; + background-color: red; + width: 200px; + background-image: -webkit-linear-gradient(315deg, #ff00ba 0%, #fae713 100%); + background-image: linear-gradient(135deg, #ff00ba 0%, #fae713 100%); + transform-style: preserve-3d; + will-change: transform; + transform: perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1); +} +.tilt-child { + position: absolute; + width: 50%; + height: 50%; + top: 50%; + left: 50%; + transform: translateZ(30px) translateX(-50%) translateY(-50%); + box-shadow: 0 0 50px 0 rgba(51, 51, 51, 0.3); + background-color: white; +} +.totally-centered { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.count-button { + width: 100%; + height: 100%; + background: transparent; + border: none; + font-size: 3em; +} diff --git a/exercises/04.dom/01.solution.ref/index.tsx b/exercises/04.dom/01.solution.ref/index.tsx new file mode 100644 index 000000000..04e6f2dc1 --- /dev/null +++ b/exercises/04.dom/01.solution.ref/index.tsx @@ -0,0 +1,47 @@ +import { useEffect, useRef, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import VanillaTilt from 'vanilla-tilt' + +interface HTMLVanillaTiltElement extends HTMLDivElement { + vanillaTilt: VanillaTilt +} + +function Tilt({ children }: { children: React.ReactNode }) { + const tiltRef = useRef(null) + + useEffect(() => { + const { current: tiltNode } = tiltRef + if (tiltNode === null) return + const vanillaTiltOptions = { + max: 25, + speed: 400, + glare: true, + 'max-glare': 0.5, + } + VanillaTilt.init(tiltNode, vanillaTiltOptions) + return () => tiltNode.vanillaTilt.destroy() + }, []) + + return ( +
    +
    {children}
    +
    + ) +} + +function App() { + const [count, setCount] = useState(0) + return ( + +
    + +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.dom/02.problem.deps/README.mdx b/exercises/04.dom/02.problem.deps/README.mdx new file mode 100644 index 000000000..3c3f15c79 --- /dev/null +++ b/exercises/04.dom/02.problem.deps/README.mdx @@ -0,0 +1 @@ +# Dependencies diff --git a/exercises/04.dom/02.problem.deps/index.css b/exercises/04.dom/02.problem.deps/index.css new file mode 100644 index 000000000..f0ca17c65 --- /dev/null +++ b/exercises/04.dom/02.problem.deps/index.css @@ -0,0 +1,39 @@ +/* +Taken from the vanilla-tilt.js demo site: +https://micku7zu.github.io/vanilla-tilt.js/index.html +*/ +.tilt-root { + height: 150px; + background-color: red; + width: 200px; + background-image: -webkit-linear-gradient(315deg, #ff00ba 0%, #fae713 100%); + background-image: linear-gradient(135deg, #ff00ba 0%, #fae713 100%); + transform-style: preserve-3d; + will-change: transform; + transform: perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1); +} +.tilt-child { + position: absolute; + width: 50%; + height: 50%; + top: 50%; + left: 50%; + transform: translateZ(30px) translateX(-50%) translateY(-50%); + box-shadow: 0 0 50px 0 rgba(51, 51, 51, 0.3); + background-color: white; +} +.totally-centered { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.count-button { + width: 100%; + height: 100%; + background: transparent; + border: none; + font-size: 3em; +} diff --git a/exercises/04.dom/02.problem.deps/index.tsx b/exercises/04.dom/02.problem.deps/index.tsx new file mode 100644 index 000000000..73762428a --- /dev/null +++ b/exercises/04.dom/02.problem.deps/index.tsx @@ -0,0 +1,114 @@ +// 1️⃣ 🐨 before you do anything else, head down to the useEffect and fix the +// dependency array! +import { useEffect, useRef, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import VanillaTilt from 'vanilla-tilt' + +interface HTMLVanillaTiltElement extends HTMLDivElement { + vanillaTilt: VanillaTilt +} + +function Tilt({ + children, + // 4️⃣ 🐨 get rid of this rest operator and destructure each prop instead + ...options +}: { + children: React.ReactNode + max?: number + speed?: number + glare?: boolean + maxGlare?: number +}) { + const tiltRef = useRef(null) + + useEffect(() => { + const { current: tiltNode } = tiltRef + if (tiltNode === null) return + const vanillaTiltOptions = { + // 5️⃣ 🐨 get rid of options here and simply pass each individual option + ...options, + max: 25, + speed: 400, + glare: true, + 'max-glare': 0.5, + } + VanillaTilt.init(tiltNode, vanillaTiltOptions) + return () => tiltNode.vanillaTilt.destroy() + // 2️⃣ 🐨 OH NO! NEVER DISABLE THIS LINT RULE! + // Add the options to fix the original bug + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + // 3️⃣ 🦉 once you add options to the dependency array though, you'll notice + // another bug... Clicking on the button resets the tilt effect because the + // options object is new every render! 🤦‍♂️ + // 6️⃣ 🐨 get rid of the options from the dependency array and add each + // individual option. + + return ( +
    +
    {children}
    +
    + ) +} + +function App() { + const [count, setCount] = useState(0) + const [options, setOptions] = useState({ + max: 25, + speed: 400, + glare: true, + maxGlare: 0.5, + }) + return ( +
    +
    e.preventDefault()} + onChange={event => { + const formData = new FormData(event.currentTarget) + setOptions({ + max: formData.get('max') as any, + speed: formData.get('speed') as any, + glare: formData.get('glare') === 'on', + maxGlare: formData.get('maxGlare') as any, + }) + }} + > +
    + + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.dom/02.solution.deps/README.mdx b/exercises/04.dom/02.solution.deps/README.mdx new file mode 100644 index 000000000..3c3f15c79 --- /dev/null +++ b/exercises/04.dom/02.solution.deps/README.mdx @@ -0,0 +1 @@ +# Dependencies diff --git a/exercises/04.dom/02.solution.deps/index.css b/exercises/04.dom/02.solution.deps/index.css new file mode 100644 index 000000000..f0ca17c65 --- /dev/null +++ b/exercises/04.dom/02.solution.deps/index.css @@ -0,0 +1,39 @@ +/* +Taken from the vanilla-tilt.js demo site: +https://micku7zu.github.io/vanilla-tilt.js/index.html +*/ +.tilt-root { + height: 150px; + background-color: red; + width: 200px; + background-image: -webkit-linear-gradient(315deg, #ff00ba 0%, #fae713 100%); + background-image: linear-gradient(135deg, #ff00ba 0%, #fae713 100%); + transform-style: preserve-3d; + will-change: transform; + transform: perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1); +} +.tilt-child { + position: absolute; + width: 50%; + height: 50%; + top: 50%; + left: 50%; + transform: translateZ(30px) translateX(-50%) translateY(-50%); + box-shadow: 0 0 50px 0 rgba(51, 51, 51, 0.3); + background-color: white; +} +.totally-centered { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.count-button { + width: 100%; + height: 100%; + background: transparent; + border: none; + font-size: 3em; +} diff --git a/exercises/04.dom/02.solution.deps/index.tsx b/exercises/04.dom/02.solution.deps/index.tsx new file mode 100644 index 000000000..bb3085c7f --- /dev/null +++ b/exercises/04.dom/02.solution.deps/index.tsx @@ -0,0 +1,104 @@ +import { useEffect, useRef, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import VanillaTilt from 'vanilla-tilt' + +interface HTMLVanillaTiltElement extends HTMLDivElement { + vanillaTilt: VanillaTilt +} + +function Tilt({ + children, + max = 25, + speed = 400, + glare = true, + maxGlare = 0.5, +}: { + children: React.ReactNode + max?: number + speed?: number + glare?: boolean + maxGlare?: number +}) { + const tiltRef = useRef(null) + + useEffect(() => { + const { current: tiltNode } = tiltRef + if (tiltNode === null) return + const vanillaTiltOptions = { + max, + speed, + glare, + 'max-glare': maxGlare, + } + VanillaTilt.init(tiltNode, vanillaTiltOptions) + return () => tiltNode.vanillaTilt.destroy() + }, [glare, max, maxGlare, speed]) + + return ( +
    +
    {children}
    +
    + ) +} + +function App() { + const [count, setCount] = useState(0) + const [options, setOptions] = useState({ + max: 25, + speed: 400, + glare: true, + maxGlare: 0.5, + }) + return ( +
    +
    e.preventDefault()} + onChange={event => { + const formData = new FormData(event.currentTarget) + setOptions({ + max: formData.get('max') as any, + speed: formData.get('speed') as any, + glare: formData.get('glare') === 'on', + maxGlare: formData.get('maxGlare') as any, + }) + }} + > +
    + + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/05.dom-side-effects/01.solution/README.mdx b/exercises/04.dom/FINISHED.mdx similarity index 100% rename from exercises/05.dom-side-effects/01.solution/README.mdx rename to exercises/04.dom/FINISHED.mdx diff --git a/exercises/05.dom-side-effects/README.mdx b/exercises/04.dom/README.mdx similarity index 73% rename from exercises/05.dom-side-effects/README.mdx rename to exercises/04.dom/README.mdx index 43ae1591c..ebd06ae19 100644 --- a/exercises/05.dom-side-effects/README.mdx +++ b/exercises/04.dom/README.mdx @@ -20,18 +20,18 @@ Here's a simple example of using the `ref` prop: ```tsx function MyDiv() { - const myDivRef = React.useRef(null) - React.useEffect(() => { - const myDiv = myDivRef.current - // myDiv is the div DOM node! - console.log(myDiv) - }, []) - return
    hi
    + const myDivRef = useRef(null) + useEffect(() => { + const myDiv = myDivRef.current + // myDiv is the div DOM node! + console.log(myDiv) + }, []) + return
    hi
    } ``` After the component has been rendered, it's considered "mounted." That's when -the React.useEffect callback is called and so by that point, the ref should have +the useEffect callback is called and so by that point, the ref should have its `current` property set to the DOM node. So often you'll do direct DOM interactions/manipulations in the `useEffect` callback. @@ -51,7 +51,7 @@ trigger a rerender when changed. So you can store whatever you'd like in a ref, not just DOM nodes. Think of a ref like this: ```tsx -const myRef = React.useState({current: null})[0] +const myRef = useState({ current: null })[0] // you are now free to mutate the value of myRef.current ``` @@ -63,3 +63,11 @@ state if you're unsure and then move to a ref if you decide you don't want a rerender when it's updated. We'll dive deeper into non-DOM refs in future workshops. +🦉 If you run your application +[in strict mode](https://react.dev/reference/react/StrictMode#strictmode), one +of the things it does is run your `useEffect` callback twice. This is intended +to help you find bugs in your code. It's important to note that in production, +`StrictMode` does nothing, so this will only happen development. However, I +personally find this to cause more trouble than it's worth and do not develop +my React applications with StrictMode enabled, but it's definitely something +you should be aware of. diff --git a/exercises/04.real-world-review-tic-tac-toe/01.problem/index.css b/exercises/04.real-world-review-tic-tac-toe/01.problem/index.css deleted file mode 100644 index 92f14101c..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/01.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import '/tic-tac-toe.styles.css'; \ No newline at end of file diff --git a/exercises/04.real-world-review-tic-tac-toe/01.problem/index.tsx b/exercises/04.real-world-review-tic-tac-toe/01.problem/index.tsx deleted file mode 100644 index 39dde3a96..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/01.problem/index.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - calculateStatus, - calculateNextValue, - calculateWinner, -} from '~/shared/tic-tac-toe-utils' -import type {Squares} from '~/shared/tic-tac-toe-utils' - -function Board() { - // 🐨 squares is the state for this component. Add useState for squares - const squares = Array(9).fill(null) - - // 🐨 We'll need the following bits of derived state: - // - nextValue ('X' or 'O') - // - winner ('X', 'O', or null) - // - status (`Winner: ${winner}`, `Scratch: Cat's game`, or `Next player: ${nextValue}`) - // 💰 I've written the calculations for you! So you can use my utilities - // below to create these variables - - // This is the function your square click handler will call. `square` should - // be an index. So if they click the center square, this will be `4`. - function selectSquare(index: number) { - // 🐨 first, if there's already winner or there's already a value at the - // given square index (like someone clicked a square that's already been - // clicked), then return early so we don't make any state changes - // - // 🦉 It's typically a bad idea to mutate or directly change state in React. - // Doing so can lead to subtle bugs that can easily slip into production. - // - // 🐨 call setSquares, accept the "previousSquares", and do this: - // 🐨 make a copy of the squares array - // 💰 `[...previousSquares]` will do it! - // - // 🐨 set the value of the square that was selected - // 💰 `squaresCopy[index] = nextValue` - // - // 🐨 return your copy of the squares - } - - function restart() { - // 🐨 reset the squares - // 💰 `Array(9).fill(null)` will do it! - } - - function renderSquare(i: number) { - return ( - - ) - } - - return ( -
    - {/* 🐨 put the status in the div below */} -
    STATUS
    -
    - {renderSquare(0)} - {renderSquare(1)} - {renderSquare(2)} -
    -
    - {renderSquare(3)} - {renderSquare(4)} - {renderSquare(5)} -
    -
    - {renderSquare(6)} - {renderSquare(7)} - {renderSquare(8)} -
    - -
    - ) -} - -function App() { - return ( -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() - -/* -eslint - @typescript-eslint/no-unused-vars: "off", -*/ diff --git a/exercises/04.real-world-review-tic-tac-toe/01.solution/index.css b/exercises/04.real-world-review-tic-tac-toe/01.solution/index.css deleted file mode 100644 index 92f14101c..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/01.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import '/tic-tac-toe.styles.css'; \ No newline at end of file diff --git a/exercises/04.real-world-review-tic-tac-toe/01.solution/index.tsx b/exercises/04.real-world-review-tic-tac-toe/01.solution/index.tsx deleted file mode 100644 index 3c532549a..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/01.solution/index.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - calculateStatus, - calculateNextValue, - calculateWinner, -} from '~/shared/tic-tac-toe-utils' -import type {Squares} from '~/shared/tic-tac-toe-utils' - -function Board() { - const [squares, setSquares] = React.useState(Array(9).fill(null)) - - const nextValue = calculateNextValue(squares) - const winner = calculateWinner(squares) - const status = calculateStatus(winner, squares, nextValue) - - function selectSquare(index: number) { - if (winner || squares[index]) { - return - } - setSquares(previousSquares => { - const squaresCopy = [...previousSquares] - squaresCopy[index] = nextValue - return squaresCopy - }) - } - - function restart() { - setSquares(Array(9).fill(null)) - } - - function renderSquare(i: number) { - return ( - - ) - } - - return ( -
    -
    {status}
    -
    - {renderSquare(0)} - {renderSquare(1)} - {renderSquare(2)} -
    -
    - {renderSquare(3)} - {renderSquare(4)} - {renderSquare(5)} -
    -
    - {renderSquare(6)} - {renderSquare(7)} - {renderSquare(8)} -
    - -
    - ) -} - -function App() { - return ( -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/02.problem/index.css b/exercises/04.real-world-review-tic-tac-toe/02.problem/index.css deleted file mode 100644 index 92f14101c..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/02.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import '/tic-tac-toe.styles.css'; \ No newline at end of file diff --git a/exercises/04.real-world-review-tic-tac-toe/02.problem/index.tsx b/exercises/04.real-world-review-tic-tac-toe/02.problem/index.tsx deleted file mode 100644 index 3c532549a..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/02.problem/index.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - calculateStatus, - calculateNextValue, - calculateWinner, -} from '~/shared/tic-tac-toe-utils' -import type {Squares} from '~/shared/tic-tac-toe-utils' - -function Board() { - const [squares, setSquares] = React.useState(Array(9).fill(null)) - - const nextValue = calculateNextValue(squares) - const winner = calculateWinner(squares) - const status = calculateStatus(winner, squares, nextValue) - - function selectSquare(index: number) { - if (winner || squares[index]) { - return - } - setSquares(previousSquares => { - const squaresCopy = [...previousSquares] - squaresCopy[index] = nextValue - return squaresCopy - }) - } - - function restart() { - setSquares(Array(9).fill(null)) - } - - function renderSquare(i: number) { - return ( - - ) - } - - return ( -
    -
    {status}
    -
    - {renderSquare(0)} - {renderSquare(1)} - {renderSquare(2)} -
    -
    - {renderSquare(3)} - {renderSquare(4)} - {renderSquare(5)} -
    -
    - {renderSquare(6)} - {renderSquare(7)} - {renderSquare(8)} -
    - -
    - ) -} - -function App() { - return ( -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/02.solution/index.css b/exercises/04.real-world-review-tic-tac-toe/02.solution/index.css deleted file mode 100644 index 92f14101c..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/02.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import '/tic-tac-toe.styles.css'; \ No newline at end of file diff --git a/exercises/04.real-world-review-tic-tac-toe/02.solution/index.tsx b/exercises/04.real-world-review-tic-tac-toe/02.solution/index.tsx deleted file mode 100644 index d15a5d708..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/02.solution/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - calculateStatus, - calculateNextValue, - calculateWinner, -} from '~/shared/tic-tac-toe-utils' -import type {Squares} from '~/shared/tic-tac-toe-utils' - -function Board() { - const [squares, setSquares] = React.useState(() => { - let localStorageValue - try { - localStorageValue = JSON.parse( - window.localStorage.getItem('squares') ?? 'null', - ) - } catch (error: unknown) { - // something is wrong in localStorage, so don't use it - } - if (localStorageValue) { - return localStorageValue - } else { - return Array(9).fill(null) - } - }) - - React.useEffect(() => { - window.localStorage.setItem('squares', JSON.stringify(squares)) - }, [squares]) - - const nextValue = calculateNextValue(squares) - const winner = calculateWinner(squares) - const status = calculateStatus(winner, squares, nextValue) - - function selectSquare(index: number) { - if (winner || squares[index]) { - return - } - setSquares(previousSquares => { - const squaresCopy = [...previousSquares] - squaresCopy[index] = nextValue - return squaresCopy - }) - } - - function restart() { - setSquares(Array(9).fill(null)) - } - - function renderSquare(i: number) { - return ( - - ) - } - - return ( -
    -
    {status}
    -
    - {renderSquare(0)} - {renderSquare(1)} - {renderSquare(2)} -
    -
    - {renderSquare(3)} - {renderSquare(4)} - {renderSquare(5)} -
    -
    - {renderSquare(6)} - {renderSquare(7)} - {renderSquare(8)} -
    - -
    - ) -} - -function App() { - return ( -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/03.problem/README.mdx b/exercises/04.real-world-review-tic-tac-toe/03.problem/README.mdx deleted file mode 100644 index 88bf16dd5..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/03.problem/README.mdx +++ /dev/null @@ -1,9 +0,0 @@ -# useLocalStorageState - -It's cool that we can get localStorage support with a simple `useEffect`, but -it'd be even cooler to use the `useLocalStorageState` hook that's already -written for us in `src/utils.js`! - -Refactor your code to use that custom hook instead. (This should be a pretty -quick extra credit). - diff --git a/exercises/04.real-world-review-tic-tac-toe/03.problem/index.css b/exercises/04.real-world-review-tic-tac-toe/03.problem/index.css deleted file mode 100644 index 92f14101c..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/03.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import '/tic-tac-toe.styles.css'; \ No newline at end of file diff --git a/exercises/04.real-world-review-tic-tac-toe/03.problem/index.tsx b/exercises/04.real-world-review-tic-tac-toe/03.problem/index.tsx deleted file mode 100644 index d15a5d708..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/03.problem/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - calculateStatus, - calculateNextValue, - calculateWinner, -} from '~/shared/tic-tac-toe-utils' -import type {Squares} from '~/shared/tic-tac-toe-utils' - -function Board() { - const [squares, setSquares] = React.useState(() => { - let localStorageValue - try { - localStorageValue = JSON.parse( - window.localStorage.getItem('squares') ?? 'null', - ) - } catch (error: unknown) { - // something is wrong in localStorage, so don't use it - } - if (localStorageValue) { - return localStorageValue - } else { - return Array(9).fill(null) - } - }) - - React.useEffect(() => { - window.localStorage.setItem('squares', JSON.stringify(squares)) - }, [squares]) - - const nextValue = calculateNextValue(squares) - const winner = calculateWinner(squares) - const status = calculateStatus(winner, squares, nextValue) - - function selectSquare(index: number) { - if (winner || squares[index]) { - return - } - setSquares(previousSquares => { - const squaresCopy = [...previousSquares] - squaresCopy[index] = nextValue - return squaresCopy - }) - } - - function restart() { - setSquares(Array(9).fill(null)) - } - - function renderSquare(i: number) { - return ( - - ) - } - - return ( -
    -
    {status}
    -
    - {renderSquare(0)} - {renderSquare(1)} - {renderSquare(2)} -
    -
    - {renderSquare(3)} - {renderSquare(4)} - {renderSquare(5)} -
    -
    - {renderSquare(6)} - {renderSquare(7)} - {renderSquare(8)} -
    - -
    - ) -} - -function App() { - return ( -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/03.solution/README.mdx b/exercises/04.real-world-review-tic-tac-toe/03.solution/README.mdx deleted file mode 100644 index a1fe50edd..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/03.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# useLocalStorageState diff --git a/exercises/04.real-world-review-tic-tac-toe/03.solution/index.css b/exercises/04.real-world-review-tic-tac-toe/03.solution/index.css deleted file mode 100644 index 92f14101c..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/03.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import '/tic-tac-toe.styles.css'; \ No newline at end of file diff --git a/exercises/04.real-world-review-tic-tac-toe/03.solution/index.tsx b/exercises/04.real-world-review-tic-tac-toe/03.solution/index.tsx deleted file mode 100644 index 7cf4a9db0..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/03.solution/index.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {useLocalStorageState} from '~/shared/utils' -import { - calculateStatus, - calculateNextValue, - calculateWinner, -} from '~/shared/tic-tac-toe-utils' -import type {Squares} from '~/shared/tic-tac-toe-utils' - -function Board() { - const [squares, setSquares] = useLocalStorageState( - 'squares', - Array(9).fill(null), - ) - - const nextValue = calculateNextValue(squares) - const winner = calculateWinner(squares) - const status = calculateStatus(winner, squares, nextValue) - - function selectSquare(index: number) { - if (winner || squares[index]) { - return - } - setSquares(previousSquares => { - const squaresCopy = [...previousSquares] - squaresCopy[index] = nextValue - return squaresCopy - }) - } - - function restart() { - setSquares(Array(9).fill(null)) - } - - function renderSquare(i: number) { - return ( - - ) - } - - return ( -
    -
    {status}
    -
    - {renderSquare(0)} - {renderSquare(1)} - {renderSquare(2)} -
    -
    - {renderSquare(3)} - {renderSquare(4)} - {renderSquare(5)} -
    -
    - {renderSquare(6)} - {renderSquare(7)} - {renderSquare(8)} -
    - -
    - ) -} - -function App() { - return ( -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/04.problem/README.mdx b/exercises/04.real-world-review-tic-tac-toe/04.problem/README.mdx deleted file mode 100644 index 487cccc9b..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/04.problem/README.mdx +++ /dev/null @@ -1,38 +0,0 @@ -# Add Game History Feature - -Open -[localhost:3000/isolated/final/04.extra-3.js](http://localhost:3000/isolated/final/04.extra-3.js) -and see that the extra version supports keeping a history of the game and allows -you to go backward and forward in time. See if you can implement that! - -NOTE: This extra credit is one of the harder extra credits. Don't worry if you -struggle a bit on it! - -💰 Tip, in the final example, we store the history of squares in an array of -arrays. `[[/* step 0 squares */], [/* step 1 squares */], ...etc]`, so we have -two states: `history` and `currentStep`. - -💰 Tip, in the final example, we move the state management from the `Board` -component to the `Game` component and that helps a bit. Here's what the JSX -returned from the `Game` component is in the final version: - -```javascript -return ( -
    -
    - - -
    -
    -
    {status}
    -
      {moves}
    -
    -
    -) -``` - -But you don't have to do this exactly the same way I do it. Feel free to play -around with this one. - diff --git a/exercises/04.real-world-review-tic-tac-toe/04.problem/index.css b/exercises/04.real-world-review-tic-tac-toe/04.problem/index.css deleted file mode 100644 index 92f14101c..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/04.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import '/tic-tac-toe.styles.css'; \ No newline at end of file diff --git a/exercises/04.real-world-review-tic-tac-toe/04.problem/index.tsx b/exercises/04.real-world-review-tic-tac-toe/04.problem/index.tsx deleted file mode 100644 index 7cf4a9db0..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/04.problem/index.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {useLocalStorageState} from '~/shared/utils' -import { - calculateStatus, - calculateNextValue, - calculateWinner, -} from '~/shared/tic-tac-toe-utils' -import type {Squares} from '~/shared/tic-tac-toe-utils' - -function Board() { - const [squares, setSquares] = useLocalStorageState( - 'squares', - Array(9).fill(null), - ) - - const nextValue = calculateNextValue(squares) - const winner = calculateWinner(squares) - const status = calculateStatus(winner, squares, nextValue) - - function selectSquare(index: number) { - if (winner || squares[index]) { - return - } - setSquares(previousSquares => { - const squaresCopy = [...previousSquares] - squaresCopy[index] = nextValue - return squaresCopy - }) - } - - function restart() { - setSquares(Array(9).fill(null)) - } - - function renderSquare(i: number) { - return ( - - ) - } - - return ( -
    -
    {status}
    -
    - {renderSquare(0)} - {renderSquare(1)} - {renderSquare(2)} -
    -
    - {renderSquare(3)} - {renderSquare(4)} - {renderSquare(5)} -
    -
    - {renderSquare(6)} - {renderSquare(7)} - {renderSquare(8)} -
    - -
    - ) -} - -function App() { - return ( -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/04.solution/index.css b/exercises/04.real-world-review-tic-tac-toe/04.solution/index.css deleted file mode 100644 index 92f14101c..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/04.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import '/tic-tac-toe.styles.css'; \ No newline at end of file diff --git a/exercises/04.real-world-review-tic-tac-toe/04.solution/index.tsx b/exercises/04.real-world-review-tic-tac-toe/04.solution/index.tsx deleted file mode 100644 index 965bb432a..000000000 --- a/exercises/04.real-world-review-tic-tac-toe/04.solution/index.tsx +++ /dev/null @@ -1,119 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {useLocalStorageState} from '~/shared/utils' -import { - calculateStatus, - calculateNextValue, - calculateWinner, -} from '~/shared/tic-tac-toe-utils' -import type {Squares} from '~/shared/tic-tac-toe-utils' - -function Board({ - squares, - onClick, -}: { - squares: Squares - onClick: (index: number) => void -}) { - function renderSquare(i: number) { - return ( - - ) - } - - return ( -
    -
    - {renderSquare(0)} - {renderSquare(1)} - {renderSquare(2)} -
    -
    - {renderSquare(3)} - {renderSquare(4)} - {renderSquare(5)} -
    -
    - {renderSquare(6)} - {renderSquare(7)} - {renderSquare(8)} -
    -
    - ) -} - -const initialState = { - history: [Array(9).fill(null)], - currentStep: 0, -} - -function App() { - const [state, setState] = useLocalStorageState<{ - history: Array - currentStep: number - }>('tic-tac-toe', initialState) - const {history, currentStep} = state - - const currentSquares = history[currentStep] ?? Array(9).fill(null) - - const winner = calculateWinner(currentSquares) - const nextValue = calculateNextValue(currentSquares) - const status = calculateStatus(winner, currentSquares, nextValue) - - function selectSquare(index: number) { - if (winner || currentSquares[index]) { - return - } - - setState(previousState => { - const newHistory = previousState.history.slice(0, currentStep + 1) - const squares = [...currentSquares] - - squares[index] = nextValue - return {history: [...newHistory, squares], currentStep: newHistory.length} - }) - } - - function restart() { - setState(initialState) - } - - const moves = history.map((stepSquares, step) => { - const desc = step ? `Go to move #${step}` : 'Go to game start' - const isCurrentStep = step === currentStep - function moveHistory() { - setState(previousState => ({...previousState, currentStep: step})) - } - // NOTE: the "step" is actually the "index" which normally you don't want to - // use as the "key" prop. However, in this case, the index is effectively - // the "id" of the step in history, so it is correct. - return ( -
  • - -
  • - ) - }) - - return ( -
    -
    - - -
    -
    -
    {status}
    -
      {moves}
    -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/05.dom-side-effects/01.problem/README.mdx b/exercises/05.dom-side-effects/01.problem/README.mdx deleted file mode 100644 index 3116977f7..000000000 --- a/exercises/05.dom-side-effects/01.problem/README.mdx +++ /dev/null @@ -1,11 +0,0 @@ -# DOM Side-Effects - -For this extra credit we're going to auto-focus on the username input if there's -an error after submitting. This is a common practice for accessibility purposes -(to focus on the first input that has an error after a form submission). - -So for this exercise you're going to use `useRef`. The example above should be -enough to get you working. You'll pass the ref you create to the input and then -in a `useEffect` you'll call `.focus()` on the input element whenever the error -is displayed. - diff --git a/exercises/05.dom-side-effects/01.problem/index.tsx b/exercises/05.dom-side-effects/01.problem/index.tsx deleted file mode 100644 index 457959d3e..000000000 --- a/exercises/05.dom-side-effects/01.problem/index.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {useLocalStorageState} from '~/shared/utils' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = useLocalStorageState( - 'username', - initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - // 🐨 Add a useRef here. Call the ref `usernameInputRef` - // 🦺 useRef is a generic function and the type you pass is the type of value - // you intend to store in the ref. Since we plan to store the in this - // ref, you'll use HTMLInputElement - - // 🐨 Add a useEffect here. Whenever the `displayErrorMessage` state changes, - // we want to call `focus()` on usernameInputRef.current if - // displayErrorMessage is true. - // 💰 You'll want to add `displayErrorMessage` in the effect dependencies array, - // - // 🦉 you'll get a linting warning if you try to include `usernameInputRef` - // or `usernameInputRef.current`. - // 📜 Learn more: https://epicreact.dev/why-you-shouldnt-put-refs-in-a-dependency-array - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
    -
    - - -
    - {displayErrorMessage ? ( - - ) : null} - -
    - ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
    - -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/05.dom-side-effects/01.solution/index.tsx b/exercises/05.dom-side-effects/01.solution/index.tsx deleted file mode 100644 index 5386e3195..000000000 --- a/exercises/05.dom-side-effects/01.solution/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {useLocalStorageState} from '~/shared/utils' - -function UsernameForm({ - initialUsername = '', - onSubmitUsername, -}: { - initialUsername?: string - onSubmitUsername: (username: string) => void -}) { - const [username, setUsername] = useLocalStorageState( - 'username', - initialUsername, - ) - const [touched, setTouched] = React.useState(false) - - const usernameIsLowerCase = username === username.toLowerCase() - const usernameIsLongEnough = username.length >= 3 - const usernameIsShortEnough = username.length <= 10 - const formIsValid = - usernameIsShortEnough && usernameIsLongEnough && usernameIsLowerCase - - const displayErrorMessage = touched && !formIsValid - - const usernameInputRef = React.useRef(null) - - React.useEffect(() => { - if (displayErrorMessage) usernameInputRef.current?.focus() - }, [displayErrorMessage]) - - let errorMessage = null - if (!usernameIsLowerCase) { - errorMessage = 'Username must be lower case' - } else if (!usernameIsLongEnough) { - errorMessage = 'Username must be at least 3 characters long' - } else if (!usernameIsShortEnough) { - errorMessage = 'Username must be no longer than 10 characters' - } - - function handleSubmit(event: React.FormEvent) { - event.preventDefault() - setTouched(true) - if (!formIsValid) return - - onSubmitUsername(username) - } - - function handleChange(event: React.ChangeEvent) { - setUsername(event.currentTarget.value) - } - - function handleBlur() { - setTouched(true) - } - - return ( -
    -
    - - -
    - {displayErrorMessage ? ( - - ) : null} - -
    - ) -} - -function App() { - const onSubmitUsername = (username: string) => - alert(`You entered: ${username}`) - return ( -
    - -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/05.dom-side-effects/02.problem/index.css b/exercises/05.dom-side-effects/02.problem/index.css deleted file mode 100644 index 1c7249161..000000000 --- a/exercises/05.dom-side-effects/02.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/vanilla-tilt.styles.css" \ No newline at end of file diff --git a/exercises/05.dom-side-effects/02.problem/index.tsx b/exercises/05.dom-side-effects/02.problem/index.tsx deleted file mode 100644 index 76a1b704b..000000000 --- a/exercises/05.dom-side-effects/02.problem/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import VanillaTilt from 'vanilla-tilt' - -function Tilt({children}: {children: React.ReactNode}) { - // 🐨 create a ref here with React.useRef() - - // 🐨 add a `React.useEffect` callback here and use VanillaTilt to make your - // div look fancy. - // 💰 like this: - // const tiltNode = tiltRef.current - // VanillaTilt.init(tiltNode, { - // max: 25, - // speed: 400, - // glare: true, - // 'max-glare': 0.5, - // }) - // - // 🐨 Don't forget to return a cleanup function. VanillaTilt.init will add an - // object to your DOM node to cleanup: - // `return () => tiltNode.vanillaTilt.destroy()` - // - // 💰 Don't forget to specify your effect's dependencies array! In our case - // we know that the tilt node will never change, so make it `[]`. Ask me about - // this for a more in depth explanation. - - // 🐨 add the `ref` prop to the `tilt-root` div here: - return ( -
    -
    {children}
    -
    - ) -} - -function App() { - return ( - -
    vanilla-tilt.js
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() - -/* -eslint - @typescript-eslint/no-unused-vars: "off", -*/ diff --git a/exercises/05.dom-side-effects/02.solution/README.mdx b/exercises/05.dom-side-effects/02.solution/README.mdx deleted file mode 100644 index ed6c212d7..000000000 --- a/exercises/05.dom-side-effects/02.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Side-Effect Cleanup diff --git a/exercises/05.dom-side-effects/02.solution/index.css b/exercises/05.dom-side-effects/02.solution/index.css deleted file mode 100644 index 1c7249161..000000000 --- a/exercises/05.dom-side-effects/02.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/vanilla-tilt.styles.css" \ No newline at end of file diff --git a/exercises/05.dom-side-effects/02.solution/index.tsx b/exercises/05.dom-side-effects/02.solution/index.tsx deleted file mode 100644 index 82104d474..000000000 --- a/exercises/05.dom-side-effects/02.solution/index.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import VanillaTilt from 'vanilla-tilt' - -interface HTMLVanillaTiltElement extends HTMLDivElement { - vanillaTilt: VanillaTilt -} - -function Tilt({children}: {children: React.ReactNode}) { - const tiltRef = React.useRef(null) - - React.useEffect(() => { - const {current: tiltNode} = tiltRef - if (tiltNode === null) return - const vanillaTiltOptions = { - max: 25, - speed: 400, - glare: true, - 'max-glare': 0.5, - } - VanillaTilt.init(tiltNode, vanillaTiltOptions) - return () => tiltNode.vanillaTilt.destroy() - }, []) - - return ( -
    -
    {children}
    -
    - ) -} - -function App() { - return ( - -
    vanilla-tilt.js
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/05.unique-ids/01.problem.use-id/README.mdx b/exercises/05.unique-ids/01.problem.use-id/README.mdx new file mode 100644 index 000000000..cf2b56740 --- /dev/null +++ b/exercises/05.unique-ids/01.problem.use-id/README.mdx @@ -0,0 +1 @@ +# useId diff --git a/exercises/05.unique-ids/01.problem.use-id/index.css b/exercises/05.unique-ids/01.problem.use-id/index.css new file mode 100644 index 000000000..f0ca17c65 --- /dev/null +++ b/exercises/05.unique-ids/01.problem.use-id/index.css @@ -0,0 +1,39 @@ +/* +Taken from the vanilla-tilt.js demo site: +https://micku7zu.github.io/vanilla-tilt.js/index.html +*/ +.tilt-root { + height: 150px; + background-color: red; + width: 200px; + background-image: -webkit-linear-gradient(315deg, #ff00ba 0%, #fae713 100%); + background-image: linear-gradient(135deg, #ff00ba 0%, #fae713 100%); + transform-style: preserve-3d; + will-change: transform; + transform: perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1); +} +.tilt-child { + position: absolute; + width: 50%; + height: 50%; + top: 50%; + left: 50%; + transform: translateZ(30px) translateX(-50%) translateY(-50%); + box-shadow: 0 0 50px 0 rgba(51, 51, 51, 0.3); + background-color: white; +} +.totally-centered { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.count-button { + width: 100%; + height: 100%; + background: transparent; + border: none; + font-size: 3em; +} diff --git a/exercises/05.unique-ids/01.problem.use-id/index.tsx b/exercises/05.unique-ids/01.problem.use-id/index.tsx new file mode 100644 index 000000000..095e6c224 --- /dev/null +++ b/exercises/05.unique-ids/01.problem.use-id/index.tsx @@ -0,0 +1,118 @@ +import { useEffect, useRef, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import VanillaTilt from 'vanilla-tilt' + +function Field({ + label, + ...inputProps +}: { + label: string +} & React.InputHTMLAttributes) { + // 🐨 create a generatedId using useId + // 🐨 create an id that defaults to inputProps.id and falls back to the generatedId + return ( +
    + {/* 🐨 add htmlFor on the label and set it to the id */} + + {/* 🐨 add an id prop here */} + +
    + ) +} + +interface HTMLVanillaTiltElement extends HTMLDivElement { + vanillaTilt: VanillaTilt +} + +function Tilt({ + children, + max = 25, + speed = 400, + glare = true, + maxGlare = 0.5, +}: { + children: React.ReactNode + max?: number + speed?: number + glare?: boolean + maxGlare?: number +}) { + const tiltRef = useRef(null) + + useEffect(() => { + const { current: tiltNode } = tiltRef + if (tiltNode === null) return + const vanillaTiltOptions = { + max, + speed, + glare, + 'max-glare': maxGlare, + } + VanillaTilt.init(tiltNode, vanillaTiltOptions) + return () => tiltNode.vanillaTilt.destroy() + }, [glare, max, maxGlare, speed]) + + return ( +
    +
    {children}
    +
    + ) +} + +function App() { + const [count, setCount] = useState(0) + const [options, setOptions] = useState({ + max: 25, + speed: 400, + glare: true, + maxGlare: 0.5, + }) + return ( +
    +
    e.preventDefault()} + onChange={event => { + const formData = new FormData(event.currentTarget) + setOptions({ + max: formData.get('max') as any, + speed: formData.get('speed') as any, + glare: formData.get('glare') === 'on', + maxGlare: formData.get('maxGlare') as any, + }) + }} + > + + +
    + +
    + + +
    + +
    + +
    +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/05.unique-ids/01.solution.use-id/README.mdx b/exercises/05.unique-ids/01.solution.use-id/README.mdx new file mode 100644 index 000000000..cf2b56740 --- /dev/null +++ b/exercises/05.unique-ids/01.solution.use-id/README.mdx @@ -0,0 +1 @@ +# useId diff --git a/exercises/05.unique-ids/01.solution.use-id/index.css b/exercises/05.unique-ids/01.solution.use-id/index.css new file mode 100644 index 000000000..f0ca17c65 --- /dev/null +++ b/exercises/05.unique-ids/01.solution.use-id/index.css @@ -0,0 +1,39 @@ +/* +Taken from the vanilla-tilt.js demo site: +https://micku7zu.github.io/vanilla-tilt.js/index.html +*/ +.tilt-root { + height: 150px; + background-color: red; + width: 200px; + background-image: -webkit-linear-gradient(315deg, #ff00ba 0%, #fae713 100%); + background-image: linear-gradient(135deg, #ff00ba 0%, #fae713 100%); + transform-style: preserve-3d; + will-change: transform; + transform: perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1); +} +.tilt-child { + position: absolute; + width: 50%; + height: 50%; + top: 50%; + left: 50%; + transform: translateZ(30px) translateX(-50%) translateY(-50%); + box-shadow: 0 0 50px 0 rgba(51, 51, 51, 0.3); + background-color: white; +} +.totally-centered { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.count-button { + width: 100%; + height: 100%; + background: transparent; + border: none; + font-size: 3em; +} diff --git a/exercises/05.unique-ids/01.solution.use-id/index.tsx b/exercises/05.unique-ids/01.solution.use-id/index.tsx new file mode 100644 index 000000000..f386a3f58 --- /dev/null +++ b/exercises/05.unique-ids/01.solution.use-id/index.tsx @@ -0,0 +1,116 @@ +import { useEffect, useId, useRef, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import VanillaTilt from 'vanilla-tilt' + +function Field({ + label, + ...inputProps +}: { + label: string +} & React.InputHTMLAttributes) { + const generatedId = useId() + const id = inputProps.id ?? generatedId + return ( +
    + + +
    + ) +} + +interface HTMLVanillaTiltElement extends HTMLDivElement { + vanillaTilt: VanillaTilt +} + +function Tilt({ + children, + max = 25, + speed = 400, + glare = true, + maxGlare = 0.5, +}: { + children: React.ReactNode + max?: number + speed?: number + glare?: boolean + maxGlare?: number +}) { + const tiltRef = useRef(null) + + useEffect(() => { + const { current: tiltNode } = tiltRef + if (tiltNode === null) return + const vanillaTiltOptions = { + max, + speed, + glare, + 'max-glare': maxGlare, + } + VanillaTilt.init(tiltNode, vanillaTiltOptions) + return () => tiltNode.vanillaTilt.destroy() + }, [glare, max, maxGlare, speed]) + + return ( +
    +
    {children}
    +
    + ) +} + +function App() { + const [count, setCount] = useState(0) + const [options, setOptions] = useState({ + max: 25, + speed: 400, + glare: true, + maxGlare: 0.5, + }) + return ( +
    +
    e.preventDefault()} + onChange={event => { + const formData = new FormData(event.currentTarget) + setOptions({ + max: formData.get('max') as any, + speed: formData.get('speed') as any, + glare: formData.get('glare') === 'on', + maxGlare: formData.get('maxGlare') as any, + }) + }} + > + + +
    + +
    + + +
    + +
    + +
    +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/05.unique-ids/FINISHED.mdx b/exercises/05.unique-ids/FINISHED.mdx new file mode 100644 index 000000000..6847e4549 --- /dev/null +++ b/exercises/05.unique-ids/FINISHED.mdx @@ -0,0 +1 @@ +# Unique IDs diff --git a/exercises/05.unique-ids/README.mdx b/exercises/05.unique-ids/README.mdx new file mode 100644 index 000000000..6847e4549 --- /dev/null +++ b/exercises/05.unique-ids/README.mdx @@ -0,0 +1 @@ +# Unique IDs diff --git a/exercises/04.real-world-review-tic-tac-toe/01.problem/README.mdx b/exercises/06.tic-tac-toe/01.problem.set-state-callback/README.mdx similarity index 61% rename from exercises/04.real-world-review-tic-tac-toe/01.problem/README.mdx rename to exercises/06.tic-tac-toe/01.problem.set-state-callback/README.mdx index 3e72faed5..4003de4b1 100644 --- a/exercises/04.real-world-review-tic-tac-toe/01.problem/README.mdx +++ b/exercises/06.tic-tac-toe/01.problem.set-state-callback/README.mdx @@ -1,4 +1,4 @@ -# Real World Review: Tic Tac Toe +# setState callback We're going to build tic-tac-toe (with localStorage support)! If you've gone through React's official tutorial, this was lifted from that. @@ -35,3 +35,22 @@ If you want to try this exercise on beast mode then you can ignore `calculateNextValue` and `calculateWinner` and write your own version of those utilities. +Another important thing you'll need to do for this step of the exercise is to +use the callback version of `setState` to ensure that the state is updated +correctly. This is because the state is updated based on the previous state and +you want to make sure that you're always using the most up-to-date state. + +```tsx +setCount(currentCount => { + return currentCount + 1 +}) +``` + +Finally, something you need to know about state in React is it's important that +you not mutate state directly. So instead of setting `squares[0] = 'X'` you will +need to make a copy of the array with the modifications, for example, using +[`with`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/with): + +```tsx +const newSquares = squares.with(index, 'X') +``` diff --git a/exercises/06.tic-tac-toe/01.problem.set-state-callback/index.css b/exercises/06.tic-tac-toe/01.problem.set-state-callback/index.css new file mode 100644 index 000000000..25dace689 --- /dev/null +++ b/exercises/06.tic-tac-toe/01.problem.set-state-callback/index.css @@ -0,0 +1,57 @@ +.game { + font: + 14px 'Century Gothic', + Futura, + sans-serif; + margin: 20px; + min-height: 260px; +} + +.game ol, +.game ul { + padding-left: 30px; +} + +.board-row:after { + clear: both; + content: ''; + display: table; +} + +.status { + margin-bottom: 10px; +} + +.restart { + margin-top: 10px; +} + +.square { + background: #fff; + border: 1px solid #999; + float: left; + font-size: 24px; + font-weight: bold; + line-height: 34px; + height: 34px; + margin-right: -1px; + margin-top: -1px; + padding: 0; + text-align: center; + width: 34px; +} + +.square:focus { + outline: none; + background: #ddd; +} + +.game { + display: flex; + flex-direction: row; +} + +.game-info { + margin-left: 20px; + min-width: 190px; +} diff --git a/exercises/06.tic-tac-toe/01.problem.set-state-callback/index.tsx b/exercises/06.tic-tac-toe/01.problem.set-state-callback/index.tsx new file mode 100644 index 000000000..d1644bea3 --- /dev/null +++ b/exercises/06.tic-tac-toe/01.problem.set-state-callback/index.tsx @@ -0,0 +1,90 @@ +import * as ReactDOM from 'react-dom/client' +// 💰 here are some handy utilities for you: +// import { +// calculateNextValue, +// calculateStatus, +// calculateWinner, +// type Squares, +// } from '#shared/tic-tac-toe-utils' + +const defaultState = Array(9).fill(null) + +function Board() { + // 🐨 squares is the state for this component. Add useState for squares + // 🦺 you can use the Squares type for the useState generic + const squares = defaultState + + // 🐨 We'll need the following bits of derived state: + // - nextValue ('X' or 'O') + // - winner ('X', 'O', or null) + // - status (`Winner: ${winner}`, `Scratch: Cat's game`, or `Next player: ${nextValue}`) + // 💰 I've written the calculations for you! So you can use my utilities + // from the imports above to create these variables + + // This is the function your square click handler will call. `square` should + // be an index. So if they click the center square, this will be `4`. + function selectSquare(index: number) { + // 🐨 first, if there's already winner or there's already a value at the + // given square index (like someone clicked a square that's already been + // clicked), then return early so we don't make any state changes + // + // 🐨 call setSquares and pass a callback + // which accepts the "previousSquares", and does this: + // 🐨 make a copy of the squares array with the updated value + // 💰 previousSquares.with(index, nextValue) will do it! + // + // 🐨 return your copy of the squares + } + + function restart() { + // 🐨 reset the squares by calling setSquares with an array of empty squares + // 💰 you can use the defaultState variable + } + + function renderSquare(i: number) { + return ( + + ) + } + + return ( +
    + {/* 🐨 put the status in the div below */} +
    STATUS
    +
    + {renderSquare(0)} + {renderSquare(1)} + {renderSquare(2)} +
    +
    + {renderSquare(3)} + {renderSquare(4)} + {renderSquare(5)} +
    +
    + {renderSquare(6)} + {renderSquare(7)} + {renderSquare(8)} +
    + +
    + ) +} + +function App() { + return ( +
    +
    + +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/01.solution/README.mdx b/exercises/06.tic-tac-toe/01.solution.set-state-callback/README.mdx similarity index 100% rename from exercises/04.real-world-review-tic-tac-toe/01.solution/README.mdx rename to exercises/06.tic-tac-toe/01.solution.set-state-callback/README.mdx diff --git a/exercises/06.tic-tac-toe/01.solution.set-state-callback/index.css b/exercises/06.tic-tac-toe/01.solution.set-state-callback/index.css new file mode 100644 index 000000000..25dace689 --- /dev/null +++ b/exercises/06.tic-tac-toe/01.solution.set-state-callback/index.css @@ -0,0 +1,57 @@ +.game { + font: + 14px 'Century Gothic', + Futura, + sans-serif; + margin: 20px; + min-height: 260px; +} + +.game ol, +.game ul { + padding-left: 30px; +} + +.board-row:after { + clear: both; + content: ''; + display: table; +} + +.status { + margin-bottom: 10px; +} + +.restart { + margin-top: 10px; +} + +.square { + background: #fff; + border: 1px solid #999; + float: left; + font-size: 24px; + font-weight: bold; + line-height: 34px; + height: 34px; + margin-right: -1px; + margin-top: -1px; + padding: 0; + text-align: center; + width: 34px; +} + +.square:focus { + outline: none; + background: #ddd; +} + +.game { + display: flex; + flex-direction: row; +} + +.game-info { + margin-left: 20px; + min-width: 190px; +} diff --git a/exercises/06.tic-tac-toe/01.solution.set-state-callback/index.tsx b/exercises/06.tic-tac-toe/01.solution.set-state-callback/index.tsx new file mode 100644 index 000000000..f76a01559 --- /dev/null +++ b/exercises/06.tic-tac-toe/01.solution.set-state-callback/index.tsx @@ -0,0 +1,73 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + calculateNextValue, + calculateStatus, + calculateWinner, + type Squares, +} from '#shared/tic-tac-toe-utils' + +const defaultState = Array(9).fill(null) + +function Board() { + const [squares, setSquares] = useState(defaultState) + + const nextValue = calculateNextValue(squares) + const winner = calculateWinner(squares) + const status = calculateStatus(winner, squares, nextValue) + + function selectSquare(index: number) { + if (winner || squares[index]) return + setSquares(previousSquares => previousSquares.with(index, nextValue)) + } + + function restart() { + setSquares(defaultState) + } + + function renderSquare(i: number) { + return ( + + ) + } + + return ( +
    +
    {status}
    +
    + {renderSquare(0)} + {renderSquare(1)} + {renderSquare(2)} +
    +
    + {renderSquare(3)} + {renderSquare(4)} + {renderSquare(5)} +
    +
    + {renderSquare(6)} + {renderSquare(7)} + {renderSquare(8)} +
    + +
    + ) +} + +function App() { + return ( +
    +
    + +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/02.problem/README.mdx b/exercises/06.tic-tac-toe/02.problem.local-storage/README.mdx similarity index 100% rename from exercises/04.real-world-review-tic-tac-toe/02.problem/README.mdx rename to exercises/06.tic-tac-toe/02.problem.local-storage/README.mdx diff --git a/exercises/06.tic-tac-toe/02.problem.local-storage/index.css b/exercises/06.tic-tac-toe/02.problem.local-storage/index.css new file mode 100644 index 000000000..25dace689 --- /dev/null +++ b/exercises/06.tic-tac-toe/02.problem.local-storage/index.css @@ -0,0 +1,57 @@ +.game { + font: + 14px 'Century Gothic', + Futura, + sans-serif; + margin: 20px; + min-height: 260px; +} + +.game ol, +.game ul { + padding-left: 30px; +} + +.board-row:after { + clear: both; + content: ''; + display: table; +} + +.status { + margin-bottom: 10px; +} + +.restart { + margin-top: 10px; +} + +.square { + background: #fff; + border: 1px solid #999; + float: left; + font-size: 24px; + font-weight: bold; + line-height: 34px; + height: 34px; + margin-right: -1px; + margin-top: -1px; + padding: 0; + text-align: center; + width: 34px; +} + +.square:focus { + outline: none; + background: #ddd; +} + +.game { + display: flex; + flex-direction: row; +} + +.game-info { + margin-left: 20px; + min-width: 190px; +} diff --git a/exercises/06.tic-tac-toe/02.problem.local-storage/index.tsx b/exercises/06.tic-tac-toe/02.problem.local-storage/index.tsx new file mode 100644 index 000000000..0dfe9da07 --- /dev/null +++ b/exercises/06.tic-tac-toe/02.problem.local-storage/index.tsx @@ -0,0 +1,82 @@ +import { useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + calculateNextValue, + calculateStatus, + calculateWinner, + type Squares, +} from '#shared/tic-tac-toe-utils' + +const defaultState = Array(9).fill(null) +// 🐨 create a variable for the key you'll use for storing the squares +// 💰 'squares' should work well. +function Board() { + // 🐨 use the callback form for useState the callback should: + // 1. get the value from localStorage using the key you created above + // 2. parse the JSON from that value + // 3. return the parsed value (or the default value if there isn't one) + // 💯 for extra credit, handle situations where the value doesn't exist or fails to parse + const [squares, setSquares] = useState(Array(9).fill(null)) + + // 🐨 add a useEffect here that updates the local storage value of the squares + // 💰 you should stringify the squares using JSON.stringify because local storage only supports strings + + const nextValue = calculateNextValue(squares) + const winner = calculateWinner(squares) + const status = calculateStatus(winner, squares, nextValue) + + function selectSquare(index: number) { + if (winner || squares[index]) return + setSquares(previousSquares => previousSquares.with(index, nextValue)) + } + + function restart() { + setSquares(defaultState) + } + + function renderSquare(i: number) { + return ( + + ) + } + + return ( +
    +
    {status}
    +
    + {renderSquare(0)} + {renderSquare(1)} + {renderSquare(2)} +
    +
    + {renderSquare(3)} + {renderSquare(4)} + {renderSquare(5)} +
    +
    + {renderSquare(6)} + {renderSquare(7)} + {renderSquare(8)} +
    + +
    + ) +} + +function App() { + return ( +
    +
    + +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/02.solution/README.mdx b/exercises/06.tic-tac-toe/02.solution.local-storage/README.mdx similarity index 100% rename from exercises/04.real-world-review-tic-tac-toe/02.solution/README.mdx rename to exercises/06.tic-tac-toe/02.solution.local-storage/README.mdx diff --git a/exercises/06.tic-tac-toe/02.solution.local-storage/index.css b/exercises/06.tic-tac-toe/02.solution.local-storage/index.css new file mode 100644 index 000000000..25dace689 --- /dev/null +++ b/exercises/06.tic-tac-toe/02.solution.local-storage/index.css @@ -0,0 +1,57 @@ +.game { + font: + 14px 'Century Gothic', + Futura, + sans-serif; + margin: 20px; + min-height: 260px; +} + +.game ol, +.game ul { + padding-left: 30px; +} + +.board-row:after { + clear: both; + content: ''; + display: table; +} + +.status { + margin-bottom: 10px; +} + +.restart { + margin-top: 10px; +} + +.square { + background: #fff; + border: 1px solid #999; + float: left; + font-size: 24px; + font-weight: bold; + line-height: 34px; + height: 34px; + margin-right: -1px; + margin-top: -1px; + padding: 0; + text-align: center; + width: 34px; +} + +.square:focus { + outline: none; + background: #ddd; +} + +.game { + display: flex; + flex-direction: row; +} + +.game-info { + margin-left: 20px; + min-width: 190px; +} diff --git a/exercises/06.tic-tac-toe/02.solution.local-storage/index.tsx b/exercises/06.tic-tac-toe/02.solution.local-storage/index.tsx new file mode 100644 index 000000000..5c349a143 --- /dev/null +++ b/exercises/06.tic-tac-toe/02.solution.local-storage/index.tsx @@ -0,0 +1,90 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + calculateNextValue, + calculateStatus, + calculateWinner, + type Squares, +} from '#shared/tic-tac-toe-utils' + +const defaultState = Array(9).fill(null) + +const localStorageKey = 'squares' +function Board() { + const [squares, setSquares] = useState(() => { + let localStorageValue + try { + localStorageValue = JSON.parse( + window.localStorage.getItem(localStorageKey) ?? 'null', + ) + } catch { + // something is wrong in localStorage, so don't use it + } + return localStorageValue && Array.isArray(localStorageValue) + ? localStorageValue + : defaultState + }) + + useEffect(() => { + window.localStorage.setItem(localStorageKey, JSON.stringify(squares)) + }, [squares]) + + const nextValue = calculateNextValue(squares) + const winner = calculateWinner(squares) + const status = calculateStatus(winner, squares, nextValue) + + function selectSquare(index: number) { + if (winner || squares[index]) return + setSquares(previousSquares => previousSquares.with(index, nextValue)) + } + + function restart() { + setSquares(defaultState) + } + + function renderSquare(i: number) { + return ( + + ) + } + + return ( +
    +
    {status}
    +
    + {renderSquare(0)} + {renderSquare(1)} + {renderSquare(2)} +
    +
    + {renderSquare(3)} + {renderSquare(4)} + {renderSquare(5)} +
    +
    + {renderSquare(6)} + {renderSquare(7)} + {renderSquare(8)} +
    + +
    + ) +} + +function App() { + return ( +
    +
    + +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/04.real-world-review-tic-tac-toe/04.solution/README.mdx b/exercises/06.tic-tac-toe/03.problem.history/README.mdx similarity index 100% rename from exercises/04.real-world-review-tic-tac-toe/04.solution/README.mdx rename to exercises/06.tic-tac-toe/03.problem.history/README.mdx diff --git a/exercises/06.tic-tac-toe/03.problem.history/index.css b/exercises/06.tic-tac-toe/03.problem.history/index.css new file mode 100644 index 000000000..fe2fb6367 --- /dev/null +++ b/exercises/06.tic-tac-toe/03.problem.history/index.css @@ -0,0 +1,63 @@ +.game { + font: + 14px 'Century Gothic', + Futura, + sans-serif; + margin: 20px; + min-height: 260px; +} + +.game ol, +.game ul { + padding-left: 30px; +} + +.board-row:after { + clear: both; + content: ''; + display: table; +} + +.status { + margin-bottom: 10px; +} + +.restart { + margin-top: 10px; +} + +.square { + background: #fff; + border: 1px solid #999; + float: left; + font-size: 24px; + font-weight: bold; + line-height: 34px; + height: 34px; + margin-right: -1px; + margin-top: -1px; + padding: 0; + text-align: center; + width: 34px; +} + +.square:focus { + outline: none; + background: #ddd; +} + +.game { + display: flex; + flex-direction: row; +} + +.game-info { + margin-left: 20px; + min-width: 190px; +} + +[aria-disabled='true'] { + opacity: 0.6; + pointer-events: none; + user-select: none; +} diff --git a/exercises/06.tic-tac-toe/03.problem.history/index.tsx b/exercises/06.tic-tac-toe/03.problem.history/index.tsx new file mode 100644 index 000000000..9768133d2 --- /dev/null +++ b/exercises/06.tic-tac-toe/03.problem.history/index.tsx @@ -0,0 +1,127 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + calculateNextValue, + calculateStatus, + calculateWinner, + // 💰 these could be handy + // isValidGameState, + // type GameState, + type Squares, +} from '#shared/tic-tac-toe-utils' + +function Board({ + squares, + onClick, +}: { + squares: Squares + onClick: (index: number) => void +}) { + function renderSquare(i: number) { + const value = squares[i] + const label = value ? `square ${i}, ${value}` : `square ${i} empty` + + return ( + + ) + } + + return ( +
    +
    + {renderSquare(0)} + {renderSquare(1)} + {renderSquare(2)} +
    +
    + {renderSquare(3)} + {renderSquare(4)} + {renderSquare(5)} +
    +
    + {renderSquare(6)} + {renderSquare(7)} + {renderSquare(8)} +
    +
    + ) +} + +// 🐨 our new default state will be a GameState object +const defaultState = Array(9).fill(null) + +// 🐨 probably makes sense to change the name of the localStorageKey to 'tic-tac-toe' +const localStorageKey = 'squares' +function App() { + // 🐨 You can now call this simply "state" and "setState" and it's now GameState instead of Squares + const [squares, setSquares] = useState(() => { + let localStorageValue + try { + localStorageValue = JSON.parse( + window.localStorage.getItem(localStorageKey) ?? 'null', + ) + } catch { + // something is wrong in localStorage, so don't use it + } + + // 🐨 you now need to make sure it's a valid game state object. + // 💰 isValidGameState(localStorageValue) will do that for you + return localStorageValue && Array.isArray(localStorageValue) + ? localStorageValue + : defaultState + }) + + // 🐨 get the "currentSquares" from state.history[state.currentStep] + + // 🐨 any reference to "squares" below should be changed to "currentSquares" + const winner = calculateWinner(squares) + const nextValue = calculateNextValue(squares) + const status = calculateStatus(winner, squares, nextValue) + + useEffect(() => { + // 🐨 we should serialize the entire state here instead of just the squares + window.localStorage.setItem(localStorageKey, JSON.stringify(squares)) + // 🐨 update the dependency array to be state instead of squares + }, [squares]) + + function selectSquare(index: number) { + if (winner || squares[index]) return + // 🐨 this is now previousState, not previousSquares + setSquares(previousSquares => { + // 🐨 create an updated history and squares object + // 🦉 note that the history should be from index 0 to the current step plus the new squares + // and the new current step should be equal to the last index of the new history + return previousSquares.with(index, nextValue) + }) + } + + function restart() { + setSquares(defaultState) + } + + // 🐨 create moves by mapping over the history and rendering on
  • for each + // step in the history. This should have a button which when clicked calls + // `setState` to update the currentStep. + const moves = 'TODO: create moves lis' + + return ( +
    +
    + + +
    +
    +
    {status}
    +
      {moves}
    +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.tic-tac-toe/03.solution.history/README.mdx b/exercises/06.tic-tac-toe/03.solution.history/README.mdx new file mode 100644 index 000000000..2e6a56443 --- /dev/null +++ b/exercises/06.tic-tac-toe/03.solution.history/README.mdx @@ -0,0 +1 @@ +# Add Game History Feature diff --git a/exercises/06.tic-tac-toe/03.solution.history/index.css b/exercises/06.tic-tac-toe/03.solution.history/index.css new file mode 100644 index 000000000..fe2fb6367 --- /dev/null +++ b/exercises/06.tic-tac-toe/03.solution.history/index.css @@ -0,0 +1,63 @@ +.game { + font: + 14px 'Century Gothic', + Futura, + sans-serif; + margin: 20px; + min-height: 260px; +} + +.game ol, +.game ul { + padding-left: 30px; +} + +.board-row:after { + clear: both; + content: ''; + display: table; +} + +.status { + margin-bottom: 10px; +} + +.restart { + margin-top: 10px; +} + +.square { + background: #fff; + border: 1px solid #999; + float: left; + font-size: 24px; + font-weight: bold; + line-height: 34px; + height: 34px; + margin-right: -1px; + margin-top: -1px; + padding: 0; + text-align: center; + width: 34px; +} + +.square:focus { + outline: none; + background: #ddd; +} + +.game { + display: flex; + flex-direction: row; +} + +.game-info { + margin-left: 20px; + min-width: 190px; +} + +[aria-disabled='true'] { + opacity: 0.6; + pointer-events: none; + user-select: none; +} diff --git a/exercises/06.tic-tac-toe/03.solution.history/index.tsx b/exercises/06.tic-tac-toe/03.solution.history/index.tsx new file mode 100644 index 000000000..5a43e8590 --- /dev/null +++ b/exercises/06.tic-tac-toe/03.solution.history/index.tsx @@ -0,0 +1,141 @@ +import { useEffect, useState } from 'react' +import * as ReactDOM from 'react-dom/client' +import { + calculateNextValue, + calculateStatus, + calculateWinner, + isValidGameState, + type GameState, + type Squares, +} from '#shared/tic-tac-toe-utils' + +function Board({ + squares, + onClick, +}: { + squares: Squares + onClick: (index: number) => void +}) { + function renderSquare(i: number) { + const value = squares[i] + const label = value ? `square ${i}, ${value}` : `square ${i} empty` + + return ( + + ) + } + + return ( +
    +
    + {renderSquare(0)} + {renderSquare(1)} + {renderSquare(2)} +
    +
    + {renderSquare(3)} + {renderSquare(4)} + {renderSquare(5)} +
    +
    + {renderSquare(6)} + {renderSquare(7)} + {renderSquare(8)} +
    +
    + ) +} + +const defaultState = { + history: [Array(9).fill(null)], + currentStep: 0, +} + +const localStorageKey = 'tic-tac-toe' +function App() { + const [state, setState] = useState(() => { + let localStorageValue + try { + localStorageValue = JSON.parse( + window.localStorage.getItem(localStorageKey) ?? 'null', + ) + } catch { + // something is wrong in localStorage, so don't use it + } + return isValidGameState(localStorageValue) + ? localStorageValue + : defaultState + }) + const currentSquares = state.history[state.currentStep] + + const winner = calculateWinner(currentSquares) + const nextValue = calculateNextValue(currentSquares) + const status = calculateStatus(winner, currentSquares, nextValue) + + useEffect(() => { + window.localStorage.setItem(localStorageKey, JSON.stringify(state)) + }, [state]) + + function selectSquare(index: number) { + if (winner || currentSquares[index]) return + + setState(previousState => { + const { currentStep, history } = previousState + const newHistory = history.slice(0, currentStep + 1) + const squares = history[currentStep].with(index, nextValue) + + return { + history: [...newHistory, squares], + currentStep: newHistory.length, + } + }) + } + + function restart() { + setState(defaultState) + } + + const moves = state.history.map((_stepSquares, step) => { + const desc = step ? `Go to move number ${step}` : 'Go to game start' + const isCurrentStep = step === state.currentStep + const label = isCurrentStep ? `${desc} (current)` : desc + // NOTE: the "step" is actually the "index" which normally you don't want to + // use as the "key" prop. However, in this case, the index is effectively + // the "id" of the step in history, so it is correct. + return ( +
  • + +
  • + ) + }) + + return ( +
    +
    + + +
    +
    +
    {status}
    +
      {moves}
    +
    +
    + ) +} + +const rootEl = document.createElement('div') +document.body.append(rootEl) +ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.tic-tac-toe/FINISHED.mdx b/exercises/06.tic-tac-toe/FINISHED.mdx new file mode 100644 index 000000000..2d0561622 --- /dev/null +++ b/exercises/06.tic-tac-toe/FINISHED.mdx @@ -0,0 +1 @@ +# Tic Tac Toe diff --git a/exercises/04.real-world-review-tic-tac-toe/README.mdx b/exercises/06.tic-tac-toe/README.mdx similarity index 82% rename from exercises/04.real-world-review-tic-tac-toe/README.mdx rename to exercises/06.tic-tac-toe/README.mdx index c53f582e2..dba2bbd20 100644 --- a/exercises/04.real-world-review-tic-tac-toe/README.mdx +++ b/exercises/06.tic-tac-toe/README.mdx @@ -1,20 +1,20 @@ -# Real World Review: Tic Tac Toe +# Tic Tac Toe A `username` is one thing, but a real UI is a bit different. Often you need more -than one element of state in your component, so you'll call `React.useState` -more than once. Please note that each call to `React.useState` in a given +than one element of state in your component, so you'll call `useState` +more than once. Please note that each call to `useState` in a given component will give you a unique state and updater function. So this works: ```tsx -const [stateA, setStateA] = React.useState('a') -const [stateTwo, setStateTwo] = React.useState(2) +const [stateA, setStateA] = useState('a') +const [stateTwo, setStateTwo] = useState(2) ``` Another thing to learn about `useState` is the state updater function (like our `setUsername` we've used before) can actually accept a function. For example: ```tsx -const [count, setCount] = React.useState(0) +const [count, setCount] = useState(0) // then in a click event handler or something: setCount(count + 1) @@ -42,4 +42,3 @@ well hydrated and do a bit of stretching before starting this. Now might also be a good time to make sure you have [the React DevTools installed](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi) and use that while debugging. - diff --git a/exercises/06.use-effect-http-requests/01.problem/README.mdx b/exercises/06.use-effect-http-requests/01.problem/README.mdx deleted file mode 100644 index 892c3e5ad..000000000 --- a/exercises/06.use-effect-http-requests/01.problem/README.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# useEffect: HTTP Requests - -In this exercise, we'll be doing data fetching directly in a useEffect hook -callback within our component. - -Here we have a form where users can enter the name of a pokemon and fetch data -about that pokemon. Your job will be to create a component which makes that -fetch request. When the user submits a pokemon name, our `PokemonInfo` component -will get re-rendered with the `pokemonName` - diff --git a/exercises/06.use-effect-http-requests/01.problem/index.css b/exercises/06.use-effect-http-requests/01.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/01.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/01.problem/index.tsx b/exercises/06.use-effect-http-requests/01.problem/index.tsx deleted file mode 100644 index 188f2b358..000000000 --- a/exercises/06.use-effect-http-requests/01.problem/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -// 🐨 you'll want the following additional things from '../pokemon': -// fetchPokemon: the function we call to get the pokemon info -// PokemonInfoFallback: the thing we show while we're loading the pokemon info -// PokemonDataView: the stuff we use to display the pokemon info -import {PokemonForm} from '~/shared/pokemon' - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - // 🐨 Have state for the pokemon (null) - // 🐨 use React.useEffect where the callback should be called whenever the - // pokemon name changes. - // 💰 DON'T FORGET THE DEPENDENCIES ARRAY! - // 💰 if the pokemonName is falsy (an empty string) then don't bother making the request (exit early). - // 🐨 before calling `fetchPokemon`, clear the current pokemon state by setting it to null. - // (This is to enable the loading state when switching between different pokemon.) - // 💰 Use the `fetchPokemon` function to fetch a pokemon by its name: - // fetchPokemon('Pikachu').then( - // pokemonData => {/* update all the state here */}, - // ) - // 🐨 return the following things based on the `pokemon` state and `pokemonName` prop: - // 1. no pokemonName: 'Submit a pokemon' - // 2. pokemonName but no pokemon: - // 3. pokemon: - - // 💣 remove this - return TODO -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/01.solution/README.mdx b/exercises/06.use-effect-http-requests/01.solution/README.mdx deleted file mode 100644 index 9138ba111..000000000 --- a/exercises/06.use-effect-http-requests/01.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# useEffect: HTTP Requests diff --git a/exercises/06.use-effect-http-requests/01.solution/index.css b/exercises/06.use-effect-http-requests/01.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/01.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/01.solution/index.tsx b/exercises/06.use-effect-http-requests/01.solution/index.tsx deleted file mode 100644 index 713204868..000000000 --- a/exercises/06.use-effect-http-requests/01.solution/index.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [pokemon, setPokemon] = React.useState(null) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setPokemon(null) - fetchPokemon(pokemonName).then(pokemon => setPokemon(pokemon)) - }, [pokemonName]) - - if (!pokemonName) { - return Submit a pokemon - } else if (!pokemon) { - return - } else { - return - } -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/02.problem/README.mdx b/exercises/06.use-effect-http-requests/02.problem/README.mdx deleted file mode 100644 index 69dd4120b..000000000 --- a/exercises/06.use-effect-http-requests/02.problem/README.mdx +++ /dev/null @@ -1,45 +0,0 @@ -# Handle Errors - -Unfortunately, sometimes things go wrong and we need to handle errors when they -do so we can show the user useful information. Handle that error and render it -out like so: - -```jsx -
    - There was an error:
    {error.message}
    -
    -``` - -You can make an error happen by typing an incorrect pokemon name into the input. - -One common question I get about this extra credit is how to handle promise -errors. There are two ways to do it in this extra credit: - -```javascript -// option 1: using .catch -fetchPokemon(pokemonName) - .then(pokemon => setPokemon(pokemon)) - .catch(error => setError(error)) - -// option 2: using the second argument to .then -fetchPokemon(pokemonName).then( - pokemon => setPokemon(pokemon), - error => setError(error), -) -``` - -These are functionally equivalent for our purposes, but they are semantically -different in general. - -Using `.catch` means that you'll handle an error in the `fetchPokemon` promise, -but you'll _also_ handle an error in the `setPokemon(pokemon)` call as well. -This is due to the semantics of how promises work. - -Using the second argument to `.then` means that you will catch an error that -happens in `fetchPokemon` only. In this case, I knew that calling `setPokemon` -would not throw an error (React handles errors and we have an API to catch those -which we'll use later), so I decided to go with the second argument option. - -However, in this situation, it doesn't really make much of a difference. If you -want to go with the safe option, then opt for `.catch`. - diff --git a/exercises/06.use-effect-http-requests/02.problem/index.css b/exercises/06.use-effect-http-requests/02.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/02.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/02.problem/index.tsx b/exercises/06.use-effect-http-requests/02.problem/index.tsx deleted file mode 100644 index 713204868..000000000 --- a/exercises/06.use-effect-http-requests/02.problem/index.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [pokemon, setPokemon] = React.useState(null) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setPokemon(null) - fetchPokemon(pokemonName).then(pokemon => setPokemon(pokemon)) - }, [pokemonName]) - - if (!pokemonName) { - return Submit a pokemon - } else if (!pokemon) { - return - } else { - return - } -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/02.solution/README.mdx b/exercises/06.use-effect-http-requests/02.solution/README.mdx deleted file mode 100644 index 31f97272d..000000000 --- a/exercises/06.use-effect-http-requests/02.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Handle Errors diff --git a/exercises/06.use-effect-http-requests/02.solution/index.css b/exercises/06.use-effect-http-requests/02.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/02.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/02.solution/index.tsx b/exercises/06.use-effect-http-requests/02.solution/index.tsx deleted file mode 100644 index 8687f36b8..000000000 --- a/exercises/06.use-effect-http-requests/02.solution/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [pokemon, setPokemon] = React.useState(null) - const [error, setError] = React.useState(null) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setPokemon(null) - setError(null) - fetchPokemon(pokemonName).then( - pokemon => setPokemon(pokemon), - error => setError(error), - ) - }, [pokemonName]) - - if (error) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) - } else if (!pokemonName) { - return Submit a pokemon - } else if (!pokemon) { - return - } else { - return - } -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/03.problem/README.mdx b/exercises/06.use-effect-http-requests/03.problem/README.mdx deleted file mode 100644 index 227762892..000000000 --- a/exercises/06.use-effect-http-requests/03.problem/README.mdx +++ /dev/null @@ -1,22 +0,0 @@ -# Use A Status - -Our logic for what to show the user when is kind of convoluted and requires that -we be really careful about which state we set and when. - -We could make things much simpler by having some state to set the explicit -status of our component. Our component can be in the following "states": - -- `idle`: no request made yet -- `pending`: request started -- `resolved`: request successful -- `rejected`: request failed - -Try to use a status state by setting it to these string values rather than -relying on existing state or booleans. - -Learn more about this concept here: -[Stop using isLoading booleans](https://kentcdodds.com/blog/stop-using-isloading-booleans) - -💰 Warning: Make sure you call `setPokemon` before calling `setStatus`. We'll -address that more in the next extra credit. - diff --git a/exercises/06.use-effect-http-requests/03.problem/index.css b/exercises/06.use-effect-http-requests/03.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/03.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/03.problem/index.tsx b/exercises/06.use-effect-http-requests/03.problem/index.tsx deleted file mode 100644 index 8687f36b8..000000000 --- a/exercises/06.use-effect-http-requests/03.problem/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [pokemon, setPokemon] = React.useState(null) - const [error, setError] = React.useState(null) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setPokemon(null) - setError(null) - fetchPokemon(pokemonName).then( - pokemon => setPokemon(pokemon), - error => setError(error), - ) - }, [pokemonName]) - - if (error) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) - } else if (!pokemonName) { - return Submit a pokemon - } else if (!pokemon) { - return - } else { - return - } -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/03.solution/README.mdx b/exercises/06.use-effect-http-requests/03.solution/README.mdx deleted file mode 100644 index 07d5d9e62..000000000 --- a/exercises/06.use-effect-http-requests/03.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Use A Status diff --git a/exercises/06.use-effect-http-requests/03.solution/index.css b/exercises/06.use-effect-http-requests/03.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/03.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/03.solution/index.tsx b/exercises/06.use-effect-http-requests/03.solution/index.tsx deleted file mode 100644 index 93887ddd6..000000000 --- a/exercises/06.use-effect-http-requests/03.solution/index.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [status, setStatus] = React.useState('idle') - const [pokemon, setPokemon] = React.useState(null) - const [error, setError] = React.useState(null) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setStatus('pending') - fetchPokemon(pokemonName).then( - pokemon => { - setPokemon(pokemon) - setStatus('resolved') - }, - error => { - setError(error) - setStatus('rejected') - }, - ) - }, [pokemonName]) - - if (status === 'idle') { - return Submit a pokemon - } else if (status === 'pending') { - return - } else if (status === 'rejected' && error !== null) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) - } else if (status === 'resolved' && pokemon !== null) { - return - } - - throw new Error('This should be impossible') -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/04.problem/README.mdx b/exercises/06.use-effect-http-requests/04.problem/README.mdx deleted file mode 100644 index b39596872..000000000 --- a/exercises/06.use-effect-http-requests/04.problem/README.mdx +++ /dev/null @@ -1,44 +0,0 @@ -# Store the State in an Object - -You'll notice that we're calling a bunch of state updaters in a row. This is -normally not a problem, but each call to our state updater can result in a -re-render of our component. React normally batches these calls so you only get a -single re-render, but it's unable to do this in an asynchronous callback (like -our promise success and error handlers). - -So you might notice that if you do this: - -```javascript -setStatus('resolved') -setPokemon(pokemon) -``` - -You'll get an error indicating that you cannot read `image` of `null`. This is -because the `setStatus` call results in a re-render that happens before the -`setPokemon` happens. - -> but it's unable to do this in an asynchronous callback - -This is no longer the case in React 18 as it supports automatic batching for -asynchronous callback too. - -Learn more about this concept here: -[New Feature: Automatic Batching](https://react.dev/blog/2022/03/29/react-v18#new-feature-automatic-batching) - -Still it is better to maintain closely related states as an object rather than -maintaining them using individual useState hooks. - -Learn more about this concept here: -[Should I useState or useReducer?](https://kentcdodds.com/blog/should-i-usestate-or-usereducer#conclusion) - -In the future, you'll learn about how `useReducer` can solve this problem really -elegantly, but we can still accomplish this by storing our state as an object -that has all the properties of state we're managing. - -See if you can figure out how to store all of your state in a single object with -a single `React.useState` call so I can update my state like this: - -```javascript -setState({status: 'resolved', pokemon}) -``` - diff --git a/exercises/06.use-effect-http-requests/04.problem/index.css b/exercises/06.use-effect-http-requests/04.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/04.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/04.problem/index.tsx b/exercises/06.use-effect-http-requests/04.problem/index.tsx deleted file mode 100644 index 93887ddd6..000000000 --- a/exercises/06.use-effect-http-requests/04.problem/index.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [status, setStatus] = React.useState('idle') - const [pokemon, setPokemon] = React.useState(null) - const [error, setError] = React.useState(null) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setStatus('pending') - fetchPokemon(pokemonName).then( - pokemon => { - setPokemon(pokemon) - setStatus('resolved') - }, - error => { - setError(error) - setStatus('rejected') - }, - ) - }, [pokemonName]) - - if (status === 'idle') { - return Submit a pokemon - } else if (status === 'pending') { - return - } else if (status === 'rejected' && error !== null) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) - } else if (status === 'resolved' && pokemon !== null) { - return - } - - throw new Error('This should be impossible') -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/04.solution/README.mdx b/exercises/06.use-effect-http-requests/04.solution/README.mdx deleted file mode 100644 index 34ab4062e..000000000 --- a/exercises/06.use-effect-http-requests/04.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Store the State in an Object diff --git a/exercises/06.use-effect-http-requests/04.solution/index.css b/exercises/06.use-effect-http-requests/04.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/04.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/04.solution/index.tsx b/exercises/06.use-effect-http-requests/04.solution/index.tsx deleted file mode 100644 index bc22f4cd7..000000000 --- a/exercises/06.use-effect-http-requests/04.solution/index.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - return ( -
    - There was an error:{' '} -
    {state.error.message}
    -
    - ) - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/05.problem/README.mdx b/exercises/06.use-effect-http-requests/05.problem/README.mdx deleted file mode 100644 index 72a09f1a8..000000000 --- a/exercises/06.use-effect-http-requests/05.problem/README.mdx +++ /dev/null @@ -1,25 +0,0 @@ -# Create an ErrorBoundary Component - -We've already solved the problem for errors in our request, we're only handling -that one error. But there are a lot of different kinds of errors that can happen -in our applications. - -No matter how hard you try, eventually your app code just isn’t going to behave -the way you expect it to and you’ll need to handle those exceptions. If an error -is thrown and unhandled, your application will be removed from the page, leaving -the user with a blank screen... Kind of awkward... - -Luckily for us, there’s a simple way to handle errors in your application using -a special kind of component called an -[Error Boundary](https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary). -Unfortunately, there is currently no way to create an Error Boundary component -with a function and you have to use a class component instead. - -In this extra credit, read up on ErrorBoundary components, and try to create one -that handles this and any other error for the `PokemonInfo` component. - -💰 to make your error boundary component handle errors from the `PokemonInfo` -component, instead of rendering the error within the `PokemonInfo` component, -you'll need to `throw error` right in the function so React can hand that to the -error boundary. So `if (status === 'rejected') throw error`. - diff --git a/exercises/06.use-effect-http-requests/05.problem/index.css b/exercises/06.use-effect-http-requests/05.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/05.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/05.problem/index.tsx b/exercises/06.use-effect-http-requests/05.problem/index.tsx deleted file mode 100644 index bc22f4cd7..000000000 --- a/exercises/06.use-effect-http-requests/05.problem/index.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - return ( -
    - There was an error:{' '} -
    {state.error.message}
    -
    - ) - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/05.solution/README.mdx b/exercises/06.use-effect-http-requests/05.solution/README.mdx deleted file mode 100644 index eb6bc7f9f..000000000 --- a/exercises/06.use-effect-http-requests/05.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Create an ErrorBoundary Component diff --git a/exercises/06.use-effect-http-requests/05.solution/index.css b/exercises/06.use-effect-http-requests/05.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/05.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/05.solution/index.tsx b/exercises/06.use-effect-http-requests/05.solution/index.tsx deleted file mode 100644 index 64755b463..000000000 --- a/exercises/06.use-effect-http-requests/05.solution/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type ErrorBoundaryProps = { - FallbackComponent: React.FunctionComponent<{error: Error}> -} -type ErrorBoundaryState = { - error: null | Error -} - -class ErrorBoundary extends React.Component< - ErrorBoundaryProps, - ErrorBoundaryState -> { - state: ErrorBoundaryState = {error: null} - static getDerivedStateFromError(error: Error) { - return {error} - } - render() { - const {error} = this.state - if (error !== null) { - return - } - - return this.props.children - } -} - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error}: {error: Error}) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/06.problem/README.mdx b/exercises/06.use-effect-http-requests/06.problem/README.mdx deleted file mode 100644 index a707ce908..000000000 --- a/exercises/06.use-effect-http-requests/06.problem/README.mdx +++ /dev/null @@ -1,23 +0,0 @@ -# Re-Mount the Error Boundary - -You might notice that with the changes we've added, we now cannot recover from -an error. For example: - -1. Type an incorrect pokemon -2. Notice the error -3. Type a correct pokemon -4. Notice it doesn't show that new pokemon's information - -The reason this is happening is because the `error` that's stored in the -internal state of the `ErrorBoundary` component isn't getting reset, so it's not -rendering the `children` we're passing to it. - -So what we need to do is reset the ErrorBoundary's `error` state to `null` so it -will re-render. But how do we access the internal state of our `ErrorBoundary` -to reset it? Well, there are a few ways we could do this by modifying the -`ErrorBoundary`, but one thing you can do when you want to _reset_ the state of -a component, is by providing it a `key` prop which can be used to unmount and -re-mount a component. - -The `key` you can use? Try the `pokemonName`! - diff --git a/exercises/06.use-effect-http-requests/06.problem/index.css b/exercises/06.use-effect-http-requests/06.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/06.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/06.problem/index.tsx b/exercises/06.use-effect-http-requests/06.problem/index.tsx deleted file mode 100644 index 64755b463..000000000 --- a/exercises/06.use-effect-http-requests/06.problem/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type ErrorBoundaryProps = { - FallbackComponent: React.FunctionComponent<{error: Error}> -} -type ErrorBoundaryState = { - error: null | Error -} - -class ErrorBoundary extends React.Component< - ErrorBoundaryProps, - ErrorBoundaryState -> { - state: ErrorBoundaryState = {error: null} - static getDerivedStateFromError(error: Error) { - return {error} - } - render() { - const {error} = this.state - if (error !== null) { - return - } - - return this.props.children - } -} - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error}: {error: Error}) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/06.solution/README.mdx b/exercises/06.use-effect-http-requests/06.solution/README.mdx deleted file mode 100644 index 3731a36bd..000000000 --- a/exercises/06.use-effect-http-requests/06.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Re-Mount the Error Boundary diff --git a/exercises/06.use-effect-http-requests/06.solution/index.css b/exercises/06.use-effect-http-requests/06.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/06.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/06.solution/index.tsx b/exercises/06.use-effect-http-requests/06.solution/index.tsx deleted file mode 100644 index e02c7356d..000000000 --- a/exercises/06.use-effect-http-requests/06.solution/index.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type ErrorBoundaryProps = { - FallbackComponent: React.FunctionComponent<{error: Error}> -} -type ErrorBoundaryState = { - error: null | Error -} - -class ErrorBoundary extends React.Component< - ErrorBoundaryProps, - ErrorBoundaryState -> { - state: ErrorBoundaryState = {error: null} - static getDerivedStateFromError(error: Error) { - return {error} - } - render() { - const {error} = this.state - if (error) { - return - } - - return this.props.children - } -} - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error}: {error: Error}) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/07.problem/README.mdx b/exercises/06.use-effect-http-requests/07.problem/README.mdx deleted file mode 100644 index e42d91d45..000000000 --- a/exercises/06.use-effect-http-requests/07.problem/README.mdx +++ /dev/null @@ -1,17 +0,0 @@ -# Use React-Error-Boundary - -As cool as our own `ErrorBoundary` is, I'd rather not have to maintain it in the -long-term. Luckily for us, there's an npm package we can use instead and it's -already installed into this project. It's called -[`react-error-boundary`](https://github.com/bvaughn/react-error-boundary). - -Go ahead and give that a look and swap out our own `ErrorBoundary` for the one -from `react-error-boundary`. - -💰 It is important to note that `react-error-boundary` do _not_ handle all type -of errors. In our example it works nicely because as mentioned in extra credit 4 -that we are throwing error right in the function. It can also happen that some -errors are not handled by `react-error-boundary`. To learn more about how to -handle all type of error you can read -[Handle all errors](https://kentcdodds.com/blog/use-react-error-boundary-to-handle-errors-in-react#handle-all-errors). - diff --git a/exercises/06.use-effect-http-requests/07.problem/index.css b/exercises/06.use-effect-http-requests/07.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/07.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/07.problem/index.tsx b/exercises/06.use-effect-http-requests/07.problem/index.tsx deleted file mode 100644 index e02c7356d..000000000 --- a/exercises/06.use-effect-http-requests/07.problem/index.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type ErrorBoundaryProps = { - FallbackComponent: React.FunctionComponent<{error: Error}> -} -type ErrorBoundaryState = { - error: null | Error -} - -class ErrorBoundary extends React.Component< - ErrorBoundaryProps, - ErrorBoundaryState -> { - state: ErrorBoundaryState = {error: null} - static getDerivedStateFromError(error: Error) { - return {error} - } - render() { - const {error} = this.state - if (error) { - return - } - - return this.props.children - } -} - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error}: {error: Error}) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/07.solution/README.mdx b/exercises/06.use-effect-http-requests/07.solution/README.mdx deleted file mode 100644 index 3a3833bf9..000000000 --- a/exercises/06.use-effect-http-requests/07.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Use React-Error-Boundary diff --git a/exercises/06.use-effect-http-requests/07.solution/index.css b/exercises/06.use-effect-http-requests/07.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/07.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/07.solution/index.tsx b/exercises/06.use-effect-http-requests/07.solution/index.tsx deleted file mode 100644 index d9a5ddb80..000000000 --- a/exercises/06.use-effect-http-requests/07.solution/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {ErrorBoundary} from 'react-error-boundary' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error}: {error: Error}) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/08.problem/README.mdx b/exercises/06.use-effect-http-requests/08.problem/README.mdx deleted file mode 100644 index eaad3451b..000000000 --- a/exercises/06.use-effect-http-requests/08.problem/README.mdx +++ /dev/null @@ -1,22 +0,0 @@ -# Reset the Error Boundary - -You may have noticed a problem with the way we're resetting the internal state -of the `ErrorBoundary` using the `key`. Unfortunately, we're not only -re-mounting the `ErrorBoundary`, we're also re-mounting the `PokemonInfo` which -results in a flash of the initial "Submit a pokemon" state whenever we change -our pokemon. - -So let's backtrack on that and instead we'll use `react-error-boundary`'s -`resetErrorBoundary` function (which will be passed to our `ErrorFallback` -component) to reset the state of the `ErrorBoundary` when the user clicks a "try -again" button. - -> 💰 feel free to open up the finished version by clicking the link in the app -> so you can get an idea of how this is supposed to work. - -Once you have this button wired up, we need to react to this reset of the -`ErrorBoundary`'s state by resetting our own state so we don't wind up -triggering the error again. To do this we can use the `onReset` prop of the -`ErrorBoundary`. In that function we can simply `setPokemonName` to an empty -string. - diff --git a/exercises/06.use-effect-http-requests/08.problem/index.css b/exercises/06.use-effect-http-requests/08.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/08.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/08.problem/index.tsx b/exercises/06.use-effect-http-requests/08.problem/index.tsx deleted file mode 100644 index d9a5ddb80..000000000 --- a/exercises/06.use-effect-http-requests/08.problem/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {ErrorBoundary} from 'react-error-boundary' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error}: {error: Error}) { - return ( -
    - There was an error:{' '} -
    {error.message}
    -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/08.solution/README.mdx b/exercises/06.use-effect-http-requests/08.solution/README.mdx deleted file mode 100644 index 9802dccf9..000000000 --- a/exercises/06.use-effect-http-requests/08.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Reset the Error Boundary diff --git a/exercises/06.use-effect-http-requests/08.solution/index.css b/exercises/06.use-effect-http-requests/08.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/08.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/08.solution/index.tsx b/exercises/06.use-effect-http-requests/08.solution/index.tsx deleted file mode 100644 index 8f53795eb..000000000 --- a/exercises/06.use-effect-http-requests/08.solution/index.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {ErrorBoundary} from 'react-error-boundary' -import type {FallbackProps} from 'react-error-boundary' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: pokemonName ? 'pending' : 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error, resetErrorBoundary}: FallbackProps) { - return ( -
    - There was an error:{' '} -
    {error.message}
    - -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - function handleReset() { - setPokemonName('') - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/09.problem/README.mdx b/exercises/06.use-effect-http-requests/09.problem/README.mdx deleted file mode 100644 index 24c8702db..000000000 --- a/exercises/06.use-effect-http-requests/09.problem/README.mdx +++ /dev/null @@ -1,13 +0,0 @@ -# Use resetKeys - -Unfortunately now the user can't simply select a new pokemon and continue with -their day. They have to first click "Try again" and then select their new -pokemon. I think it would be cooler if they can just submit a new `pokemonName` -and the `ErrorBoundary` would reset itself automatically. - -Luckily for us `react-error-boundary` supports this with the `resetKeys` prop. -You pass an array of values to `resetKeys` and if the `ErrorBoundary` is in an -error state and any of those values change, it will reset the error boundary. - -💰 Your `resetKeys` prop should be: `[pokemonName]` - diff --git a/exercises/06.use-effect-http-requests/09.problem/index.css b/exercises/06.use-effect-http-requests/09.problem/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/09.problem/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/09.problem/index.tsx b/exercises/06.use-effect-http-requests/09.problem/index.tsx deleted file mode 100644 index 8f53795eb..000000000 --- a/exercises/06.use-effect-http-requests/09.problem/index.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {ErrorBoundary} from 'react-error-boundary' -import type {FallbackProps} from 'react-error-boundary' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: pokemonName ? 'pending' : 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error, resetErrorBoundary}: FallbackProps) { - return ( -
    - There was an error:{' '} -
    {error.message}
    - -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - function handleReset() { - setPokemonName('') - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/09.solution/README.mdx b/exercises/06.use-effect-http-requests/09.solution/README.mdx deleted file mode 100644 index 6792178ae..000000000 --- a/exercises/06.use-effect-http-requests/09.solution/README.mdx +++ /dev/null @@ -1 +0,0 @@ -# Use resetKeys diff --git a/exercises/06.use-effect-http-requests/09.solution/index.css b/exercises/06.use-effect-http-requests/09.solution/index.css deleted file mode 100644 index 04adfc4f7..000000000 --- a/exercises/06.use-effect-http-requests/09.solution/index.css +++ /dev/null @@ -1 +0,0 @@ -@import "/pokemon.css" \ No newline at end of file diff --git a/exercises/06.use-effect-http-requests/09.solution/index.tsx b/exercises/06.use-effect-http-requests/09.solution/index.tsx deleted file mode 100644 index e43342227..000000000 --- a/exercises/06.use-effect-http-requests/09.solution/index.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import {ErrorBoundary} from 'react-error-boundary' -import type {FallbackProps} from 'react-error-boundary' -import { - fetchPokemon, - PokemonInfoFallback, - PokemonForm, - PokemonDataView, -} from '~/shared/pokemon' -import type {PokemonData} from '~/shared/types' - -type PokemonInfoState = - | {status: 'idle'} - | {status: 'pending'} - | {status: 'rejected'; error: Error} - | {status: 'resolved'; pokemon: PokemonData} - -function PokemonInfo({pokemonName}: {pokemonName: string}) { - const [state, setState] = React.useState({ - status: pokemonName ? 'pending' : 'idle', - }) - - React.useEffect(() => { - if (!pokemonName) { - return - } - setState({status: 'pending'}) - fetchPokemon(pokemonName).then( - pokemon => { - setState({status: 'resolved', pokemon}) - }, - error => { - setState({status: 'rejected', error}) - }, - ) - }, [pokemonName]) - - switch (state.status) { - case 'idle': - return Submit a pokemon - case 'pending': - return - case 'rejected': - throw state.error - case 'resolved': - return - default: - throw new Error('This should be impossible') - } -} - -function ErrorFallback({error, resetErrorBoundary}: FallbackProps) { - return ( -
    - There was an error:{' '} -
    {error.message}
    - -
    - ) -} - -function App() { - const [pokemonName, setPokemonName] = React.useState('') - - function handleSubmit(newPokemonName: string) { - setPokemonName(newPokemonName) - } - - function handleReset() { - setPokemonName('') - } - - return ( -
    - -
    -
    - - - -
    -
    - ) -} - -const rootEl = document.createElement('div') -document.body.append(rootEl) -ReactDOM.createRoot(rootEl).render() diff --git a/exercises/06.use-effect-http-requests/README.mdx b/exercises/06.use-effect-http-requests/README.mdx deleted file mode 100644 index 28a534edc..000000000 --- a/exercises/06.use-effect-http-requests/README.mdx +++ /dev/null @@ -1,52 +0,0 @@ -# useEffect: HTTP Requests - -HTTP requests are another common side-effect that we need to do in applications. -This is no different from the side-effects we need to apply to a rendered DOM or -when interacting with browser APIs like localStorage. In all these cases, we do -that within a `useEffect` hook callback. This hook allows us to ensure that -whenever certain changes take place, we apply the side-effects based on those -changes. - -One important thing to note about the `useEffect` hook is that you cannot return -anything other than the cleanup function. This has interesting implications with -regard to async/await syntax: - -```javascript -// this does not work, don't do this: -React.useEffect(async () => { - const result = await doSomeAsyncThing() - // do something with the result -}) -``` - -The reason this doesn't work is because when you make a function async, it -automatically returns a promise (whether you're not returning anything at all, -or explicitly returning a function). This is due to the semantics of async/await -syntax. So if you want to use async/await, the best way to do that is like so: - -```javascript -React.useEffect(() => { - async function effect() { - const result = await doSomeAsyncThing() - // do something with the result - } - effect() -}) -``` - -This ensures that you don't return anything but a cleanup function. - -🦉 I find that it's typically just easier to extract all the async code into a -utility function which I call and then use the promise-based `.then` method -instead of using async/await syntax: - -```javascript -React.useEffect(() => { - doSomeAsyncThing().then(result => { - // do something with the result - }) -}) -``` - -But how you prefer to do this is totally up to you :) - diff --git a/exercises/FINISHED.mdx b/exercises/FINISHED.mdx new file mode 100644 index 000000000..e29cc3af4 --- /dev/null +++ b/exercises/FINISHED.mdx @@ -0,0 +1 @@ +# React Hooks 🎣 diff --git a/kcdshop/post-set-playground.js b/kcdshop/post-set-playground.js new file mode 100644 index 000000000..191c5f02e --- /dev/null +++ b/kcdshop/post-set-playground.js @@ -0,0 +1,7 @@ +import fs from 'node:fs' +import path from 'node:path' + +fs.writeFileSync( + path.join(process.env.KCDSHOP_PLAYGROUND_DEST_DIR, 'tsconfig.json'), + JSON.stringify({ extends: '../tsconfig' }, null, 2), +) diff --git a/package-lock.json b/package-lock.json index d3a4d808d..b30ac3eb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,39 +1,34 @@ { "name": "react-hooks", - "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "react-hooks", - "version": "1.0.0", - "hasInstallScript": true, "license": "GPL-3.0-only", "dependencies": { - "@kentcdodds/react-workshop-app": "^6.0.0", - "@kentcdodds/workshop-app": "^2.23.1", - "@testing-library/react": "^13.3.0", - "@testing-library/user-event": "^14.2.1", - "codegen.macro": "^4.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-error-boundary": "^3.1.4", - "vanilla-tilt": "^1.7.2" + "@kentcdodds/workshop-app": "^2.60.1", + "@remix-run/eslint-config": "^2.4.1", + "@typescript-eslint/eslint-plugin": "^6.18.0", + "@typescript-eslint/parser": "^6.18.0", + "eslint-config-prettier": "^9.1.0", + "typescript": "^5.3.2", + "vanilla-tilt": "^1.8.1" }, "devDependencies": { - "@craco/craco": "^6.4.3", - "@types/react": "^18.2.29", - "@types/react-dom": "^18.2.14", - "husky": "^4.3.8", + "@testing-library/react": "^14.1.2", + "@types/react": "^18.2.39", + "@types/react-dom": "^18.2.17", + "eslint": "^8.56.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0", "npm-run-all": "^4.1.5", - "patch-package": "^6.4.7", - "prettier": "^2.7.1", - "react-scripts": "^5.0.1", - "typescript": "^4.7.4" + "prettier": "^3.1.1" }, "engines": { + "git": ">=2.18.0", "node": ">=18", - "npm": ">=9.8.0" + "npm": ">=8.16.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -45,28 +40,10 @@ "node": ">=0.10.0" } }, - "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==" - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -75,29 +52,12 @@ "node": ">=6.0.0" } }, - "node_modules/@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "dev": true, - "dependencies": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -141,6 +101,14 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/code-frame/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -161,30 +129,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", - "dev": true, + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", - "dev": true, + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -199,26 +165,39 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/eslint-parser": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", - "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", - "dev": true, + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", + "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -236,7 +215,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, "engines": { "node": ">=10" } @@ -245,18 +223,16 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dependencies": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -269,7 +245,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -277,27 +252,14 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -309,7 +271,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -318,7 +279,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -326,88 +286,12 @@ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -416,7 +300,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -429,7 +312,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -437,18 +319,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", @@ -461,10 +331,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -479,78 +348,18 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -562,7 +371,6 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -571,9 +379,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } @@ -587,46 +395,30 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - }, + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -673,6 +465,14 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -693,10 +493,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -704,11 +503,10 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", - "dev": true, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -716,35 +514,33 @@ "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", - "dev": true, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.13.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", - "dev": true, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" }, "engines": { "node": ">=6.9.0" @@ -753,17 +549,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz", - "integrity": "sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg==", - "dev": true, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/plugin-syntax-decorators": "^7.22.10" + "@babel/plugin-transform-react-jsx": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -772,15 +563,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", - "dev": true, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -789,15 +578,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", - "dev": true, + "node_modules/@babel/preset-react": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -806,19681 +597,6280 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", - "dev": true, + "node_modules/@babel/runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, + "node_modules/@babel/traverse": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", - "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", - "dev": true, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "ms": "2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", - "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", - "dev": true, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", - "dev": true, + "node_modules/@bundled-es-modules/cookie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz", + "integrity": "sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "cookie": "^0.5.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", - "dev": true, + "node_modules/@bundled-es-modules/js-levenshtein": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/js-levenshtein/-/js-levenshtein-2.0.1.tgz", + "integrity": "sha512-DERMS3yfbAljKsQc0U2wcqGKUWpdFjwqWuoMugEJlqBnKO180/n+4SR/J8MRDt1AN48X1ovgoD9KrdVXcaa3Rg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "js-levenshtein": "^1.1.6" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, + "node_modules/@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "statuses": "^2.0.1" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, + "node_modules/@esbuild-plugins/node-resolve": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-resolve/-/node-resolve-0.2.2.tgz", + "integrity": "sha512-+t5FdX3ATQlb53UFDBRb4nqjYBz492bIrnVWvpQHpzZlu9BQL5HasMZhqc409ygUwOWCXZhrWr6NyZ6T6Y+cxw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@types/resolve": "^1.17.1", + "debug": "^4.3.1", + "escape-string-regexp": "^4.0.0", + "resolve": "^1.19.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "esbuild": "*" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, + "node_modules/@esbuild-plugins/node-resolve/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "ms": "2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "node_modules/@esbuild-plugins/node-resolve/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@esbuild-plugins/node-resolve/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@esbuild/android-arm": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz", + "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@esbuild/android-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz", + "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@esbuild/android-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz", + "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz", + "integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz", + "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz", + "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz", + "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz", + "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz", + "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", - "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz", + "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz", + "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz", + "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", - "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz", + "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz", + "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz", + "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz", + "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" - }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz", + "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", - "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz", + "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz", + "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz", + "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz", + "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz", + "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", - "dev": true, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz", - "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.22.5" - }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "ms": "2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "argparse": "^2.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "*" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", - "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", - "dev": true, + "node_modules/@fal-works/esbuild-plugin-global-externals": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", + "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==" + }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@floating-ui/utils": "^0.1.3" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", - "dev": true, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", - "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", - "dev": true, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" + "@floating-ui/dom": "^1.5.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=10.10.0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "ms": "2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "*" } }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12.22" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", - "dev": true, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", - "dev": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", - "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", - "dev": true, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", - "dev": true, + "node_modules/@kentcdodds/md-temp": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@kentcdodds/md-temp/-/md-temp-6.0.0.tgz", + "integrity": "sha512-J+SWP53vmCIkp3RQyDJeXM7IPTCOZSoxXL0oMVaOhuqjtj7R/OGzcOhx444deIWQt/0WGYEDU1nUd28vsJECiw==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "escape-goat": "^4.0.0", + "parse-numeric-range": "^1.3.0", + "shiki": "^0.14.5", + "tinypool": "^0.8.1", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" } }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", - "dev": true, + "node_modules/@kentcdodds/workshop-app": { + "version": "2.60.1", + "resolved": "https://registry.npmjs.org/@kentcdodds/workshop-app/-/workshop-app-2.60.1.tgz", + "integrity": "sha512-u2pbMa0EgA+jm1my43Je2ue+nCcuIVreMjnt3su4ciz3znt6eskf31YHtcPkO45WhvQfpLhBAcji1ZGavaBLHg==", + "bundleDependencies": [ + "@conform-to/react", + "@conform-to/zod", + "@epic-web/client-hints", + "@epic-web/restore-scroll", + "@radix-ui/react-accordion", + "@radix-ui/react-popover", + "@radix-ui/react-select", + "@radix-ui/react-tabs", + "@radix-ui/react-toast", + "@remix-run/react", + "@remix-run/router", + "react-router", + "react-router-dom", + "clsx", + "chai", + "chai-dom", + "framer-motion", + "remix-utils", + "tailwind-merge", + "zod" + ], "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@conform-to/react": "^0.9.1", + "@conform-to/zod": "^0.9.1", + "@epic-web/client-hints": "^1.2.2", + "@epic-web/restore-scroll": "^1.0.0", + "@kentcdodds/md-temp": "^6.0.0", + "@mdx-js/mdx": "^3.0.0", + "@mux/mux-player-react": "^2.3.1", + "@paralleldrive/cuid2": "^2.2.2", + "@radix-ui/react-accordion": "^1.1.2", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-toast": "^1.1.5", + "@radix-ui/react-tooltip": "^1.0.7", + "@remix-run/css-bundle": "^2.3.0", + "@remix-run/express": "^2.3.0", + "@remix-run/node": "^2.3.0", + "@remix-run/react": "^2.3.0", + "@remix-run/router": "*", + "@sindresorhus/slugify": "^2.2.1", + "@types/chai": "^4.3.10", + "@types/chai-dom": "^1.11.3", + "address": "^2.0.1", + "ansi-to-html": "^0.7.2", + "cachified": "^3.5.4", + "chai": "^4.3.10", + "chai-dom": "^1.12.0", + "chalk": "^5.3.0", + "chokidar": "^3.5.3", + "close-with-grace": "^1.2.0", + "clsx": "^2.0.0", + "compression": "^1.7.4", + "confetti-react": "^2.5.0", + "cross-env": "^7.0.3", + "cross-spawn": "^7.0.3", + "dayjs": "^1.11.10", + "dotenv": "^16.3.1", + "esbuild": "^0.19.5", + "execa": "^8.0.1", + "express": "^4.18.2", + "fkill": "^9.0.0", + "framer-motion": "^10.16.5", + "fs-extra": "^11.1.1", + "get-port": "^7.0.0", + "glob": "^10.3.10", + "globby": "^14.0.0", + "isbot": "^3.7.1", + "lodash.escape": "^4.0.1", + "lru-cache": "^10.0.2", + "md5-hex": "^5.0.0", + "mdx-bundler": "^10.0.1", + "mime-types": "^2.1.35", + "morgan": "^1.10.0", + "msw": "^2.0.8", + "openid-client": "^5.6.1", + "p-queue": "^7.4.1", + "parse-git-diff": "^0.0.14", + "partysocket": "^0.0.15", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router": "*", + "react-router-dom": "*", + "remark-autolink-headings": "^7.0.1", + "remark-emoji": "^4.0.1", + "remark-gfm": "^4.0.0", + "remix-flat-routes": "^0.6.2", + "remix-utils": "7.1.0", + "shell-quote": "^1.8.1", + "shiki": "^0.14.5", + "sonner": "^1.2.0", + "source-map-support": "^0.5.21", + "spin-delay": "^1.2.0", + "tailwind-merge": "^2.0.0", + "tailwindcss-radix": "^2.8.0", + "unified": "^11.0.4", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "ws": "^8.14.2", + "zod": "^3.22.4" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "kcdshop": "bin/kcdshop.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@babel/runtime": { + "version": "7.23.8", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", - "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@conform-to/dom": { + "version": "0.9.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@kentcdodds/workshop-app/node_modules/@conform-to/react": { + "version": "0.9.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@conform-to/dom": "0.9.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": ">=16.8" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, + "node_modules/@kentcdodds/workshop-app/node_modules/@conform-to/zod": { + "version": "0.9.1", + "inBundle": true, + "license": "MIT", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@conform-to/dom": "0.9.1", + "zod": "^3.21.0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz", - "integrity": "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "inBundle": true, + "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@emotion/memoize": "0.7.4" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", - "dev": true, - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, + "node_modules/@kentcdodds/workshop-app/node_modules/@emotion/memoize": { + "version": "0.7.4", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/@kentcdodds/workshop-app/node_modules/@epic-web/client-hints": { + "version": "1.2.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@kentcdodds/workshop-app/node_modules/@epic-web/restore-scroll": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": ">=18.0.0", + "react-router-dom": ">=6.4.0" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", - "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@floating-ui/core": { + "version": "1.5.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@floating-ui/utils": "^0.2.0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@floating-ui/dom": { + "version": "1.5.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@floating-ui/core": "^1.5.3", + "@floating-ui/utils": "^0.2.0" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@floating-ui/react-dom": { + "version": "2.0.5", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@floating-ui/dom": "^1.5.4" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz", - "integrity": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@floating-ui/utils": { + "version": "0.2.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/number": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/runtime": "^7.13.10" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-accordion": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collapsible": "1.0.3", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-collapsible": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", - "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@babel/preset-env": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", - "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.2", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.23.2", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.23.0", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.23.0", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.23.0", - "@babel/plugin-transform-modules-commonjs": "^7.23.0", - "@babel/plugin-transform-modules-systemjs": "^7.23.0", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.23.0", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.23.0", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@babel/preset-react": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", - "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-popover": { + "version": "1.0.7", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.22.5", - "@babel/plugin-transform-react-jsx": "^7.22.15", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/preset-typescript": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz", - "integrity": "sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-popper": { + "version": "1.1.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.23.0", - "@babel/plugin-transform-typescript": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.14.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-presence": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@craco/craco": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@craco/craco/-/craco-6.4.5.tgz", - "integrity": "sha512-8F2rIAao8sEh0FPP52ViEvDM9GjJ7acq0knu1c8UgI+EuZMD5/ZB270ol6jV4iNY7it9Umg/RoGBvNRUNr8U8w==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.1", - "cosmiconfig-typescript-loader": "^1.0.0", - "cross-spawn": "^7.0.0", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "webpack-merge": "^4.2.2" - }, - "bin": { - "craco": "bin/craco.js" - }, - "engines": { - "node": ">=6" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" }, "peerDependencies": { - "react-scripts": "^4.0.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "engines": { - "node": ">=12" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@csstools/normalize.css": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", - "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", - "dev": true - }, - "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-select": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-tabs": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-use-controllable-state": "1.0.1" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-toast": { + "version": "1.1.5", + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@csstools/postcss-ic-unit": { + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-callback-ref": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@csstools/postcss-normalize-display-values": { + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-layout-effect": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" }, "peerDependencies": { - "postcss": "^8.3" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@csstools/postcss-stepped-value-functions": { + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-size": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, "peerDependencies": { - "postcss": "^8.2" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/rect": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@kentcdodds/workshop-app/node_modules/@remix-run/react": { + "version": "2.4.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@remix-run/router": "1.14.1", + "@remix-run/server-runtime": "2.4.1", + "react-router": "6.21.1", + "react-router-dom": "6.21.1" }, "engines": { - "node": "^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=18.0.0" }, "peerDependencies": { - "postcss": "^8.2" + "react": "^18.0.0", + "react-dom": "^18.0.0", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/@remix-run/router": { + "version": "1.14.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=14.0.0" } }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" + "node_modules/@kentcdodds/workshop-app/node_modules/@remix-run/server-runtime": { + "version": "2.4.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.14.1", + "@types/cookie": "^0.5.3", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie": "^0.5.0", + "set-cookie-parser": "^2.4.8", + "source-map": "^0.7.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.10" + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@emotion/cache": { - "version": "10.0.29", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", - "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", - "dependencies": { - "@emotion/sheet": "0.9.4", - "@emotion/stylis": "0.8.5", - "@emotion/utils": "0.11.3", - "@emotion/weak-memoize": "0.2.5" - } + "node_modules/@kentcdodds/workshop-app/node_modules/@types/cookie": { + "version": "0.5.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@kentcdodds/workshop-app/node_modules/@web3-storage/multipart-parser": { + "version": "1.0.0", + "inBundle": true, + "license": "(Apache-2.0 AND MIT)" }, - "node_modules/@emotion/core": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", - "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", + "node_modules/@kentcdodds/workshop-app/node_modules/aria-hidden": { + "version": "1.2.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.5.5", - "@emotion/cache": "^10.0.27", - "@emotion/css": "^10.0.27", - "@emotion/serialize": "^0.11.15", - "@emotion/sheet": "0.9.4", - "@emotion/utils": "0.11.3" + "tslib": "^2.0.0" }, - "peerDependencies": { - "react": ">=16.3.0" + "engines": { + "node": ">=10" } }, - "node_modules/@emotion/css": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", - "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", - "dependencies": { - "@emotion/serialize": "^0.11.15", - "@emotion/utils": "0.11.3", - "babel-plugin-emotion": "^10.0.27" + "node_modules/@kentcdodds/workshop-app/node_modules/assertion-error": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" } }, - "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "node_modules/@emotion/serialize": { - "version": "0.11.16", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", - "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", - "dependencies": { - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/unitless": "0.7.5", - "@emotion/utils": "0.11.3", - "csstype": "^2.5.7" - } - }, - "node_modules/@emotion/sheet": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", - "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" - }, - "node_modules/@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "node_modules/@emotion/utils": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" - }, - "node_modules/@esbuild-plugins/node-resolve": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-resolve/-/node-resolve-0.1.4.tgz", - "integrity": "sha512-haFQ0qhxEpqtWWY0kx1Y5oE3sMyO1PcoSiWEPrAw6tm/ZOOLXjSs6Q+v1v9eyuVF0nNt50YEvrcrvENmyoMv5g==", + "node_modules/@kentcdodds/workshop-app/node_modules/chai": { + "version": "4.4.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "@types/resolve": "^1.17.1", - "debug": "^4.3.1", - "escape-string-regexp": "^4.0.0", - "resolve": "^1.19.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" }, - "peerDependencies": { - "esbuild": "*" + "engines": { + "node": ">=4" } }, - "node_modules/@esbuild-plugins/node-resolve/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/@kentcdodds/workshop-app/node_modules/chai-dom": { + "version": "1.12.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.12.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "chai": ">= 3" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz", - "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/check-error": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz", - "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/clsx": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz", - "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/cookie": { + "version": "0.5.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz", - "integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/deep-eql": { + "version": "4.1.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz", - "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "node_modules/@kentcdodds/workshop-app/node_modules/detect-node-es": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@kentcdodds/workshop-app/node_modules/framer-motion": { + "version": "10.17.12", + "inBundle": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz", - "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/get-func-name": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz", - "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/get-nonce": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz", - "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@kentcdodds/workshop-app/node_modules/invariant": { + "version": "2.2.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz", - "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@kentcdodds/workshop-app/node_modules/js-tokens": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@kentcdodds/workshop-app/node_modules/loose-envify": { + "version": "1.4.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz", - "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@kentcdodds/workshop-app/node_modules/loupe": { + "version": "2.3.7", + "inBundle": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz", - "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/pathval": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz", - "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/react-remove-scroll": { + "version": "2.5.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz", - "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz", - "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz", - "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/react-router": { + "version": "6.21.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.14.1" + }, "engines": { - "node": ">=12" + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz", - "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/react-router-dom": { + "version": "6.21.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.14.1", + "react-router": "6.21.1" + }, "engines": { - "node": ">=12" + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz", - "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/react-style-singleton": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz", - "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } + "node_modules/@kentcdodds/workshop-app/node_modules/regenerator-runtime": { + "version": "0.14.1", + "inBundle": true, + "license": "MIT" }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz", - "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/remix-utils": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "type-fest": "^4.3.3" + }, "engines": { - "node": ">=12" + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz", - "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/remix-utils/node_modules/type-fest": { + "version": "4.9.0", + "inBundle": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz", - "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } + "node_modules/@kentcdodds/workshop-app/node_modules/set-cookie-parser": { + "version": "2.6.0", + "inBundle": true, + "license": "MIT" }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz", - "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/@kentcdodds/workshop-app/node_modules/source-map": { + "version": "0.7.4", + "inBundle": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/tailwind-merge": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@babel/runtime": "^7.23.5" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/tslib": { + "version": "2.6.2", + "inBundle": true, + "license": "0BSD" + }, + "node_modules/@kentcdodds/workshop-app/node_modules/type-detect": { + "version": "4.0.8", + "inBundle": true, + "license": "MIT", "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/use-callback-ref": { + "version": "1.3.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "tslib": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, + "node_modules/@kentcdodds/workshop-app/node_modules/use-sidecar": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@kentcdodds/workshop-app/node_modules/zod": { + "version": "3.22.4", + "inBundle": true, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "node_modules/@mdx-js/esbuild": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mdx-js/esbuild/-/esbuild-3.0.0.tgz", + "integrity": "sha512-hQaYb1jI0tojPlvHi+dwOKLHQxl9oczY8zZfat8ANfYZ9zgPGJXUU+SMBruZnd4ij34/l9BQPHEwTxTUQ7s9hw==", "dependencies": { - "argparse": "^2.0.1" + "@mdx-js/mdx": "^3.0.0", + "@types/unist": "^3.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "esbuild": ">=0.14.0" } }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@mdx-js/esbuild/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/@mdx-js/esbuild/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/@mdx-js/esbuild/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@fal-works/esbuild-plugin-global-externals": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", - "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==" - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "node_modules/@mdx-js/esbuild/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "@hapi/hoek": "^9.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "dev": true, + "node_modules/@mdx-js/mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.0.tgz", + "integrity": "sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=10.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node_modules/@mdx-js/mdx/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "node_modules/@mdx-js/mdx/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@mdx-js/mdx/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "node_modules/@mdx-js/mdx/node_modules/vfile": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "engines": { - "node": ">=12" + "node_modules/@mdx-js/mdx/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "node_modules/@mswjs/cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.1.0.tgz", + "integrity": "sha512-0ZcCVQxifZmhwNBoQIrystCb+2sWBY2Zw8lpfJBPCHGCA/HWqehITeCRVIv4VMy8MPlaHo2w2pTHFV2pFfqKPw==", + "engines": { + "node": ">=18" + } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@mswjs/interceptors": { + "version": "0.25.13", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.25.13.tgz", + "integrity": "sha512-xfjR81WwXPHwhDbqJRHlxYmboJuiSaIKpP4I5TJVFl/EmByOU13jOBT9hmEnxcjR3jvFYoqoNKt7MM9uqerj9A==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.2.1", + "strict-event-emitter": "^0.5.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@mux/mux-player": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-2.3.1.tgz", + "integrity": "sha512-yRR7Ec5LVJdmd431dQM7Lf6r9FdFQOXBBVADiv6HWdj+b+6duAinHA8w+Gfvibokc26l4YO7cQ27hWu29cGGUg==", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "@mux/mux-video": "0.17.2", + "@mux/playback-core": "0.22.1", + "media-chrome": "~2.0.1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@mux/mux-player-react": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-2.3.1.tgz", + "integrity": "sha512-kTNHmDLByomIZcbMWVayoFqpWf89+49m391W0moI0NvjN4wRwNGvwhYbWbj0xHhdDumgEf7MqbnbFRnuiibHiQ==", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@mux/mux-player": "2.3.1", + "@mux/playback-core": "0.22.1", + "prop-types": "^15.7.2" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "@types/react": "^17.0.0 || ^18", + "react": "^17.0.2 || ^18", + "react-dom": "^17.0.2 || ^18" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, + "node_modules/@mux/mux-video": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.17.2.tgz", + "integrity": "sha512-IIGZhUYPClUIOQ/VZZ7kjYcxTcSSSvm+yiv/+c4hHlreO1XLly8Oe1Dzq2xx12t1b+UUupIzx2Cnc8bzVEQTKA==", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" + "@mux/playback-core": "0.22.1", + "castable-video": "~1.0.6", + "custom-media-element": "~1.2.2", + "media-tracks": "~0.3.0" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@mux/playback-core": { + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.22.1.tgz", + "integrity": "sha512-tsPMpcu/xYHQtO6USZwg80CDaXyc7UbyJGoqMU9P1o0e15X/KDcz179nhr6k0CXafg/yiwAlxPNGXnpwToWJ4w==", + "dependencies": { + "hls.js": "~1.4.13", + "mux-embed": "~4.30.0" } }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "eslint-scope": "5.1.1" } }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8.0.0" } }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" } }, - "node_modules/@jest/console/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "engines": { - "node": ">=8" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/console/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 8" } }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 8" } }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" } }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==" + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", "dependencies": { - "@types/yargs-parser": "*" + "@noble/hashes": "^1.1.5" } }, - "node_modules/@jest/core/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/@jest/core/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/runtime": "^7.13.10" } }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", "dependencies": { - "glob": "^7.1.3" + "@babel/runtime": "^7.13.10" }, - "bin": { - "rimraf": "bin.js" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@radix-ui/react-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", + "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", "dependencies": { - "jest-get-type": "^29.6.3" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/fake-timers/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true } - ], - "engines": { - "node": ">=8" } }, - "node_modules/@jest/fake-timers/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/globals/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/globals/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/globals/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/globals/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/globals/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz", + "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, "peerDependenciesMeta": { - "node-notifier": { + "@types/react": { "optional": true } } }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/reporters/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true } - ], - "engines": { - "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/runtime": "^7.13.10" } }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/@remix-run/css-bundle": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.3.1.tgz", + "integrity": "sha512-07d40dZz3iS/rm2xyFzmvGylJ5K6vXbb0wCnO+60JBQGlKKZGR4O4u027EmgUT32tJP/Xryf6rpnR3QTjDxozg==", + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "node_modules/@remix-run/eslint-config": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.4.1.tgz", + "integrity": "sha512-kzl520uCcIi7OlqItzy/OSb3YVBklxeov8d39fFPbcSAmwO99l0PXmstQcRCQphAkGC7uRNl3LSJ9LpD3Gj2dQ==", + "dependencies": { + "@babel/core": "^7.21.8", + "@babel/eslint-parser": "^7.21.8", + "@babel/preset-react": "^7.18.6", + "@rushstack/eslint-patch": "^1.2.0", + "@typescript-eslint/eslint-plugin": "^5.59.0", + "@typescript-eslint/parser": "^5.59.0", + "eslint-import-resolver-node": "0.3.7", + "eslint-import-resolver-typescript": "^3.5.4", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jest": "^26.9.0", + "eslint-plugin-jest-dom": "^4.0.3", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-testing-library": "^5.10.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=18.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0", + "react": "^18.0.0", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, + "node_modules/@remix-run/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, + "node_modules/@remix-run/eslint-config/node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, + "node_modules/@remix-run/eslint-config/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/transform/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, + "node_modules/@remix-run/eslint-config/node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "node_modules/@remix-run/eslint-config/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@remix-run/eslint-config/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, + "node_modules/@remix-run/eslint-config/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@kentcdodds/md-temp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@kentcdodds/md-temp/-/md-temp-5.0.0.tgz", - "integrity": "sha512-TcLJsdRfWcAa8lHqGoOlcuWWNKaNLAcxyIIfH86tJNGua11WxaqfE2qvU8IzwbQSifSkqGU/ma1PXo8e1gU34g==", - "dependencies": { - "escape-goat": "^4.0.0", - "parse-numeric-range": "^1.3.0", - "shiki": "^0.14.4", - "tinypool": "^0.8.1", - "unified": "^11.0.3", - "unist-util-visit": "^5.0.0" - } - }, - "node_modules/@kentcdodds/md-temp/node_modules/@types/unist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", - "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==" - }, - "node_modules/@kentcdodds/md-temp/node_modules/escape-goat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", - "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@kentcdodds/md-temp/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@kentcdodds/md-temp/node_modules/unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "node_modules/@remix-run/eslint-config/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@kentcdodds/md-temp/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@kentcdodds/md-temp/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "node_modules/@remix-run/eslint-config/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@types/unist": "^3.0.0" + "ms": "2.1.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@kentcdodds/md-temp/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "node_modules/@remix-run/eslint-config/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@kentcdodds/md-temp/node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/@remix-run/eslint-config/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" } }, - "node_modules/@kentcdodds/md-temp/node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "node_modules/@remix-run/eslint-config/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/md-temp/node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "node_modules/@remix-run/eslint-config/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" + "yallist": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=10" } }, - "node_modules/@kentcdodds/react-workshop-app": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@kentcdodds/react-workshop-app/-/react-workshop-app-6.0.2.tgz", - "integrity": "sha512-8zuRiueTLzNf/ENbJ+4Ct/vN5uepFa1zngpwmfvEjfyRPhdfSiepO+aSSs+/BnrQE8BEyEELqGKZJV9ok6422w==", + "node_modules/@remix-run/eslint-config/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@remix-run/eslint-config/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@emotion/core": "^10.0.35", - "@mapbox/rehype-prism": "^0.8.0", - "@mdx-js/loader": "^2.1.1", - "@reach/tabs": "^0.14.0", - "@reach/tooltip": "^0.14.0", - "@testing-library/jest-dom": "^5.16.4", - "@testing-library/react": "^13.0.1", - "@types/react": "^18.0.0", - "@types/react-dom": "^18.0.0", - "chalk": "^4.1.0", - "codegen.macro": "^4.1.0", - "cross-env": "^7.0.3", - "cross-spawn": "^7.0.3", - "emotion-theming": "^10.0.27", - "facepaint": "^1.2.1", - "glob": "^7.1.6", - "history": "^4.10.1", - "is-ci": "^3.0.0", - "mq-polyfill": "^1.1.8", - "msw": "^0.28.1", - "node-match-path": "^0.6.2", - "normalize.css": "^8.0.1", - "raw-loader": "^4.0.2", - "react-error-boundary": "^3.1.1", - "react-icons": "^4.2.0", - "react-router-dom": "^5.2.0", - "replace-in-file": "^6.2.0" - }, - "engines": { - "node": ">=12", - "npm": ">=6" + "lru-cache": "^6.0.0" }, - "peerDependencies": { - "react": "*", - "react-dom": "*" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@kentcdodds/react-workshop-app/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@remix-run/eslint-config/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "engines": { "node": ">=8" } }, - "node_modules/@kentcdodds/react-workshop-app/node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "node_modules/@remix-run/express": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.3.1.tgz", + "integrity": "sha512-6gh+3InqBWkWRmFQtyE25PRD5bCYKBBgE0DBtqcI165otBuLK/SQul003n/lu6EateenT1RuQZgLjaDGX5UlyA==", "dependencies": { - "ci-info": "^3.2.0" + "@remix-run/node": "2.3.1" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "express": "^4.17.1", + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@kentcdodds/workshop-app": { - "version": "2.23.1", - "resolved": "https://registry.npmjs.org/@kentcdodds/workshop-app/-/workshop-app-2.23.1.tgz", - "integrity": "sha512-J0Wf3UyCRZ6ydDCydBcPsCcwQ97Z6iQWimF0AgLvLsWOgjwUndtdlGL5dfEAtO4cfSlT0i+25ukrww1YXTqljg==", - "bundleDependencies": [ - "@conform-to/react", - "@conform-to/zod", - "@radix-ui/react-accordion", - "@radix-ui/react-popover", - "@radix-ui/react-select", - "@radix-ui/react-tabs", - "@radix-ui/react-toast", - "@remix-run/react", - "@remix-run/router", - "react-router", - "react-router-dom", - "clsx", - "chai", - "chai-dom", - "framer-motion", - "remix-utils", - "tailwind-merge", - "zod" - ], + "node_modules/@remix-run/node": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.3.1.tgz", + "integrity": "sha512-dXoNrmLrPblUM8UjgPzq3YBLXEGzm3HwtIt0iob1SlgKx0I5ii40JG0IXHDTI9f+fN9f/Ufx7Cjp0MGcUVXWVw==", "dependencies": { - "@conform-to/react": "^0.9.0", - "@conform-to/zod": "^0.9.0", - "@kentcdodds/md-temp": "^5.0.0", - "@mdx-js/mdx": "^2.3.0", - "@radix-ui/react-accordion": "^1.1.2", - "@radix-ui/react-popover": "^1.0.6", - "@radix-ui/react-select": "^1.2.2", - "@radix-ui/react-tabs": "^1.0.4", - "@radix-ui/react-toast": "^1.1.4", - "@remix-run/css-bundle": "^2.0.0", - "@remix-run/express": "^2.0.0", - "@remix-run/node": "^2.0.0", - "@remix-run/react": "^2.0.0", - "@remix-run/router": "*", - "@types/chai": "^4.3.6", - "@types/chai-dom": "^1.11.1", - "address": "^1.2.2", - "ansi-to-html": "^0.7.2", - "cachified": "^3.5.4", - "chai": "^4.3.8", - "chai-dom": "^1.11.0", - "chalk": "^5.3.0", - "chokidar": "^3.5.3", - "close-with-grace": "^1.2.0", - "clsx": "^2.0.0", - "compression": "^1.7.4", - "cross-env": "^7.0.3", - "cross-spawn": "^7.0.3", - "dotenv": "^16.3.1", - "esbuild": "^0.19.3", - "execa": "^8.0.1", - "express": "^4.18.2", - "fkill": "^8.1.1", - "framer-motion": "^10.16.4", - "fs-extra": "^11.1.1", - "get-port": "^7.0.0", - "glob": "^10.3.4", - "globby": "^13.2.2", - "isbot": "^3.6.13", - "lodash.escape": "^4.0.1", - "lru-cache": "^10.0.1", - "md5-hex": "^4.0.0", - "mdx-bundler": "^9.2.1", - "mime-types": "^2.1.35", - "morgan": "^1.10.0", - "p-queue": "^7.4.1", - "parse-git-diff": "^0.0.13", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router": "*", - "react-router-dom": "*", - "remark-autolink-headings": "^7.0.1", - "remark-emoji": "^4.0.0", - "remark-gfm": "^3.0.1", - "remix-flat-routes": "^0.5.10", - "remix-utils": "7.0.0-pre.3", - "shell-quote": "^1.8.1", - "shiki": "^0.14.4", + "@remix-run/server-runtime": "2.3.1", + "@remix-run/web-fetch": "^4.4.1", + "@remix-run/web-file": "^3.1.0", + "@remix-run/web-stream": "^1.1.0", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie-signature": "^1.1.0", "source-map-support": "^0.5.21", - "spin-delay": "^1.2.0", - "tailwind-merge": "^1.14.0", - "tailwindcss-radix": "^2.8.0", - "unified": "^11.0.3", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "wait-on": "^7.0.1", - "ws": "^8.14.1", - "zod": "^3.22.2" + "stream-slice": "^0.1.2" }, - "bin": { - "kcdshop": "bin/kcdshop.js" + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@remix-run/router": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.0.tgz", + "integrity": "sha512-5dMOnVnefRsl4uRnAdoWjtVTdh8e6aZqgM4puy9nmEADH72ck+uXwzpJLEKE9Q6F8ZljNewLgmTfkxUrBdv4WA==", "engines": { - "node": "18" + "node": ">=14.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@babel/runtime": { - "version": "7.22.15", - "inBundle": true, - "license": "MIT", + "node_modules/@remix-run/server-runtime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.3.1.tgz", + "integrity": "sha512-ym1nfuYJKn5Vd4bqGIJbZMR1wh/A/qXSzOwqCrZxjdsAmb4YLUBnUAJFIoCRBrvcge92kXq/lXjGOFYf+qidZg==", "dependencies": { - "regenerator-runtime": "^0.14.0" + "@remix-run/router": "1.13.0", + "@types/cookie": "^0.5.3", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie": "^0.5.0", + "set-cookie-parser": "^2.4.8", + "source-map": "^0.7.3" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@conform-to/dom": { - "version": "0.9.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@kentcdodds/workshop-app/node_modules/@conform-to/react": { - "version": "0.9.0", - "inBundle": true, - "license": "MIT", + "node_modules/@remix-run/v1-route-convention": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@remix-run/v1-route-convention/-/v1-route-convention-0.1.4.tgz", + "integrity": "sha512-fVTr9YlNLWfaiM/6Y56sOtcY8x1bBJQHY0sDWO5+Z/vjJ2Ni7fe2fwrzs1jUFciMPXqBQdFGePnkuiYLz3cuUA==", "dependencies": { - "@conform-to/dom": "0.9.0" + "minimatch": "^7.4.3" }, "peerDependencies": { - "react": ">=16.8" + "@remix-run/dev": "^1.15.0 || ^2.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@conform-to/zod": { - "version": "0.9.0", - "inBundle": true, - "license": "MIT", - "peerDependencies": { - "@conform-to/dom": "0.9.0", - "zod": "^3.21.0" + "node_modules/@remix-run/v1-route-convention/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/@remix-run/web-blob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz", + "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==", "dependencies": { - "@emotion/memoize": "0.7.4" + "@remix-run/web-stream": "^1.1.0", + "web-encoding": "1.1.5" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@emotion/memoize": { - "version": "0.7.4", - "inBundle": true, - "license": "MIT", - "optional": true + "node_modules/@remix-run/web-fetch": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.1.tgz", + "integrity": "sha512-xMceEGn2kvfeWS91nHSOhEQHPGgjFnmDVpWFZrbWPVdiTByMZIn421/tdSF6Kd1RsNsY+5Iwt3JFEKZHAcMQHw==", + "dependencies": { + "@remix-run/web-blob": "^3.1.0", + "@remix-run/web-file": "^3.1.0", + "@remix-run/web-form-data": "^3.1.0", + "@remix-run/web-stream": "^1.1.0", + "@web3-storage/multipart-parser": "^1.0.0", + "abort-controller": "^3.0.0", + "data-uri-to-buffer": "^3.0.1", + "mrmime": "^1.0.0" + }, + "engines": { + "node": "^10.17 || >=12.3" + } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@floating-ui/core": { - "version": "1.5.0", - "inBundle": true, - "license": "MIT", + "node_modules/@remix-run/web-file": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz", + "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==", "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@remix-run/web-blob": "^3.1.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@floating-ui/dom": { - "version": "1.5.3", - "inBundle": true, - "license": "MIT", + "node_modules/@remix-run/web-form-data": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz", + "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==", "dependencies": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "web-encoding": "1.1.5" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@floating-ui/react-dom": { - "version": "2.0.2", - "inBundle": true, - "license": "MIT", + "node_modules/@remix-run/web-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz", + "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==", "dependencies": { - "@floating-ui/dom": "^1.5.1" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "web-streams-polyfill": "^3.1.1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@floating-ui/utils": { - "version": "0.1.4", - "inBundle": true, - "license": "MIT" + "node_modules/@rushstack/eslint-patch": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.1.tgz", + "integrity": "sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==" }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/number": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" + "node_modules/@sindresorhus/is": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", + "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/primitive": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" + "node_modules/@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-accordion": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/@sindresorhus/slugify": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz", + "integrity": "sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collapsible": "1.0.3", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@sindresorhus/transliterate": "^1.0.0", + "escape-string-regexp": "^5.0.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=12" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-arrow": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/@sindresorhus/transliterate": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz", + "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "escape-string-regexp": "^5.0.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=12" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-collapsible": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/@testing-library/dom": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", + "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=14" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-collection": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-context": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@testing-library/react": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", + "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=14" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-direction": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@types/estree": "*" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" + }, + "node_modules/@types/chai": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==" + }, + "node_modules/@types/chai-dom": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@types/chai-dom/-/chai-dom-1.11.3.tgz", + "integrity": "sha512-EUEZI7uID4ewzxnU7DJXtyvykhQuwe+etJ1wwOiJyQRTH/ifMWKX+ghiXkxCUvNJ6IQDodf0JXhuP6zZcy2qXQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "@types/chai": "*" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-focus-guards": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@types/cookie": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.4.tgz", + "integrity": "sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@types/ms": "*" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-focus-scope": { + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/estree-jsx": { "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz", + "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "@types/estree": "*" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-id": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@types/hast": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.7.tgz", + "integrity": "sha512-EVLigw5zInURhzfXUM65eixfadfsHKomGKUakToXo84t8gGIJuTcD2xooM2See7GyQ7DRtYjhCHnSUQez8JaLw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@types/unist": "^2" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-popover": { - "version": "1.0.6", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.4", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.3", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.2", - "@radix-ui/react-portal": "1.0.3", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" + "node_modules/@types/js-levenshtein": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz", + "integrity": "sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/mdast": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.14.tgz", + "integrity": "sha512-gVZ04PGgw1qLZKsnWnyFv4ORnaJ+DXLdHTVSFbU8yX6xZ34Bjg4Q32yPkmveUP1yItXReKfB0Aknlh/3zxTKAw==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", + "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.39", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.39.tgz", + "integrity": "sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==" + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==" + }, + "node_modules/@types/statuses": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.4.tgz", + "integrity": "sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==" + }, + "node_modules/@types/unist": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.18.0.tgz", + "integrity": "sha512-3lqEvQUdCozi6d1mddWqd+kf8KxmGq2Plzx36BlkjuQe3rSTm/O98cLf0A4uDO+a5N1KD2SeEEl6fW97YHY+6w==", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.18.0", + "@typescript-eslint/type-utils": "6.18.0", + "@typescript-eslint/utils": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "typescript": { "optional": true } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-popper": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-rect": "1.0.1", - "@radix-ui/react-use-size": "1.0.1", - "@radix-ui/rect": "1.0.1" + "ms": "2.1.2" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "supports-color": { "optional": true } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-portal": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.18.0.tgz", + "integrity": "sha512-v6uR68SFvqhNQT41frCMCQpsP+5vySy6IdgjlzUWoo7ALCnpaWYcz/Ij2k4L8cEsL0wkvOviCMpjmtRtHNOKzA==", + "dependencies": { + "@typescript-eslint/scope-manager": "6.18.0", + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/typescript-estree": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "typescript": { "optional": true } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-presence": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" + "ms": "2.1.2" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "supports-color": { "optional": true } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-primitive": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.18.0.tgz", + "integrity": "sha512-o/UoDT2NgOJ2VfHpfr+KBY2ErWvCySNUIX/X7O9g8Zzt/tXdpfEU43qbNk8LVuWUT2E0ptzTWXh79i74PP0twA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.2" + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.0.tgz", + "integrity": "sha512-ZeMtrXnGmTcHciJN1+u2CigWEEXgy1ufoxtWcHORt5kGvpjjIlK9MUhzHm4RM8iVy6dqSaZA/6PVkX6+r+ChjQ==", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.18.0", + "@typescript-eslint/utils": "6.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "typescript": { "optional": true } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-roving-focus": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1" + "ms": "2.1.2" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "supports-color": { "optional": true } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-select": { - "version": "1.2.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/number": "1.0.1", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.4", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.3", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.2", - "@radix-ui/react-portal": "1.0.3", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@typescript-eslint/types": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.0.tgz", + "integrity": "sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==", + "engines": { + "node": "^16.0.0 || >=18.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-slot": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.0.tgz", + "integrity": "sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "@types/react": { + "typescript": { "optional": true } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-tabs": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-use-controllable-state": "1.0.1" + "ms": "2.1.2" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "supports-color": { "optional": true } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-toast": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.4", - "@radix-ui/react-portal": "1.0.3", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "yallist": "^4.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" + "lru-cache": "^6.0.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "bin": { + "semver": "bin/semver.js" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.0.tgz", + "integrity": "sha512-wiKKCbUeDPGaYEYQh1S580dGxJ/V9HI7K5sbGAVklyf+o5g3O+adnS4UNJajplF4e7z2q0uVBaTdT/yLb4XAVA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.18.0", + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/typescript-estree": "6.18.0", + "semver": "^7.5.4" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": "^16.0.0 || >=18.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "yallist": "^4.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-previous": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { - "@babel/runtime": "^7.13.10" + "lru-cache": "^6.0.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "bin": { + "semver": "bin/semver.js" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-rect": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.0.tgz", + "integrity": "sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/rect": "1.0.1" + "@typescript-eslint/types": "6.18.0", + "eslint-visitor-keys": "^3.4.1" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": "^16.0.0 || >=18.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-use-size": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/react-visually-hidden": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/@web3-storage/multipart-parser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz", + "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==" + }, + "node_modules/@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "event-target-shim": "^5.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=6.5" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@radix-ui/rect": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "@babel/runtime": "^7.13.10" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@remix-run/react": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.9.0", - "@remix-run/server-runtime": "2.0.0", - "react-router-dom": "6.16.0" + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=18.0.0" - }, + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@remix-run/router": { - "version": "1.9.0", - "inBundle": true, - "license": "MIT", + "node_modules/address": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/address/-/address-2.0.1.tgz", + "integrity": "sha512-Fd3nPUe+kPZ0P70sGkV8dAUchT3pQCyTPQO5xW9580oqVBPJe2PtWtK7KGnQBvgTrloWAOvOoX8DksyuIWssvQ==", "engines": { - "node": ">=14.0.0" + "node": ">= 16.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@remix-run/server-runtime": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dependencies": { - "@remix-run/router": "1.9.0", - "@types/cookie": "^0.4.1", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie": "^0.4.1", - "set-cookie-parser": "^2.4.8", - "source-map": "^0.7.3", - "type-fest": "^4.0.0" + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" + "node": ">=18" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/@types/cookie": { - "version": "0.4.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@kentcdodds/workshop-app/node_modules/@types/unist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", - "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==" - }, - "node_modules/@kentcdodds/workshop-app/node_modules/@web3-storage/multipart-parser": { - "version": "1.0.0", - "inBundle": true, - "license": "(Apache-2.0 AND MIT)" - }, - "node_modules/@kentcdodds/workshop-app/node_modules/aria-hidden": { - "version": "1.2.3", - "inBundle": true, - "license": "MIT", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@kentcdodds/workshop-app/node_modules/assertion-error": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@kentcdodds/workshop-app/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/chai": { - "version": "4.3.8", - "inBundle": true, - "license": "MIT", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/chai-dom": { - "version": "1.11.0", - "inBundle": true, - "license": "MIT", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "engines": { - "node": ">= 0.12.0" + "node": ">=10" }, - "peerDependencies": { - "chai": ">= 3", - "mocha": ">= 2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/check-error": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } + "node_modules/ansi-sequence-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==" }, - "node_modules/@kentcdodds/workshop-app/node_modules/clsx": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/cookie": { - "version": "0.4.2", - "inBundle": true, - "license": "MIT", + "node_modules/ansi-to-html": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", + "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", + "dependencies": { + "entities": "^2.2.0" + }, + "bin": { + "ansi-to-html": "bin/ansi-to-html" + }, "engines": { - "node": ">= 0.6" + "node": ">=8.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/crypto-js": { - "version": "4.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@kentcdodds/workshop-app/node_modules/deep-eql": { - "version": "4.1.3", - "inBundle": true, - "license": "MIT", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { - "type-detect": "^4.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/detect-node-es": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@kentcdodds/workshop-app/node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "tslib": "^2.0.0" }, "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=10" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/framer-motion": { - "version": "10.16.4", - "inBundle": true, - "license": "MIT", + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dependencies": { - "tslib": "^2.4.0" - }, - "optionalDependencies": { - "@emotion/is-prop-valid": "^0.8.2" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" }, "engines": { - "node": ">=14.14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/get-func-name": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/get-nonce": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "engines": { - "node": ">=16.17.0" + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" + }, + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "bin": { + "astring": "bin/astring" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/intl-parse-accept-language": { + "node_modules/asynciterator.prototype": { "version": "1.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=14" + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dependencies": { + "has-symbols": "^1.0.3" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/invariant": { - "version": "2.2.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/ip-regex": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/is-ip": { - "version": "3.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" + "dequal": "^2.0.3" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" - }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/@kentcdodds/workshop-app/node_modules/js-tokens": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT" + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/@kentcdodds/workshop-app/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dependencies": { - "universalify": "^2.0.0" + "safe-buffer": "5.1.2" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">= 0.8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/loose-envify": { - "version": "1.4.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/loupe": { - "version": "2.3.6", - "inBundle": true, - "license": "MIT", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dependencies": { - "get-func-name": "^2.0.0" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, "engines": { - "node": "14 || >=16.14" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "balanced-match": "^1.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "path-key": "^4.0.0" + "fill-range": "^7.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "mimic-fn": "^4.0.0" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, - "engines": { - "node": ">=12" + "bin": { + "browserslist": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/pathval": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "engines": { - "node": "*" + "node": ">= 0.8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/react-remove-scroll": { - "version": "2.5.5", - "inBundle": true, - "license": "MIT", + "node_modules/cachified": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/cachified/-/cachified-3.5.4.tgz", + "integrity": "sha512-RO7jQl7vL1qulRvr+o++iVVduFlKb2pJUYxY48LULusyqmGUFaRESERu1Z7UI895JNtTB4yvfErNv64OsayK8g==" + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" - }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=6" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/react-router": { - "version": "6.16.0", - "inBundle": true, - "license": "MIT", + "node_modules/caniuse-lite": { + "version": "1.0.30001576", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", + "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/castable-video": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.0.6.tgz", + "integrity": "sha512-Ykw2uL4ZQnqX0j9KF9ksbDpyc8I53mFMswCKW9yV5TrwpWkdNqRHLlcU85W30BIw61fgDjgm0Xh5G0rbcmv23g==", "dependencies": { - "@remix-run/router": "1.9.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8" + "custom-media-element": "~1.2.2" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/react-router-dom": { - "version": "6.16.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@remix-run/router": "1.9.0", - "react-router": "6.16.0" - }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { - "node": ">=14.0.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/react-style-singleton": { - "version": "2.2.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "engines": { "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/@kentcdodds/workshop-app/node_modules/regenerator-runtime": { - "version": "0.14.0", - "inBundle": true, - "license": "MIT" + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/@kentcdodds/workshop-app/node_modules/remix-utils": { - "version": "7.0.0-pre.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "crypto-js": "^4.1.1", - "intl-parse-accept-language": "^1.0.0", - "is-ip": "^3.1.0", - "schema-dts": "^1.1.0", - "type-fest": "^2.5.2", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@remix-run/react": "^1.19.1", - "@remix-run/router": "^1.7.2", - "@remix-run/server-runtime": "^1.19.1", - "react": "^18.0.0", - "zod": "^3.19.1" + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/remix-utils/node_modules/type-fest": { - "version": "2.19.0", - "inBundle": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/schema-dts": { - "version": "1.1.2", - "inBundle": true, - "license": "Apache-2.0", - "peerDependencies": { - "typescript": ">=4.1.0" + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/set-cookie-parser": { - "version": "2.6.0", - "inBundle": true, - "license": "MIT" + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, - "node_modules/@kentcdodds/workshop-app/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": ">=14" + "node": ">= 8.10.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/source-map": { - "version": "0.7.4", - "inBundle": true, - "license": "BSD-3-Clause", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/tailwind-merge": { - "version": "1.14.0", - "inBundle": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/tslib": { - "version": "2.6.2", - "inBundle": true, - "license": "0BSD" - }, - "node_modules/@kentcdodds/workshop-app/node_modules/type-detect": { - "version": "4.0.8", - "inBundle": true, - "license": "MIT", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/type-fest": { - "version": "4.3.1", - "inBundle": true, - "license": "(MIT OR CC0-1.0)", + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/unified": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", - "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@kentcdodds/workshop-app/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" + "color-convert": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@kentcdodds/workshop-app/node_modules/unist-util-remove-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", - "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/@kentcdodds/workshop-app/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/unist-util-visit-parents": { + "node_modules/cliui/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" + "ansi-regex": "^5.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@kentcdodds/workshop-app/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "engines": { - "node": ">= 10.0.0" + "node": ">=8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/use-callback-ref": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { - "tslib": "^2.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10" }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/use-sidecar": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=0.8" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/uuid": { - "version": "8.3.2", - "inBundle": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } + "node_modules/close-with-grace": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/close-with-grace/-/close-with-grace-1.2.0.tgz", + "integrity": "sha512-Xga0jyAb4fX98u5pZAgqlbqHP8cHuy5M3Wto0k0L/36aP2C25Cjp51XfPw3Hz7dNC2L2/hF/PK/KJhO275L+VA==" }, - "node_modules/@kentcdodds/workshop-app/node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" + "color-name": "~1.1.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@kentcdodds/workshop-app/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/@kentcdodds/workshop-app/node_modules/zod": { - "version": "3.22.2", - "inBundle": true, - "license": "MIT", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", "funding": { - "url": "https://github.com/sponsors/colinhacks" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "node_modules/@mapbox/rehype-prism": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@mapbox/rehype-prism/-/rehype-prism-0.8.0.tgz", - "integrity": "sha512-bIz4a3oZ8g+pQBHSMMIxNpYOMX4yq4aZdpezoiCl9yJudh1Z9SRmHQqH6f+WtTBNOORzXMEGkvBze4PiH17wtA==", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dependencies": { - "hast-util-to-string": "^1.0.4", - "mrm": "^3.0.9", - "refractor": "^3.4.0", - "unist-util-visit": "^2.0.3" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/@mdx-js/esbuild": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mdx-js/esbuild/-/esbuild-2.3.0.tgz", - "integrity": "sha512-r/vsqsM0E+U4Wr0DK+0EfmABE/eg+8ITW4DjvYdh3ve/tK2safaqHArNnaqbOk1DjYGrhxtoXoGaM3BY8fGBTA==", + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dependencies": { - "@mdx-js/mdx": "^2.0.0", - "node-fetch": "^3.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" }, - "peerDependencies": { - "esbuild": ">=0.11.0" - } - }, - "node_modules/@mdx-js/esbuild/node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "engines": { - "node": ">= 12" + "node": ">= 0.8.0" } }, - "node_modules/@mdx-js/esbuild/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/confetti-react": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/confetti-react/-/confetti-react-2.5.0.tgz", + "integrity": "sha512-MqzdSqiksBFFVxFaueC6PIbhGw9vU+FgXvSfOYXxXVSZnmkEzX+MTbAovcc+AUu0cMjpxAYPO5eBR5xIfKTQnA==", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "tween-functions": "^1.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0" } }, - "node_modules/@mdx-js/loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.3.0.tgz", - "integrity": "sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "@mdx-js/mdx": "^2.0.0", - "source-map": "^0.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "safe-buffer": "5.2.1" }, - "peerDependencies": { - "webpack": ">=4" + "engines": { + "node": ">= 0.6" } }, - "node_modules/@mdx-js/mdx": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", - "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/mdx": "^2.0.0", - "estree-util-build-jsx": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-to-js": "^1.1.0", - "estree-walker": "^3.0.0", - "hast-util-to-estree": "^2.0.0", - "markdown-extensions": "^1.0.0", - "periscopic": "^3.0.0", - "remark-mdx": "^2.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "unified": "^10.0.0", - "unist-util-position-from-estree": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mdx-js/mdx/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mdx-js/mdx/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mswjs/cookies": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.7.tgz", - "integrity": "sha512-bDg1ReMBx+PYDB4Pk7y1Q07Zz1iKIEUWQpkEXiA2lEWg9gvOZ8UBmGXilCEUvyYoRFlmr/9iXTRR69TrgSwX/Q==", - "dependencies": { - "@types/set-cookie-parser": "^2.4.0", - "set-cookie-parser": "^2.4.6" - } + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/@mswjs/interceptors": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.8.1.tgz", - "integrity": "sha512-OI9FYmtURESZG3QDNz4Yt3osy3HY4T3FjlRw+AG4QS1UDdTSZ0tuPFAkp23nGR9ojmbSSj4gSMjf5+R8Oi/qtQ==", - "dependencies": { - "@open-draft/until": "^1.0.3", - "debug": "^4.3.0", - "headers-utils": "^3.0.2", - "strict-event-emitter": "^0.2.0" + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "dependencies": { - "eslint-scope": "5.1.1" - } + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "engines": { - "node": ">=8.0.0" + "node": ">= 0.6" } }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, + "node_modules/cookie-signature": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.1.tgz", + "integrity": "sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==", "engines": { - "node": ">=4.0" + "node": ">=6.6.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { "node": ">= 8" } }, - "node_modules/@open-draft/until": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", - "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==" + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, + "node_modules/custom-media-element": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.2.2.tgz", + "integrity": "sha512-tI+NjVRS485QlSxHeM3JIjdEZSJMLOZVp41/vvWukDmIkZSoYG9gLYl9GFZGBpY42UbRVo1eMlF7XkI/IiDHzQ==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", "engines": { - "node": ">=14" + "node": ">= 6" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", - "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", - "dev": true, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } + "ms": "2.0.0" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" + "character-entities": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "dependencies": { - "p-locate": "^5.0.0" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "clone": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@reach/auto-id": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@reach/auto-id/-/auto-id-0.14.0.tgz", - "integrity": "sha512-Ym8PBXubuXP7m8CFReqHIH8iXOTcZ3PuAjtHHGuc2EToCwhbbFSf1OouWMUdr6S6vZmu0pOnhOgIE1QGw+dEpw==", + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dependencies": { - "@reach/utils": "0.14.0", - "tslib": "^2.1.0" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" + "engines": { + "node": ">= 0.4" } }, - "node_modules/@reach/descendants": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@reach/descendants/-/descendants-0.14.0.tgz", - "integrity": "sha512-gbaZZWJzTt2clXGUSS2j5jSJqiPUntVl7QcH+FVP5flAPcddpdShtztNcp2wR5QPKJoRXALs7yQIytwW15siHA==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "@reach/utils": "0.14.0", - "tslib": "^2.1.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" - } - }, - "node_modules/@reach/observe-rect": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz", - "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==" - }, - "node_modules/@reach/portal": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@reach/portal/-/portal-0.14.0.tgz", - "integrity": "sha512-b7Ejp83GckaSKP/IIlIpER7dUV3IV/Kz5BTff8rPXA2a2NWKFdpbu5ozKDeAeiXXFLBbRmNk93JPpcvUJAzezw==", - "dependencies": { - "@reach/utils": "0.14.0", - "tslib": "^2.1.0" + "engines": { + "node": ">= 0.4" }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@reach/rect": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@reach/rect/-/rect-0.14.0.tgz", - "integrity": "sha512-mXunIyFUCbzWlUVwMuI/nL3tLDsPWwe+5knXHQQG5cOqE9tosLt9PqVYQW5iMHdpl9pGqbx7yVXMZKp2hookJg==", - "dependencies": { - "@reach/observe-rect": "1.2.0", - "@reach/utils": "0.14.0", - "prop-types": "^15.7.2", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" } }, - "node_modules/@reach/tabs": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@reach/tabs/-/tabs-0.14.0.tgz", - "integrity": "sha512-UqMCPvXsEXMXy01DHQRH0Xibgq31hOVSc7gvqLMQBGSutGgEGdX7+0GfVkhZvRCjv8vhXp2FDeRT3L5mO5ebcA==", - "dependencies": { - "@reach/auto-id": "0.14.0", - "@reach/descendants": "0.14.0", - "@reach/utils": "0.14.0", - "prop-types": "^15.7.2", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" } }, - "node_modules/@reach/tooltip": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@reach/tooltip/-/tooltip-0.14.0.tgz", - "integrity": "sha512-fj975M7o2GoKUP1qkOGKmvxpxHs1CVJpW18aV1N83KKw6PKV7z+RDEArqOToSaAco1BpuZDQvj0b8UxqBMzjbg==", - "dependencies": { - "@reach/auto-id": "0.14.0", - "@reach/portal": "0.14.0", - "@reach/rect": "0.14.0", - "@reach/utils": "0.14.0", - "@reach/visually-hidden": "0.14.0", - "prop-types": "^15.7.2", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@reach/utils": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.14.0.tgz", - "integrity": "sha512-QbSFO5p44qUCkOllJM06Lt5A/EsoVIYlB9Ij1vKEezy53keaa5bc879dD2Ahv+mMf+E1VppCeiL6YYvdpJmVVQ==", + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "dependencies": { - "@types/warning": "^3.0.0", - "tslib": "^2.1.0", - "warning": "^4.0.3" + "dequal": "^2.0.0" }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@reach/visually-hidden": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@reach/visually-hidden/-/visually-hidden-0.14.0.tgz", - "integrity": "sha512-vyZNj8p1piBY6FR280dHRQxjZGyFVRXYQY7yxvEIe251EZib6C0jc66YlcA/+om4gEhVcJ17/O/bHnKV7GRIig==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dependencies": { - "prop-types": "^15.7.2", - "tslib": "^2.1.0" + "path-type": "^4.0.0" }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" + "engines": { + "node": ">=8" } }, - "node_modules/@remix-run/css-bundle": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.1.0.tgz", - "integrity": "sha512-HkLQzfJFbg0yLUPvczSsdOHuK1dfTYl+egOSsJ0WYY0PNSKxjlFAI4v1ZKyPrgllVdVeqUWVtmPCjwdcYdlxjw==", + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@remix-run/express": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.1.0.tgz", - "integrity": "sha512-R5myPowQx6LYWY3+EqP42q19MOCT3+ZGwb2f0UKNs9a34R8U3nFpGWL7saXryC+To+EasujEScc8rTQw5Pftog==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, "dependencies": { - "@remix-run/node": "2.1.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "express": "^4.17.1", - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=6.0.0" } }, - "node_modules/@remix-run/node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.1.0.tgz", - "integrity": "sha512-TeSgjXnZUUlmw5FVpBVnXY7MLpracjdnwFNwoJE5NQkiUEFnGD/Yhvk4F2fOCkszqc2Z25KRclc5noweyiFu6Q==", - "dependencies": { - "@remix-run/server-runtime": "2.1.0", - "@remix-run/web-fetch": "^4.4.1", - "@remix-run/web-file": "^3.1.0", - "@remix-run/web-stream": "^1.1.0", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie-signature": "^1.1.0", - "source-map-support": "^0.5.21", - "stream-slice": "^0.1.2" - }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" + "node": ">=12" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, - "node_modules/@remix-run/node/node_modules/cookie-signature": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.1.tgz", - "integrity": "sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==", - "engines": { - "node": ">=6.6.0" + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.624", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.624.tgz", + "integrity": "sha512-w9niWuheXjz23vezH3w90n9KKcHe0UkhTfJ+rXJkuGGogHyQbQ7KS1x0a8ER4LbI3ljFS/gqxKh1TidNXDMHOg==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" + }, + "node_modules/emoticon": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz", + "integrity": "sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@remix-run/router": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.10.0.tgz", - "integrity": "sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==", + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { - "node": ">=14.0.0" + "node": ">= 0.8" } }, - "node_modules/@remix-run/server-runtime": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.1.0.tgz", - "integrity": "sha512-Uz69yF4Gu6F3VYQub3JgDo9godN8eDMeZclkadBTAWN7bYLonu0ChR/GlFxS35OLeF7BDgudxOSZob0nE1WHNg==", + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dependencies": { - "@remix-run/router": "1.10.0", - "@types/cookie": "^0.4.1", - "@web3-storage/multipart-parser": "^1.0.0", - "cookie": "^0.4.1", - "set-cookie-parser": "^2.4.8", - "source-map": "^0.7.3" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "typescript": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=10.13.0" } }, - "node_modules/@remix-run/v1-route-convention": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@remix-run/v1-route-convention/-/v1-route-convention-0.1.4.tgz", - "integrity": "sha512-fVTr9YlNLWfaiM/6Y56sOtcY8x1bBJQHY0sDWO5+Z/vjJ2Ni7fe2fwrzs1jUFciMPXqBQdFGePnkuiYLz3cuUA==", - "dependencies": { - "minimatch": "^7.4.3" - }, - "peerDependencies": { - "@remix-run/dev": "^1.15.0 || ^2.0.0" + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@remix-run/v1-route-convention/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "is-arrayish": "^0.2.1" } }, - "node_modules/@remix-run/v1-route-convention/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@remix-run/web-blob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz", - "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==", - "dependencies": { - "@remix-run/web-stream": "^1.1.0", - "web-encoding": "1.1.5" - } - }, - "node_modules/@remix-run/web-fetch": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.1.tgz", - "integrity": "sha512-xMceEGn2kvfeWS91nHSOhEQHPGgjFnmDVpWFZrbWPVdiTByMZIn421/tdSF6Kd1RsNsY+5Iwt3JFEKZHAcMQHw==", - "dependencies": { - "@remix-run/web-blob": "^3.1.0", - "@remix-run/web-file": "^3.1.0", - "@remix-run/web-form-data": "^3.1.0", - "@remix-run/web-stream": "^1.1.0", - "@web3-storage/multipart-parser": "^1.0.0", - "abort-controller": "^3.0.0", - "data-uri-to-buffer": "^3.0.1", - "mrmime": "^1.0.0" + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" }, "engines": { - "node": "^10.17 || >=12.3" - } - }, - "node_modules/@remix-run/web-file": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz", - "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==", - "dependencies": { - "@remix-run/web-blob": "^3.1.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@remix-run/web-form-data": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz", - "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==", + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dependencies": { - "web-encoding": "1.1.5" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@remix-run/web-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz", - "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==", + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", "dependencies": { - "web-streams-polyfill": "^3.1.1" + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", - "dev": true, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } + "node": ">= 0.4" } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "hasown": "^2.0.0" } }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dev": true, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "node_modules/esbuild": { + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz", + "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 8.0.0" + "node": ">=12" }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", - "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", - "dev": true - }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dependencies": { - "@hapi/hoek": "^9.0.0" + "optionalDependencies": { + "@esbuild/android-arm": "0.19.5", + "@esbuild/android-arm64": "0.19.5", + "@esbuild/android-x64": "0.19.5", + "@esbuild/darwin-arm64": "0.19.5", + "@esbuild/darwin-x64": "0.19.5", + "@esbuild/freebsd-arm64": "0.19.5", + "@esbuild/freebsd-x64": "0.19.5", + "@esbuild/linux-arm": "0.19.5", + "@esbuild/linux-arm64": "0.19.5", + "@esbuild/linux-ia32": "0.19.5", + "@esbuild/linux-loong64": "0.19.5", + "@esbuild/linux-mips64el": "0.19.5", + "@esbuild/linux-ppc64": "0.19.5", + "@esbuild/linux-riscv64": "0.19.5", + "@esbuild/linux-s390x": "0.19.5", + "@esbuild/linux-x64": "0.19.5", + "@esbuild/netbsd-x64": "0.19.5", + "@esbuild/openbsd-x64": "0.19.5", + "@esbuild/sunos-x64": "0.19.5", + "@esbuild/win32-arm64": "0.19.5", + "@esbuild/win32-ia32": "0.19.5", + "@esbuild/win32-x64": "0.19.5" } }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "engines": { "node": ">=6" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", - "dev": true, - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" - } - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", - "dev": true, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "dev": true, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "dev": true, - "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", - "dev": true, - "dependencies": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/core/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.6" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@testing-library/dom": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", - "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dependencies": { - "deep-equal": "^2.0.5" - } - }, - "node_modules/@testing-library/dom/node_modules/deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@testing-library/dom/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/@testing-library/jest-dom": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", - "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", - "dependencies": { - "@adobe/css-tools": "^4.0.1", - "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=8", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/react": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", - "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.5.0", - "@types/react-dom": "^18.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, - "engines": { - "node": ">=12" + "bin": { + "eslint": "bin/eslint.js" }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, - "node_modules/@testing-library/user-event": { - "version": "14.5.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.1.tgz", - "integrity": "sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==", "engines": { - "node": ">=12", - "npm": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.3.tgz", - "integrity": "sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==" - }, - "node_modules/@types/babel__core": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", - "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.6", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", - "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", - "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", - "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz", - "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.12.tgz", - "integrity": "sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/chai": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", - "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==" - }, - "node_modules/@types/chai-dom": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@types/chai-dom/-/chai-dom-1.11.2.tgz", - "integrity": "sha512-6ltNv5QOV7pdW5JEkhT+GMMfvziRC90Rn6zwadC8PFf6tWbXBQRRCV/uXp7nVPdiTKHbqbPTX1jDDhKbu5MW2Q==", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", - "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz", - "integrity": "sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "node_modules/@types/debug": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.10.tgz", - "integrity": "sha512-tOSCru6s732pofZ+sMv9o4o3Zc+Sa8l3bxd/tweTQudFn06vAzb13ZX46Zi6m6EJ+RUbRTHvgQJ1gBtSgkaUYA==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.44.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz", - "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz", - "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", - "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.2.tgz", - "integrity": "sha512-GNBWlGBMjiiiL5TSkvPtOteuXsiVitw5MYGY1UYlrAq0SKyczsls6sCD7TZ8fsjRsvCVxml7EbyjJezPb3DrSA==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", - "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.38", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.38.tgz", - "integrity": "sha512-hXOtc0tuDHZPFwwhuBJXPbjemWtXnJjbvuuyNH2Y5Z6in+iXc63c4eXYDc7GGGqHy+iwYqAJMdaItqdnbcBKmg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz", - "integrity": "sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hast": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.7.tgz", - "integrity": "sha512-EVLigw5zInURhzfXUM65eixfadfsHKomGKUakToXo84t8gGIJuTcD2xooM2See7GyQ7DRtYjhCHnSUQez8JaLw==", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "node_modules/@types/http-errors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz", - "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.13", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.13.tgz", - "integrity": "sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==", - "dependencies": { - "@types/through": "*", - "rxjs": "^6.4.0" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ==" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz", - "integrity": "sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w==", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz", - "integrity": "sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg==", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.6", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.6.tgz", - "integrity": "sha512-/t9NnzkOpXb4Nfvg17ieHE6EeSjDS2SGSpNYfoLbUAeL/EOueU/RSdOWFpfQTXBEM7BguYW1XQ0EbM+6RlIh6w==", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/@types/js-levenshtein": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.2.tgz", - "integrity": "sha512-/NCbMABw2uacuyE16Iwka1EzREDD50/W2ggRBad0y1WHBvAkvR9OEINxModVY7D428gXBe0igeVX7bUc9GaslQ==" - }, - "node_modules/@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/mdast": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.14.tgz", - "integrity": "sha512-gVZ04PGgw1qLZKsnWnyFv4ORnaJ+DXLdHTVSFbU8yX6xZ34Bjg4Q32yPkmveUP1yItXReKfB0Aknlh/3zxTKAw==", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/mdx": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.9.tgz", - "integrity": "sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg==" - }, - "node_modules/@types/mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", - "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==", - "dev": true - }, - "node_modules/@types/ms": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.33.tgz", - "integrity": "sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==" - }, - "node_modules/@types/node": { - "version": "20.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", - "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", - "dependencies": { - "undici-types": "~5.25.1" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", - "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==" - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.9", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", - "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==" - }, - "node_modules/@types/q": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.7.tgz", - "integrity": "sha512-HBPgtzp44867rkL+IzQ3560/E/BlobwCjeXsuKqogrcE99SKgZR4tvBBCuNJZMhUFMz26M7cjKWZg785lllwpA==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.9", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", - "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz", - "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.29", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.29.tgz", - "integrity": "sha512-Z+ZrIRocWtdD70j45izShRwDuiB4JZqDegqMFW/I8aG5DxxLKOzVNoq62UIO82v9bdgi+DO1jvsb9sTEZUSm+Q==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.14", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz", - "integrity": "sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react/node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "node_modules/@types/scheduler": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", - "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==" - }, - "node_modules/@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz", - "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.3.tgz", - "integrity": "sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz", - "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==", - "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/set-cookie-parser": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.5.tgz", - "integrity": "sha512-ZPmztaAQ4rbnW/WTUnT1dwSENQo4bjGqxCSeyK+gZxmd+zJl/QAeF6dpEXcS5UEJX22HwiggFSaY8nE1nRmkbg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.35", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.35.tgz", - "integrity": "sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz", - "integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==" - }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", - "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", - "dependencies": { - "@types/jest": "*" - } - }, - "node_modules/@types/through": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.32.tgz", - "integrity": "sha512-7XsfXIsjdfJM2wFDRAtEWp3zb2aVPk5QeyZxGlVK57q4u26DczMHhJmlhr0Jqv0THwxam/L8REXkj8M2I/lcvw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.5.tgz", - "integrity": "sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", - "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==" - }, - "node_modules/@types/warning": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.2.tgz", - "integrity": "sha512-S/2+OjBIcBl8Kur23YLe0hG1e7J5m2bHfB4UuMNoLZjIFhQWhTf1FeS+WFoXHUC6QsCEfk4pftj4J1KIKC1glA==" - }, - "node_modules/@types/ws": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz", - "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", - "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz", - "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", - "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@web3-storage/multipart-parser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz", - "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "optional": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", - "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/aggregate-error/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==" - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-to-html": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz", - "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==", - "dependencies": { - "entities": "^2.2.0" - }, - "bin": { - "ansi-to-html": "bin/ansi-to-html" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", - "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true - }, - "node_modules/astring": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", - "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", - "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-jest/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/babel-plugin-codegen": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/babel-plugin-codegen/-/babel-plugin-codegen-4.1.5.tgz", - "integrity": "sha512-mId3XW/ndFe7kqUdDUPvMhzYC7ST2gC+C20pO2jVVRQqlHrB1KbMpI/mpawX3DKkAmAuAzWVcBFHb5ULRyNl4A==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "babel-plugin-macros": "^3.0.1", - "require-from-string": "^2.0.2" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-codegen/node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-emotion": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", - "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/serialize": "^0.11.16", - "babel-plugin-macros": "^2.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^1.0.5", - "find-root": "^1.1.0", - "source-map": "^0.5.7" - } - }, - "node_modules/babel-plugin-emotion/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-named-asset-import": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", - "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", - "dev": true, - "peerDependencies": { - "@babel/core": "^7.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", - "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.32.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" - }, - "node_modules/babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-react-app": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", - "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-decorators": "^7.16.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-transform-flow-strip-types": "^7.16.0", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.4", - "@babel/preset-env": "^7.16.4", - "@babel/preset-react": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.3", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24" - } - }, - "node_modules/babel-preset-react-app/node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/bfj": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", - "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", - "dev": true, - "dependencies": { - "bluebird": "^3.7.2", - "check-types": "^11.2.3", - "hoopy": "^0.1.4", - "jsonpath": "^1.1.1", - "tryer": "^1.0.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cachified": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/cachified/-/cachified-3.5.4.tgz", - "integrity": "sha512-RO7jQl7vL1qulRvr+o++iVVduFlKb2pJUYxY48LULusyqmGUFaRESERu1Z7UI895JNtTB4yvfErNv64OsayK8g==" - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001550", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001550.tgz", - "integrity": "sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/capture-stack-trace": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", - "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/check-types": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", - "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", - "dev": true - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/close-with-grace": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/close-with-grace/-/close-with-grace-1.2.0.tgz", - "integrity": "sha512-Xga0jyAb4fX98u5pZAgqlbqHP8cHuy5M3Wto0k0L/36aP2C25Cjp51XfPw3Hz7dNC2L2/hF/PK/KJhO275L+VA==" - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/coa/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/coa/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/coa/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/coa/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/codegen.macro": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/codegen.macro/-/codegen.macro-4.1.0.tgz", - "integrity": "sha512-T0A8vdX9SkhT00cd7nWQwlg8CT2qQwp1o2+ZD7Wqx38ABK0kJvhk/IJTjNgnE1W35dE98+OzLr1zluVREz5bPg==", - "dependencies": { - "babel-plugin-codegen": "^4.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/comment-json": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-2.4.2.tgz", - "integrity": "sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA==", - "dependencies": { - "core-util-is": "^1.0.2", - "esprima": "^4.0.1", - "has-own-prop": "^2.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/core-js": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", - "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", - "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", - "dev": true, - "dependencies": { - "browserslist": "^4.22.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz", - "integrity": "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz", - "integrity": "sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7", - "ts-node": "^10.7.0" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=7", - "typescript": ">=3" - } - }, - "node_modules/create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==", - "dependencies": { - "capture-stack-trace": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.21", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", - "dev": true, - "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - }, - "node_modules/cssdb": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.8.0.tgz", - "integrity": "sha512-SkeezZOQr5AHt9MgJgSFNyiuJwg1p8AwoVln6JwaQJsyxduRW9QJ+HP/gAQzbsz8SIqINtYvpJKjxTRI67zxLg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - } - ] - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "dev": true, - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "dev": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", - "engines": { - "node": ">=4.6.0" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.558", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.558.tgz", - "integrity": "sha512-j9IcGmfkyN5MBH/0Xzg45GDHasXsnwEJDM6Xnr9H7GlGUni+JH4q6xp6Nk7NV5LjTmoEFBqhILIqg1McJrv6uA==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/emojilib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/emoticon": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz", - "integrity": "sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/emotion-theming": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.3.0.tgz", - "integrity": "sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@emotion/weak-memoize": "0.2.5", - "hoist-non-react-statics": "^3.3.0" - }, - "peerDependencies": { - "@emotion/core": "^10.0.27", - "react": ">=16.3.0" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", - "dev": true, - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" - } - }, - "node_modules/es-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", - "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", - "dev": true - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz", - "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.19.5", - "@esbuild/android-arm64": "0.19.5", - "@esbuild/android-x64": "0.19.5", - "@esbuild/darwin-arm64": "0.19.5", - "@esbuild/darwin-x64": "0.19.5", - "@esbuild/freebsd-arm64": "0.19.5", - "@esbuild/freebsd-x64": "0.19.5", - "@esbuild/linux-arm": "0.19.5", - "@esbuild/linux-arm64": "0.19.5", - "@esbuild/linux-ia32": "0.19.5", - "@esbuild/linux-loong64": "0.19.5", - "@esbuild/linux-mips64el": "0.19.5", - "@esbuild/linux-ppc64": "0.19.5", - "@esbuild/linux-riscv64": "0.19.5", - "@esbuild/linux-s390x": "0.19.5", - "@esbuild/linux-x64": "0.19.5", - "@esbuild/netbsd-x64": "0.19.5", - "@esbuild/openbsd-x64": "0.19.5", - "@esbuild/sunos-x64": "0.19.5", - "@esbuild/win32-arm64": "0.19.5", - "@esbuild/win32-ia32": "0.19.5", - "@esbuild/win32-x64": "0.19.5" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-react-app": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", - "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/eslint-parser": "^7.16.3", - "@rushstack/eslint-patch": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^5.5.0", - "@typescript-eslint/parser": "^5.5.0", - "babel-preset-react-app": "^10.0.1", - "confusing-browser-globals": "^1.0.11", - "eslint-plugin-flowtype": "^8.0.3", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jest": "^25.3.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.1", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-testing-library": "^5.0.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-flowtype": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", - "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21", - "string-natural-compare": "^3.0.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@babel/plugin-syntax-flow": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.9", - "eslint": "^8.1.0" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", - "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jest": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", - "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-testing-library": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", - "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "^5.58.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0", - "npm": ">=6" - }, - "peerDependencies": { - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", - "dev": true, - "dependencies": { - "@types/eslint": "^7.29.0 || ^8.4.1", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/eslint-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-util-attach-comments": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", - "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", - "dependencies": { - "@types/estree": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-build-jsx": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", - "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-walker": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", - "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-to-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", - "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-value-to-estree": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", - "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", - "dependencies": { - "is-plain-obj": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/estree-util-visit": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", - "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/facepaint": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/facepaint/-/facepaint-1.2.1.tgz", - "integrity": "sha512-oNvBekbhsm/0PNSOWca5raHNAi6dG960Bx6LJgxDPNF59WpuspgQ17bN5MKwOr7JcFdQYc7StW3VZ28DBZLavQ==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fault": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", - "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", - "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "dependencies": { - "semver-regex": "^3.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "dev": true, - "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/fkill": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/fkill/-/fkill-8.1.1.tgz", - "integrity": "sha512-138B7rFQMEKoJQOVl3NCPyRAaex0ruLvQgqkEWa/CyUY9MFFxZ8TtztiMJSs6/wD60M6kK0OKUOwHRsr3U2RBg==", - "dependencies": { - "aggregate-error": "^4.0.0", - "execa": "^5.1.1", - "pid-port": "^0.2.0", - "process-exists": "^4.1.0", - "ps-list": "^7.2.0", - "taskkill": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/flat-cache/node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-port": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", - "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/git-config-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz", - "integrity": "sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==", - "dependencies": { - "extend-shallow": "^2.0.1", - "fs-exists-sync": "^0.1.0", - "homedir-polyfill": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/git-username": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/git-username/-/git-username-1.0.0.tgz", - "integrity": "sha512-xm45KwBR6Eu1jO4umx/o2M84v9TC7tdOBuzLx8ayhdR9H1FBiiG9azz31uC0esDvaWVBTDINpJ5USomk+ja8OQ==", - "dependencies": { - "parse-github-url": "^1.0.2", - "remote-origin-url": "^1.0.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dependencies": { - "ini": "1.3.7" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-own-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", - "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-estree": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", - "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "estree-util-attach-comments": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.1", - "unist-util-position": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-string": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz", - "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript/node_modules/comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/hastscript/node_modules/property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "dependencies": { - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/hastscript/node_modules/space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/headers-utils": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/headers-utils/-/headers-utils-3.0.2.tgz", - "integrity": "sha512-xAxZkM1dRyGV2Ou5bzMxBPNLoRCjcX+ya7KSWybQD2KwLphxsapUVK6x/02o7f4VU6GPSXch9vNY2+gkU8tYWQ==" - }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-entities": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", - "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", - "dev": true, - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "bin": { - "husky-run": "bin/run.js", - "husky-upgrade": "lib/upgrader/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/husky" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "dev": true - }, - "node_modules/identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", - "dev": true, - "dependencies": { - "harmony-reflect": "^1.4.6" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-reference": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", - "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/isbot": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/isbot/-/isbot-3.7.0.tgz", - "integrity": "sha512-9BcjlI89966BqWJmYdTnRub85sit931MyCthSIPtgoOsTjoW7A2MVa09HzPpYE2+G4vyAxfDvR0AbUGV0FInQg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-circus/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-cli/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-config/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-each/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-jsdom/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-node/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-haste-map/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runner/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runtime/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-snapshot/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watch-typeahead": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", - "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^28.0.0", - "jest-watcher": "^28.0.0", - "slash": "^4.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "jest": "^27.0.0 || ^28.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "dev": true, - "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", - "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", - "dev": true, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watcher/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jiti": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", - "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpath": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", - "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", - "dev": true, - "dependencies": { - "esprima": "1.2.2", - "static-eval": "2.0.2", - "underscore": "1.12.1" - } - }, - "node_modules/jsonpath/node_modules/esprima": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dev": true, - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", - "dev": true, - "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libnpx": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/libnpx/-/libnpx-10.2.4.tgz", - "integrity": "sha512-BPc0D1cOjBeS8VIBKUu5F80s6njm0wbVt7CsGMrIcJ+SI7pi7V0uVPGpEMH9H5L8csOcclTxAXFE2VAsJXUhfA==", - "dependencies": { - "dotenv": "^5.0.1", - "npm-package-arg": "^6.0.0", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.0", - "update-notifier": "^2.3.0", - "which": "^1.3.0", - "y18n": "^4.0.0", - "yargs": "^14.2.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==", - "dependencies": { - "string-width": "^2.0.0" - } - }, - "node_modules/libnpx/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dependencies": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" - }, - "node_modules/libnpx/node_modules/cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/libnpx/node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/libnpx/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/libnpx/node_modules/configstore": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz", - "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==", - "dependencies": { - "dot-prop": "^4.2.1", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/libnpx/node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/dot-prop": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", - "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", - "dependencies": { - "is-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", - "dependencies": { - "ini": "^1.3.4" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==", - "dependencies": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dependencies": { - "ci-info": "^1.5.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/libnpx/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==", - "dependencies": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", - "dependencies": { - "path-is-inside": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==", - "dependencies": { - "package-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==", - "dependencies": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "dependencies": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/libnpx/node_modules/registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", - "dependencies": { - "rc": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/libnpx/node_modules/semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==", - "dependencies": { - "semver": "^5.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==", - "dependencies": { - "execa": "^0.7.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", - "dependencies": { - "crypto-random-string": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dependencies": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", - "dependencies": { - "prepend-http": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/libnpx/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/libnpx/node_modules/widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dependencies": { - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/libnpx/node_modules/xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/libnpx/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/libnpx/node_modules/yargs": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", - "dependencies": { - "cliui": "^5.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^15.0.1" - } - }, - "node_modules/libnpx/node_modules/yargs-parser": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", - "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/libnpx/node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/libnpx/node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/listify": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/listify/-/listify-1.0.3.tgz", - "integrity": "sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/longest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", - "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/markdown-extensions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-table": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", - "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/md5-hex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-4.0.0.tgz", - "integrity": "sha512-di38zHPn4Tz8LCb5Lz8SpLb/20Hv23aPXpF4Bq1mR5r9JuCZQ/JpcDUxFfZF9Ur5GiUvqS5NQOkR+fm5cYZ0IQ==", - "dependencies": { - "blueimp-md5": "^2.18.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-definitions": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", - "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", - "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/@types/mdast": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.2.tgz", - "integrity": "sha512-tYR83EignvhYO9iU3kDg8V28M0jqyh9zzp5GV+EO+AYnyUl3P5ltkTeJuTiFZQFz670FSb3EwT/6LQdX+UdKfw==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/@types/unist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", - "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==" - }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-frontmatter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.1.tgz", - "integrity": "sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0", - "micromark-extension-frontmatter": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz", - "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==", - "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-gfm-autolink-literal": "^1.0.0", - "mdast-util-gfm-footnote": "^1.0.0", - "mdast-util-gfm-strikethrough": "^1.0.0", - "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz", - "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "ccount": "^2.0.0", - "mdast-util-find-and-replace": "^2.0.0", - "micromark-util-character": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-gfm-autolink-literal/node_modules/mdast-util-find-and-replace": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", - "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==", - "dependencies": { - "@types/mdast": "^3.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz", - "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0", - "micromark-util-normalize-identifier": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz", - "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", - "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz", - "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", - "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", - "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdx-jsx": "^2.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", - "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", - "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "ccount": "^2.0.0", - "mdast-util-from-markdown": "^1.1.0", - "mdast-util-to-markdown": "^1.3.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", - "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "node_modules/mdx-bundler": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/mdx-bundler/-/mdx-bundler-9.2.1.tgz", - "integrity": "sha512-hWEEip1KU9MCNqeH2rqwzAZ1pdqPPbfkx9OTJjADqGPQz4t9BO85fhI7AP9gVYrpmfArf9/xJZUN0yBErg/G/Q==", - "dependencies": { - "@babel/runtime": "^7.16.3", - "@esbuild-plugins/node-resolve": "^0.1.4", - "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@mdx-js/esbuild": "^2.0.0", - "gray-matter": "^4.0.3", - "remark-frontmatter": "^4.0.1", - "remark-mdx-frontmatter": "^1.1.1", - "uuid": "^8.3.2", - "vfile": "^5.3.2" - }, - "engines": { - "node": ">=14", - "npm": ">=6" - }, - "peerDependencies": { - "esbuild": "0.*" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-frontmatter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.1.1.tgz", - "integrity": "sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==", - "dependencies": { - "fault": "^2.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz", - "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^1.0.0", - "micromark-extension-gfm-footnote": "^1.0.0", - "micromark-extension-gfm-strikethrough": "^1.0.0", - "micromark-extension-gfm-table": "^1.0.0", - "micromark-extension-gfm-tagfilter": "^1.0.0", - "micromark-extension-gfm-task-list-item": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz", - "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz", - "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==", - "dependencies": { - "micromark-core-commonmark": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz", - "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz", - "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz", - "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==", - "dependencies": { - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz", - "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-expression": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", - "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/estree": "^1.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", - "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", - "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-md": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", - "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", - "dependencies": { - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", - "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^1.0.0", - "micromark-extension-mdx-jsx": "^1.0.0", - "micromark-extension-mdx-md": "^1.0.0", - "micromark-extension-mdxjs-esm": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", - "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", - "dependencies": { - "@types/estree": "^1.0.0", - "micromark-core-commonmark": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.1.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-mdx-expression": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", - "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/estree": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, - "node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "ms": "^2.1.1" } }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-import-resolver-node/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" } }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-import-resolver-typescript/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "node_modules/eslint-import-resolver-typescript/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true } - ], + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" + "ms": "^2.1.1" } }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/eslint-module-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "node_modules/micromark-util-events-to-acorn": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", - "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "@types/unist": "^2.0.0", - "estree-util-visit": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { - "micromark-util-types": "^1.0.0" + "ms": "^2.1.1" } }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/eslint-plugin-import/node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "26.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz", + "integrity": "sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "@typescript-eslint/utils": "^5.10.0" }, "engines": { - "node": ">=8.6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } } }, - "node_modules/middleearth-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/middleearth-names/-/middleearth-names-1.1.0.tgz", - "integrity": "sha512-Oo1mbq9odpn6KHsDs8/UA5xFfX/gcrY+jWZpvd5MDaX0tjkxA7S7NTREQuqD7DWfluDgygjhKvETMWbwd3A9sA==", + "node_modules/eslint-plugin-jest-dom": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-4.0.3.tgz", + "integrity": "sha512-9j+n8uj0+V0tmsoS7bYC7fLhQmIvjRqRYEcbDSi+TKPsTThLLXCyj5swMSSf/hTleeMktACnn+HFqXBr5gbcbA==", "dependencies": { - "unique-random-array": "1.0.0" + "@babel/runtime": "^7.16.3", + "@testing-library/dom": "^8.11.1", + "requireindex": "^1.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "eslint": "^6.8.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" + "node_modules/eslint-plugin-jest-dom/node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/eslint-plugin-jest-dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/eslint-plugin-jest-dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "mime-db": "1.52.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/mini-css-extract-plugin": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", - "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", - "dev": true, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dependencies": { - "schema-utils": "^4.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": ">= 12.13.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "webpack": "^5.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, + "node_modules/eslint-plugin-jest/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-plugin-jest/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-plugin-jest/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { - "fast-deep-equal": "^3.1.3" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" }, - "peerDependencies": { - "ajv": "^8.8.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, + "node_modules/eslint-plugin-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=10" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "node_modules/eslint-plugin-jest/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint-plugin-jest/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { - "brace-expansion": "^1.1.7" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "node_modules/eslint-plugin-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" + "dequal": "^2.0.3" } }, - "node_modules/morgan/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "ms": "2.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/morgan/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "ee-first": "1.1.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/mq-polyfill": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/mq-polyfill/-/mq-polyfill-1.1.8.tgz", - "integrity": "sha512-7FolPfVZMGhkOSY4VKdHCowas+j4quxU/z43lmaK4pXCPtTllSKVb5w6mIB1CSzX0kY7x9KcYsLIkmFxpEdtIg==", - "engines": { - "node": ">=6.*" + "node": "*" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, "engines": { - "node": ">=4" + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" } }, - "node_modules/mrm": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/mrm/-/mrm-3.0.10.tgz", - "integrity": "sha512-aRByZsPXMM8W0NHNH9afkKyk5OW4bB5pYNRIN+8iSVfpMAzqeMejmj/yIYcdFNJTksXmdPMfTaucm2NYdh4xIw==", - "dependencies": { - "git-username": "^1.0.0", - "glob": "^7.1.6", - "inquirer": "^7.0.4", - "is-directory": "^0.3.1", - "kleur": "^3.0.3", - "libnpx": "^10.2.4", - "listify": "^1.0.0", - "lodash": "^4.17.15", - "longest": "^2.0.1", - "middleearth-names": "^1.1.0", - "minimist": "^1.2.0", - "mrm-core": "^6.1.7", - "semver-utils": "^1.1.4", - "update-notifier": "^4.1.0", - "user-home": "^2.0.0", - "user-meta": "^1.0.0", - "which": "^2.0.2" - }, - "bin": { - "mrm": "bin/mrm.js" - }, - "engines": { - "node": ">=10.13" + "node_modules/eslint-plugin-node/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/mrm-core": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/mrm-core/-/mrm-core-6.1.7.tgz", - "integrity": "sha512-jLGWrkupcgGIsLerrI/xmM/dFHbaoehRsuVbgYBrxYKXNMRBHN3Mgkd8cw+/ZCCoiZEXF8/SaZol0GCp6oBQ9g==", + "node_modules/eslint-plugin-node/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "babel-code-frame": "^6.26.0", - "comment-json": "^2.2.0", - "detect-indent": "^6.0.0", - "editorconfig": "^0.15.3", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0", - "kleur": "^3.0.3", - "listify": "^1.0.0", - "lodash": "^4.17.15", - "minimist": "^1.2.0", - "prop-ini": "^0.0.2", - "rc": "^1.2.8", - "readme-badger": "^0.3.0", - "semver": "^6.3.0", - "smpltmpl": "^1.0.2", - "split-lines": "^2.0.0", - "strip-bom": "^4.0.0", - "validate-npm-package-name": "^3.0.0", - "webpack-merge": "^4.2.2", - "yaml": "^2.0.0-1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10.13" + "node": "*" } }, - "node_modules/mrm-core/node_modules/semver": { + "node_modules/eslint-plugin-node/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -20488,273 +6878,259 @@ "semver": "bin/semver.js" } }, - "node_modules/mrm-core/node_modules/yaml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", - "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, "engines": { - "node": ">= 14" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "engines": { "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/msw": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/msw/-/msw-0.28.2.tgz", - "integrity": "sha512-WHfRd+Zwfy8yNPAx4PDJ0PnaEqUw5QOjWbCk5MmgpHMl51R3FJ2yIC694RdqR1bInqoaV94wW9Irv9eSyh65lQ==", - "hasInstallScript": true, - "dependencies": { - "@mswjs/cookies": "^0.1.4", - "@mswjs/interceptors": "^0.8.0", - "@open-draft/until": "^1.0.3", - "@types/cookie": "^0.4.0", - "@types/inquirer": "^7.3.1", - "@types/js-levenshtein": "^1.1.0", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cookie": "^0.4.1", - "graphql": "^15.4.0", - "headers-utils": "^3.0.2", - "inquirer": "^7.3.3", - "js-levenshtein": "^1.1.6", - "node-fetch": "^2.6.1", - "node-match-path": "^0.6.1", - "statuses": "^2.0.0", - "strict-event-emitter": "^0.2.0", - "yargs": "^16.2.0" }, - "bin": { - "msw": "cli/index.js" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" + "esutils": "^2.0.2" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=0.10.0" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.6" + "node": "*" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, "engines": { - "node": ">=10.5.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" } }, - "node_modules/node-emoji": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.0.tgz", - "integrity": "sha512-tcsBm9C6FmPN5Wo7OjFi9lgMyJjvkAeirmjR/ax8Ttfqy4N8PoFic26uqFTIgayHPNI5FH4ltUvfh9kHzwcK9A==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dependencies": { - "@sindresorhus/is": "^3.1.2", - "char-regex": "^1.0.2", - "emojilib": "^2.4.0", - "skin-tone": "^2.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/node-emoji/node_modules/@sindresorhus/is": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", - "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dependencies": { - "whatwg-url": "^5.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "4.x || >=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "encoding": "^0.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "encoding": { + "typescript": { "optional": true } } }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, "engines": { - "node": ">= 6.13.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-match-path": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/node-match-path/-/node-match-path-0.6.3.tgz", - "integrity": "sha512-fB1reOHKLRZCJMAka28hIxCwQLxGmd7WewOCBDYKpyA1KXi68A7vaGgdZAPhY2E6SXoYt3KqYCCvXLJ+O0Fu/Q==" - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node_modules/eslint-plugin-testing-library/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/eslint-plugin-testing-library/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, + "node_modules/eslint-plugin-testing-library/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, + "node_modules/eslint-plugin-testing-library/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, "engines": { "node": ">=10" }, @@ -20762,920 +7138,909 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize.css": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", - "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" - }, - "node_modules/npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "node_modules/eslint-plugin-testing-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/npm-package-arg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } + "node_modules/eslint-plugin-testing-library/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, + "node_modules/eslint-plugin-testing-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" + "lru-cache": "^6.0.0" }, "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" + "semver": "bin/semver.js" }, "engines": { - "node": ">= 4" + "node": ">=10" } }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, + "node_modules/eslint-plugin-testing-library/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, "engines": { - "node": ">=4.8" + "node": ">=8" } }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm-run-all/node_modules/path-key": { + "node_modules/eslint/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "bin": { - "semver": "bin/semver" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "argparse": "^2.0.1" }, "bin": { - "which": "bin/which" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { - "path-key": "^2.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "boolbase": "^1.0.0" + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", - "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">= 0.4" + "node": ">=4" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10" } }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=4.0" } }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { - "node": ">= 0.4" + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", - "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", - "dev": true, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "safe-array-concat": "^1.0.0" - }, - "engines": { - "node": ">= 0.8" + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, + "node_modules/estree-util-value-to-estree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz", + "integrity": "sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "@types/estree": "^1.0.0", + "is-plain-obj": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/remcohaszing" } }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", "dependencies": { - "ee-first": "1.1.1" + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">= 0.8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "node_modules/estree-util-visit/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=16.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.10.0" } }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/express/node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, "engines": { "node": ">=4" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { - "p-try": "^2.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.6.0" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "reusify": "^1.0.4" } }, - "node_modules/p-queue": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz", - "integrity": "sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==", + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^5.0.2" - }, - "engines": { - "node": ">=12" + "format": "^0.2.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/p-queue/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" + "escape-string-regexp": "^1.0.5" }, "engines": { "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", - "engines": { - "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { - "node": ">=6" + "node": ">=0.8.0" } }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { - "callsites": "^3.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-entities/node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">= 0.8" } }, - "node_modules/parse-git-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-1.1.1.tgz", - "integrity": "sha512-S3LGXJZVSy/hswvbSkfdbKBRVsnqKrVu6j8fcvdtJ4TxosSELyQDsJPuGPXuZ+EyuYuJd3O4uAF8gcISR0OFrQ==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "fs-exists-sync": "^0.1.0", - "git-config-path": "^1.0.1", - "ini": "^1.3.4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-git-diff": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/parse-git-diff/-/parse-git-diff-0.0.13.tgz", - "integrity": "sha512-e6JcUFbn1NcKUXDujzpi+uX6qPtmQ0q43X3kslCjE3dl4EGBCv7Ujd1hB924nrt4gXbJ0RDZHJFsVuQ/Ol07Lw==" - }, - "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", - "bin": { - "parse-github-url": "cli.js" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/fkill": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fkill/-/fkill-9.0.0.tgz", + "integrity": "sha512-MdYSsbdCaIRjzo5edthZtWmEZVMfr1qrtYZUHIdO3swCE+CoZA8S5l0s4jDsYlTa9ZiXv0pTgpzE7s4N8NeUOA==", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "aggregate-error": "^5.0.0", + "execa": "^8.0.1", + "pid-port": "^1.0.0", + "process-exists": "^5.0.0", + "ps-list": "^8.1.1", + "taskkill": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "is-callable": "^1.1.3" } }, - "node_modules/patch-package": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", - "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", - "dev": true, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "cross-spawn": "^6.0.5", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^9.0.0", - "is-ci": "^2.0.0", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "rimraf": "^2.6.3", - "semver": "^5.6.0", - "slash": "^2.0.0", - "tmp": "^0.0.33", - "yaml": "^1.10.2" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, - "bin": { - "patch-package": "index.js" + "engines": { + "node": ">=14" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { - "node": ">=10", - "npm": ">5" + "node": ">= 0.6" } }, - "node_modules/patch-package/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { - "node": ">=4.8" + "node": ">= 0.6" } }, - "node_modules/patch-package/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.14" } }, - "node_modules/patch-package/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, - "node_modules/patch-package/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/patch-package/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/patch-package/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dependencies": { - "shebang-regex": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/patch-package/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, - "node_modules/patch-package/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { - "node": ">= 10.0.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/patch-package/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "isexe": "^2.0.0" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "bin": { - "which": "bin/which" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/get-port": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", + "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", "engines": { - "node": ">=0.10.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -21684,6817 +8049,6294 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": "14 || >=16.14" + "node": ">= 6" } }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "type-fest": "^0.20.2" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pid-port": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/pid-port/-/pid-port-0.2.0.tgz", - "integrity": "sha512-xVU9H1FCRSeGrD9Oim5bLg2U7B2BgW0qzK2oahpV5BIf9hwzqQaWyOkOVC0Kgbsc90A9x6525beawx+QK+JduQ==", + "node_modules/globby": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", + "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", "dependencies": { - "execa": "^5.1.1" + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">=0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "node_modules/graphql": { + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, - "node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", "dependencies": { - "find-up": "^5.0.0" + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=6.0" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { - "p-locate": "^5.0.0" + "get-intrinsic": "^1.2.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dependencies": { - "p-limit": "^3.0.2" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { - "find-up": "^3.0.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, + "node_modules/hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", "dependencies": { - "locate-path": "^3.0.0" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, + "node_modules/hast-util-to-estree/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" + "@types/unist": "*" } }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.2.0.tgz", + "integrity": "sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==", "dependencies": { - "p-limit": "^2.0.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "semver-compare": "^1.0.0" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/hast-util-to-jsx-runtime/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "engines": { - "node": "^10 || ^12 || >=14" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", - "dev": true, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "@types/hast": "^3.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/headers-polyfill": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.2.tgz", + "integrity": "sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==" + }, + "node_modules/hls.js": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.14.tgz", + "integrity": "sha512-UppQjyvPVclg+6t2KY/Rv03h0+bA5u6zwqVoz4LAC/L0fgYmIaCD7ZCrwe8WI1Gv01be1XL0QFsRbSdIHV/Wbw==" + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, - "peerDependencies": { - "postcss": "^8.2" + "engines": { + "node": ">= 0.8" } }, - "node_modules/postcss-browser-comments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", - "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", - "dev": true, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "engines": { - "node": ">=8" - }, - "peerDependencies": { - "browserslist": ">=4", - "postcss": ">=8" + "node": ">=16.17.0" } }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" + "safer-buffer": ">= 2.1.2 < 3" }, - "peerDependencies": { - "postcss": "^8.2.2" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/postcss-clamp": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", - "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "engines": { - "node": ">=7.6.0" - }, - "peerDependencies": { - "postcss": "^8.4.6" + "node": ">= 4" } }, - "node_modules/postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "postcss-value-parser": "^4.2.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=0.8.19" } }, - "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", - "dev": true, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" + "node": ">=12.0.0" } }, - "node_modules/postcss-custom-properties": { - "version": "12.1.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", - "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=8" } }, - "node_modules/postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", - "dev": true, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", - "dev": true, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "postcss-selector-parser": "^6.0.10" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } + "node_modules/inquirer/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" + "node_modules/inquirer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "dev": true, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=8" } }, - "node_modules/postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-flexbugs-fixes": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8.1.4" + "node": ">=8" } }, - "node_modules/postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "dev": true, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dependencies": { - "postcss-selector-parser": "^6.0.9" + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">= 0.4" } }, - "node_modules/postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "dev": true, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "loose-envify": "^1.0.0" } }, - "node_modules/postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "peerDependencies": { - "postcss": "^8.1.0" + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" } }, - "node_modules/postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, - "peerDependencies": { - "postcss": "^8.2" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", - "dev": true, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" }, - "peerDependencies": { - "postcss": "^8.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8.0.0" - } + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dependencies": { - "camelcase-css": "^2.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^12 || ^14 || >= 16" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", - "dev": true, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "has-bigints": "^1.0.1" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" }, - "peerDependencies": { - "postcss": "^8.2" + "engines": { + "node": ">=8" } }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dev": true, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "ts-node": { - "optional": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "engines": { + "node": ">=4" } }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", - "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", - "dev": true, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { - "node": ">= 14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "dev": true, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" + "hasown": "^2.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "call-bind": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "dev": true, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", - "dev": true, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=8" } }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=12" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" + "@types/estree": "*" } }, - "node_modules/postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", - "dev": true, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", - "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", - "dev": true, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dependencies": { - "@csstools/normalize.css": "*", - "postcss-browser-comments": "^4", - "sanitize.css": "*" - }, - "engines": { - "node": ">= 12" + "call-bind": "^1.0.2" }, - "peerDependencies": { - "browserslist": ">= 4", - "postcss": ">= 8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "which-typed-array": "^1.1.11" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "call-bind": "^1.0.2" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dev": true, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/isbot": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-3.7.1.tgz", + "integrity": "sha512-JfqOaY3O1lcWt2nc+D6Mq231CNpwZrBboLa59Go0J8hjGH+gY/Sy0CA/YLUSIScINmAVwTdJZIsOTk4PfBtRuw==", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=12" } }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=14" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/postcss-opacity-percentage": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", - "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", - "dev": true, - "funding": [ - { - "type": "kofi", - "url": "https://ko-fi.com/mrcgrtz" - }, - { - "type": "liberapay", - "url": "https://liberapay.com/mrcgrtz" - } - ], - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.2" + "node_modules/jose": { + "version": "4.15.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.4.tgz", + "integrity": "sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==", + "funding": { + "url": "https://github.com/sponsors/panva" } }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", - "dev": true, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" }, - "peerDependencies": { - "postcss": "^8.2" + "engines": { + "node": ">=4" } }, - "node_modules/postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8" - } + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, - "node_modules/postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=6" } }, - "node_modules/postcss-preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", - "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", - "dev": true, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { - "@csstools/postcss-cascade-layers": "^1.1.1", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.13", - "browserslist": "^4.21.4", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.1.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.10", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.2.0", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "universalify": "^2.0.0" }, - "peerDependencies": { - "postcss": "^8.2" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "dev": true, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dependencies": { - "postcss-selector-parser": "^6.0.10" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=4.0" } }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - }, + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dependencies": { - "postcss-value-parser": "^4.2.0" + "language-subtag-registry": "^0.3.20" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "peerDependencies": { - "postcss": "^8.0.3" + "node": ">=0.10" } }, - "node_modules/postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.10" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">= 0.8.0" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" + "p-locate": "^5.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/postcss-svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" }, - "node_modules/postcss-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/postcss-svgo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "14 || >=16.14" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/prismjs": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", - "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", - "engines": { - "node": ">=6" + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/process-exists": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/process-exists/-/process-exists-4.1.0.tgz", - "integrity": "sha512-BBJoiorUKoP2AuM5q/yKwIfT1YWRHsaxjW+Ayu9erLhqKOfnXzzVVML0XTYoQZuI1YvcWKmc1dh06DEy4+KzfA==", + "node_modules/md5-hex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-5.0.0.tgz", + "integrity": "sha512-18TKd0nxBzMLflLBSCM/I9n50izl7NQGuujgbKjVUs/9acY+a5uzpDUVd4wV130vaK67TzDnPin2gze88u+e4Q==", "dependencies": { - "ps-list": "^6.3.0" + "blueimp-md5": "^2.19.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/process-exists/node_modules/ps-list": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-6.3.0.tgz", - "integrity": "sha512-qau0czUSB0fzSlBOQt0bo+I2v6R+xiQdj78e1BR/Qjfl5OHWJ/urXi8+ilw1eHe+5hSeDI1wrwVTgDp2wst4oA==", - "engines": { - "node": ">=8" + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dev": true, + "node_modules/mdast-util-find-and-replace/node_modules/@types/mdast": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.2.tgz", + "integrity": "sha512-tYR83EignvhYO9iU3kDg8V28M0jqyh9zzp5GV+EO+AYnyUl3P5ltkTeJuTiFZQFz670FSb3EwT/6LQdX+UdKfw==", "dependencies": { - "asap": "~2.0.6" + "@types/unist": "*" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, + "node_modules/mdast-util-find-and-replace/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==" + }, + "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/prop-ini": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/prop-ini/-/prop-ini-0.0.2.tgz", - "integrity": "sha512-qyU57WvAvZDbzmRy9xDbJGVwrGJhmA+rYnVjy4xtX4Ny9c7gzvpmf/j7A3oq9ChbPh15MZQKjPep2mNdnAhtig==", + "node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", "dependencies": { - "extend": "^3.0.0" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/mdast-util-from-markdown/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "@types/unist": "*" } }, - "node_modules/property-information": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.3.0.tgz", - "integrity": "sha512-gVNZ74nqhRMiIUYWGQdosYetaKc83x8oT41a0LlV3AAFCAZwCpg4vmGkq8t34+cUhp3cnM4XDiU/7xlgK7HGrg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/mdast-util-from-markdown/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "node_modules/mdast-util-from-markdown/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ps-list": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-7.2.0.tgz", - "integrity": "sha512-v4Bl6I3f2kJfr5o80ShABNHAokIgY+wFDTQfE+X3zWYgSGQOCBeYptLZUpoOALBqO5EawmDN/tjTldJesd0ujQ==", - "engines": { - "node": ">=10" + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/mdast-util-frontmatter/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "@types/unist": "*" } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", "dependencies": { - "escape-goat": "^2.0.0" + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node_modules/mdast-util-gfm-autolink-literal/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dev": true, + "node_modules/mdast-util-gfm-footnote/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "performance-now": "^2.1.0" + "@types/unist": "*" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "dependencies": { - "safe-buffer": "^5.1.0" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" + "node_modules/mdast-util-gfm-strikethrough/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "node_modules/mdast-util-gfm-table/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" + "@types/unist": "*" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://opencollective.com/unified" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/mdast-util-gfm-task-list-item/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" + "@types/unist": "*" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", "dependencies": { - "loose-envify": "^1.1.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-app-polyfill": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", - "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", - "dev": true, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", "dependencies": { - "core-js": "^3.19.2", - "object-assign": "^4.1.1", - "promise": "^8.1.0", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.9", - "whatwg-fetch": "^3.6.2" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": ">=14" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true + "node_modules/mdast-util-mdx-expression/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dependencies": { + "@types/unist": "*" + } }, - "node_modules/react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", - "dev": true, + "node_modules/mdast-util-mdx-expression/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" + "@types/unist": "*" } }, - "node_modules/react-dev-utils/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/mdast-util-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-dev-utils/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, + "node_modules/mdast-util-mdx-jsx/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/unist": "*" } }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, - "engines": { - "node": ">= 12.13.0" + "node_modules/mdast-util-mdx-jsx/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, + "node_modules/mdast-util-mdx-jsx/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-dev-utils/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, + "node_modules/mdast-util-mdx-jsx/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-dev-utils/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, + "node_modules/mdast-util-mdxjs-esm/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/unist": "*" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/mdast-util-mdxjs-esm/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" + "@types/unist": "*" } }, - "node_modules/react-error-boundary": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", - "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", + "node_modules/mdast-util-phrasing": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", + "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==", "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=10", - "npm": ">=6" + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" }, - "peerDependencies": { - "react": ">=16.13.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-error-overlay": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", - "dev": true - }, - "node_modules/react-icons": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz", - "integrity": "sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==", - "peerDependencies": { - "react": "*" + "node_modules/mdast-util-phrasing/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "node_modules/mdast-util-phrasing/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/mdast-util-phrasing/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-router": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", - "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "node_modules/mdast-util-to-hast": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", + "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" }, - "peerDependencies": { - "react": ">=15" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-router-dom": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", - "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "node_modules/mdast-util-to-hast/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.4", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" + "@types/unist": "*" } }, - "node_modules/react-scripts": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", - "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", - "dev": true, + "node_modules/mdast-util-to-hast/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "@babel/core": "^7.16.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@svgr/webpack": "^5.5.0", - "babel-jest": "^27.4.2", - "babel-loader": "^8.2.3", - "babel-plugin-named-asset-import": "^0.3.8", - "babel-preset-react-app": "^10.0.1", - "bfj": "^7.0.2", - "browserslist": "^4.18.1", - "camelcase": "^6.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^3.2.0", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "eslint": "^8.3.0", - "eslint-config-react-app": "^7.0.1", - "eslint-webpack-plugin": "^3.1.1", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "html-webpack-plugin": "^5.5.0", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.3", - "jest-resolve": "^27.4.2", - "jest-watch-typeahead": "^1.0.0", - "mini-css-extract-plugin": "^2.4.5", - "postcss": "^8.4.4", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^6.2.1", - "postcss-normalize": "^10.0.1", - "postcss-preset-env": "^7.0.1", - "prompts": "^2.4.2", - "react-app-polyfill": "^3.0.0", - "react-dev-utils": "^12.0.1", - "react-refresh": "^0.11.0", - "resolve": "^1.20.0", - "resolve-url-loader": "^4.0.0", - "sass-loader": "^12.3.0", - "semver": "^7.3.5", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.1", - "tailwindcss": "^3.0.2", - "terser-webpack-plugin": "^5.2.5", - "webpack": "^5.64.4", - "webpack-dev-server": "^4.6.0", - "webpack-manifest-plugin": "^4.0.2", - "workbox-webpack-plugin": "^6.4.1" - }, - "bin": { - "react-scripts": "bin/react-scripts.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - }, - "peerDependencies": { - "react": ">= 16", - "typescript": "^3.2.1 || ^4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@types/unist": "*" } }, - "node_modules/react-scripts/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-scripts/node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/mdast-util-to-markdown/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/react-scripts/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, + "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@types/mdast": "^4.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-scripts/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, + "node_modules/mdast-util-to-string/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "@types/unist": "*" } }, - "node_modules/react-scripts/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, + "node_modules/mdx-bundler": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdx-bundler/-/mdx-bundler-10.0.1.tgz", + "integrity": "sha512-y/+RtkJf+vTQTl8Ae/zql42igpcp44ja8a2S74tWq87rX+R22Zwn4OmPc5APO+xhIaIy/I1oxoxlPrt4GwEuGQ==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@esbuild-plugins/node-resolve": "^0.2.2", + "@fal-works/esbuild-plugin-global-externals": "^2.1.2", + "@mdx-js/esbuild": "^3.0.0", + "gray-matter": "^4.0.3", + "remark-frontmatter": "^5.0.0", + "remark-mdx-frontmatter": "^4.0.0", + "uuid": "^9.0.1", + "vfile": "^6.0.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=18", + "npm": ">=6" + }, + "peerDependencies": { + "esbuild": "0.*" } }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, + "node_modules/mdx-bundler/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/mdx-bundler/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "pify": "^2.3.0" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, + "node_modules/mdx-bundler/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, + "node_modules/mdx-bundler/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "pify": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, + "node_modules/media-chrome": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-2.0.1.tgz", + "integrity": "sha512-6hoC5OY993t4o/YKYXn7YoWUAKG1UFAhnDXNN6kRRa5mnuL+Cwct/2Md16S4jjmTSmN5XjhEWwfCVM5NLHavOA==" + }, + "node_modules/media-tracks": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-tracks/-/media-tracks-0.3.0.tgz", + "integrity": "sha512-kicD8eOFwe6nD7jn7iM/0yuLzWuo6abWHURYwY7NhxL1dBif+lt0on4rLTs6VhKwAEE/BjT3wr+0vn1w8SBpag==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">= 0.10.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "engines": { - "node": ">=8.10.0" + "node": ">= 8" } }, - "node_modules/readme-badger": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/readme-badger/-/readme-badger-0.3.0.tgz", - "integrity": "sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g==", - "dependencies": { - "balanced-match": "^1.0.0" + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dev": true, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/micromark-core-commonmark": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", + "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", - "dev": true, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/refractor": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", - "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", "dependencies": { - "hastscript": "^6.0.0", - "parse-entities": "^2.0.0", - "prismjs": "~1.27.0" + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", "dependencies": { - "regenerate": "^1.4.2" + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", "dependencies": { - "@babel/runtime": "^7.8.4" + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, + "node_modules/micromark-extension-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", "dependencies": { - "rc": "1.2.8" + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", "dependencies": { - "rc": "^1.2.8" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" - } + "node_modules/micromark-extension-mdx-jsx/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/remark-autolink-headings": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/remark-autolink-headings/-/remark-autolink-headings-7.0.1.tgz", - "integrity": "sha512-a1BIwoJ0cSnX+sPp5u3AFULBFWHGYBt57Fo4a+7IlGiJOQxs8b7uYAE5Iu26Ocl7Y5cvinZy3FaGVruLCKg6vA==", + "node_modules/micromark-extension-mdx-jsx/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "extend": "^3.0.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-autolink-headings/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "node_modules/micromark-extension-mdx-jsx/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-autolink-headings/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-emoji": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.0.tgz", - "integrity": "sha512-lQP1lFaYOz6zyJTBfOwYChM1YkgJEVcxSnUBkjo9qujqWwpY36MRFzDjYDk9YNdHqkw5yExB8MnVVHb6wX9QNA==", + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", "dependencies": { - "emoticon": "^4.0.1", - "mdast-util-find-and-replace": "^3.0.0", - "node-emoji": "^2.1.0" + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-frontmatter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz", - "integrity": "sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==", + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-frontmatter": "^1.0.0", - "micromark-extension-frontmatter": "^1.0.0", - "unified": "^10.0.0" + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-gfm": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", - "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "node_modules/micromark-extension-mdxjs-esm/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-gfm": "^2.0.0", - "micromark-extension-gfm": "^2.0.0", - "unified": "^10.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-mdx": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", - "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", + "node_modules/micromark-extension-mdxjs-esm/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "mdast-util-mdx": "^2.0.0", - "micromark-extension-mdxjs": "^1.0.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-mdx-frontmatter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/remark-mdx-frontmatter/-/remark-mdx-frontmatter-1.1.1.tgz", - "integrity": "sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA==", + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "estree-util-is-identifier-name": "^1.0.0", - "estree-util-value-to-estree": "^1.0.0", - "js-yaml": "^4.0.0", - "toml": "^3.0.0" - }, - "engines": { - "node": ">=12.2.0" + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/remark-mdx-frontmatter/node_modules/argparse": { + "node_modules/micromark-factory-mdx-expression": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } }, - "node_modules/remark-mdx-frontmatter/node_modules/estree-util-is-identifier-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz", - "integrity": "sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==", + "node_modules/micromark-factory-mdx-expression/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/micromark-factory-mdx-expression/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-mdx-frontmatter/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/micromark-factory-mdx-expression/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "argparse": "^2.0.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/remix-flat-routes": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/remix-flat-routes/-/remix-flat-routes-0.5.12.tgz", - "integrity": "sha512-NsskCt0euxpTNvLsCVW2UzOFK7YIeldQI00a+rIglgavAMUoFVe7tiPTkq4LJ2AXGsfIDq7kPa63ftqOLst+Dg==", + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@remix-run/v1-route-convention": "^0.1.3", - "minimatch": "^5.1.0" - }, - "bin": { - "migrate-flat-routes": "dist/cli.js" - }, - "peerDependencies": { - "@remix-run/dev": "^1.15.0 || ^2" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/remix-flat-routes/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "balanced-match": "^1.0.0" + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/remix-flat-routes/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/remote-origin-url": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remote-origin-url/-/remote-origin-url-1.0.0.tgz", - "integrity": "sha512-xHDM6IBqivpiQ1e4WOuFpM/T6rbzA/WBsu+3WLtgPOhHyjA0nYlijV3NprlTb4FcXlQ5+Q+z174sQ1NnUF5FwA==", + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "parse-git-config": "^1.1.1" - }, - "engines": { - "node": ">= 0.8.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/replace-in-file": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.5.tgz", - "integrity": "sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg==", + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "chalk": "^4.1.2", - "glob": "^7.2.0", - "yargs": "^17.2.1" - }, - "bin": { - "replace-in-file": "bin/cli.js" - }, - "engines": { - "node": ">=10" + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" } }, - "node_modules/replace-in-file/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/micromark-util-events-to-acorn/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/micromark-util-events-to-acorn/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/replace-in-file/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/micromark-util-events-to-acorn/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/replace-in-file/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/require-main-filename": { + "node_modules/micromark-util-resolve-all": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/micromark-util-subtokenize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", + "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", - "dev": true, + "node_modules/micromark/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" + "ms": "2.1.2" }, "engines": { - "node": ">=8.9" - }, - "peerDependencies": { - "rework": "1.0.1", - "rework-visit": "1.0.0" + "node": ">=6.0" }, "peerDependenciesMeta": { - "rework": { - "optional": true - }, - "rework-visit": { + "supports-color": { "optional": true } } }, - "node_modules/resolve-url-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "node_modules/micromark/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/resolve-url-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8.6" } }, - "node_modules/resolve-url-loader/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { - "node": ">=10" - } - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dependencies": { - "lowercase-keys": "^1.0.0" + "node": ">= 0.6" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "mime-db": "1.52.0" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "engines": { - "node": ">= 4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", - "dev": true, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" }, - "peerDependencies": { - "rollup": "^2.0.0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "ee-first": "1.1.1" }, "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" + "node": ">= 0.8" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", "engines": { - "node": ">=0.12.0" + "node": ">=10" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "node_modules/msw": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.0.9.tgz", + "integrity": "sha512-rl3kuGS+wuB4EKyL5nJ5WIoteCIzIgySp5b2hmIQ7fuXFfDfn/yD+E0k/3lDNFnC79tM3cuws6XmJEdPr7y+Zg==", + "hasInstallScript": true, "dependencies": { - "tslib": "^1.9.0" + "@bundled-es-modules/cookie": "^2.0.0", + "@bundled-es-modules/js-levenshtein": "^2.0.1", + "@bundled-es-modules/statuses": "^1.0.1", + "@mswjs/cookies": "^1.1.0", + "@mswjs/interceptors": "^0.25.11", + "@open-draft/until": "^2.1.0", + "@types/cookie": "^0.4.1", + "@types/js-levenshtein": "^1.1.1", + "@types/statuses": "^2.0.1", + "chalk": "^4.1.2", + "chokidar": "^3.4.2", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.1", + "inquirer": "^8.2.0", + "is-node-process": "^1.2.0", + "js-levenshtein": "^1.1.6", + "outvariant": "^1.4.0", + "path-to-regexp": "^6.2.0", + "strict-event-emitter": "^0.5.0", + "type-fest": "^2.19.0", + "yargs": "^17.3.1" + }, + "bin": { + "msw": "cli/index.js" }, "engines": { - "npm": ">=2.0.0" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.7.x <= 5.2.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/msw/node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "node_modules/msw/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "mri": "^1.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, + "node_modules/msw/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "node_modules/msw/node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/mux-embed": { + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-4.30.0.tgz", + "integrity": "sha512-XAgAp4CEvsiZL26GbruzeG1g33OWyrzuskDMavXUxDufTxS0/AxAhwoTTRqEzEJS9vnZa/X9R2GV3xRX1XMp2w==" }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, - "node_modules/sanitize.css": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", - "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", - "dev": true + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" }, - "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, + "node_modules/node-emoji": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.0.tgz", + "integrity": "sha512-tcsBm9C6FmPN5Wo7OjFi9lgMyJjvkAeirmjR/ax8Ttfqy4N8PoFic26uqFTIgayHPNI5FH4ltUvfh9kHzwcK9A==", "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" + "@sindresorhus/is": "^3.1.2", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" } }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" }, - "engines": { - "node": ">= 10.13.0" + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "engines": { + "node": ">= 4" } }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" + "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "node_modules/npm-run-all/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "node-forge": "^1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "color-name": "1.1.3" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "dependencies": { - "semver": "^6.3.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">=8" + "node": ">=4.8" } }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" } }, - "node_modules/semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/semver-utils": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", - "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==" - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/npm-run-all/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=4" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, - "dependencies": { - "randombytes": "^2.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4" } }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "path-key": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { - "node": ">= 0.6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "engines": { + "node": ">= 6" + } }, - "node_modules/set-cookie-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", - "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dependencies": { - "shebang-regex": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shiki": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", - "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/skin-tone": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", - "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dependencies": { - "unicode-emoji-modifier-base": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/oidc-token-hash": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz", + "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==", "engines": { - "node": ">=8" + "node": "^10.13.0 || >=12.0.0" } }, - "node_modules/smpltmpl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/smpltmpl/-/smpltmpl-1.0.2.tgz", - "integrity": "sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ==", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": { - "babel-code-frame": "^6.26.0" + "ee-first": "1.1.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" + "node": ">= 0.8" } }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "engines": { - "node": ">= 8" + "node": ">= 0.8" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "wrappy": "1" } }, - "node_modules/source-map-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", - "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", - "dev": true, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/source-map-loader/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "node_modules/openid-client": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.1.tgz", + "integrity": "sha512-PtrWsY+dXg6y8mtMPyL/namZSYVz8pjXz3yJiBNZsEdCnu9miHLB4ELVC85WvneMKo2Rg62Ay7NkuCpM0bgiLQ==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "jose": "^4.15.1", + "lru-cache": "^6.0.0", + "object-hash": "^2.2.0", + "oidc-token-hash": "^5.0.3" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "url": "https://github.com/sponsors/panva" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, + "node_modules/openid-client/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.8.0" } }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spin-delay": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/spin-delay/-/spin-delay-1.2.0.tgz", - "integrity": "sha512-PkZl5FHWOMrwQgoWejG1hBkIlVx4KbdL/37RPr5/pGq5+NWcGx7NNDukFct2yr8yRZuvwEompNR/in9nWj4sTw==", - "peerDependencies": { - "react": ">=17.0.1" - } - }, - "node_modules/split-lines": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/split-lines/-/split-lines-2.1.0.tgz", - "integrity": "sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw==", + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true - }, - "node_modules/static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "dev": true, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "escodegen": "^1.8.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=8" } }, - "node_modules/static-eval/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/static-eval/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "node_modules/outvariant": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.0.tgz", + "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==" + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/static-eval/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/static-eval/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, + "node_modules/p-queue": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz", + "integrity": "sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^5.0.2" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/static-eval/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, + "node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/static-eval/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "callsites": "^3.0.0" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", "dependencies": { - "internal-slot": "^1.0.4" + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" }, - "engines": { - "node": ">= 0.4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/stream-slice": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz", - "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==" + "node_modules/parse-git-diff": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/parse-git-diff/-/parse-git-diff-0.0.14.tgz", + "integrity": "sha512-UHNB4IWZ0dae4Z9aKgQTAm1gTBqBpmqKwoLx2/iEaVY9hQlqstDnvdWsq5fJjF2iC6368OvAB6LWUJab5wk9VQ==" }, - "node_modules/strict-event-emitter": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", - "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, "dependencies": { - "events": "^3.3.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/string_decoder": { + "node_modules/parse-numeric-range": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true + "node_modules/partysocket": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/partysocket/-/partysocket-0.0.15.tgz", + "integrity": "sha512-5SDv6Bv/i33Qbq/4PCstGBysIV07F0SfCQllPGwR3/th3Y1wFUiReo9ORY242A8H5/shvfDfn6gELMDTFLyZQg==" }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" } }, - "node_modules/string.prototype.padend": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", - "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", - "dev": true, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "node_modules/pid-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pid-port/-/pid-port-1.0.0.tgz", + "integrity": "sha512-LSNBeKChRPA4Xlrs6+zV588G1hSrFvANtPV5rt/5MPfSPK3V9XPWxx1d29svsrOjngT9ifLisXWCLS7DvO9ZhQ==", "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" + "execa": "^8.0.1" + }, + "engines": { + "node": ">=18" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stringify-entities/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, "engines": { "node": ">=4" } }, - "node_modules/stringify-object/node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" + "node_modules/prettier": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/process-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-exists/-/process-exists-5.0.0.tgz", + "integrity": "sha512-6QPRh5fyHD8MaXr4GYML8K/YY0Sq5dKHGIOrAKS3cYpHQdmygFCcijIu1dVoNKAZ0TWAMoeh8KDK9dF8auBkJA==", "dependencies": { - "min-indent": "^1.0.0" + "ps-list": "^8.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/style-loader": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", - "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", - "dev": true, - "engines": { - "node": ">= 12.13.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-to-object": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", - "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { - "inline-style-parser": "0.1.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dev": true, + "node_modules/property-information": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", + "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 0.10" } }, - "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, + "node_modules/ps-list": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.1.tgz", + "integrity": "sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "side-channel": "^1.0.4" }, "engines": { - "node": "*" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dev": true, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" + "loose-envify": "^1.1.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=0.10.0" } }, - "node_modules/svgo/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dependencies": { - "color-convert": "^1.9.0" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "react": "^18.2.0" } }, - "node_modules/svgo/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" }, "engines": { - "node": ">=4" - } - }, - "node_modules/svgo/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/svgo/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true, + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, "engines": { - "node": ">= 6" + "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/svgo/node_modules/has-flag": { + "node_modules/read-pkg": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, "engines": { "node": ">=4" } }, - "node_modules/svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/svgo/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "pify": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/tailwindcss": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", - "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", - "dev": true, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">= 6" } }, - "node_modules/tailwindcss-radix": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tailwindcss-radix/-/tailwindcss-radix-2.8.0.tgz", - "integrity": "sha512-1k1UfoIYgVyBl13FKwwoKavjnJ5VEaUClCTAsgz3VLquN4ay/lyaMPzkbqD71sACDs2fRGImytAUlMb4TzOt1A==" - }, - "node_modules/tailwindcss/node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dependencies": { - "is-glob": "^4.0.3" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">=8.10.0" } }, - "node_modules/taskkill": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-4.0.0.tgz", - "integrity": "sha512-h+BGQ8ExIUZ81h4iHRvatZY5eeBBl2WZk31MmMdFG9LBTc5eCH5u/bzZ7phaPH3bsiB7WhM7YTkOyB2dyFQfXg==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", "dependencies": { - "arrify": "^3.0.0", - "execa": "^5.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", - "dev": true, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tempy/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/remark-autolink-headings": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/remark-autolink-headings/-/remark-autolink-headings-7.0.1.tgz", + "integrity": "sha512-a1BIwoJ0cSnX+sPp5u3AFULBFWHGYBt57Fo4a+7IlGiJOQxs8b7uYAE5Iu26Ocl7Y5cvinZy3FaGVruLCKg6vA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "extend": "^3.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "engines": { - "node": ">=8" + "node_modules/remark-autolink-headings/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, + "node_modules/remark-autolink-headings/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/terser": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", - "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", - "dev": true, + "node_modules/remark-autolink-headings/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dev": true, + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" }, "engines": { - "node": ">= 10.13.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/remark-emoji/node_modules/@types/mdast": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.2.tgz", + "integrity": "sha512-tYR83EignvhYO9iU3kDg8V28M0jqyh9zzp5GV+EO+AYnyUl3P5ltkTeJuTiFZQFz670FSb3EwT/6LQdX+UdKfw==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "url": "https://opencollective.com/unified" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, + "node_modules/remark-frontmatter/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" + "@types/unist": "*" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, + "node_modules/remark-gfm/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "any-promise": "^1.0.0" + "@types/unist": "*" } }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, + "node_modules/remark-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.0.tgz", + "integrity": "sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==", "dependencies": { - "thenify": ">= 3.1.0 < 4" + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" }, - "engines": { - "node": ">=0.8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", - "engines": { - "node": ">=0.10.0" + "node_modules/remark-mdx-frontmatter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-mdx-frontmatter/-/remark-mdx-frontmatter-4.0.0.tgz", + "integrity": "sha512-PZzAiDGOEfv1Ua7exQ8S5kKxkD8CDaSb4nM+1Mprs6u8dyvQifakh+kCj6NovfGXW+bTvrhjaR3srzjS2qJHKg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-value-to-estree": "^3.0.0", + "toml": "^3.0.0", + "unified": "^11.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" } }, - "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" - }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "node_modules/tinypool": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz", - "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==", - "engines": { - "node": ">=14.0.0" + "node_modules/remark-mdx-frontmatter/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "dependencies": { - "os-tmpdir": "~1.0.2" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": ">=0.6.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" + "node_modules/remark-parse/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "engines": { - "node": ">=6" + "node_modules/remark-rehype": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.0.0.tgz", + "integrity": "sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/remark-rehype/node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "@types/unist": "*" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" + "node_modules/remark-rehype/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + "node_modules/remark-rehype/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, + "node_modules/remark-rehype/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "node_modules/remark-rehype/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "node_modules/remark-rehype/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "node_modules/remark-stringify/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" + } }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, + "node_modules/remix-flat-routes": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/remix-flat-routes/-/remix-flat-routes-0.6.2.tgz", + "integrity": "sha512-TiwRSjBFcX1snHDg7wpV+/nbTf4DILBfzTiC5useN/SymKBL876hds3eZln4Y22fuqjfWCnqf2bvWUrmT2ZoFQ==", "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" + "@remix-run/v1-route-convention": "^0.1.3", + "fs-extra": "^11.1.1", + "minimatch": "^5.1.0" }, "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "migrate-flat-routes": "dist/cli.js" }, "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "@remix-run/dev": "^1.15.0 || ^2" + } + }, + "node_modules/remix-flat-routes/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { - "node": ">=0.4.0" + "node": ">=0.10.0" } }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "engines": { + "node": ">=0.10.5" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "minimist": "^1.2.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { - "json5": "lib/cli.js" + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dependencies": { - "tslib": "^1.8.1" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "node": ">=8" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { - "prelude-ls": "^1.2.1" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "engines": { - "node": ">=4" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "tslib": "^2.1.0" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dependencies": { "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dependencies": { "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", - "dev": true - }, - "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" } }, - "node_modules/unicode-emoji-modifier-base": { + "node_modules/section-matter": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", - "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "engines": { - "node": ">=4" + "bin": { + "semver": "bin/semver" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "node_modules/unique-random": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-random/-/unique-random-1.0.0.tgz", - "integrity": "sha512-K1sUkPf9EXCZFNIlMCoX4icAqcvkR4FMPH4Z61HbyiWhQl1ZGo0zYeV2bJmocK8Cp6tnKYrCnpkeKGebXZoRTQ==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" }, - "node_modules/unique-random-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-random-array/-/unique-random-array-1.0.0.tgz", - "integrity": "sha512-vtj2yltjcHPa69nFjNJ3xnhsEwE8pMyjqUQDw2myz/iSezqf4YCAcygwFQEsOgMid5VNW/dCPbnb2BcmaDCCKg==", + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dependencies": { - "unique-random": "^1.0.0" + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dependencies": { - "crypto-random-string": "^2.0.0" + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/unist-util-generated": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", - "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { - "@types/unist": "^2.0.0" + "shebang-regex": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-position-from-estree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", - "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", - "dependencies": { - "@types/unist": "^2.0.0" - }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unist-util-remove-position": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", - "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", + "node_modules/shiki": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", + "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" } }, - "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", "dependencies": { - "@types/unist": "^2.0.0" + "unicode-emoji-modifier-base": "^1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "engines": { + "node": ">=14.16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "node_modules/sonner": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.2.3.tgz", + "integrity": "sha512-LMr155izOFA8hudzuUVQT0H93VqmcF9ODP475YjjC/4INESYWN1/ioC5SYRG20jmDmwuQDR8ugP7y6ELghT6JQ==", + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/unist-util-visit-parents/node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/unist-util-visit/node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, - "node_modules/unzip-response": { + "node_modules/spin-delay": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/spin-delay/-/spin-delay-1.2.0.tgz", + "integrity": "sha512-PkZl5FHWOMrwQgoWejG1hBkIlVx4KbdL/37RPr5/pGq5+NWcGx7NNDukFct2yr8yRZuvwEompNR/in9nWj4sTw==", + "peerDependencies": { + "react": ">=17.0.1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": { + "internal-slot": "^1.0.4" + }, "engines": { - "node": ">=4", - "yarn": "*" + "node": ">= 0.4" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, + "node_modules/stream-slice": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz", + "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==" + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "type": "github", + "url": "https://github.com/sponsors/feross" }, { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" + "type": "patreon", + "url": "https://www.patreon.com/feross" }, { - "type": "github", - "url": "https://github.com/sponsors/ai" + "type": "consulting", + "url": "https://feross.org/support" } - ], + ] + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, - "bin": { - "update-browserslist-db": "cli.js" + "engines": { + "node": ">=12" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dependencies": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dependencies": { - "punycode": "^2.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "node_modules/string.prototype.padend": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", + "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", "dev": true, "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dependencies": { - "prepend-http": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==", + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dependencies": { - "os-homedir": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/user-meta": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/user-meta/-/user-meta-1.0.0.tgz", - "integrity": "sha512-Q/opMgFhVbBkdlTs44UKzV7L5Uj2zrJ4MVPXTTzJmrU1bHb2cX6wJzBIqEf1gROTzZIH8u39WmHsa5EvfnMPrw==", + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dependencies": { - "rc": "^1.2.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/uvu/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=0.3.1" + "node": ">=8" } }, - "node_modules/uvu/node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { - "node": ">=10.12.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", "dependencies": { - "builtins": "^1.0.3" - } - }, - "node_modules/value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "node_modules/vanilla-tilt": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/vanilla-tilt/-/vanilla-tilt-1.8.1.tgz", - "integrity": "sha512-hPB1XUsnh+SIeVSW2beb5RnuFxz4ZNgxjGD78o52F49gS4xaoLeEMh9qrQnJrnEn/vjjBI7IlxrrXmz4tGV0Kw==" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" + "inline-style-parser": "0.1.1" } }, - "node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" + "node_modules/tailwindcss-radix": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tailwindcss-radix/-/tailwindcss-radix-2.8.0.tgz", + "integrity": "sha512-1k1UfoIYgVyBl13FKwwoKavjnJ5VEaUClCTAsgz3VLquN4ay/lyaMPzkbqD71sACDs2fRGImytAUlMb4TzOt1A==" }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" } }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, + "node_modules/taskkill": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-5.0.0.tgz", + "integrity": "sha512-+HRtZ40Vc+6YfCDWCeAsixwxJgMbPY4HHuTgzPYH3JXvqHWUlsCfy+ylXlAKhFNcuLp4xVeWeFBUhDk+7KYUvQ==", "dependencies": { - "xml-name-validator": "^3.0.0" + "execa": "^6.1.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wait-on": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.0.1.tgz", - "integrity": "sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==", + "node_modules/taskkill/node_modules/execa": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", + "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", "dependencies": { - "axios": "^0.27.2", - "joi": "^17.7.0", - "lodash": "^4.17.21", - "minimist": "^1.2.7", - "rxjs": "^7.8.0" - }, - "bin": { - "wait-on": "bin/wait-on" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=12.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/wait-on/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dependencies": { - "tslib": "^2.1.0" + "node_modules/taskkill/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" + "node_modules/taskkill/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "engines": { + "node": ">=12.20.0" } }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dependencies": { - "loose-envify": "^1.0.0" + "node_modules/taskkill/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/tinypool": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz", + "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==", + "engines": { + "node": ">=14.0.0" } }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=10.13.0" + "node": ">=0.6.0" } }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" } }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dependencies": { - "util": "^0.12.3" + "is-number": "^7.0.0" }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" + "engines": { + "node": ">=8.0" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { - "node": ">= 8" + "node": ">=0.6" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=16.13.0" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "typescript": ">=4.2.0" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dependencies": { - "fast-deep-equal": "^3.1.3" + "minimist": "^1.2.0" }, - "peerDependencies": { - "ajv": "^8.8.2" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "tslib": "^1.8.1" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 6" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/webpack-dev-server": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", - "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tween-functions": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", + "integrity": "sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 0.6" } }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dependencies": { - "fast-deep-equal": "^3.1.3" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">= 0.4" } }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "node_modules/typed-array-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dependencies": { - "glob": "^7.1.3" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "node_modules/typescript": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=14.17" } }, - "node_modules/webpack-manifest-plugin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", - "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", - "dev": true, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dependencies": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12.22.0" + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" }, - "peerDependencies": { - "webpack": "^4.44.2 || ^5.47.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/webpack-manifest-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "engines": { - "node": ">=10.13.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dependencies": { - "lodash": "^4.17.15" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } + "node_modules/unified/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==" }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, + "node_modules/unified/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, + "node_modules/unified/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=0.8.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" + "node_modules/unified/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, + "node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", "dependencies": { - "iconv-lite": "0.4.24" + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.19", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", - "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", - "dev": true - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { + "node_modules/unist-util-position": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/whatwg-url/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">= 8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/unist-util-position-from-estree/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-position/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, + "node_modules/unist-util-remove-position/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==" + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" + "@types/unist": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" - }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", - "dev": true, - "engines": { - "node": ">=4" + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==" + }, + "node_modules/unist-util-visit-parents/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==" + }, + "node_modules/unist-util-visit/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "string-width": "^4.0.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workbox-background-sync": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", - "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", - "dev": true, - "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.6.0" + "node": ">= 10.0.0" } }, - "node_modules/workbox-broadcast-update": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", - "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", - "dev": true, - "dependencies": { - "workbox-core": "6.6.0" + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" } }, - "node_modules/workbox-build": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", - "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", - "dev": true, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.6.0", - "workbox-broadcast-update": "6.6.0", - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-google-analytics": "6.6.0", - "workbox-navigation-preload": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-range-requests": "6.6.0", - "workbox-recipes": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0", - "workbox-streams": "6.6.0", - "workbox-sw": "6.6.0", - "workbox-window": "6.6.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "engines": { - "node": ">=10.0.0" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/workbox-build/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "punycode": "^2.1.0" } }, - "node_modules/workbox-build/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "tslib": "^2.0.0" }, "engines": { "node": ">=10" - } - }, - "node_modules/workbox-build/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/workbox-build/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/workbox-build/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", "dependencies": { - "whatwg-url": "^7.0.0" + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/workbox-build/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dependencies": { - "punycode": "^2.1.0" + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" } }, - "node_modules/workbox-build/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "engines": { - "node": ">= 10.0.0" + "node": ">= 0.4.0" } }, - "node_modules/workbox-build/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/workbox-build/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/workbox-cacheable-response": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", - "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", - "deprecated": "workbox-background-sync@6.6.0", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "dependencies": { - "workbox-core": "6.6.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/workbox-core": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", - "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==", - "dev": true + "node_modules/vanilla-tilt": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vanilla-tilt/-/vanilla-tilt-1.8.1.tgz", + "integrity": "sha512-hPB1XUsnh+SIeVSW2beb5RnuFxz4ZNgxjGD78o52F49gS4xaoLeEMh9qrQnJrnEn/vjjBI7IlxrrXmz4tGV0Kw==" }, - "node_modules/workbox-expiration": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", - "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", - "dev": true, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.6.0" + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/workbox-google-analytics": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", - "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", - "dev": true, + "node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", "dependencies": { - "workbox-background-sync": "6.6.0", - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/workbox-navigation-preload": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", - "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", - "dev": true, - "dependencies": { - "workbox-core": "6.6.0" - } + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" }, - "node_modules/workbox-precaching": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", - "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", - "dev": true, - "dependencies": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" - } + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==" }, - "node_modules/workbox-range-requests": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", - "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", - "dev": true, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dependencies": { - "workbox-core": "6.6.0" + "defaults": "^1.0.3" } }, - "node_modules/workbox-recipes": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", - "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", - "dev": true, + "node_modules/web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", "dependencies": { - "workbox-cacheable-response": "6.6.0", - "workbox-core": "6.6.0", - "workbox-expiration": "6.6.0", - "workbox-precaching": "6.6.0", - "workbox-routing": "6.6.0", - "workbox-strategies": "6.6.0" + "util": "^0.12.3" + }, + "optionalDependencies": { + "@zxing/text-encoding": "0.9.0" } }, - "node_modules/workbox-routing": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", - "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", - "dev": true, - "dependencies": { - "workbox-core": "6.6.0" + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" } }, - "node_modules/workbox-strategies": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", - "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", - "dev": true, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { - "workbox-core": "6.6.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/workbox-streams": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", - "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", - "dev": true, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dependencies": { - "workbox-core": "6.6.0", - "workbox-routing": "6.6.0" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/workbox-sw": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", - "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==", - "dev": true - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", - "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", - "dev": true, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.6.0" + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" - } - }, - "node_modules/workbox-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/workbox-window": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", - "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", - "dev": true, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.6.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -28517,33 +14359,73 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -28554,34 +14436,6 @@ } } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -28591,50 +14445,78 @@ } }, "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/yocto-queue": { diff --git a/package.json b/package.json index 9e08af100..88c5b8384 100644 --- a/package.json +++ b/package.json @@ -1,94 +1,54 @@ { "name": "react-hooks", - "description": "The best resources for you to learn React Hooks", - "author": "Kent C. Dodds (https://kentcdodds.com/)", - "version": "1.0.0", "private": true, "kcd-workshop": { "title": "React Hooks 🎣", - "githubRoot": "https://github.com/kentcdodds/react-hooks/blob/main", - "root": true + "githubRoot": "https://github.com/epicweb-dev/react-hooks/blob/main" }, "type": "module", - "keywords": [], - "homepage": "https://react-hooks-next.netlify.app/", - "license": "GPL-3.0-only", - "main": "src/index.js", - "engines": { - "node": ">=18", - "npm": ">=9.8.0" - }, - "dependencies": { - "@kentcdodds/react-workshop-app": "^6.0.0", - "@kentcdodds/workshop-app": "^2.23.1", - "@testing-library/react": "^13.3.0", - "@testing-library/user-event": "^14.2.1", - "codegen.macro": "^4.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-error-boundary": "^3.1.4", - "vanilla-tilt": "^1.7.2" - }, - "devDependencies": { - "@craco/craco": "^6.4.3", - "@types/react": "^18.2.29", - "@types/react-dom": "^18.2.14", - "husky": "^4.3.8", - "npm-run-all": "^4.1.5", - "patch-package": "^6.4.7", - "prettier": "^2.7.1", - "react-scripts": "^5.0.1", - "typescript": "^4.7.4" + "imports": { + "#*": "./*" }, "scripts": { - "postinstall": "patch-package --patch-dir config/patches", "start": "kcdshop start", "dev": "kcdshop start", - "build": "craco build", - "test": "craco test", - "test:coverage": "npm run test -- --watchAll=false", - "test:exercises": "npm run test -- testing.*exercises\\/ --onlyChanged", - "setup": "node setup", + "setup": "node ./setup.js", + "setup:custom": "node ./scripts/setup-custom.js", "lint": "eslint .", - "format": "prettier --write \"./src\"", + "format": "prettier --write .", "typecheck": "tsc -b", - "validate": "npm-run-all --parallel build test:coverage lint typecheck" - }, - "husky": { - "hooks": { - "pre-commit": "node ./scripts/pre-commit", - "pre-push": "node ./scripts/pre-push" - } - }, - "jest": { - "collectCoverageFrom": [ - "src/final/**/*.js" - ] + "validate:all": "npm-run-all --parallel --print-label --print-name --continue-on-error lint typecheck" }, - "eslintConfig": { - "extends": "react-app" - }, - "browserslist": { - "development": [ - "last 2 chrome versions", - "last 2 firefox versions", - "last 2 edge versions" - ], - "production": [ - ">1%", - "last 4 versions", - "Firefox ESR", - "not ie < 11" - ] - }, - "repository": { - "type": "git", - "url": "git+https://github.com/kentcdodds/react-hooks.git" - }, - "bugs": { - "url": "https://github.com/kentcdodds/react-hooks/issues" + "keywords": [], + "author": "Kent C. Dodds (https://kentcdodds.com/)", + "license": "GPL-3.0-only", + "dependencies": { + "@kentcdodds/workshop-app": "^2.60.1", + "@remix-run/eslint-config": "^2.4.1", + "@typescript-eslint/eslint-plugin": "^6.18.0", + "@typescript-eslint/parser": "^6.18.0", + "eslint-config-prettier": "^9.1.0", + "typescript": "^5.3.2", + "vanilla-tilt": "^1.8.1" + }, + "eslintIgnore": [ + "/node_modules", + "/build", + "/public/build" + ], + "engines": { + "node": ">=18", + "npm": ">=8.16.0", + "git": ">=2.18.0" }, - "msw": { - "workerDirectory": "public" + "devDependencies": { + "@testing-library/react": "^14.1.2", + "@types/react": "^18.2.39", + "@types/react-dom": "^18.2.17", + "eslint": "^8.56.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0", + "npm-run-all": "^4.1.5", + "prettier": "^3.1.1" } } diff --git a/public/_redirects b/public/_redirects deleted file mode 100644 index 50a463356..000000000 --- a/public/_redirects +++ /dev/null @@ -1 +0,0 @@ -/* /index.html 200 \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index 9c03ee68f6470f9180b59e212d80f3c95f1de8b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9662 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 N4paj(j%WYd{tx`N+LHhP diff --git a/public/img/pokemon/bulbasaur.jpg b/public/img/pokemon/bulbasaur.jpg deleted file mode 100644 index 694f7b21656a10fe40059caab0e9d12ec3fa7b3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37764 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 ZG0S6uIhWejnsP+91qHNay07?O|JjGr1~~u# diff --git a/public/img/pokemon/charizard.jpg b/public/img/pokemon/charizard.jpg deleted file mode 100644 index a736f38ae4edb95106d7577d9b2e06099f083547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35969 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 T%H;peLjSkT{=c61J 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 M0|5a)0DV9I*~`~%Pyhe` diff --git a/public/img/pokemon/mew.jpg b/public/img/pokemon/mew.jpg deleted file mode 100644 index 7b89ed674e2a5c2d64372ccb70fe4cd1f50e0f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23537 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 diff --git a/public/img/pokemon/mewtwo.jpg b/public/img/pokemon/mewtwo.jpg deleted file mode 100644 index d088de0224503f1763e3218e3690d24b7c98d57e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27860 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 diff --git a/public/img/pokemon/pikachu.jpg b/public/img/pokemon/pikachu.jpg deleted file mode 100644 index 528e6bc42746a8605c8567c50a602b48d71124bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26701 zcmb4qW0YjgvUas?+qP}n*0gPNdb+1=+qP}n*0gQA=j->JdoF%{QMp#t%0R`=%oX`$ z?8v{Xe|G?g(&AF$03aX$0On2*0M`@h`)0whr-rY&P#yotI7yQ30gvfl(Wt2yTl#^+?^Rw>Y|D_4%3BG*F^DVxdlk<4@ zwlL~S=E^?82ZvvEV);KtK&{bJ(t1Wvc+WMS{Q(ekL%X+GmU?vge5aJIc8`qz2!bez zI5^4f;XuCb@s^13kEQ`2(KEYzvfj5mRY(n*)P3s#0C?Y-jqBSjE8zv9v$igkI?ZoA zApGC*!51!1UZt8rR|ESqQqyf5*>}pmMJx;e+~(vp4EW`3H}?KIrtT`sXAwmJ(DW-h zJHJXXc*&YmyMl=1w~6pwrfIzPTY8&^i!x20uG7~}`v&Er!Pa*p71m!OiFY>FACH$w zRr*<}h64zbeyp8xZL+k6lD*0Fpf`YDPtZUK5yy=W&!|*x-jts0$$U>QN^3gg2rJtbK5cE z7RpKyZ|q4N7p|j{Fpy1EKN;Wo1?I6v?B#Yqrk&{F#(rjY)5NIY@>wM$%7IkJGCnlPrS%NS_lk``SG9Hnm700{E^wba`xFZUlzyD1s!6Evp%Z%fU789DbZ z{7H9R{57Kuj)!BFtC4>ex=z(MTq>rjte^b9eUKV$YPjdajV*Jbr-s>ek&}+w77?lP zf)<1~RWVTzcN*6r!=1ovGLMjVvmRe{j9ya6h)NAMM2lAcWVYMU}E}y#`oyF?il6VK# zqcH{)j1458e4@Trm!OMz;q8{aUFWyMyg0SbZ~Q;SPgf=Z5Qs(gwujuz)Klb_4)5u& z92FzP&W9;N_g8Jl&yZQI;SZnsl9nu4S$?qhS&{}Yd3Q^NSKQ%02)MW zrEJz04oZF$0N}io&(w%Gd8gcv<|RRN29iSHZ+i$Ime^^`t}v~9j>!u=KYjHU{d}> z@Hk6OH)2^_YmNH&c&#(igT*NIU@PL;e0?HFK51;%izys<%(kn9AlGgXKn(3mC8hZd8Oambv?6)-jCDK#m-+3xEAo% z=0&ULTE8!L5V*wx;LQ#AIO5Jtf)waC-Src)7OpM7rw9O;6}{;ZSUJg*y<(Epq7<-( zJH(1tn$*-+1ySgLJx1FJv4NqU1d+q|S^Ek@&! zx6DuQAMM89)>-B}KO@qNH56RJyEmO`CxD_b$ag%PL;2qBy?8zm!}Mwv+Sq?X6qNX$ zdv+<90U)DUMqb>z7F#x$ewwBHJX!fR1CnVmF=ZgYK|WcLVU+Zw^*h3JZ|ZPNxCj~` z%3u+QA&zg54=o5(?YhUZ4cKQxHEi_P-daqHz90aA zKB3ouLd%?Yz5HlYN{okx(qlZacs>#D(2hDnU-swdL9f;STOX`AarR_lLc=_udHiGs zKXUh-B;V22`|;rW8BL~&adW*KH8VpidDlk3o;rJ~Y%Pzy>UTEvlX3S?rdQY<6TeM- z6Oc&UtA1ofj0FGy9L!rtq)8@1Di~m}WS}uQd%6XBtlLgL!R^;@e*cvFFL?m&K#aNP zp_d>43_2iwI6XyFJ3UEo;mQfW%a(pC)hWz(z02xRKj=Fs|BJW|^)d*MRtf>b>5~R9 zGUWE5t%Y?Zq++s`xydPhOfc!M1V%l}zS_+Hy^RMAFoc}18JH4MYOx4EXs2U{>chzV z3ZoLYHLTpg4XG%WbL(03g>LizuYXt|X4q@rpx$6Q9|ejwix-3*Gy#B2#FIF~auMRa zsho4SA6D`F_%C5fry8>Pg!||HrC5L#jhUhp^Z+p(@(ATrrVkHs@b6({1(!|`jn1+Ag|+}x%Cd#BQ5}TJ)DY- zU-G4|Z~6y$JG;k|G3SNq1xDk4v;Y7~pX2eSnmi++*{W@?q;GR1h&$QtMQ6kA8t2bf zO@jX;d6?8J#C!P}qu%0suJ+wcz;kD7!pnsP?w z*E2_fJg1pJ*dw&_TE%oCEWP)WFrGJOxH%z8dq>k+>(IZ_Nbr`7P2ku|~aOY=z|B zN9J*>^ZIa2Ea~xyuRtTaF;#4&LS+IvJ8v};I@z;@XtBCjG4%DZpjp~iElYf`h@f~) z;cF?!C-?r6+ctK0rrndwd{r2*dT_w9VZb-6I5!vaNUTs?VWDfMe2v{V*fBoj2t8?U zT;`5WR`0`+w1+QQB>K_tV!aq)L7K9tsxBWC$s0%t!{ zr6KEv)S8jd5PjVyT@H}i!_dXFm}t{))3RyR(T*m%X+SQ}Z4g4ATsP(mQ8FoaDrQUe zF3uLgyBh$H^bqzH;R&TlnqT4f9Q~kJ#N9FInXs1S(XhRpg>js4sYEk}v-R*GM`YiE z&o;-x;%l_?=C9ImO$CjIb$-yT@N!WUJ>!j-7fSow=po9>vQY4GtmZ0r8<#6wVB$SK z3R5EKG*+YySgvmSz*h*@qlu&fmvxGDa=_R-G^5g-Yg&eL`g0M}T&ge{^Aml$tjbQ%`@oomlmXs1a$4N^ZhHP$4fIq%vG zyR$s!Uhfi_k|_&O6y=4GQzE4PLS|Xg-oBm2KYsgiOx^nuhr~Hw`m|Mr=f){12=%c$ zUT2q1WOaNm$Z{ncns_Jb=}9k};|#F;R?gkC3xarV+ffpEDMgF14$zK4w=pP!Ged?Q z&V~q%sfX=aMo}5(i#AC|z5)qI^Q`A71XlYdPn&D zINT3BAqUJY;iIkJ&R*n05m9CUcniZ*|BPPdZ}xIp^!>DG^q@FG_1SGONo%><=9p!y zr|!|_Z_jXjr#p9K>FRAw82=xx}hGHJRfhQXer)rUDzIa{mCgm+1!?1Dd>mSJs zO;u(>MPe3SB0?q?4T$!GXxEPE16hPXF1HcElx4g53!wg<@Fdq?ku6T5>vOw88(|3p z8W{sG^ka8Ny7aX0@j+UAWSYNKo0C!m(etM1>WAYB4V6_fWJ2A>*F0)nlN7Zui$Nf4 zy8@z8i28)hUWYQy-lQP+*lYN*nc)_!VghdQ&0|CKIN(mpFENUyX{S@~!^VWlGEEFF zr_y}5e!Ikp{>UV+w?+fbx{FGW%kWi|EiaMva3%2;1m%a;!ld8m<)Lf@}6Ic}`exNzR zUHWDdS#h+s0~<$ntL=^ec+VFHxjQr&!m*Tb08sSK{sH6S5!t}9L996Qa56-9Nl0w0 zC`I9l%UEE)WZg}4Kqx#KT&)Yx+&JL0$OSzLkpk5>qH=2=lEHl7G-fx=4oONy3W?OMyXj^!= z0oS4wp|)I9j|=^LX%lU1BH&hNfYSKvNemownb}POIQzy?I^zz_jrqb63;n!eoupQ< zkt}X|{d?6&G#>5;SsK`*7OmDqXztImdZ*#Q{zlWv#ISy8jt{Gm2EDbgTy7=z%H~Qs zMHUvFFgi)wnO{1T`s{owESVhoC1IM1HRW7wt%gCt zPhnw(pMZ?bpmtJ`9BStO?vyobi}2mfbd{!|U@Jd0irPzvv}K%pY_Y8Gbl%uk?K#}c)zHcXaqp+)8PxO|;)!8}cl5&lzwq_1uhS{tmzxp;`k zZETUi?{T+`=p_OPcO5~@A?(SNV_}9@W*wii-WZidC>yusBDkv+5!~V70xiEN8Y!2{QC6F@XYVGRpe$?IcuGF3{IB9u&SLYxb=8s~CZ7V91|@PS{J%^*0Ke)g0e-EGxQPkDQ>?!e@#u>#cB*8tcm+1aB^UE;bmen zWcf~0T2KSWwkww`HU=rSgXc1Zxl+qdch}+ORkdLo;!-8U#%Yu^smhtU-I-lmnFWB#}yI_-Ln%#j>-&UzqeX^<-<7=$K3vk4*b*vjewm zAJg9aSv94&vt~}S)JAf*U%8inYXywSaX1O^a^g~eKjm3mVcyNfdsk9I8aRcV@ymR7 zBo`G9vI_$?eJZ*zr_07u(e|R(Rq5n2y=Q?2<>QME8@sKih-f?jbw9&6=40<)xfnof-1h6}fJs^U%iXHx5~%g}F2?29=tB$$ah@M>t~|49S%gq? zMd-Rp$?4>e47e{-f#JCo#72zQsYQwl9u--iUb?MJ2ByvKL$<-KB*rg(peJ^Qr~rn% z=v27;Iu%Exf#@aN8kB5zdpp9)9CC1#VI$k-{0+1eM;)-Q#RoH2varKH~~p$7fLdvhZ*rZ(hzG~gIWvz(2DWp%e+ZtWWbE^t^5P5DX` zcm6=Rmuey~FI`*>Is;4(4Q{j;sY`zW%g8!8=xGfxu)~-^d2|8i2Z6izV|QfQKWpzW zLV4Lsl|q9X2#AwQ32)B6%*RfrhME}|(qDD%_~p?1*X%n-AbV2eTh8Y1Ua|U}5tJS% zD(_c3xMS+jmRe`Diy18Lkt;~i5+|+v3`^_I8Fz&3%OcX*as{<;Mf01yZ;2skJx2n5)_j)?!f1^`7uCSn3ZL?L7pB4!p;LM0LYWf)h7CZee9 zICn$JqGI&#pa=Z#pf@P;Ym{KuKCX@fWm>wxLW*8?lrG`%v&Wz9(oLj@b?R5^W;r#1 z;(3SL*xT2i)>c;CGIEAdi+neX=!i^gCNwp!()eS!cS;X^UwHOED`!$PMpz}Ir|{m@ zsTXn(dAb)&PBzW!$i6eG8D=WyxpsnEJQf5cq;K_q0Zgj$dvYmunUBDC$7}&t)V{^wib14za>pD8YjK8=ozJK0>Y==__kLl&+g5n$ zwDh>n&7~}B-yhiHMxDerVc|~N`u_O$$deWIn=f6juZ+M- zS`-(d6?wli_aAB1A6_^LH1@$D4yVjeOO+Q$RX=}3*=$wzSWdD5!IgX0u~-TF^akPH z${e_zr4OqdmZ_*pDcar7)bBRPmh^}>cR)-;=u7ax*rcDsy^-_ah;+R^)y$^PU!uzH z9&g7#DIA2idj$PzcaE4QnKA|ADe(iO&-P+-qb)VRD*3+Rlyha=&32&ic%BzU4N6$Y zjq7HfAE4?mw(4t8v1@$TeawLsk9eqm6EwAy>0OgV1H?7nE9IVv@FX7e`X)v=pO-h? z%I_HCDIJ}@SI5^LG0ZFXJ+adn9cIGkGz8lrTk>@q{rBM$!@kjTrsNx1ELA)Y5iErwh`gFcYRXt`CZmBVLQEHMU z_IsIo_hDPyzS*yx3Zs-iqJhldwZk}-xXuFd;*6}P%ZuA8O$#`9la-Vwm~MiUXM%B& zw)J*&S82du=`LHTi(djipZh4l1s`j8=R?19wej2<#_rOT222gWC3za31!#!AtcEUj8?r=L+!YuL6{EdZeU#{Kp6;!dPmL&ojPfD`g zsgUjLVt8H;?}B9AThZ63R5UgeqFWx8d2h$YChZ}0gtVA#U(gRK#txAl3xtO&^=*`w zfv@dy!YGwZ5)3Ejh^^2&5Mzh@gz(-k-#mCIrYQLP?i};BKU7Xokv7IK63WFixQ40` zg9v-Il{CRs6g;?YThk|uG;CYzx@&e_b@PS0}3X}%0;?a zUaPe|nAh#uNUW*S{|v;oprAvY8V=votyrq44#`3=WhDX8*VvLSGN#Lwe^m8t&i$6` z{2GkjhU@Y~;!6Ry^P^8L zR3tMetGn8-*7R8(!VTid#CUd1z2xMtjS~Y)#`j_##6#ymvGMHOiP$+UEv4?uzRN|Q zxnYOSH5n~bFSEj`q&Jhy8&}aggFM;WOfQ3;*R>zLd+=qE%sh}1tk*<;;G+5ix^g;4 zb47xNU(IYp*l4R0k9*YQfMNzOy_{wG%!o@e7c*M5xFMKYqxEp^zbB!bIRWuHJ=hOr zAR%+(Agp`8$4ph%LGNixi7A4p{Cl9gIkTu5R2A9j*v{0Xi6RqG=b@bax_ByOklWks zXUq}Kuz#9x;dNEha;BG+pdsx;-8KuEQyDRFkGS&ECBDQ0Ss37@?{n4}Ux;GY;HAI+!6M1K2zWi8Vv zTlD3!9DI6el@<+wAb}nA!2tm}J583^xUdlClMrHBk{4;m)l_n$DEGj#C{25Z(gnZ} zp_}a|3kyDNoW#$sYBh6m*M%u=-Z&LlwJ%$zYZ&O7JL=Vdtpqcq9v`285@yA*lN2kk z_~4Us;nl2PB<5IyoVCDhR)-!)XLrQMIXf%8-j6bb0jM{>?D-T=LS^v!+6f1vS{QLt zTs$KXDFjP?3}i>AHXQL7XtB|d&j{y;(YQ=u7GgI+dm>ms^L^mc%5~G07KW&_p2e@yEKXY=B#5iVpo-)jM3xuQP;F8 zj++}Lcvck*>2x{AK0;#gJH2vIHYsx|oe<{pdAKOG&CHMa-8*AfBnD%O4;!jlhiMGw z)-&?+dmC3k{64S%fr3E6fIf`CV{P6PLh*f`$Le^@0lk-|&ry_MT#ay)=btWIo)( zs4R^G&!kJaRSIr>VUVe8&N~^!Ecga2DDY-nivI5C;cAWzJUd2sN%=x}(X9`DBjaLH zsUDc#>Vd(rgk%`o(da1aIsTwli>fXwzedul|1_`FB)-!iYHclW)v`2zVUERNTlzvH zwOAPt?HK>;;rxIwjn7UdVVx=y`<+ytw4`5qZMn$rHv5UV_>&@~NlZ3?GR5-6B|}+7 zp}?ddze1TX-H0g#Yg1!tBByt8X>2r@h3EoZ+e7TGje#Uf#?K_fUUeTeYMY zBc0F|QI+7q)5Ve0R!xT^tSBb&lMkeLLZ`40P3@0`0UCrb!qJLV0>*PFecA7~)8QsQ zX(#e16TJMt0H96PiEdT($yn<9Oa5Kk9VF5VM;W@!f>*oQ7~x>Er*;Iw?&@-EKik{h z?s-)SI8#-oh_$^E8ih4uiWnjYI3A`6Lazj9Y`C z)<+h}pHueJixX&Kg2C|b0zO8qZXnqU{k8=8!gA_uay-Xq90ojI&F+IsXv!YzY0mB+ zA%YWbCF0p?u-BOQdHWQt@10oU+=G9_n6oyhFO> zzu4Wd+Fs$K!H$W{ONz`QL?a8!bfXl?L*|ZcJ80uX^EqP;RdxMw@i4TRSsz289t}eM zNO~=w9%PYzg8c41{ zVBS1rnUAzLm7yb`wd}!$7LyG$WFXZHBSl*kt%cdZ!L>O(reqKv5P1Z)_4v;2wnk;K zhuGf%zA)`M186`jXCb|4!9ewbXIZpH_zTDx?uGSV>*Yxof}rs<)2~Z?j!;(fb&;WH zG#K~`D4jju-t!wk{Ae*RnTz9dIg|#E7%DsURS$=@+nr+~{tcR-xC68Z*71~8>h`&b zMEDmV)$|uo{1EaNVDL`oblN_*97k}_bXrWDlAj;>lM21tN}KxNFJL4t|EIC(bu;v6 zIjix{BXZOapB&%73UHNF5~aq(cC_EDXAWb9sRr3|m>VnQ)2GqeVZ5fIQ_&LV0`$1t zY&c<%+obOj8XfzsJn^a56pwd~#&{jxv`J_L@>N(NjzbFdJ^V0IB%o1Z7n61XO_tyY z;j%7bn<#_IKPBQDy39B&4)om7;)^#Z-YTq#$5(9xFs)vyIJJDN@B)!`U^yrw%{*7? z=f}08is5XO7(fGrNAMGjVI}zp301VkY>tg+OQykWP}r1eO0^CR?D0icw9HWm*_+Fr zyT3A}53`H)sSQ?I>L=(tKS=~wUbmz9SH{~*Zu1kWsCU`Lr_sK zSW1uFaW^M6b{Y>E3N(7)O9cHmZie*GguLmSz4iK1l_PKuvce9#cQVW+A-0|z|xSYseX!4 zU&mZ6ZCEd-aOQXuhr$Od7ZiNnj@n3|1{P!wpGzn-&XCDq- zKbs!rFA?8{P|azaBTaEBh`ZlqrJQWXf>Jl(z%H2N6S}U?FBMaAP^1S5QV_!GXt%dS zC};QfLoW%=Bhzm8`0YJTuHeqpBxchKk#(!f?xHOTMbUOd&9DmDbH7t)#!((!7SNBp zqxOk=HG2NEK}ls1a$U&GQRno$>K9+0A(>Obcg4`(!*kiSAcV*37b%VEfdWhMP9`_K z-56Kvm4jcQxAVYdz@43^QxWb#Q=o2ltc5zE!N^aYY5k$y)m)l3Ae3*J;TaIk5{R$; z=W4R5h%!H}u%swSo!2%3?$lG~jZ^ipwwOiEBNomB{?CMdRZ={udU~w3p7{7ZAjy#_I1hXbyl1ARPew@IZZ6Kz%FJMeW2x-uA;vU- zI7kfx41{QB-SR*)U(aT_XkJ^4~LHp6xax%*H})L#IGozxbqa2(hw&xskIvDr!IFF%nI$093U z`1R)$s-HjVw545wKTVuswCbx-Xs<`Z*dHF?GjOuA;eTOycSsSy{Fs-4S@>E2&;(vG za7Z@o{DIHsFy=06jK8*>V~(b})EW74LziEQTePOOL~$09+uio8%}FGLs}xCH(3i@p zOI#JKpg4R&a(N#kSiht;wzX8CT1~I|4s-P3<-xj0RL!J(eUp#f%tp;4{wmbr zJ9XF7hxs5)TMCa+l`vSMQS4QJ+92hvy3Bc8PbK?FSU5muVVjsD7ox{Ay0Nwk+z~thB<7&Q~?WG`|;>qaMZfRjCF^J(i)W2wv zVrPPHRhHgs3t@k5`Q3S-wo5s&DjRz@4?4wqvs}~?{y~7o`7_ok32{ z4jWPiYJsm?XQ*$-mE1=>ZJ1B+EKD5aA8vXka641$O+BMxup!Z*$mI7;-gb2F$C6pgLVO6Ug@W&y4LoMYi?p>g3q|Z;**+PM%Hc`&v1qpf@$Wf zT)#f2bYgd*SxxSZPNKTt^Idh+-Ex(V?BiQ@J6>Bkb0ij6oUe`gNW`KrluKLT(Rhz3 zX*AkQd1tCwZVk-g@fZ-V8_8b*_j$Z^Yc=(wXZAYvB(_1Z&g*P#McKOf0Yu(yC-qas z4vEX{d~mlh%|7>6O#?)`CWSeKYZWzAIL7c9ssn}YP34jSVj+)XzK0_nbeRz0CR!wp z&Lpr=)pKv6kZxk?8AtfVE9S}NhAQf>SirkLp8hw`NoX**QDZSW_SUDd%eNad-VVgFK}_0o zUIorl1pn3j&q0iB#}poWl!0`)+~Z#W^x<`#_7;r_HEyH>5cJkmvfsNXWn6NwJV`GD zCysHTo$^|irHMVufU+M&vX=8O#`O0ZQpQRx^k_A8B+gC< zT~ar#N%Zv|WS(i3XcZ5-h&*83c~HpcRJR zMe`%DjG|EgooLE%mTg7vVZX;l{7%^!dpMPIa?Z(}Yq3GxW#dC%^)P4ENmlS!cl9&b zrlH@4E+>t;+#=ebn9^kYnZ)Hm_SAS529_1KBs~gqMq&D`@4&YMYer$9j@3nai(zUd zr3piQh+W%n$BnLD#<10$7AFgw1$_Kz&mN+4jCTh(7xP=0Oo5eNg9kjGm3CMz-vE13 zPCR7`Hva-^I{_i}CjAAtt*3SI7oOBxGj1A!_`q5pPrVScakyCjxLX8&a8&}H9``nC z$>Xh!U0vy_3=AaA9^RE+$da9FW1JjTKru?Nrp}ZA)1*7q32_{i?9L~#kY5d(_;Q0i zw7&ao5^|=pfYz&rRs}xE7NhVGS!hzMsc&ygP`<)E4NawWH@EnpLGvA0by0bM@tGvl zu3#l|(sS+R@I@z*I#A+)(1tNG7o%rfOWG^~TRZ2^LPFcC`heG6ziH;|06H`i!8~4# z$aC>^+9cM>T1!l^(aSN{2b_XkOJftpC1HmN7;Ev5cAL4Tod=vW`F?I2i?dN|VYJS; za?^*ANt^G=4XM16%=^wC8NT?^?F^rMGQTdm&)uWA_%@diM<_;hBG@C#-=#kb=zSqrHV5SzgBl56R(^d+Mo zj0PcC)U&RHd(xLwsT^^R3Ov?c(Yd0{ol=Tx9FQ9b^;A}M6L%tm1nv8z=~%E!?Zz%F z4m(Ovzn0vcG#D$v+3;%Z9`WwyzS1YmjnE&J(gr>|Ij$V>@W%MKQn9VN4=zhE9XD89 z(kOf9Cqy7o%P0_}3m&hn8RKC$M;AZLME`vH@TyADqF{DMkyIJ2Q-ELLps8N8R#6N6 zgT!ih!(aC^UTK_*EwKj1HE)og?jTm<02c07OzE1BJ2?5|nV!ib3`mz>wEtIq0mp^H z^aP9eQWMGJk^~Z-h~k|dma2e~4&L#S_3U3j#pqCRv7c;3@M5t>Jf{SDZZA+QP#leK zL4x=QQq=M-_ifsnqwSq9F}N7lca@7TaC`OUfF)sQgjdm3XmW0zKVJ^Ac|Vw(Pv7##~_x z)Q6mJUVbsC5MrAn&P>7riBsMX(0ioD;Q=2`yOVXjRc^{>>dLsw7K~qcl-r8!znUFg!;TEc%90$#ZQR{mDr@;)fLjt6okm60$=AGuZPN{B^Ge@8vi;e< z9_Tk*(|wmsaJ1R%oWVSwbmrTKbhzPon7ZTrH(~)YVGqXmk7|$lg*oKSa<*=hSGlnX zBnNTgOgxV;`iTxFC%)9fgMR_P{LD6e=_N!}$N4!nI!`$dc$ZMW@dEMIUw}k-=vRHX z?9YBX0UXTVspQzZi9de!duXkhce2M6CV#|4C0bozzbPcubBBmypc#6wGh0}q4!na2 z?fDMhdo^iBkw~c&jNTW;Ap5a(>U1p&ek#KlqFmp3A;R6fS8ck~R!3iZpQcwtuG)8y z;&@${$ehs-4699LMtvs+;GZ?*(1gEk?c2B49`EPBuJk_%dIWrXI+WF8Hph+ajs4uN z+wr>)%D>?ai0z#=9uf8dgOxaj_SbPd+UI5OJKgp+s(~ulxYz5YfkG*-<7B~l$xgRk zp;~Ta#cruQVfP+A|KszNATE>tP4qyzjHUn5swVu7cWM zz`a>q2%25bhAsa3?|eyw2E@Mrg%qJ8B^hYzWml!N&~pKIgXa19eXs;nuwR{CRqK%K zvkQ?~mdDKSW|*om_JO5y*MCkPf+>o8!;cfQ|1j2WV+<2TD^0FvY}=yNd|stDim+|& z>hRCyq>O3hNh>Q*M3#6zr}6Oqsj~_n%a3viQb~>-wuk0J`n0~Wm(xH@M_=_LNnN)* z#cHhL$y8Q}MOSJ-t3+53Wo?N?D4w#JwONqSi1ZR!28ZUQX_tsh5mEp>7UC* z|1Oq50uV6?DH$R<{vwRaV-&3GyV;#ny!}rJsQ}R%V@g_}MUz2YvrUbFCrYP6&PSL1 zg55TFb?Fn0a^$cBjBp;AgQk$5KM&UjTT{4?smAU!ePt z5C{SKt(C=W0IROIK)YZU;>}&+Jd~LLoGO%=sE=^OGM3uMyz7tDe5jzAi8IqaCkXpc zmQFOw?_~QH95IfINW90Nn$HdUnRS*E3Jxje-HZ43COVOsw%bQr9$Er+4`^*trt5?2 z2{ES#!l%1;8VF^3UxD!u74z*IYG_+cWpVvKJ%|_m>PZR_=e}GEFU8~=s+fM4 zyBcZ(?usN=okk<+z`|=#d2<4eSy8;qM z!deLF`RXn%)JeX8o}=3bQVyim&-1dPfXGt2Er@xVzW`BzOY(Uk z4mzFA8uyA>Q~1v^d+%qNIPgVN3$hA1DKZCkTw2eL@E&w0?y$tI2jF`Ze=PMHwa_0w z6)qGBfdPW3S`b1+mGA+QwUHqlb)qI>Juy#@6Qnq`IZ0BpdF;gXWU<5jjp!ebvjT5c zJboWy3hCS7Kf;7V>6>i7kZCwweMtx(SGvy7s|Kgn!P85rbxPu$JeM7n)=mgiaqhF8d#gLS0li{}J(g*JnjAbm`XF zEwWff>^ef;Wisg>KTcUr27*NIB*kYw9ks>*V@WCfYIgk3GcTW%aFM7$b*Iic+F(hR zE#9)hIx{+S(Af4e(vk7AGwO$^v|^uDGpfLqV02*Uq-H0S?(|`-KFk_hcAbq6cB+^~ z@DMv-OJz@u=6h08GEK1cxXio(3}zuPDoKWvJ-UAZUAjeX*3$2&NK3_XW3NGQRK}B} zA?cxdwfKxpyPkQG7N9_9AV(zt<|?2EFrdEK1KkZVB<{<%=rE;pmQ?hu7pzCoHd4Gq z#(DaVA8i4o7MLLNl?#P^Qn3SU!Mus{7pYL7@Bq&t`M5}Pzy*+`_9ZjQR-uH56-R~O z)9F^Jppfo>l}k;(b!xcUpq@-N)qQS&!mH2&faXVj4+g&JhINV-xN-mh%zr-mmvV&| zc*LR@WretVY{cI3zH7i7u9ytCzn z*!!ZQ^a>kY-d)%mm#tFw5z-_s0K%^DlA}abx}WEs&^m-F%?Ae_Vm`Gxv%8M<#BY%r z3mOFAlAcbfS~)ilyDVHv#|?g7=k{AaOL3ipaPx@m40Le>gw9N1Q-YVUtV0y6mKdGb zPAf`!M&3%tk^Vta-M8$h7Sp{)eLNa0%tm#NtlO~aAbb!m-TV7SKp3oUs3~0=K3V?a zAJq4N7y%2#i31&Fe}JWE*s`=Y8rg$nM{=Kb2L8qo-hicmohXg~dL z&%-uv{5^1B?V)i=sg0Pcl+Pb(#Dp(K+;6N_SY;))ewO7{DcOd?dZo^hDF=q8QtDR3 z5ZZK5O)3zRC{s?YQrFd7Llvha4B8VBNktsx&R_7!{7Ir~Gx=QK2L%$UkDIz4QTvm} z#fty2Y&6nexG*K1*cbppl`a<(mIsGQCi&3%;?M!I3>MjT4tg_zoy5l9sb29IR95MB zrHmC+@RI|HK=_9E3e?YK94j;A6O@zE2gYAmVxySaCc?X*o|k@XS$@EO82BZvzqV>P zOQ!{U*SkOSmFgh9H^ar8af1(*>XKJEyS$zo=1bI56$e;!@e!<<`!Zp)Hdh1%_ji<> zeDv=JArr#JV$BKiHJ|KR7XtLn8OD4{%U}O?- zljUi)db6|Y*NCYMyr_uwlBReLUgP0B0sU^&;iqlDpu5& z;(BO$e*#xlqxk!&Yy-bkNd7qX?Uz4X+;Y-ZY#NpC8V^UQJ+@+UL2^re>}-4}h*u9< z%D|ci`_W!Q|HMW#kI*A|gf!@OXA#_{viRVs8O$0sJ9H8|a0hyJo9V$jr6+{)T!~#T z;>QE;1Lzv5O%%1_B-v914CGZWH*+zbG3+Fw8s72LIV;&3WJ#~Uvlvp5Kc3a3Q4I7K zD(lB3G(l2bg%YZ=ql+I2Ugn%XaIfW~;IoMgh2T~p22f$WB?)z#BUf>@3uWLn!sd{+fF_Y2I6Y5}5l!WzXCagAAQi{lzZ9K?|D zSb-&KG$gNANY{@-cxh)uy;9?2ehO(p5VCL)k1RIjBE?aaVIQ}SmUp1Hk6*q%+*3qw z#^3MIoQEk9#bP4@&|5*VTK!*&HIUqvoQ}Pl9wta4Yy9xk!cpwf z>e{XC+`X0CnIPrBjF0d5i)Q^l$A>3L45zFtMRPEmpcSn1V-VkuB1d}hVzpy;&V-Q@ zyO!{!>E_7u3kuS)ui527>kpc!5)yBgf>Un%!NM@{Rr5J~b}6EwN>^jE;@;P}uko;* z>OzHCEspAZSVFPjrbtWY=85|z@e3e(rW3y`rC}F}J)Tz4sl5=7>w?dfnb=oSN_}eS z9%dgbk%Jl;X&enL`Tb4FmJvY}@upNg_j{8I6=y04l{3mR;!eBA6hH;ivpI$;S6-o! zcGE2yc7zizGsM|MO>*&|qvC#71h+qa5jm#v9lTlKjKLaUGk`X-g62a3iJ+x_s9XZ& zwfmQ)<#(ww#*`ou4yODT+zpcRaw+H%9fuYd*Ufqx?6Me5pCb;G<_U76sZ&P; zBsU*{+tORfMn9dVODSj9etGM%NQL5l3GC^dOW%ORW5uX!jww%_$P`BB`HJMn2(Mc8 z2JhqnZ+{BD6M?r!!E?^_*@WMLFr-;gQhZ@)`l;w0!d54lu7i?2JJUP@| zPS}C!ylO<3juMWuZuIs8d%2{nysQL}k#9JzG9mmSz@fVNs|#qvNpFHsm|KARw^kspTUlrZd&+ZJ{D>Ow4V!%EGelfqixS+ju*MPgAT zB!%*t>vdhsB*K~>{{O1_3ZOW)ZtI@G-95qGA-E3i1a}Rt!Gb0*xCD0y1b2dKf(#bi zNpONYBzVyLll$HGzV~;X>gqnd_CDR!Ri{p`z4mUC@dIkgi1bC`2n)%)_HJ7F#V{`w zauLtj*vNb@&8B(umTZwLhVp^$%jL>MIf^g(sS?^(gDf!9VDG=yyLp#WhOZWJ{3`uv zyNV;FX3s9NGqZG{-l;Ebt^Hm|CJl-4{mSbTNsowkeC*K`(k6j^-4vj>D2nNU-jGs= z{|MEndHrg!JSNA>$Y#v(Q1C6Q*8%Y3H;+<9>_|Z103+%K!L_*(WCZ%HVA!My<8-1= z`VZjMTtJE~J6B;Dt&MfwIec6ZHl)3g#B3Aa{RePi-FtbyUy)|9p#CdeM@cXx-~q$m z+u!mg@+Hw*5)~iZt<6@IkMHUjFf52e-mNtR<`>r~FLV1<7}L&EAtmtRcTYMCUR%XH z^W%t?#Q6z9P3Gfd{9Rwt>VOy;qfh$>;L|$i^1P%fA`;Njd}?DEN*2zKY=|M2W8bIF zBhX?A+8@U8xfvL?9tabbT2%eWDn;BzqAQBzlGR zDgt@6@S=#y9~!a4z&G19+NrK$maF^Ok4B?8+#>bt@_gWf;(itu{*}PHDCis%*G=6+ zPe7Pm&v;oJP9d+tzd-+~WdR_-6*9QVO7yA2^zi-vX*B=m_-{Xm>))&R|H3$F|35r^ zqVx8DO%#Qam8e@Q{$oN7DA9*&(kH7>`~#p)caFf9LPJ-g5A*qJ5~@W6pwW|$A|@*l zFT;I8T0?}G8>EDX>gf}4zQJu@oOqtM(~}DSGA$@f>kaQ4Ay}Q&z{#VpoO(!;%#>e~zWG3rH8m`hVjuE>Dwsa8 zZ2d1l>GRvNrIW7LYf3=IBK(v-nNKB8a=9zvSF&Q1$6o+=O;hyzq22s|K82|t4j^dg zYMCEzEzp~X$=spA0e*0uGH|ie@?BNGfnb*#4oPu`Yj^$t`84O|gX^HZVK|7+im3hm z5708A{|8t@L;5?A5(D%0_5Dd*f9l&=3+sP+=y6|n-v=S~N`AEd>lxl?@5L_yZO&hN zwBjpK|I^d$U)J@dsbunB06o+tdyZ>)61xijFCN}R0 z^!J&6A@ukuOF2RXS1i{5Sio^C`S`3W_35Vn0RDPHBN>)u7^Z9c9{_!*!!16jj&JyX zoGQ_y`@!E;e#rm$Ojg2!gA*D1|JNj0Z5w`^_g}z&ZIhLl{xUOoa4|Q4h=}~ZgR*Og#~xJdywkuYr!X$c#RmAmzziGZfp||svrLV z^S{vfh3#3F>gJEmVC}e`yr+spvLfSd{KK7`^7N=A-2H5y=QkFaIxIwOE$EaWJ{fv=y{r+!A zI-S5M=BP|Hb{J2!6ZXP9vA#?(`p`O3yvX(_cD%S*RIu}m3u^-pMuZ-kyNWVg$X`a$ zidUtlPpR0j5X(Icj@hVikBW%gHR)g_PTd{Vc|Bq9gbE%P;xuXZtVog=%KfsQK4ij?<5);NZ`{UKPPNT{T5aj&$>Z8LLHpHarD*hP^Yl-B8wqi|I=o32=Uj1 za_qs4Rd2f3q+|1uyeJjJQ|sK>GEXI|ILjZ&tDy!+`5rg?zvGNIPK(&&=GxH*K9apz zo*K`1`*}zt$hXp%Eg0A5sG_wh`r%`DGAjFYzv-b^UKy@`-%Ysm$BP$Z6Al2%4_wg5$MHb@ zPzI+DKjYuq{*rB^$cUT%fHy*Y9|24}dnB8c%Sg%k^_@k&Y-mltk&5MDcCzZ1tlH6? zFQ3c-#^TBJWh!-UQVi*h%$KVwwqV547oBYvHQf;+8^voRH9uCoNBzPBvQ9<(U6x01 z-;7-bbz#nax;{BPAbBPF;>($N7tuvAprJWX`ZjN#A}oD^Eh9~3i?${DnFHfyjoewP>R&P>9E)CK4|X0_m$ z=11EylDiX8t$1~(4PbWP6eF}p8@$;nd>>Nl8&js8mtW)PC+%baIJw;4_qHRyx1V{@ zdc|ov);rwI*|sARw8cxHPUvMUIKydDA$oyO@2ScBlRtJ*J`AOnv0gsnP3ycbeYT7o zh(GP6(*R;AU*Vmse2&4V=a#xvHEeQqpE-?nEYK+;%9Z!1S+YdQr2J4>_%=#z>iDW? zfg=1<;z{+Ke!vOw-SY>8Q}U<0*&*6}o?HuBn1wx-PfV5Jh3qG7W@PI*nSsR4TSW%m zTx^qI-ML9Tk`QuxUo;|qnKcy9A@1RApSwbSQHya8L3c>oVV3O)l_~*hl7#~KN0K3v zPr`J|DbG6_`G&mKFyu&$3>lwD#ueDN?bF^p>wJdZs%_z4KkBpLoV)&mY;+ol@~lkT zw{m&owDCh2#V-mW?c3kpwp_t0o^B*0IU}(h()H^qey?i#zl-Ct#SAOSn)laWzJ(q6)tWq) zu``tqVGV_*wZ)UA@a|Do&v>9Tpb+v-Hq_d@NiA&;Vd;RmReR6?t+)h>v1D)L^B6R@ zy1;qp>}%jbhx=^CoOJ7CI)jT>*66z+chl$cc{f2+Z?9GEzFjBXrwf8so^@?`f2W@f*#1muYWo3zj-onV&CWwu**07WS}NA zYfsoEu=k{`MvHFgv**_>2WQ$c;EGZrTXCkUp>Z!(({+QP$Fl{lC-aL^Ov00dokPq0 zA_H{4Fm5ay&H#Vd@e?+=ut#o+w$|Kqr;u+8e}zn+a%R!AG4$}dB;9+cJrD5Drw>W9 z7V>Kr>D#%h>YXFyM!%LYU09R2&K3S$!NaDmRDMKM71kXXCN+8F!MMlu`Ob9=*~L_l zcoj!t?y}pixs@0ov*t%yQLR$I*I3*k8hRqQ)Vy3il?DoCV$ zptJpAYO-btt;1FsiDt2*yMegj>Tk8M@d7JQaEl=HQ~b~K#|qu_^nwAYdi~yroa)F4 z%8)~<05x9}iZb|mPls)CKpci$8zW4&a9iSj-Z3pvHmo=}L`BI8<4j3tz9u++d!X0L zZXM+GE=g0f1vAp1ecNW+|tt5P#w{fC0ucs^?wu0QGZpg<0`NT)z53K4&+ z)+6e*&sm{1tWVr8U`n3jx=ka!OrCZsYBVWBa6ndd;-f;0n_H%+sZ{x#BYKDhzZ)~| zrC1(O*x94c6n8F08A5{V8zLf#B+X_#_)0}|evsgy+p(wP3x~gw z4w{MVl%*8O1yNXgFU)LGQltkLC4LY-Y#nYsJo;;p4Eo##&ZTI=w+2=LHNMQJj8zB3 zCM^8{f@kw4mK(d5Lty+|?*_gyt4C6+tPG>gG7RvMV)1)yg%2kbT$^tX-;^>TrpyRG zm?L*w-jpyf_|O&>S!+3?uvlx|SRpWPeK`9fV0b7PNEMU$i5TY9JvQ_0t=KWP_PhL+ z1py039DiGLJL$PbQjFSbF7$hV>ZN}w7XjJ!MgsCx;z>H`rm*03z@3mFiPg!*+Q;G= z&IcW5<&b;9r0ee(OYI#$w%$avS&qX>skx;Oozzf28*GUjG+bdRl_O)s+q`2p|MG0f>&`Rj z`r&npPGY@}%#UU%_N9OXg54`VQf_yJm2S;)g@No&5AGcmi-cFP+|RKxbNU)vQyH#F zEO?60Z&xFR771%32M1kl@J1uWo;VJqJe+?#|E-ZJRaQW|pPI2FBrN$7ISG;R+YG|Y zq_zX^FjZ}5l7eNtSPtc7Y(x2iOg8@2BND|cqPnZmLDO^RYW1Km8d^0vIy$be78iDR zG&%<9GV&C0$11p2ilR6uTLP7in)c{$Qc|wwEwscrcgXh$p9wu|1d~Q3gCf6=W)kvo!1fxai0C$^vzeas4xqLWB5Rh!xr;b+Mu} z2{r<qCss=#2@eY=b=;Q~^-onfWvOf-v;Hn6$bGidIk(9g%U zLgr8@e=s){bbs5Um{KWg)a>B^ANPYfq-{9!88^2|z#m{K+7lBIB8(S-EMzB#$v9nP zQ&6DaqA8tT>QlN+nnRS3`>5GIYej<`YxK^|`nC!!`}*f*T_WYr2`a*P10D*c?9(@V z1yu59jx4xQVRj+?XR7|wr1?a$i8kq{C0i|OErZ$w%~mcq+G0rT8#fncO}YBV?-U(O z-cBX%<=;3OXm0GL>T+OM*$nh^;;KiZ zVHNtMO6Z&9YBp!N?LAyOG*L2%85@^h&Sj3)w097K{|B%uF|rIMci+<5CR4!}>h2(7 z>td1rjMs8V)JLAZ0Nvg?i=HXNpWn2DXs58samcQPiP}&QP^wO3h#ccSGd#F2Q(@C= zV16@H=;`>>T3(FghCC@jM9mm6z)yBTRaQEBM<+m|Sw3g!c!qV`D3azan&Bdnn3*aH zYJk(nMuk3y4GbwY{pc-*-Id(jl+|=t*nbgW;hKGq(fhq<%Rw&nVM z{d_c0ytK2@9)h-bpkH>mGs$E`*_L+d6j__9Csq^g;Hsi`a{Q?6hl7PQ5b(Qjm?#um z9m|BDskK-~V{}&3xoe(xQ(}&h{h7MDC_&KI51Kz4;}BY&*txkS8FA(}y4m+#X4O*} z$9?&8;@blc-9{Tw`#tU-w8muia44%fm}|1tZ6z5gNJ9BCOmX5{weucNH6clIHPdZJ3?=dtXGA zeHJytoTa5vZ=DEi_HOYS4Q~d6M44W>mT;LCisb$n?p+qu&P{3}p5q)~4Jpy8m`WYr zXJ1*jIJsq>Xu4-nR$O4r>Vm}x$jK;g=!5f@jv*KJK>o4WqJ`*O5UN(EVEyM?Ijk+=S@a{9fTE@y8IQ=&aL z%QzN=c_I~XCY$IRObXL8W$%3Qd50WG;^mEu3QjRxx$e9Fjk<%uV0evAc)iho79sF& zyZ=PpsojIQlOP2e^*z(SHvSuR$9-Veux{iNB-G@dh2qwQNTfupS9Vwq{{BM5$V~TA zEF(2a=^TSvgA@Qkv1#Kvz1gYVv(CFW)1!WI4NPIXO@eotw2U%3mbu;SJxJ~(yU(~d zC1dv&ZPZiGwSKnx?xrY&WIQp1z&ffRexam?sjQ%{$94}YQThg?OEeu%W963g-x{j} z9KkqD!VRb4(R|B;3^kziP*fq7r|yr~CgVCV8+61%pl*PUh=B=IxNl%B38MKNXH@BD zkHhW|!PD7mPl)^tvtda#rfQ>PI&{>DLzTkE>*%q&U#cn9>qmcC-Wt^&_`@c8wR#FsN-Fw#X#AR?n+Ime!18JY>?Ft_UtV~B%`_(UNw z!|FOt)gl@;_t-5GhW0uTE6WbrDBYju$IHElFwoE`817Ib>3fRcM0e7y5lRRaBV#*7 z>B}$L3C&fuxmSUPl>;yAqEPdZtI=_6OAwh+g}s_SA9JL;F4_O&B`0id6KMXN1$|b8 zknD({u{veu_9JU>y*26Md+-^Li$O;Fkkoto$syPr1jhF68wMM3q%*VXvgzBL7iKPM zdnD(V|F8w zwYGBFxhT~pLo`-9odL{_*OhN-fOorc{8Vc;NEhH5)BF!RR845s$Y#P57h zXnJ0{yC%+LK(y{ehOx!QNQG3;r1@S^4MiaB5M@9eYNH>*+1b6BxVFW{RF%9L(yx&T zWQo#*yx|n1B@~(~I6Uwg=?L72_;S-AlW@3vKXPVPp-W-b{*?coN^<|1+=#b|=nW@b z%duDTNhBUeL~}q}%>el5w2Jgcl1IkWNvF~oekQIC>!(MejPa#sZ{J9qvNwvq=3q!-0+_{~lC48AABfg5z)zvCE+fV7QIVOsOZrrKBrF z6q%*HNF<4?E zGdzIuHo-t4KITF8D(4neW*b5a#RS{}f=3ql?JWS^ zH<}j~hyoKDF1Wa0cw!~Qf`%#8tI;hu$`PF!Myw*ZVBxMl1Ao2Ejslas-3|b<5?Lmy z2f&X81wgfO2<+zx?t>ijnsvO#l>R0h`xtf48q;H1C=Wrd0&bhj1m;GY@mf=-wVAx3 z&eJN>ikllj(R!-GounWN-|0gEm`zOD#$NknmF$%R(kuQS0%fmWaAB@K@~;4)IijG1Jmm@nhn31uNJ|oU;!8) zG%j!A_#<_C;*i#~5~$7o9h^P3eMZ7!E1DmaHOIRcO1(y=f##L}K>sd6Pff#@Gv6gF zGHWq%cwjj2mEp5c4w^=EsVbcxWT-e{Gh-^DG;QiQzw(v-DEjG*{Z}uVF@&V9k63yQMF17T19LmlVQ+-3k(7`6c*K;j$o| zic&&~{1oH4CYlSgZg5Wyo_)zfRLiKe-m-yTXjB+t8rz$~X|)a1>iH znuFu$EMh(v>Be=MTv%IabvMOJ{3|bNR?-(5e&nPKIx~K63(aNv=fzA&2wz%LOxx2@ zOM&}UX=xdEcgNM;*&MbyLat$x>rxsTLmi^aJMH#!kVr{R-H{qyeXcg`%*Ybktl||l zUyapehVhEUwiOF3eOj%Jwk95MXY4)$0A>u=ubBoRXzO{+39~ReikHe+lTn9Ty&AQF zfC!O5Q*P2d-Y=wrnx5NJ23=u9X@_iHofq%K*qH0+GoWg?q^BLI)VeB3%8;5Cd=Byo zT_(FkI*cZjEe^mppomv4>I$kt;XcI5jOPGplnF^mAY=}XF&LBe?ya$L3P+eaplVZ> zX88pc7(SV5HXnBS##U%vlG|O~p|Y*kAW+*r3+A-2w-qmd{YE{Dw1mJApf`-u3baJr zbd29x{ac*_27oS2;_A>(Rb0Re zIhLcglcWoB6D_eSw?2xvJ>GGQ6i@ zoWv>$*z%{Xi50TSUfeh+8;e85C%Whx$lrl8tfr8_{^&O;<%qwTe_tVQmsth3=XWq} z>aK(9VJIo_XCys(rpDy_1!egpFRGmY;j62DVLefs;ZK8jXe<<@kO~$z6+yjN_DWS^ zC%BZBg{}}l;7D2Do%t}-TY2A_r8|PRqsbPSPdZo6@U}SAML}qyt=DwB` zjbteoVPe~E_4j2wR-t&#)_nNpghm$Wq)=&^)!;uspOPvb#^^|rhOSXhDz`%e&kw_A z+itAKr(~sOW!ecgnicl<++qx5L8{JHWGs_+%Iv))YG9_1Mt(6sBpUG_U}mdKS>T!` zRVbVUI`UfKWt)Ujflg>WVW3Soxl6%#8q?dA-nd<}G&yk-W@rhup$`@kfQyu=(E;dg zo97~Gx~Kt@u6@9(*Esr)09#I-DDtI*B@hoS^rL~-i`=2&)-sDg27{O=!|hd4SP|dX zEkP4dS-ZXL>d}|bJaL7Dh+`0P(wPtkLB|npyD@cn^lgg<3dxLDz^jkJFU6L68duVG z7hf1B6V!$C_>uQ-4hcK#bkzf4Nu!Q6n3CLh9f-hE4cbhP&PYWH)*BJW#gmTBDvZpx zaf0cbAl35>OgD2wk6r{LIia*d&!ZndkPfn!I6gsFh8ne98Ok zQ&W&uESl>FvaE*sx2Qc*)J={nJJ>a3sYGaL9?o)Bq2MdWxPlds*KChqVutLfDu^-_+~( zGjtDeB`FN3d-&^&T32HEla$zlFojD;Jf4j|5%k`uX_3lmKBF%Zi|Y!IQ6P)%(Ik%j z5LrtZg}y0CKppY+>JWcknWDl_n(f#+7p(E|?Hjy-!uK)c^5sM4^3o4LM~gYWmz5_E z8UX?Zx4j`Ma^eM29YVRiZ%f>$F%%IcE z%$B|cBdfRNBikvq#sbLryTU}^)Of4Zc@_OV9XUt`Pf9kKUxnvJg4*VG@pnv@Ha*xy zmgt9bq8baVpPns>Icl6KFwR#51BunsP@z5YQ{LCg?ABB*GARta`mB0l=7z4Z&URIH zy}rVa$upK4EU|&h8d_zbk$SvMYiqBh*9!wi#S`YeGIg(rLJu`;%zWA5ieoaWm`+*w zERTLJ3T1V={)+aLf>mKw`IsrAZTa;QOha8a+YfE7;2N#k7~(Zbcr`eEL^hL(k(e*< z@VsJT1R`-LI$>#xTHDONo#)z- zmQrH<8X!4z&;?b@1?HP8kX6`-J^oLr=-E4*p_wC`v5xjlcfixs)7^C={rZ_2KxMxM-H(t@F%!loP911g#z=Uts5ou@E^H zK|cfePt1%&8FUeh-!!9WGj|!1QSWh;t;l%Q-riH0Lhw=ru}Py5$=g1SH{ARICRHOC zp`1ms=G2Y5@Hqb=W;G1|y*JN}r!6b(BW&~4hcSdr&@8{@rt$3kd+(=0(z3Dd(N&L0 zIQRLJx3nU}sL7qlVUgP1dFJ#q6m|yioR4CvVX_7o%(j|O5!^95YxzCn;H;#6n_mtDic0NeOM{{ZYdCJ;yIenJJzZYjH~4lYd3SM@c-oSmUVEN37vhXeLO z6QA7VM`nZ*Y8x#;8Qo2W&29Ut4l<;_SxwZ+&GwB`S7kK$g!rK#j3M4sJ%lRsnOrU= zSMFYyq@N8USM8?+e$s=s*fEF>*@$T5dHz(V3HlBdo&yi*#zOgrPC-YKDNFcYZvFrS zw}n%v@tM0Sv(tVhePgeu-MFVTpm~>p$lwHCwp=n)JC2al>crXOQR(qe<*kZY|^p0dlS~wn { - return client.id !== clientId - }) - - // Unregister itself when there are no more clients - if (remainingClients.length === 0) { - self.registration.unregister() - } - - break - } - } -}) - -// Resolve the "master" client for the given event. -// Client that issues a request doesn't necessarily equal the client -// that registered the worker. It's with the latter the worker should -// communicate with during the response resolving phase. -async function resolveMasterClient(event) { - const client = await self.clients.get(event.clientId) - - if (client.frameType === 'top-level') { - return client - } - - const allClients = await self.clients.matchAll() - - return allClients - .filter((client) => { - // Get only those clients that are currently visible. - return client.visibilityState === 'visible' - }) - .find((client) => { - // Find the client ID that's recorded in the - // set of clients that have registered the worker. - return activeClientIds.has(client.id) - }) -} - -async function handleRequest(event, requestId) { - const client = await resolveMasterClient(event) - const response = await getResponse(event, client, requestId) - - // Send back the response clone for the "response:*" life-cycle events. - // Ensure MSW is active and ready to handle the message, otherwise - // this message will pend indefinitely. - if (client && activeClientIds.has(client.id)) { - ;(async function () { - const clonedResponse = response.clone() - sendToClient(client, { - type: 'RESPONSE', - payload: { - requestId, - type: clonedResponse.type, - ok: clonedResponse.ok, - status: clonedResponse.status, - statusText: clonedResponse.statusText, - body: - clonedResponse.body === null ? null : await clonedResponse.text(), - headers: serializeHeaders(clonedResponse.headers), - redirected: clonedResponse.redirected, - }, - }) - })() - } - - return response -} - -async function getResponse(event, client, requestId) { - const { request } = event - const requestClone = request.clone() - const getOriginalResponse = () => fetch(requestClone) - - // Bypass mocking when the request client is not active. - if (!client) { - return getOriginalResponse() - } - - // Bypass initial page load requests (i.e. static assets). - // The absence of the immediate/parent client in the map of the active clients - // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet - // and is not ready to handle requests. - if (!activeClientIds.has(client.id)) { - return await getOriginalResponse() - } - - // Bypass requests with the explicit bypass header - if (requestClone.headers.get(bypassHeaderName) === 'true') { - const cleanRequestHeaders = serializeHeaders(requestClone.headers) - - // Remove the bypass header to comply with the CORS preflight check. - delete cleanRequestHeaders[bypassHeaderName] - - const originalRequest = new Request(requestClone, { - headers: new Headers(cleanRequestHeaders), - }) - - return fetch(originalRequest) - } - - // Send the request to the client-side MSW. - const reqHeaders = serializeHeaders(request.headers) - const body = await request.text() - - const clientMessage = await sendToClient(client, { - type: 'REQUEST', - payload: { - id: requestId, - url: request.url, - method: request.method, - headers: reqHeaders, - cache: request.cache, - mode: request.mode, - credentials: request.credentials, - destination: request.destination, - integrity: request.integrity, - redirect: request.redirect, - referrer: request.referrer, - referrerPolicy: request.referrerPolicy, - body, - bodyUsed: request.bodyUsed, - keepalive: request.keepalive, - }, - }) - - switch (clientMessage.type) { - case 'MOCK_SUCCESS': { - return delayPromise( - () => respondWithMock(clientMessage), - clientMessage.payload.delay, - ) - } - - case 'MOCK_NOT_FOUND': { - return getOriginalResponse() - } - - case 'NETWORK_ERROR': { - const { name, message } = clientMessage.payload - const networkError = new Error(message) - networkError.name = name - - // Rejecting a request Promise emulates a network error. - throw networkError - } - - case 'INTERNAL_ERROR': { - const parsedBody = JSON.parse(clientMessage.payload.body) - - console.error( - `\ -[MSW] Request handler function for "%s %s" has thrown the following exception: - -${parsedBody.errorType}: ${parsedBody.message} -(see more detailed error stack trace in the mocked response body) - -This exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error. -If you wish to mock an error response, please refer to this guide: https://mswjs.io/docs/recipes/mocking-error-responses\ -`, - request.method, - request.url, - ) - - return respondWithMock(clientMessage) - } - } - - return getOriginalResponse() -} - -self.addEventListener('fetch', function (event) { - const { request } = event - - // Bypass navigation requests. - if (request.mode === 'navigate') { - return - } - - // Opening the DevTools triggers the "only-if-cached" request - // that cannot be handled by the worker. Bypass such requests. - if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { - return - } - - // Bypass all requests when there are no active clients. - // Prevents the self-unregistered worked from handling requests - // after it's been deleted (still remains active until the next reload). - if (activeClientIds.size === 0) { - return - } - - const requestId = uuidv4() - - return event.respondWith( - handleRequest(event, requestId).catch((error) => { - console.error( - '[MSW] Failed to mock a "%s" request to "%s": %s', - request.method, - request.url, - error, - ) - }), - ) -}) - -function serializeHeaders(headers) { - const reqHeaders = {} - headers.forEach((value, name) => { - reqHeaders[name] = reqHeaders[name] - ? [].concat(reqHeaders[name]).concat(value) - : value - }) - return reqHeaders -} - -function sendToClient(client, message) { - return new Promise((resolve, reject) => { - const channel = new MessageChannel() - - channel.port1.onmessage = (event) => { - if (event.data && event.data.error) { - return reject(event.data.error) - } - - resolve(event.data) - } - - client.postMessage(JSON.stringify(message), [channel.port2]) - }) -} - -function delayPromise(cb, duration) { - return new Promise((resolve) => { - setTimeout(() => resolve(cb()), duration) - }) -} - -function respondWithMock(clientMessage) { - return new Response(clientMessage.payload.body, { - ...clientMessage.payload, - headers: clientMessage.payload.headers, - }) -} - -function uuidv4() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - const r = (Math.random() * 16) | 0 - const v = c == 'x' ? r : (r & 0x3) | 0x8 - return v.toString(16) - }) -} diff --git a/public/pokemon.css b/public/pokemon.css deleted file mode 100644 index 325e2b8b9..000000000 --- a/public/pokemon.css +++ /dev/null @@ -1,139 +0,0 @@ -#error-message { - color: red; -} - -/* For exercise 6, we're handling errors with an error boundary */ -body[class*='6'] :not(.render-container) > iframe, -body[class*='6'] > iframe { - display: none; -} - -.pokemon-info-app a { - color: #cc0000; -} - -.pokemon-info-app a:focus, -.pokemon-info-app a:hover, -.pokemon-info-app a:active { - color: #8a0000; -} - -.pokemon-info-app input { - line-height: 2; - font-size: 16px; - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - border: none; - border-radius: 2px; - padding-left: 10px; - padding-right: 10px; - background-color: #eee; -} - -.pokemon-info-app button { - font-size: 1rem; - font-family: inherit; - border: 1px solid #ff0000; - background-color: #cc0000; - cursor: pointer; - padding: 8px 10px; - color: #eee; - border-radius: 3px; -} - -.pokemon-info-app button:disabled { - border-color: #dc9494; - background-color: #f16161; - cursor: unset; -} - -.pokemon-info-app button:hover:not(:disabled), -.pokemon-info-app button:active:not(:disabled), -.pokemon-info-app button:focus:not(:disabled) { - border-color: #cc0000; - background-color: #8a0000; -} - -.pokemon-info-app .totally-centered { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; -} - -.pokemon-info-app { - max-width: 500px; - margin: auto; -} - -[class*='_isolated'] .pokemon-info-app { - margin-top: 50px; -} - -.pokemon-form { - display: flex; - flex-direction: column; - align-items: center; -} - -.pokemon-form input { - margin-top: 10px; - margin-right: 10px; -} - -.pokemon-info { - height: 400px; - width: 300px; - margin: auto; - overflow: auto; - background-color: #eee; - border-radius: 4px; - padding: 10px; - position: relative; -} - -.pokemon-info.pokemon-loading { - opacity: 0.6; - transition: opacity 0s; - /* note: the transition delay is the same as the busyDelayMs config */ - transition-delay: 0.4s; -} - -.pokemon-info h2 { - font-weight: bold; - text-align: center; - margin-top: 0.3em; -} - -.pokemon-info img { - max-width: 100%; - max-height: 200px; -} - -.pokemon-info .pokemon-info__img-wrapper { - text-align: center; - margin-top: 20px; -} - -.pokemon-info .pokemon-info__fetch-time { - position: absolute; - top: 6px; - right: 10px; -} - -.pokemon-info-app button.invisible-button { - border: none; - padding: inherit; - font-size: inherit; - font-family: inherit; - cursor: pointer; - font-weight: inherit; - background-color: transparent; - color: #000; -} -.pokemon-info-app button.invisible-button:hover, -.pokemon-info-app button.invisible-button:active, -.pokemon-info-app button.invisible-button:focus { - border: none; - background-color: transparent; -} diff --git a/public/tic-tac-toe.styles.css b/public/tic-tac-toe.styles.css deleted file mode 100644 index ed6bc8775..000000000 --- a/public/tic-tac-toe.styles.css +++ /dev/null @@ -1,54 +0,0 @@ -.game { - font: 14px 'Century Gothic', Futura, sans-serif; - margin: 20px; - min-height: 260px; -} - -.game ol, -.game ul { - padding-left: 30px; -} - -.board-row:after { - clear: both; - content: ''; - display: table; -} - -.status { - margin-bottom: 10px; -} - -.restart { - margin-top: 10px; -} - -.square { - background: #fff; - border: 1px solid #999; - float: left; - font-size: 24px; - font-weight: bold; - line-height: 34px; - height: 34px; - margin-right: -1px; - margin-top: -1px; - padding: 0; - text-align: center; - width: 34px; -} - -.square:focus { - outline: none; - background: #ddd; -} - -.game { - display: flex; - flex-direction: row; -} - -.game-info { - margin-left: 20px; - min-width: 190px; -} diff --git a/public/vanilla-tilt.styles.css b/public/vanilla-tilt.styles.css deleted file mode 100644 index a3268401e..000000000 --- a/public/vanilla-tilt.styles.css +++ /dev/null @@ -1,31 +0,0 @@ -/* -Taken from the vanilla-tilt.js demo site: -https://micku7zu.github.io/vanilla-tilt.js/index.html -*/ -.tilt-root { - height: 150px; - background-color: red; - width: 200px; - background-image: -webkit-linear-gradient(315deg, #ff00ba 0%, #fae713 100%); - background-image: linear-gradient(135deg, #ff00ba 0%, #fae713 100%); - transform-style: preserve-3d; - will-change: transform; - transform: perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1); -} -.tilt-child { - position: absolute; - width: 50%; - height: 50%; - top: 50%; - left: 50%; - transform: translateZ(30px) translateX(-50%) translateY(-50%); - box-shadow: 0 0 50px 0 rgba(51, 51, 51, 0.3); - background-color: white; -} -.totally-centered { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; -} diff --git a/sandbox.config.json b/sandbox.config.json deleted file mode 100644 index a70536977..000000000 --- a/sandbox.config.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": "node", - "container": { - "startScript": "start", - "port": 3000, - "node": "14" - } -} diff --git a/scripts/deployed/Dockerfile b/scripts/deployed/Dockerfile new file mode 100644 index 000000000..22d1748fa --- /dev/null +++ b/scripts/deployed/Dockerfile @@ -0,0 +1,22 @@ +FROM node:18-bookworm-slim as base + +RUN apt-get update && apt-get install -y git + +ENV KCDSHOP_CONTEXT_CWD="/myapp/workshop-content" +ENV KCDSHOP_DEPLOYED="true" +ENV KCDSHOP_DISABLE_WATCHER="true" +ENV FLY="true" +ENV PORT="8080" +ENV NODE_ENV="production" + +WORKDIR /myapp + +ADD . . + +RUN npm install --omit=dev + +CMD node ./setup-swap.js && \ + rm -rf ${KCDSHOP_CONTEXT_CWD} && \ + git clone https://github.com/epicweb-dev/react-hooks ${KCDSHOP_CONTEXT_CWD} && \ + cd ${KCDSHOP_CONTEXT_CWD} && \ + npx kcdshop start diff --git a/scripts/deployed/fly.toml b/scripts/deployed/fly.toml new file mode 100644 index 000000000..269437ced --- /dev/null +++ b/scripts/deployed/fly.toml @@ -0,0 +1,45 @@ +app = "epicweb-dev-react-hooks" +primary_region = "sjc" +kill_signal = "SIGINT" +kill_timeout = 5 +processes = [ ] + +[experimental] +allowed_public_ports = [ ] +auto_rollback = true + +[[services]] +internal_port = 8080 +processes = [ "app" ] +protocol = "tcp" +script_checks = [ ] + + [services.concurrency] + hard_limit = 100 + soft_limit = 80 + type = "connections" + + [[services.ports]] + handlers = [ "http" ] + port = 80 + force_https = true + + [[services.ports]] + handlers = [ "tls", "http" ] + port = 443 + + [[services.tcp_checks]] + grace_period = "1s" + interval = "15s" + restart_limit = 0 + timeout = "2s" + + [[services.http_checks]] + interval = "10s" + grace_period = "5s" + method = "get" + path = "/" + protocol = "http" + timeout = "2s" + tls_skip_verify = false + headers = { } \ No newline at end of file diff --git a/scripts/deployed/package.json b/scripts/deployed/package.json new file mode 100644 index 000000000..9dfa28d94 --- /dev/null +++ b/scripts/deployed/package.json @@ -0,0 +1,18 @@ +{ + "name": "deployed-react-hooks", + "private": true, + "type": "module", + "scripts": { + "start": "kcdshop start" + }, + "author": "Kent C. Dodds (https://kentcdodds.com/)", + "license": "GPL-3.0-only", + "dependencies": { + "@kentcdodds/workshop-app": "^2.58.8", + "execa": "^7.2.0" + }, + "engines": { + "node": ">=18", + "npm": ">=8.16.0" + } +} diff --git a/scripts/deployed/setup-swap.js b/scripts/deployed/setup-swap.js new file mode 100644 index 000000000..1c490a6ac --- /dev/null +++ b/scripts/deployed/setup-swap.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +import { $ } from 'execa' +import { writeFile, stat } from 'node:fs/promises' + +const swapExists = await stat('/swapfile').catch(() => false) + +console.log('setting up swapfile...') + +if (swapExists) { + console.log('swapfile already exists') +} else { + await $`fallocate -l 128M /swapfile` + await $`chmod 0600 /swapfile` + await $`mkswap /swapfile` + await writeFile('/proc/sys/vm/swappiness', '10') + await $`swapon /swapfile` + await writeFile('/proc/sys/vm/overcommit_memory', '1') + console.log('swapfile setup complete') +} diff --git a/scripts/diff.js b/scripts/diff.js deleted file mode 100644 index 3ca0f2491..000000000 --- a/scripts/diff.js +++ /dev/null @@ -1,34 +0,0 @@ -const {spawnSync} = require('child_process') -const inquirer = require('inquirer') -const glob = require('glob') - -async function go() { - const files = glob - .sync('src/+(exercise|final)/*.+(js|ts|tsx)', { - ignore: ['*.d.ts'], - }) - .map(f => f.replace(/^src\//, '')) - const {first} = await inquirer.prompt([ - { - name: 'first', - message: `What's the first file`, - type: 'list', - choices: files, - }, - ]) - const {second} = await inquirer.prompt([ - { - name: 'second', - message: `What's the second file`, - type: 'list', - choices: files.filter(f => f !== first), - }, - ]) - - spawnSync(`git diff --no-index ./src/${first} ./src/${second}`, { - shell: true, - stdio: 'inherit', - }) -} - -go() diff --git a/scripts/fix-links b/scripts/fix-links deleted file mode 100755 index 0cc29f64c..000000000 --- a/scripts/fix-links +++ /dev/null @@ -1,2 +0,0 @@ -npx https://gist.github.com/kentcdodds/436a77ff8977269e5fee39d9d89956de -npm run format diff --git a/scripts/fix-watch.js b/scripts/fix-watch.js new file mode 100644 index 000000000..362627249 --- /dev/null +++ b/scripts/fix-watch.js @@ -0,0 +1,75 @@ +import chokidar from 'chokidar' +import path from 'node:path' +import { $ } from 'execa' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const here = (...p) => path.join(__dirname, ...p) + +const workshopRoot = here('..') + +const watchPath = path.join(workshopRoot, './exercises/*') +const watcher = chokidar.watch(watchPath, { + ignored: /(^|[\/\\])\../, // ignore dotfiles + persistent: true, + ignoreInitial: true, + depth: 2, +}) + +const debouncedRun = debounce(run, 200) + +// Add event listeners. +watcher + .on('addDir', path => { + debouncedRun() + }) + .on('unlinkDir', path => { + // Only act if path contains two slashes (excluding the leading `./`) + debouncedRun() + }) + .on('error', error => console.log(`Watcher error: ${error}`)) + +/** + * Simple debounce implementation + */ +function debounce(fn, delay) { + let timer = null + return (...args) => { + if (timer) clearTimeout(timer) + timer = setTimeout(() => { + fn(...args) + }, delay) + } +} + +let running = false + +async function run() { + if (running) { + console.log('still running...') + return + } + running = true + try { + await $({ + stdio: 'inherit', + cwd: workshopRoot, + })`node ./scripts/fix.js` + } catch (error) { + throw error + } finally { + running = false + } +} + +console.log(`watching ${watchPath}`) + +// doing this because the watcher doesn't seem to work and I don't have time +// to figure out why 🙃 +console.log('Polling...') +setInterval(() => { + run() +}, 1000) + +console.log('running fix to start...') +run() diff --git a/scripts/fix.js b/scripts/fix.js new file mode 100644 index 000000000..972a87b9e --- /dev/null +++ b/scripts/fix.js @@ -0,0 +1,116 @@ +// This should run by node without any dependencies +// because you may need to run it without deps. + +import fs from 'node:fs' +import cp from 'node:child_process' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const here = (...p) => path.join(__dirname, ...p) +const VERBOSE = false +const logVerbose = (...args) => (VERBOSE ? console.log(...args) : undefined) + +const workshopRoot = here('..') +const examples = (await readDir(here('../examples'))).map(dir => + here(`../examples/${dir}`), +) +const exercises = (await readDir(here('../exercises'))) + .map(name => here(`../exercises/${name}`)) + .filter(filepath => fs.statSync(filepath).isDirectory()) +const exerciseApps = ( + await Promise.all( + exercises.flatMap(async exercise => { + return (await readDir(exercise)) + .filter(dir => { + return /(problem|solution)/.test(dir) + }) + .map(dir => path.join(exercise, dir)) + }), + ) +).flat() +const exampleApps = (await readDir(here('../examples'))).map(dir => + here(`../examples/${dir}`), +) +const apps = [...exampleApps, ...exerciseApps] + +const appsWithPkgJson = [...examples, ...apps].filter(app => { + const pkgjsonPath = path.join(app, 'package.json') + return exists(pkgjsonPath) +}) + +// update the package.json file name property +// to match the parent directory name + directory name +// e.g. exercises/01-goo/problem.01-great +// name: "exercises__sep__01-goo.problem__sep__01-great" + +function relativeToWorkshopRoot(dir) { + return dir.replace(`${workshopRoot}${path.sep}`, '') +} + +await updatePkgNames() +await updateTsconfig() + +async function updatePkgNames() { + for (const file of appsWithPkgJson) { + const pkgjsonPath = path.join(file, 'package.json') + const pkg = JSON.parse(await fs.promises.readFile(pkgjsonPath, 'utf8')) + pkg.name = relativeToWorkshopRoot(file).replace(/\\|\//g, '__sep__') + const written = await writeIfNeeded( + pkgjsonPath, + `${JSON.stringify(pkg, null, 2)}\n`, + ) + if (written) { + console.log(`updated ${path.relative(process.cwd(), pkgjsonPath)}`) + } + } +} + +async function updateTsconfig() { + const tsconfig = { + files: [], + exclude: ['node_modules'], + references: appsWithPkgJson.map(a => ({ + path: relativeToWorkshopRoot(a).replace(/\\/g, '/'), + })), + } + const written = await writeIfNeeded( + path.join(workshopRoot, 'tsconfig.json'), + `${JSON.stringify(tsconfig, null, 2)}\n`, + { parser: 'json' }, + ) + + if (written) { + // delete node_modules/.cache + const cacheDir = path.join(workshopRoot, 'node_modules', '.cache') + if (exists(cacheDir)) { + await fs.promises.rm(cacheDir, { recursive: true }) + } + console.log('all fixed up') + } +} + +async function writeIfNeeded(filepath, content) { + const oldContent = await fs.promises.readFile(filepath, 'utf8') + if (oldContent !== content) { + await fs.promises.writeFile(filepath, content) + } + return oldContent !== content +} + +function exists(p) { + if (!p) return false + try { + fs.statSync(p) + return true + } catch (error) { + return false + } +} + +async function readDir(dir) { + if (exists(dir)) { + return fs.promises.readdir(dir) + } + return [] +} diff --git a/scripts/nuke.js b/scripts/nuke.js new file mode 100644 index 000000000..4a69b3fd8 --- /dev/null +++ b/scripts/nuke.js @@ -0,0 +1,8 @@ +import path from 'node:path' +import fs from 'fs' + +const nodeModulesDir = path.join(process.cwd(), 'node_modules') +const pkgLock = path.join(process.cwd(), 'package-lock.json') +console.log(`💥 deleting ${nodeModulesDir} and lockfile`) +await fs.promises.rm(nodeModulesDir, { recursive: true }).catch(() => {}) +await fs.promises.rm(pkgLock).catch(() => {}) diff --git a/scripts/pre-commit.js b/scripts/pre-commit.js deleted file mode 100644 index 44a80c264..000000000 --- a/scripts/pre-commit.js +++ /dev/null @@ -1,14 +0,0 @@ -import {spawnSync} from 'child_process' -import os from 'os' - -const {username} = os.userInfo() -if (username === 'kentcdodds') { - const result = spawnSync('npm run validate', { - stdio: 'inherit', - shell: true, - }) - - if (result.status !== 0) { - process.exit(result.status) - } -} diff --git a/scripts/pre-push.js b/scripts/pre-push.js deleted file mode 100644 index 9ace0dce6..000000000 --- a/scripts/pre-push.js +++ /dev/null @@ -1,24 +0,0 @@ -import fs from 'fs' -import os from 'os' -import path from 'path' - -try { - const {username} = os.userInfo() - const { - repository: {url: repoUrl}, - } = fs.readFileSync(path.join(process.cwd(), 'package.json')) - - const remote = process.env.HUSKY_GIT_PARAMS.split(' ')[1] - const repoName = repoUrl.match(/(?:.(?!\/))+\.git$/)[0] - if ( - ['kentcdodds', 'chan'].includes(username) && - remote.includes(`kentcdodds${repoName}`) - ) { - console.log( - `You're trying to push to Kent's repo directly. If you want to save and push your work or even make a contribution to the workshop material, you'll need to fork the repo first and push changes to your fork. Learn how here: https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/fork-a-repo`, - ) - process.exit(1) - } -} catch (error) { - // ignore -} diff --git a/scripts/remove-ts b/scripts/remove-ts deleted file mode 100755 index ebfeedaf8..000000000 --- a/scripts/remove-ts +++ /dev/null @@ -1,2 +0,0 @@ -npx https://gist.github.com/kentcdodds/e49b9b8da0dd467149d8d67258251585 -./scripts/fix-links diff --git a/scripts/setup-custom.js b/scripts/setup-custom.js new file mode 100644 index 000000000..dda99460b --- /dev/null +++ b/scripts/setup-custom.js @@ -0,0 +1,43 @@ +import fs from 'fs' +import path from 'node:path' +import { spawn } from 'child_process' +import fsExtra from 'fs-extra' +import { $ } from 'execa' +import { + getApps, + isProblemApp, + setPlayground, +} from '@kentcdodds/workshop-app/apps.server' +import { getWatcher } from '@kentcdodds/workshop-app/change-tracker' + +// getApps expects this env var +process.env.NODE_ENV = 'development' + +const allApps = await getApps() +const uniqueApps = allApps.filter( + (a, index) => allApps.findIndex(b => b.fullPath === a.fullPath) === index, +) +const problemApps = allApps.filter(isProblemApp) + +if (!process.env.SKIP_PLAYGROUND) { + const firstProblemApp = problemApps[0] + if (firstProblemApp) { + console.log('🛝 setting up the first problem app...') + const playgroundPath = path.join(process.cwd(), 'playground') + if (await fsExtra.exists(playgroundPath)) { + console.log('🗑 deleting existing playground app') + await fsExtra.remove(playgroundPath) + } + await setPlayground(firstProblemApp.fullPath).then( + () => { + console.log('✅ first problem app set up') + }, + error => { + console.error(error) + throw new Error('❌ first problem app setup failed') + }, + ) + } +} + +getWatcher().close() diff --git a/scripts/setup.js b/scripts/setup.js index 570babfb1..e97d64932 100644 --- a/scripts/setup.js +++ b/scripts/setup.js @@ -1,6 +1,6 @@ import { spawnSync } from 'child_process' -var styles = { +const styles = { // got these from playing around with what I found from: // https://github.com/istanbuljs/istanbuljs/blob/0f328fd0896417ccb2085f4b7888dd8e167ba3fa/packages/istanbul-lib-report/lib/file-writer.js#L84-L96 // they're the best I could find that works well for light or dark terminals @@ -16,12 +16,12 @@ function color(modifier, string) { console.log(color('info', '▶️ Starting workshop setup...')) -var output = spawnSync('npm --version', { shell: true }) +const output = spawnSync('npm --version', { shell: true }) .stdout.toString() .trim() -var outputParts = output.split('.') -var major = Number(outputParts[0]) -var minor = Number(outputParts[1]) +const outputParts = output.split('.') +const major = Number(outputParts[0]) +const minor = Number(outputParts[1]) if (major < 8 || (major === 8 && minor < 16)) { console.error( color( @@ -34,13 +34,13 @@ if (major < 8 || (major === 8 && minor < 16)) { throw new Error('npm version is out of date') } -var command = - 'npx "https://gist.github.com/kentcdodds/bb452ffe53a5caa3600197e1d8005733" -q' +const command = + 'npx --yes "https://gist.github.com/kentcdodds/bb452ffe53a5caa3600197e1d8005733" -q' console.log( color('subtitle', ' Running the following command: ' + command), ) -var result = spawnSync(command, { stdio: 'inherit', shell: true }) +const result = spawnSync(command, { stdio: 'inherit', shell: true }) if (result.status === 0) { console.log(color('success', '✅ Workshop setup complete...')) @@ -50,6 +50,6 @@ if (result.status === 0) { /* eslint - no-var: "off", + "no-undef": "off", "vars-on-top": "off", -*/ \ No newline at end of file +*/ diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 000000000..af403ace5 --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "module": "NodeNext", + "target": "es2022", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "allowJs": true, + "skipLibCheck": true, + "noEmit": true + } +} diff --git a/scripts/update-deps b/scripts/update-deps deleted file mode 100755 index 0e6ec5291..000000000 --- a/scripts/update-deps +++ /dev/null @@ -1,5 +0,0 @@ -# prettier-ignore -npx npm-check-updates --upgrade --reject husky,chalk -rm -rf node_modules package-lock.json -npx npm@8 install -npm run validate diff --git a/scripts/update-deps.sh b/scripts/update-deps.sh new file mode 100755 index 000000000..c92db27ae --- /dev/null +++ b/scripts/update-deps.sh @@ -0,0 +1,6 @@ +npx npm-check-updates --dep prod,dev --upgrade --workspaces --root +rm -rf node_modules package-lock.json ./exercises/**/node_modules +npm install +node setup.js +npm run typecheck +npm run lint --fix diff --git a/setup.js b/setup.js index 1aa7b0527..5c84fd640 100644 --- a/setup.js +++ b/setup.js @@ -1,2 +1 @@ -require('./scripts/setup') - +import './scripts/setup.js' diff --git a/shared/blog-posts.tsx b/shared/blog-posts.tsx new file mode 100644 index 000000000..e9375d319 --- /dev/null +++ b/shared/blog-posts.tsx @@ -0,0 +1,108 @@ +const blogPosts = [ + { + id: 'cc96d5325894a', + title: 'The Joy of Owning a Dog', + description: + 'Discover the happiness and companionship that comes with owning a dog.', + tags: ['dog', 'happiness'], + }, + { + id: 'b912d5c6674bb', + title: 'Caring for Your Feline Friend', + description: + 'Learn how to provide the best care for your beloved cat (not caterpiller).', + tags: ['cat', 'care', 'caterpillar'], + }, + { + id: 'ed9189302b665', + title: 'The Fascinating World of Caterpillars', + description: + 'Explore the incredible transformation of caterpillars into beautiful butterflies.', + tags: ['caterpillar', 'butterfly'], + }, + { + id: '6903727b0009e', + title: 'Training Your Dog: Tips and Tricks', + description: + 'Discover effective techniques to train your dog and build a strong bond.', + tags: ['dog', 'training'], + }, + { + id: 'c631e68546bf3', + title: 'Cat Breeds: Choosing the Perfect Companion', + description: + 'Find the ideal cat breed that matches your lifestyle and personality.', + tags: ['cat', 'breeds'], + }, + { + id: '0c2ef14638642', + title: 'The Life Cycle of a Butterfly', + description: + "Learn about the stages of a butterfly's life and its importance in nature.", + tags: ['caterpillar', 'butterfly'], + }, + { + id: 'd75f1c4c29da1', + title: 'Dog Health: Common Issues and Prevention', + description: + 'Discover how to keep your dog healthy and prevent common health problems.', + tags: ['dog', 'health'], + }, + { + id: '537c25b372465', + title: 'Cat Behavior: Understanding Your Feline Friend', + description: + 'Gain insights into the behavior of cats, why some hate dogs, and how to strengthen your bond with them.', + tags: ['cat', 'behavior', 'dog'], + }, + { + id: '12556f3115f1', + title: 'Gardening for Caterpillars: Creating a Butterfly Haven', + description: + 'Learn how to create a garden that attracts caterpillars and supports butterfly populations.', + tags: ['caterpillar', 'gardening'], + }, + { + id: '405654d99d80d', + title: 'Dog-Friendly Activities: Fun Adventures for You and Your Pup', + description: + 'Discover exciting activities to enjoy with your dog and create lasting memories.', + tags: ['dog', 'activities'], + }, +] as const + +export type BlogPost = (typeof blogPosts)[number] + +function getColorFromSeed( + seed: string, + startIndex: number, + length: number, +): string { + const endIndex = (startIndex + length) % seed.length + if (endIndex >= startIndex) { + return seed.slice(startIndex, endIndex) + } else { + return seed.slice(startIndex) + seed.slice(0, endIndex) + } +} + +export function generateGradient(seedHex: string): string { + const color1 = getColorFromSeed(seedHex, 0, 6) + const color2 = getColorFromSeed(seedHex, 6, 6) + const degree = seedHex.charCodeAt(0) % 360 + const gradient = `linear-gradient(${degree}deg, #${color1}, #${color2})` + + return gradient +} + +export function getMatchingPosts(query: string) { + const words = query.split(' ').map(w => w.trim()) + return blogPosts.filter(post => { + if (!query) return true + return ( + words.every(word => post.tags.some(tag => tag === word)) || + post.title.toLowerCase().includes(query.toLowerCase()) || + post.description.toLowerCase().includes(query.toLowerCase()) + ) + }) +} diff --git a/shared/pokemon.tsx b/shared/pokemon.tsx deleted file mode 100644 index 7dc84035c..000000000 --- a/shared/pokemon.tsx +++ /dev/null @@ -1,229 +0,0 @@ -import * as React from 'react' -import type {PokemonData} from '../src/types' -import type {FallbackProps, ErrorBoundaryProps} from 'react-error-boundary' -import {ErrorBoundary} from 'react-error-boundary' - -const formatDate = (date: Date) => - `${date.getHours()}:${String(date.getMinutes()).padStart(2, '0')} ${String( - date.getSeconds(), - ).padStart(2, '0')}.${String(date.getMilliseconds()).padStart(3, '0')}` - -/** - * - * @param name the name of the pokemon - * @param delay an arbitrary delay (to test loading states). This is optional and defaults to 1500 - */ -async function fetchPokemon( - name: string, - delay: number = 1500, -): Promise { - const pokemonQuery = ` - query PokemonInfo($name: String) { - pokemon(name: $name) { - id - number - name - image - attacks { - special { - name - type - damage - } - } - } - } - ` - - const response = await window.fetch('https://graphql-pokemon2.vercel.app/', { - // learn more about this API here: https://graphql-pokemon2.vercel.app/ - method: 'POST', - headers: { - 'content-type': 'application/json;charset=UTF-8', - delay: String(delay), - }, - body: JSON.stringify({ - query: pokemonQuery, - variables: {name: name.toLowerCase()}, - }), - }) - - type JSONResponse = { - data?: { - pokemon: Omit - } - errors?: Array<{message: string}> - } - const {data, errors}: JSONResponse = await response.json() - if (response.ok) { - const pokemon = data?.pokemon - if (pokemon) { - // add fetchedAt helper - return Object.assign(pokemon, {fetchedAt: formatDate(new Date())}) - } else { - return Promise.reject(new Error(`No pokemon with the name "${name}"`)) - } - } else { - // handle the graphql errors - const error = new Error(errors?.map(e => e.message).join('\n') ?? 'unknown') - return Promise.reject(error) - } -} - -function PokemonInfoFallback({name}: {name: string}) { - const initialName = React.useRef(name).current - const fallbackPokemonData: PokemonData = { - id: 'loading-pokemon', - name: initialName, - number: 'XXX', - image: '/img/pokemon/fallback-pokemon.jpg', - attacks: { - special: [ - {name: 'Loading Attack 1', type: 'Type', damage: -1}, - {name: 'Loading Attack 2', type: 'Type', damage: -1}, - ], - }, - fetchedAt: 'loading...', - } - return -} - -function PokemonDataView({pokemon}: {pokemon: PokemonData}) { - return ( -
    -
    - {pokemon.name} -
    -
    -

    - {pokemon.name} - {pokemon.number} -

    -
    -
    -
      - {pokemon.attacks.special.map(attack => ( -
    • - :{' '} - - {attack.damage < 0 ? 'XX' : attack.damage}{' '} - ({attack.type}) - -
    • - ))} -
    -
    - {pokemon.fetchedAt} -
    - ) -} - -function PokemonForm({ - pokemonName: externalPokemonName, - initialPokemonName = externalPokemonName ?? '', - onSubmit, -}: { - pokemonName: string - initialPokemonName?: string - onSubmit: (newPokemonName: string) => void -}) { - const [pokemonName, setPokemonName] = React.useState(initialPokemonName) - - // this is generally not a great idea. We're synchronizing state when it is - // normally better to derive it https://kentcdodds.com/blog/dont-sync-state-derive-it - // however, we're doing things this way to make it easier for the exercises - // to not have to worry about the logic for this PokemonForm component. - React.useEffect(() => { - // note that because it's a string value, if the externalPokemonName - // is the same as the one we're managing, this will not trigger a re-render - if (typeof externalPokemonName === 'string') { - setPokemonName(externalPokemonName) - } - }, [externalPokemonName]) - - function handleChange(e: React.SyntheticEvent) { - setPokemonName(e.currentTarget.value) - } - - function handleSubmit(e: React.SyntheticEvent) { - e.preventDefault() - onSubmit(pokemonName) - } - - function handleSelect(newPokemonName: string) { - setPokemonName(newPokemonName) - onSubmit(newPokemonName) - } - - return ( -
    - - - Try{' '} - - {', '} - - {', or '} - - -
    - - -
    -
    - ) -} - -function ErrorFallback({error, resetErrorBoundary}: FallbackProps) { - return ( -
    - There was an error:{' '} -
    {error.message}
    - -
    - ) -} - -function PokemonErrorBoundary( - props: Pick & { - children: React.ReactNode - }, -) { - return -} - -export { - PokemonInfoFallback, - PokemonForm, - PokemonDataView, - fetchPokemon, - PokemonErrorBoundary, -} diff --git a/shared/tic-tac-toe-utils.tsx b/shared/tic-tac-toe-utils.tsx index 6db3c8fc4..34efc6285 100644 --- a/shared/tic-tac-toe-utils.tsx +++ b/shared/tic-tac-toe-utils.tsx @@ -1,48 +1,88 @@ -type Player = 'X' | 'O' -type Squares = Array +export type Player = 'X' | 'O' +export type Squares = Array -function calculateStatus( - winner: null | string, - squares: Squares, - nextValue: Player, +export type GameState = { + history: Array + currentStep: number +} + +function isSquare(value: unknown): value is null | 'X' | 'O' { + return value === null || value === 'X' || value === 'O' +} + +function isArray(value: unknown): value is Array { + return Array.isArray(value) +} + +function isSquaresArray(value: unknown): value is Squares { + if (!isArray(value)) return false + return value.length === 9 && value.every(isSquare) +} + +function isHistory(value: unknown): value is Array { + if (!isArray(value)) return false + if (value.length !== 9) return false + if (!value.every(isSquaresArray)) return false + return true +} + +function isStep(value: unknown): value is number { + return ( + typeof value === 'number' && + Number.isInteger(value) && + value >= 0 && + value <= 9 + ) +} + +export function isValidGameState(value: unknown): value is GameState { + return ( + typeof value === 'object' && + value !== null && + isHistory((value as any).history) && + isStep((value as any).currentStep) + ) +} + +export function calculateStatus( + winner: null | string, + squares: Squares, + nextValue: Player, ) { - return winner - ? `Winner: ${winner}` - : squares.every(Boolean) - ? `Scratch: Cat's game` - : `Next player: ${nextValue}` -} - -function calculateNextValue(squares: Squares): Player { - const xSquaresCount = squares.filter(r => r === 'X').length - const oSquaresCount = squares.filter(r => r === 'O').length - return oSquaresCount === xSquaresCount ? 'X' : 'O' -} - -function calculateWinner(squares: Squares): Player | null { - const lines = [ - [0, 1, 2], - [3, 4, 5], - [6, 7, 8], - [0, 3, 6], - [1, 4, 7], - [2, 5, 8], - [0, 4, 8], - [2, 4, 6], - ] - for (let i = 0; i < lines.length; i++) { - const line = lines[i] - if (!line) continue - const [a, b, c] = line - if (a === undefined || b === undefined || c === undefined) continue - - const player = squares[a] - if (player && player === squares[b] && player === squares[c]) { - return player - } - } - return null -} - -export {calculateStatus, calculateNextValue, calculateWinner} -export type {Player, Squares} + return winner + ? `Winner: ${winner}` + : squares.every(Boolean) + ? `Scratch: Cat's game` + : `Next player: ${nextValue}` +} + +export function calculateNextValue(squares: Squares): Player { + const xSquaresCount = squares.filter(r => r === 'X').length + const oSquaresCount = squares.filter(r => r === 'O').length + return oSquaresCount === xSquaresCount ? 'X' : 'O' +} + +export function calculateWinner(squares: Squares): Player | null { + const lines = [ + [0, 1, 2], + [3, 4, 5], + [6, 7, 8], + [0, 3, 6], + [1, 4, 7], + [2, 5, 8], + [0, 4, 8], + [2, 4, 6], + ] + for (let i = 0; i < lines.length; i++) { + const line = lines[i] + if (!line) continue + const [a, b, c] = line + if (a === undefined || b === undefined || c === undefined) continue + + const player = squares[a] + if (player && player === squares[b] && player === squares[c]) { + return player + } + } + return null +} diff --git a/shared/types.d.ts b/shared/types.d.ts deleted file mode 100644 index 20ad4feeb..000000000 --- a/shared/types.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -type PokemonData = { - id: string - number: string - name: string - image: string - fetchedAt: string - attacks: { - special: Array<{ - name: string - type: string - damage: number - }> - } -} - -export {PokemonData} diff --git a/shared/utils.tsx b/shared/utils.tsx index 9430726bc..00e36eeb9 100644 --- a/shared/utils.tsx +++ b/shared/utils.tsx @@ -1,52 +1,27 @@ -import * as React from 'react' - -type UseLocalStorageOptions = { - serialize?: (data: TState) => string - deserialize?: (str: string) => TState -} - /** + * Sets the search parameters of the current URL. * - * @param {String} key The key to set in localStorage for this value - * @param {Object} defaultValue The value to use if it is not already in localStorage - * @param {{serialize: Function, deserialize: Function}} options The serialize and deserialize functions to use (defaults to JSON.stringify and JSON.parse respectively) + * @param {Record} params - The search parameters to set. + * @param {Object} options - Additional options for setting the search parameters. + * @param {boolean} options.replace - Whether to replace the current URL in the history or not. + * @returns {URLSearchParams} - The updated search parameters. */ -function useLocalStorageState( - key: string, - defaultValue: TState | (() => TState), - { - serialize = JSON.stringify, - deserialize = JSON.parse, - }: UseLocalStorageOptions = {}, +export function setSearchParams( + params: Record, + options: { replace?: boolean } = {}, ) { - const [state, setState] = React.useState(() => { - const valueInLocalStorage = window.localStorage.getItem(key) - if (valueInLocalStorage) { - // the try/catch is here in case the localStorage value was set before - // we had the serialization in place (like we do in previous extra credits) - try { - return deserialize(valueInLocalStorage) - } catch (error) { - window.localStorage.removeItem(key) - } - } - // can't do typeof because: - // https://github.com/microsoft/TypeScript/issues/37663#issuecomment-759728342 - return defaultValue instanceof Function ? defaultValue() : defaultValue - }) - - const prevKeyRef = React.useRef(key) - - React.useEffect(() => { - const prevKey = prevKeyRef.current - if (prevKey !== key) { - window.localStorage.removeItem(prevKey) - } - prevKeyRef.current = key - window.localStorage.setItem(key, serialize(state)) - }, [key, state, serialize]) - - return [state, setState] as const + const searchParams = new URLSearchParams(window.location.search) + for (const [key, value] of Object.entries(params)) { + if (!value) searchParams.delete(key) + else searchParams.set(key, value) + } + const newUrl = [window.location.pathname, searchParams.toString()] + .filter(Boolean) + .join('?') + if (options.replace) { + window.history.replaceState({}, '', newUrl) + } else { + window.history.pushState({}, '', newUrl) + } + return searchParams } - -export {useLocalStorageState} diff --git a/src/__tests__/01.tsx b/src/__tests__/01.tsx deleted file mode 100644 index 89233d3d2..000000000 --- a/src/__tests__/01.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import {alfredTip} from '@kentcdodds/react-workshop-app/test-utils' -import {render, screen, fireEvent} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/01.extra-4' -// import {App} from '../exercise/01' - -let alert = jest.spyOn(global, 'alert') -beforeAll(() => { - alert.mockImplementation(() => {}) -}) - -beforeEach(() => { - alert.mockClear() -}) - -test('calls the onSubmitUsername handler when the submit is fired', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - const submit = screen.getByRole('button', {name: /submit/i}) - - const username = 'jenny' - - userEvent.type(input, `{selectall}${username}`) - userEvent.click(submit) - - expect(global.alert).toHaveBeenCalledWith(`You entered: ${username}`) - expect(global.alert).toHaveBeenCalledTimes(1) -}) - -// don't do this in regular tests! -const UsernameForm = App().props.children?.type - -if (!UsernameForm) { - alfredTip( - true, - `Can't find the UsernameForm from the exported App component. Please make sure to not edit the App component so I can find the UsernameComponent and run some tests on it.`, - ) -} - -if (UsernameForm.toString().includes('initialUsername')) { - test('extra credit 1: supports initialUsername', () => { - render( - {}} />, - ) - expect( - screen.getByRole('textbox', { - name: /username/i, - }), - ).toHaveValue('hannah') - }) -} - -if (/(lower|\.length)/i.test(UsernameForm.toString())) { - test('extra credit 2: validates properly', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - const submit = screen.getByRole('button', {name: /submit/i}) - - // For the extra credit where we don't display errors until blur - // This functionality is covered in a seperate test. - fireEvent.blur(input) - - alfredTip( - () => { - userEvent.type(input, `{selectall}jo`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username is too short (like in "jo") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}joejoejoejoe`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username is too long (like in "joejoejoejoe") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}Joe`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username has a capital letter (like in "Joe") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}joe`) - expect(screen.queryByRole('alert')).not.toBeInTheDocument() - userEvent.click(submit) - expect(global.alert).toHaveBeenCalled() - }, - `Make that a valid input (like "joe") does not render the alert div and clicking submit will actually submit the form.`, - {displayEl: true}, - ) - }) -} - -if (/showerror/i.test(UsernameForm.toString())) { - test('extra credit 3: does not show the error immediately', () => { - render() - alfredTip( - () => { - expect(screen.queryByRole('alert')).not.toBeInTheDocument() - }, - `Make sure the error message isn't rendered to the screen before the user blurs the input`, - {displayEl: true}, - ) - fireEvent.blur(screen.getByRole('textbox', {name: /username/i})) - alfredTip( - () => { - expect(screen.queryByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message is rendered to the screen after the user blurs the input`, - {displayEl: true}, - ) - }) - - test(`extra credit 3: shows the error when clicking submit even if the user hasn't blurred the input yet`, () => { - render() - const submit = screen.getByRole('button', {name: /submit/i}) - userEvent.click(submit) - alfredTip( - () => { - expect(screen.queryByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message is rendered to the screen if the user clicks submit`, - {displayEl: true}, - ) - }) -} - -if (/(role|pattern)/i.test(UsernameForm.toString())) { - test('extra credit 4: displays a useful screen reader message to inform the user of the state of the form validity', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - - fireEvent.blur(input) - - alfredTip( - () => { - expect(screen.getByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message has role="alert"`, - {displayEl: true}, - ) - - alfredTip( - () => { - expect(document.querySelector('form')?.noValidate).toBe(true) - }, - `Make sure to add the "noValidate" attribute to the form.`, - {displayEl: true}, - ) - - alfredTip( - () => { - expect(document.querySelector('form')?.name.length).toBeGreaterThan(0) - }, - `Make sure to add the "name" attribute to the form.`, - {displayEl: true}, - ) - }) -} diff --git a/src/__tests__/02.tsx b/src/__tests__/02.tsx deleted file mode 100644 index 53fed7a67..000000000 --- a/src/__tests__/02.tsx +++ /dev/null @@ -1,202 +0,0 @@ -import {alfredTip} from '@kentcdodds/react-workshop-app/test-utils' -import {render, screen, fireEvent} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/02' -// import {App} from '../exercise/02' - -let alert = jest.spyOn(global, 'alert') -beforeAll(() => { - alert.mockImplementation(() => {}) -}) - -beforeEach(() => { - alert.mockClear() -}) - -test('calls the onSubmitUsername handler when the submit is fired', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - const submit = screen.getByRole('button', {name: /submit/i}) - - const username = 'jenny' - - userEvent.type(input, `{selectall}${username}`) - userEvent.click(submit) - - expect(global.alert).toHaveBeenCalledWith(`You entered: ${username}`) - expect(global.alert).toHaveBeenCalledTimes(1) -}) - -// don't do this in regular tests! -const UsernameForm = App().props.children?.type - -if (!UsernameForm) { - alfredTip( - true, - `Can't find the UsernameForm from the exported App component. Please make sure to not edit the App component so I can find the UsernameComponent and run some tests on it.`, - ) -} - -test('supports initialUsername', () => { - render( {}} />) - expect( - screen.getByRole('textbox', { - name: /username/i, - }), - ).toHaveValue('hannah') -}) - -test('validates properly', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - const submit = screen.getByRole('button', {name: /submit/i}) - - // For the extra credit where we don't display errors until blur - // This functionality is covered in a seperate test. - fireEvent.blur(input) - - alfredTip( - () => { - userEvent.type(input, `{selectall}jo`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username is too short (like in "jo") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}joejoejoejoe`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username is too long (like in "joejoejoejoe") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}Joe`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username has a capital letter (like in "Joe") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}joe`) - expect(screen.queryByRole('alert')).not.toBeInTheDocument() - userEvent.click(submit) - expect(global.alert).toHaveBeenCalled() - }, - `Make that a valid input (like "joe") does not render the alert div and clicking submit will actually submit the form.`, - {displayEl: true}, - ) -}) - -test('does not show the error immediately', () => { - render() - alfredTip( - () => { - expect(screen.queryByRole('alert')).not.toBeInTheDocument() - }, - `Make sure the error message isn't rendered to the screen before the user blurs the input`, - {displayEl: true}, - ) - fireEvent.blur(screen.getByRole('textbox', {name: /username/i})) - alfredTip( - () => { - expect(screen.queryByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message is rendered to the screen after the user blurs the input`, - {displayEl: true}, - ) -}) - -test(`extra credit 3: shows the error when clicking submit even if the user hasn't blurred the input yet`, () => { - render() - const submit = screen.getByRole('button', {name: /submit/i}) - userEvent.click(submit) - alfredTip( - () => { - expect(screen.queryByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message is rendered to the screen if the user clicks submit`, - {displayEl: true}, - ) -}) - -test('displays a useful screen reader message to inform the user of the state of the form validity', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - - fireEvent.blur(input) - - alfredTip( - () => { - expect(screen.getByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message has role="alert"`, - {displayEl: true}, - ) - - alfredTip( - () => { - expect(document.querySelector('form')?.noValidate).toBe(true) - }, - `Make sure to add the "noValidate" attribute to the form.`, - {displayEl: true}, - ) -}) - -test('the username value is initialized from and saved into localStorage', () => { - const {rerender} = render() - let input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - userEvent.type(input, 'jenny') - const lsUsername = window.localStorage.getItem('username') - - // extra credit 4 serializes the value in localStorage so there's a bit of a - // variation here. - const isSerialized = lsUsername === '"jenny"' - alfredTip( - !isSerialized && lsUsername !== 'jenny', - `localStorage is not getting updated with the text that's typed. Be sure to call window.localStorage.setItem('username', username) in a useEffect callback that runs whenever the name changes.`, - ) - - // make sure it's initialized properly - window.localStorage.setItem('username', isSerialized ? '"jill"' : 'jill') - rerender() - - input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - - alfredTip( - input.value.includes('"'), - `the value in localStorage is not getting deserialized properly. Make sure the value is deserialized when read from localStorage.`, - ) - - alfredTip(() => { - expect(input).toHaveValue('jill') - }, `the app is not initialized with the name that's in localStorage. Make sure useState is called with the value in localStorage.`) -}) diff --git a/src/__tests__/03.extra-1.tsx b/src/__tests__/03.extra-1.tsx deleted file mode 100644 index 604d99bbd..000000000 --- a/src/__tests__/03.extra-1.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react' -import {render, screen} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/03.extra-1' -// import {App} from '../exercise/03' - -test('App works', async () => { - render() - await userEvent.type(screen.getByRole('textbox', {name: /name/i}), 'mulan') - await userEvent.type(screen.getByRole('textbox', {name: /animal/i}), 'dragon') - expect( - screen.getByText('Your favorite animal is: dragon!'), - ).toBeInTheDocument() -}) diff --git a/src/__tests__/03.tsx b/src/__tests__/03.tsx deleted file mode 100644 index 2150856b0..000000000 --- a/src/__tests__/03.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react' -import {render, screen} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/03' -// import {App} from '../exercise/03' - -test('App works', async () => { - render() - await userEvent.type(screen.getByRole('textbox', {name: /name/i}), 'mulan') - await userEvent.type(screen.getByRole('textbox', {name: /animal/i}), 'dragon') - expect( - screen.getByText('Hey mulan, your favorite animal is: dragon!'), - ).toBeInTheDocument() -}) diff --git a/src/__tests__/04.extra-1.tsx b/src/__tests__/04.extra-1.tsx deleted file mode 100644 index f10a99cf8..000000000 --- a/src/__tests__/04.extra-1.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import {alfredTip} from '@kentcdodds/react-workshop-app/test-utils' -import {render, screen} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/04.extra-1' -// import {App} from '../exercise/04' - -test('can play a game of tic tac toe', () => { - const {container, rerender} = render() - // prettier-ignore - const [ - s1, s2, s3, - s4, s5, s6, - s7, s8, s9, - ] = Array.from(container.querySelectorAll('button')) - expect(screen.getByText('Next player: X')).toBeInTheDocument() - - if (!s1 || !s2 || !s3 || !s4 || !s5 || !s6 || !s7 || !s8 || !s9) { - alfredTip(true, `Make sure to render all 9 buttons`, { - displayEl: true, - }) - return - } - userEvent.click(s1) - expect(s1).toHaveTextContent('X') - - expect(screen.getByText('Next player: O')).toBeInTheDocument() - userEvent.click(s5) - expect(s5).toHaveTextContent('O') - - expect(screen.getByText('Next player: X')).toBeInTheDocument() - userEvent.click(s9) - expect(s9).toHaveTextContent('X') - - expect(screen.getByText('Next player: O')).toBeInTheDocument() - userEvent.click(s7) - expect(s7).toHaveTextContent('O') - - expect(screen.getByText('Next player: X')).toBeInTheDocument() - userEvent.click(s3) - expect(s3).toHaveTextContent('X') - - expect(screen.getByText('Next player: O')).toBeInTheDocument() - userEvent.click(s2) - expect(s2).toHaveTextContent('O') - - expect(screen.getByText('Next player: X')).toBeInTheDocument() - userEvent.click(s6) - expect(s6).toHaveTextContent('X') - - // game is over so no more moves may be played - expect(screen.getByText('Winner: X')).toBeInTheDocument() - userEvent.click(s4) - expect(s4).toHaveTextContent('') - - alfredTip(() => { - const before = container.textContent - rerender() - expect(container.textContent).toBe(before) - }, 'Make sure that the "squares" localStorage item is updated with the JSON.stringified squares') -}) diff --git a/src/__tests__/04.extra-3.tsx b/src/__tests__/04.extra-3.tsx deleted file mode 100644 index dc42783b3..000000000 --- a/src/__tests__/04.extra-3.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import {alfredTip} from '@kentcdodds/react-workshop-app/test-utils' -import {render, screen} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/04.extra-3' -// import {App} from '../exercise/04' - -test('can play a game of tic tac toe', () => { - const {rerender, container} = render() - - // prettier-ignore - let [ - s1, s2, s3, - s4, s5, s6, - s7, s8, s9, - ] = Array.from(screen.queryAllByRole('button')) - if (!s1 || !s2 || !s3 || !s4 || !s5 || !s6 || !s7 || !s8 || !s9) { - alfredTip(true, `Make sure to render all 9 buttons`, { - displayEl: true, - }) - return - } - expect(screen.getByText('Next player: X')).toBeInTheDocument() - let gameStart = screen.getByText(/go to game start/i) - expect(gameStart).toHaveAttribute('disabled') - expect(gameStart).toHaveTextContent('current') - - userEvent.click(s1) - expect(s1).toHaveTextContent('X') - - expect(screen.getByText('Next player: O')).toBeInTheDocument() - const firstMove = screen.getByText(/go to move #1/i) - expect(gameStart).not.toHaveAttribute('disabled') - expect(gameStart).not.toHaveTextContent('current') - expect(firstMove).toHaveAttribute('disabled') - expect(firstMove).toHaveTextContent('current') - - userEvent.click(s5) - expect(s5).toHaveTextContent('O') - const secondMove = screen.getByText(/go to move #2/i) - expect(gameStart).not.toHaveAttribute('disabled') - expect(gameStart).not.toHaveTextContent('current') - expect(firstMove).not.toHaveAttribute('disabled') - expect(firstMove).not.toHaveTextContent('current') - expect(secondMove).toHaveAttribute('disabled') - expect(secondMove).toHaveTextContent('current') - - userEvent.click(firstMove) - expect(gameStart).not.toHaveAttribute('disabled') - expect(gameStart).not.toHaveTextContent('current') - expect(firstMove).toHaveAttribute('disabled') - expect(firstMove).toHaveTextContent('current') - expect(secondMove).not.toHaveAttribute('disabled') - expect(secondMove).not.toHaveTextContent('current') - expect(s5).not.toHaveTextContent('O') - - alfredTip(() => { - const before = container.textContent - rerender() - expect(container.textContent).toBe(before) - }, 'Make sure that refreshing the component restores the game to its last state') - - // because of the re-mount we need to get the new buttons - ;[s1, s2, s3, s4, s5, s6, s7, s8, s9] = Array.from( - screen.queryAllByRole('button'), - ) - if (!s1 || !s2 || !s3 || !s4 || !s5 || !s6 || !s7 || !s8 || !s9) { - alfredTip(true, `Make sure to render all 9 buttons`, { - displayEl: true, - }) - return - } - - gameStart = screen.getByText(/go to game start/i) - userEvent.click(gameStart) - - expect(s1).toHaveTextContent('') - expect(s5).toHaveTextContent('') - expect(screen.getAllByRole('listitem').length).toBe(3) - - userEvent.click(screen.getByText('restart')) - expect(s1).toHaveTextContent('') - expect(s5).toHaveTextContent('') - expect(screen.getAllByRole('listitem').length).toBe(1) - - alfredTip(() => { - const before = container.textContent - rerender() - expect(container.textContent).toBe(before) - }, 'Make sure that refreshing the component restores the game to its last state') -}) diff --git a/src/__tests__/04.tsx b/src/__tests__/04.tsx deleted file mode 100644 index 93b248351..000000000 --- a/src/__tests__/04.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import {alfredTip} from '@kentcdodds/react-workshop-app/test-utils' -import {render, screen} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/04' -// import {App} from '../exercise/04' - -test('can play a game of tic tac toe', () => { - render() - // prettier-ignore - const [ - s1, s2, s3, - s4, s5, s6, - s7, s8, s9, - ] = Array.from(screen.queryAllByRole('button')) - expect(screen.getByText('Next player: X')).toBeInTheDocument() - - if (!s1 || !s2 || !s3 || !s4 || !s5 || !s6 || !s7 || !s8 || !s9) { - alfredTip(true, `Make sure to render all 9 buttons`, { - displayEl: true, - }) - return - } - userEvent.click(s1) - expect(s1).toHaveTextContent('X') - - expect(screen.getByText('Next player: O')).toBeInTheDocument() - userEvent.click(s5) - expect(s5).toHaveTextContent('O') - - expect(screen.getByText('Next player: X')).toBeInTheDocument() - userEvent.click(s9) - expect(s9).toHaveTextContent('X') - - expect(screen.getByText('Next player: O')).toBeInTheDocument() - userEvent.click(s7) - expect(s7).toHaveTextContent('O') - - expect(screen.getByText('Next player: X')).toBeInTheDocument() - userEvent.click(s3) - expect(s3).toHaveTextContent('X') - - expect(screen.getByText('Next player: O')).toBeInTheDocument() - userEvent.click(s2) - expect(s2).toHaveTextContent('O') - - expect(screen.getByText('Next player: X')).toBeInTheDocument() - userEvent.click(s6) - expect(s6).toHaveTextContent('X') - - // game is over so no more moves may be played - expect(screen.getByText('Winner: X')).toBeInTheDocument() - userEvent.click(s4) - expect(s4).toHaveTextContent('') -}) - -test('does not change square value when it is clicked multiple times', () => { - render() - const [square1] = Array.from(screen.queryAllByRole('button')) - - if (!square1) { - return alfredTip(true, `Couldn't find any buttons`, {displayEl: true}) - } - - userEvent.click(square1) - userEvent.click(square1) - expect(square1).toHaveTextContent('X') -}) diff --git a/src/__tests__/05.extra-1.tsx b/src/__tests__/05.extra-1.tsx deleted file mode 100644 index ded9914e2..000000000 --- a/src/__tests__/05.extra-1.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from 'react' -import {render} from '@testing-library/react' -import VanillaTilt from 'vanilla-tilt' -import {App} from '../final/05.extra-1' -// import {App} from '../exercise/05.extra-1' - -interface HTMLVanillaTiltElement extends HTMLDivElement { - vanillaTilt: VanillaTilt -} - -test('calls VanillaTilt.init with the root node', async () => { - const {container, unmount} = render() - const tiltRoot = container.querySelector( - '.tilt-root', - ) as HTMLVanillaTiltElement - expect(tiltRoot).toHaveProperty('vanillaTilt') - - const destroy = jest.spyOn(tiltRoot.vanillaTilt, 'destroy') - expect(destroy).toHaveBeenCalledTimes(0) - - unmount() - - expect(destroy).toHaveBeenCalledTimes(1) -}) diff --git a/src/__tests__/05.tsx b/src/__tests__/05.tsx deleted file mode 100644 index 1504f0c73..000000000 --- a/src/__tests__/05.tsx +++ /dev/null @@ -1,216 +0,0 @@ -import {alfredTip} from '@kentcdodds/react-workshop-app/test-utils' -import {render, screen, fireEvent, act} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/05' -// import {App} from '../exercise/05' - -let alert = jest.spyOn(global, 'alert') -beforeAll(() => { - alert.mockImplementation(() => {}) -}) - -beforeEach(() => { - alert.mockClear() -}) - -test('calls the onSubmitUsername handler when the submit is fired', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - const submit = screen.getByRole('button', {name: /submit/i}) - - const username = 'jenny' - - userEvent.type(input, `{selectall}${username}`) - userEvent.click(submit) - - expect(global.alert).toHaveBeenCalledWith(`You entered: ${username}`) - expect(global.alert).toHaveBeenCalledTimes(1) -}) - -// don't do this in regular tests! -const UsernameForm = App().props.children?.type - -if (!UsernameForm) { - alfredTip( - true, - `Can't find the UsernameForm from the exported App component. Please make sure to not edit the App component so I can find the UsernameComponent and run some tests on it.`, - ) -} - -test('supports initialUsername', () => { - render( {}} />) - expect( - screen.getByRole('textbox', { - name: /username/i, - }), - ).toHaveValue('hannah') -}) - -test('validates properly', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - const submit = screen.getByRole('button', {name: /submit/i}) - - // For the extra credit where we don't display errors until blur - // This functionality is covered in a seperate test. - fireEvent.blur(input) - - alfredTip( - () => { - userEvent.type(input, `{selectall}jo`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username is too short (like in "jo") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}joejoejoejoe`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username is too long (like in "joejoejoejoe") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}Joe`) - // hard to assert on the specific message if they decide they want a different message - // so we'll just assume that if it's showing up it's correct. - expect(document.querySelector('#error-message')).toHaveTextContent(/.+/) - userEvent.click(submit) - expect(global.alert).not.toHaveBeenCalled() - }, - `Make sure to display the correct error message in a div with id="error-message" when the username has a capital letter (like in "Joe") and don't allow the form to be submitted when it's invalid.`, - {displayEl: true}, - ) - - alfredTip( - () => { - userEvent.type(input, `{selectall}joe`) - expect(screen.queryByRole('alert')).not.toBeInTheDocument() - userEvent.click(submit) - expect(global.alert).toHaveBeenCalled() - }, - `Make that a valid input (like "joe") does not render the alert div and clicking submit will actually submit the form.`, - {displayEl: true}, - ) -}) - -test('does not show the error immediately', () => { - render() - alfredTip( - () => { - expect(screen.queryByRole('alert')).not.toBeInTheDocument() - }, - `Make sure the error message isn't rendered to the screen before the user blurs the input`, - {displayEl: true}, - ) - fireEvent.blur(screen.getByRole('textbox', {name: /username/i})) - alfredTip( - () => { - expect(screen.queryByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message is rendered to the screen after the user blurs the input`, - {displayEl: true}, - ) -}) - -test(`extra credit 3: shows the error when clicking submit even if the user hasn't blurred the input yet`, () => { - render() - const submit = screen.getByRole('button', {name: /submit/i}) - userEvent.click(submit) - alfredTip( - () => { - expect(screen.queryByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message is rendered to the screen if the user clicks submit`, - {displayEl: true}, - ) -}) - -test('displays a useful screen reader message to inform the user of the state of the form validity', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - - fireEvent.blur(input) - - alfredTip( - () => { - expect(screen.getByRole('alert')).toBeInTheDocument() - }, - `Make sure the error message has role="alert"`, - {displayEl: true}, - ) - - alfredTip( - () => { - expect(document.querySelector('form')?.noValidate).toBe(true) - }, - `Make sure to add the "noValidate" attribute to the form.`, - {displayEl: true}, - ) -}) - -test('the username value is initialized from and saved into localStorage', () => { - const {rerender} = render() - let input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - userEvent.type(input, 'jenny') - const lsUsername = window.localStorage.getItem('username') - - // extra credit 4 serializes the value in localStorage so there's a bit of a - // variation here. - const isSerialized = lsUsername === '"jenny"' - alfredTip( - !isSerialized && lsUsername !== 'jenny', - `localStorage is not getting updated with the text that's typed. Be sure to call window.localStorage.setItem('username', username) in a useEffect callback that runs whenever the name changes.`, - ) - - // make sure it's initialized properly - window.localStorage.setItem('username', isSerialized ? '"jill"' : 'jill') - rerender() - - input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - - alfredTip( - input.value.includes('"'), - `the value in localStorage is not getting deserialized properly. Make sure the value is deserialized when read from localStorage.`, - ) - - alfredTip(() => { - expect(input).toHaveValue('jill') - }, `the app is not initialized with the name that's in localStorage. Make sure useState is called with the value in localStorage.`) -}) - -test('autofocuses the input when the error is shown', () => { - render() - const input = screen.getByRole('textbox', { - name: /username/i, - }) as HTMLInputElement - - userEvent.type(input, `{selectall}jo`) - act(() => input.blur()) - - alfredTip(() => { - expect(document.activeElement).toBe(input) - }, `Make sure that when the error message shows up the input is focused`) -}) diff --git a/src/__tests__/06.tsx b/src/__tests__/06.tsx deleted file mode 100644 index b694f9db4..000000000 --- a/src/__tests__/06.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import * as React from 'react' -import {alfredTip} from '@kentcdodds/react-workshop-app/test-utils' -import {render, screen} from '@testing-library/react' -import userEvent from '@testing-library/user-event' -import {App} from '../final/06' -// import {App} from '../exercise/06' - -let fetchMock: jest.SpyInstance -beforeEach(() => { - fetchMock = jest.spyOn(window, 'fetch') -}) -afterEach(() => fetchMock.mockRestore()) - -test('displays the pokemon', async () => { - render() - const input = screen.getByLabelText(/pokemon/i) - const submit = screen.getByText(/^submit$/i) - - // verify that an initial request is made when mounted - userEvent.type(input, 'pikachu') - userEvent.click(submit) - - await screen.findByRole('heading', {name: /pikachu/i}) - - // verify that a request is made when props change - userEvent.clear(input) - userEvent.type(input, 'ditto') - userEvent.click(submit) - - await screen.findByRole('heading', {name: /ditto/i}) - - // verify that when props remain the same a request is not made - fetchMock.mockClear() - userEvent.click(submit) - - await screen.findByRole('heading', {name: /ditto/i}) - - alfredTip( - () => expect(fetchMock).not.toHaveBeenCalled(), - 'Make certain that you are providing a dependencies list in useEffect.', - ) -}) diff --git a/src/backend.tsx b/src/backend.tsx deleted file mode 100644 index 8bbc90ef4..000000000 --- a/src/backend.tsx +++ /dev/null @@ -1,198 +0,0 @@ -import {graphql} from '@kentcdodds/react-workshop-app/server' -import type {PokemonData} from './types' - -const pokemonApi = graphql.link('https://graphql-pokemon2.vercel.app/') - -export const handlers = [ - pokemonApi.query('PokemonInfo', (req, res, ctx) => { - const pokemon = allPokemon[req.variables.name.toLowerCase()] - if (pokemon) { - return res(ctx.status(200), ctx.data({pokemon})) - } else { - const pokemonNames = Object.keys(allPokemon) - const randomName = - pokemonNames[Math.floor(pokemonNames.length * Math.random())] - return res( - ctx.status(404), - ctx.errors([ - { - message: `Unsupported pokemon: "${req.variables.name}". Try "${randomName}"`, - }, - ]), - ) - } - }), -] - -const allPokemon: Record> = { - pikachu: { - id: 'UG9rZW1vbjowMjU=', - number: '025', - name: 'Pikachu', - image: '/img/pokemon/pikachu.jpg', - attacks: { - special: [ - { - name: 'Discharge', - type: 'Electric', - damage: 35, - }, - { - name: 'Thunder', - type: 'Electric', - damage: 100, - }, - { - name: 'Thunderbolt', - type: 'Electric', - damage: 55, - }, - ], - }, - }, - mew: { - id: 'UG9rZW1vbjoxNTE=', - number: '151', - image: '/img/pokemon/mew.jpg', - name: 'Mew', - attacks: { - special: [ - { - name: 'Dragon Pulse', - type: 'Dragon', - damage: 65, - }, - { - name: 'Earthquake', - type: 'Ground', - damage: 100, - }, - { - name: 'Fire Blast', - type: 'Fire', - damage: 100, - }, - { - name: 'Hurricane', - type: 'Flying', - damage: 80, - }, - { - name: 'Hyper Beam', - type: 'Normal', - damage: 120, - }, - { - name: 'Moonblast', - type: 'Fairy', - damage: 85, - }, - { - name: 'Psychic', - type: 'Psychic', - damage: 55, - }, - { - name: 'Solar Beam', - type: 'Grass', - damage: 120, - }, - { - name: 'Thunder', - type: 'Electric', - damage: 100, - }, - ], - }, - }, - mewtwo: { - id: 'UG9rZW1vbjoxNTA=', - number: '150', - image: '/img/pokemon/mewtwo.jpg', - name: 'Mewtwo', - attacks: { - special: [ - { - name: 'Hyper Beam', - type: 'Normal', - damage: 120, - }, - { - name: 'Psychic', - type: 'Psychic', - damage: 55, - }, - { - name: 'Shadow Ball', - type: 'Ghost', - damage: 45, - }, - ], - }, - }, - ditto: { - id: 'UG9rZW1vbjoxMzI=', - number: '132', - image: '/img/pokemon/ditto.jpg', - name: 'Ditto', - attacks: { - special: [ - { - name: 'Struggle', - type: 'Normal', - damage: 15, - }, - ], - }, - }, - charizard: { - id: 'UG9rZW1vbjowMDY=', - number: '006', - name: 'Charizard', - image: '/img/pokemon/charizard.jpg', - attacks: { - special: [ - { - name: 'Dragon Claw', - type: 'Dragon', - damage: 35, - }, - { - name: 'Fire Blast', - type: 'Fire', - damage: 100, - }, - { - name: 'Flamethrower', - type: 'Fire', - damage: 55, - }, - ], - }, - }, - bulbasaur: { - id: 'UG9rZW1vbjowMDE=', - number: '001', - name: 'Bulbasaur', - image: '/img/pokemon/bulbasaur.jpg', - attacks: { - special: [ - { - name: 'Power Whip', - type: 'Grass', - damage: 70, - }, - { - name: 'Seed Bomb', - type: 'Grass', - damage: 40, - }, - { - name: 'Sludge Bomb', - type: 'Poison', - damage: 55, - }, - ], - }, - }, -} diff --git a/src/examples/hook-flow.png b/src/examples/hook-flow.png deleted file mode 100644 index f1f8e81fd3fd55de0f6a6cfe07e669766e227de5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57377 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 z 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 { - console.log('%c Child: useState(() => 0)', 'color: tomato') - return 0 - }) - - React.useEffect(() => { - console.log('%c Child: useEffect(() => {})', 'color: LightCoral') - return () => { - console.log( - '%c Child: useEffect(() => {}) cleanup 🧹', - 'color: LightCoral', - ) - } - }) - - React.useEffect(() => { - console.log( - '%c Child: useEffect(() => {}, [])', - 'color: MediumTurquoise', - ) - return () => { - console.log( - '%c Child: useEffect(() => {}, []) cleanup 🧹', - 'color: MediumTurquoise', - ) - } - }, []) - - React.useEffect(() => { - console.log('%c Child: useEffect(() => {}, [count])', 'color: HotPink') - return () => { - console.log( - '%c Child: useEffect(() => {}, [count]) cleanup 🧹', - 'color: HotPink', - ) - } - }, [count]) - - const element = ( - - ) - - console.log('%c Child: render end', 'color: MediumSpringGreen') - - return element -} - -function App() { - console.log('%cApp: render start', 'color: MediumSpringGreen') - - const [showChild, setShowChild] = React.useState(() => { - console.log('%cApp: useState(() => false)', 'color: tomato') - return false - }) - - React.useEffect(() => { - console.log('%cApp: useEffect(() => {})', 'color: LightCoral') - return () => { - console.log('%cApp: useEffect(() => {}) cleanup 🧹', 'color: LightCoral') - } - }) - - React.useEffect(() => { - console.log('%cApp: useEffect(() => {}, [])', 'color: MediumTurquoise') - return () => { - console.log( - '%cApp: useEffect(() => {}, []) cleanup 🧹', - 'color: MediumTurquoise', - ) - } - }, []) - - React.useEffect(() => { - console.log('%cApp: useEffect(() => {}, [showChild])', 'color: HotPink') - return () => { - console.log( - '%cApp: useEffect(() => {}, [showChild]) cleanup 🧹', - 'color: HotPink', - ) - } - }, [showChild]) - - const element = ( - <> - -

    - {showChild ? : null} -
    - - ) - - console.log('%cApp: render end', 'color: MediumSpringGreen') - - return element -} - -export {App} diff --git a/src/examples/local-state-key-change.tsx b/src/examples/local-state-key-change.tsx deleted file mode 100644 index 7be5fa74a..000000000 --- a/src/examples/local-state-key-change.tsx +++ /dev/null @@ -1,40 +0,0 @@ -// Synchronizing Side-Effects -// flexible localStorage hook - changing the key in localStorage -// http://localhost:3000/isolated/examples/local-state-key-change.tsx - -import * as React from 'react' -import {useLocalStorageState} from '~/shared/utils' - -function App({initialName = ''}: {initialName?: string}) { - const [key, setKey] = React.useState('name') - const [name, setName] = useLocalStorageState(key, initialName) - - function handleClick() { - if (key === 'name') { - setKey('firstName') - } else if (key === 'firstName') { - setKey('Name') - } else { - setKey('name') - } - } - - return ( -
    - -
    - - setName(event.currentTarget.value)} - id="name" - /> -
    - {name ? Hello {name} : 'Please type your name'} -
    - ) -} - -export {App} diff --git a/src/examples/set-state-callback.tsx b/src/examples/set-state-callback.tsx deleted file mode 100644 index b9096f92a..000000000 --- a/src/examples/set-state-callback.tsx +++ /dev/null @@ -1,35 +0,0 @@ -// Set State Callback -// Why you should use the callback form when you rely on the previous state value -// http://localhost:3000/isolated/examples/set-state-callback.tsx - -import * as React from 'react' - -function App() { - const [buggyCount, setBuggyCount] = React.useState(0) - const [workingCount, setWorkingCount] = React.useState(0) - - function buggyIncrement() { - // this one incorrectly only updates once every two seconds - setTimeout(() => { - setBuggyCount(buggyCount + 1) - }, 2000) - } - - function workingIncrement() { - // this one correctly updates every click, - // it just takes two seconds before the update is performed - setTimeout(() => { - setWorkingCount(previousWorkingCount => previousWorkingCount + 1) - }, 2000) - } - - // to observe the bug, hit the buttons rapidly and note their differences... - return ( -
    - - -
    - ) -} - -export {App} diff --git a/src/index.tsx b/src/index.tsx deleted file mode 100644 index ef02057ae..000000000 --- a/src/index.tsx +++ /dev/null @@ -1,4 +0,0 @@ -import './styles.css' -import codegen from 'codegen.macro' - -codegen`module.exports = require('@kentcdodds/react-workshop-app/codegen')` diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5fc..000000000 --- a/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/src/setupTests.tsx b/src/setupTests.tsx deleted file mode 100644 index 39c5a4b4b..000000000 --- a/src/setupTests.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import '@kentcdodds/react-workshop-app/setup-tests' - -afterEach(() => { - window.localStorage.clear() -}) diff --git a/src/types.d.ts b/src/types.d.ts deleted file mode 100644 index 20ad4feeb..000000000 --- a/src/types.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -type PokemonData = { - id: string - number: string - name: string - image: string - fetchedAt: string - attacks: { - special: Array<{ - name: string - type: string - damage: number - }> - } -} - -export {PokemonData} diff --git a/tsconfig.json b/tsconfig.json index c0355ba6b..606105b04 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,32 +1,23 @@ { - "include": ["**/*.ts", "**/*.tsx", "**/*.cjs"], + "include": ["**/*.ts", "**/*.tsx"], "compilerOptions": { - "lib": ["DOM", "DOM.Iterable", "ES2022"], + "lib": ["DOM", "DOM.Iterable", "ES2023"], "isolatedModules": true, "esModuleInterop": true, "jsx": "react-jsx", - "module": "nodenext", - "moduleResolution": "nodenext", + "module": "ES2022", + "moduleResolution": "Bundler", "resolveJsonModule": true, "target": "ES2022", "strict": true, "noImplicitAny": true, - "noUncheckedIndexedAccess": true, "allowJs": true, "forceConsistentCasingInFileNames": true, - "baseUrl": ".", - "paths": { - "~/*": ["./*"] - }, "skipLibCheck": true, "allowImportingTsExtensions": true, - "typeRoots": [ - "./types", - "./node_modules/@types", - "./node_modules/@kentcdodds/workshop-app/utils" - ], - - // Remix takes care of building everything in `remix build`. - "noEmit": true + "noEmit": true, + "paths": { + "#*": ["./*"], + }, } -} \ No newline at end of file +}